262 lines
8.5 KiB
Plaintext
262 lines
8.5 KiB
Plaintext
.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
|
|
|
|
|
|
=semantic_form_for [:admin, @price_document], :html => {:class => "qi_price_form"}, :remote => false do |form|
|
|
=form.semantic_fields_for :price_line_block do |f|
|
|
- price_line_block = f.object
|
|
.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
|
|
.btn.btn-light.ml-4#reset-radio
|
|
reset
|
|
|
|
%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
|
|
-if resp.p_fournisseur
|
|
=resp.p_fournisseur.name
|
|
|
|
|
|
%tbody
|
|
-# price_lines = f.object.price_lines
|
|
|
|
-consult_price_lines = @price_document.price_line_block.price_lines
|
|
=f.semantic_fields_for :price_lines do |form|
|
|
- price_line = form.object
|
|
-#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 + 20.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 if price_line.p_product_ref and price_line.p_product_ref.p_product_color
|
|
%td
|
|
= price_line.p_product_power.name if price_line.p_product_power
|
|
%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.limit
|
|
/ spec
|
|
|
|
=form.input :selected_price_line_id, collection: PriceLine.where(:price_line_ref_id => form.object.id).all, as: :radio, :member_label => :id
|
|
=debug form.object.id
|
|
- @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
|
|
- if mp.present?
|
|
-if mp > 0.15
|
|
- cell << "<span class=green>#{ic(:check)} MP: #{mp * 100} %</span>"
|
|
-else
|
|
- cell << "#{ic(:times, class: "red")} MP: #{mp * 100} %"
|
|
-else
|
|
- cell << "<span class=red>pas dispo</span>"
|
|
-if line.comment.present?
|
|
- display_comment = ""
|
|
- if line.comment.length > 10
|
|
- display_comment = "#{line.comment[0..10]} (..)"
|
|
- else
|
|
- display_comment = line.comment
|
|
- cell << "<span class='info'>#{ic('info-circle')} #{display_comment}<span class='info-text'>#{line.comment}</span></span>"
|
|
|
|
%td.p-0
|
|
= "reponse price_line ID : #{line.id}"
|
|
=#form.input :selected_price_offer, as: :radio
|
|
= radio_button_tag "ref_price_selected_#{price_line.p_product_ref.id}", line.id, false, class: "category-selector"
|
|
= label_tag "ref_price_selected_#{price_line.p_product_ref.id}_#{line.id}", sanitize(cell.join('<br>')), class: "p-2 m-auto"
|
|
=submit_tag 'valider la selection', class: "btn btn-primary"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
:scss
|
|
.category-selector {
|
|
position: absolute;
|
|
transform: scale(0);
|
|
}
|
|
|
|
.category-selector + label {
|
|
display: block;
|
|
min-height: 105px;
|
|
cursor: pointer;
|
|
box-sizing: border-box;
|
|
width: 100%;
|
|
text-align: left;
|
|
}
|
|
|
|
.category-selector:checked + label {
|
|
background-color: #b4f99e !important;
|
|
}
|
|
|
|
.limit {
|
|
border-right:3px solid green !important;
|
|
}
|
|
|
|
.red {
|
|
color: red;
|
|
}
|
|
.green {
|
|
color: green;
|
|
}
|
|
.orange {
|
|
color: orange;
|
|
}
|
|
.info {
|
|
color: #009bbf;
|
|
position: relative;
|
|
display: inline-block;
|
|
text-overflow: ellipsis;
|
|
|
|
.info-text {
|
|
visibility: hidden;
|
|
background-color: #555;
|
|
color: #fff;
|
|
text-align: center;
|
|
padding: 5px;
|
|
border-radius: 6px;
|
|
max-width: 500px;
|
|
min-width: fit-content;
|
|
white-space: normal;
|
|
|
|
/* Position the tooltip text */
|
|
position: absolute;
|
|
z-index: 1;
|
|
bottom: 125%;
|
|
left: 50%;
|
|
margin-left: -60px;
|
|
|
|
/* Fade in tooltip */
|
|
opacity: 0;
|
|
transition: opacity 0.3s;
|
|
}
|
|
.info-text::after {
|
|
content: "";
|
|
position: absolute;
|
|
top: 100%;
|
|
left: 50%;
|
|
margin-left: -5px;
|
|
border-width: 5px;
|
|
border-style: solid;
|
|
border-color: #555 transparent transparent transparent;
|
|
}
|
|
}
|
|
.info:hover {
|
|
.info-text {
|
|
visibility: visible;
|
|
opacity: 1;
|
|
}
|
|
}
|
|
.darkblue {
|
|
color: darkblue;
|
|
}
|
|
|
|
.small-input {
|
|
max-width: 100px;
|
|
}
|
|
|
|
:javascript
|
|
$( "#reset-radio" ).click(function(event){
|
|
$( ":radio" ).prop('checked',false);
|
|
})
|