diff --git a/app/controllers/admin/price_documents_controller.rb b/app/controllers/admin/price_documents_controller.rb index 2aed63a..b480168 100644 --- a/app/controllers/admin/price_documents_controller.rb +++ b/app/controllers/admin/price_documents_controller.rb @@ -598,5 +598,10 @@ class Admin::PriceDocumentsController < ApplicationController def match_p_fournisseur @price_document = PriceDocument.find(params[:id]) end - + + def analyse_reponses + @price_document = PriceDocument.find(params[:id]) + @price_document_responses = PriceDocument.where(:doc_ref_id => @price_document.id ) + + end end diff --git a/app/models/price_line.rb b/app/models/price_line.rb index 840396a..1d56221 100644 --- a/app/models/price_line.rb +++ b/app/models/price_line.rb @@ -2,6 +2,7 @@ class PriceLine < ApplicationRecord belongs_to :price_line_block belongs_to :p_product belongs_to :p_product_ref + belongs_to :p_product_power default_scope { order('position ASC') } validates :p_product_ref_id, :presence => true, :if => :p_product_ref_needed? diff --git a/app/models/price_line_block.rb b/app/models/price_line_block.rb index c116b7c..14b7469 100644 --- a/app/models/price_line_block.rb +++ b/app/models/price_line_block.rb @@ -27,7 +27,7 @@ class PriceLineBlock < ApplicationRecord SALE_BLOCKS = ["Demande de commande", "Bon de commande", "Devis", "Bon de livraison", "Facture", "Avoir"] belongs_to :p_fournisseur - + accepts_nested_attributes_for :p_fournisseur def to_no_archive if self.imported diff --git a/app/views/admin/price_documents/analyse_reponses.html.haml b/app/views/admin/price_documents/analyse_reponses.html.haml new file mode 100644 index 0000000..49acb65 --- /dev/null +++ b/app/views/admin/price_documents/analyse_reponses.html.haml @@ -0,0 +1,175 @@ +.qi_header + %h1 + Achats + %span + Analyse des réponces à la consiltation n° + = link_to @price_document.d_number, admin_price_document_path(@price_document) + \- + = @price_document.list_designaton + + + +.qi_pannel.padding.new_table_container + .table-slider + .inner + + .table-area{:style => "overflow:auto;"} + .table-area-inner + .freezeTable + %table.table.table-striped.table-hover.table-bordered.data_table + %thead.header + %tr + -nb_resp = @price_document_responses.count + %th{colspan: 12} + Consultation + %th{colspan: nb_resp} + Fournisseurs + + %tr + %th + Qté à + %br + satisfaire + %th + Qté consultée + %th + Produit + %th + Référence + %th + Couleur + %th + Type + %br + chargeur + %th + Target hors + %br + Sorecop + %th + Px d'achat + %br + référence + %th + Marge + %br + théorique + %br + référence + %br + par zone + %th + Fours. + %br + de référence + %th + Date + %br + px référence + %th.limit + Spec + + -@price_document_responses.each do |resp| + %th + =resp.p_fournisseur.name + + + %tbody + -price_lines = @price_document.price_line_block.price_lines + -consult_price_lines = @price_document.price_line_block.price_lines + -price_lines.each do |price_line| + %tr + %td + =# ATTENTION ! On a plus accès direct aux commandes qui on engendré cette demande de prix. donc plus accès aux délais différent entre les différentes commades pour une ref donée + ∑ + =price_line.qte.to_i + %br + - if price_line.cc_wish_date.present? && price_line.cc_wish_date < Date.today + 10.days + %span.red + =ic(:fire) + =price_line.qte.to_i + - else + %span.darkblue + =ic(:hourglass) + =price_line.qte.to_i + %td.ref_tr + Qté en comm + %td + = price_line.p_product_ref.p_product.name + %td + =link_to [:admin, price_line.p_product_ref] do + = price_line.p_product_ref.ct_sub_name + = price_line.p_product_ref.p_product_color.name + + %td + = price_line.p_product_ref.p_product_color.color + %td + = price_line.p_product_power.name + %td + / Target hors Sorecop + %td + / Px d'achat de référence + %td + / Marge théorique de référence par zone + %td + / Fournisseurs de référence + %td + / Date du px de référence + %td + / spec + - @price_document_responses.each do |resp| + -line = resp.price_line_block.price_lines.where(p_product_ref: price_line.p_product_ref).first + -cell = [] + + - if line.qte_available.to_i > 0 + -if line.qte_available >= price_line.qte.to_i + - cell << "Qté dispo : #{line.qte_available.to_i}" + -else + - cell << "#{ic(:warning, class: "orange")} Qté dispo : #{line.qte_available.to_i} (#{line.qte_available.to_i - price_line.qte.to_i})" + - cell << "PA: #{line.ct_u_price_ht} €" + - # mp = calcul de la marge prévisionelle TODO + - line.id.odd? ? mp = 0.17 : mp = 0.11 + -cell << line.id.odd? + - if mp.present? + -if mp > 0.15 + - cell << "#{ic(:check)} MP: #{mp * 100} %" + -else + - cell << "#{ic(:times, class: "red")} MP: #{mp * 100} %" + -else + - cell << "pas dispo" + -if line.comment.present? + - cell << "#{ic('info-circle')} #{line.comment}" + %td + =sanitize(cell.join('
')) + + + + + + + + +:scss + .limit { + border-right:3px solid green !important; + } + + .red { + color: red; + } + .green { + color: green; + } + .orange { + color: orange; + } + .darkgrey { + color: #darkgrey; + } + .darkblue { + color: darkblue; + } + + .small-input { + max-width: 100px; + } diff --git a/app/views/admin/price_documents/show.html.haml b/app/views/admin/price_documents/show.html.haml index 3178d8e..c1be467 100644 --- a/app/views/admin/price_documents/show.html.haml +++ b/app/views/admin/price_documents/show.html.haml @@ -1,6 +1,8 @@ .qi_header - .right - + .right + -if @price_document.price_document_type_id == 1 + =link_to ic("bar-chart")+" analyse des réponses", analyse_reponses_admin_price_document_path(@price_document), class: "btn btn-primary" + -if @price_document.price_document_type_id == 6 and !@price_document.stock_ok = link_to i(:pencil), edit_admin_price_document_path(:id => @price_document.id, :public_edit => true) if !@price_document.stock_ok @@ -50,7 +52,7 @@ %td Avancement (%) %td - =@price_document.avancement + =@price_document.avancement.to_s + " %" %tr %td Désignation diff --git a/config/routes.rb b/config/routes.rb index f511c3a..a0c1e29 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -616,6 +616,7 @@ Rails.application.routes.draw do get :consult_edit put :consult_update get :match_p_fournisseur + get :analyse_reponses end collection do get :search_to_affect