-checkbox = false .qi_header .right =link_to ic(:plus)+" Demande de commande", admin_p_customers_path(:offre => true), :class => "btn btn-primary btn-ap-add" %h1 Tableaux de bord achats .qi_search_row =form_tag "", :method => "get", :onsubmit => "" do -params[:search] =params[:search] || {} %p Date de consultation : %table %tr.form-inline %td Début %td.input-group =text_field_tag :start, params[:start],:class => "form-control datepicker", :placeholder => "Début" .input-group-append %span.input-group-text{:onclick => "$(this).prev('input').val('');"} =ic(:times) %td.pl-4 Fin %td.input-group =text_field_tag :stop, params[:stop],:class => "form-control datepicker", :placeholder => "Fin" .input-group-append %span.input-group-text{:onclick => "$(this).prev('input').val('');"} =ic(:times) %td Statut : =select_tag "search[state]", options_for_select([["",""]]+PCustomerSheet.group(:state).all.map{|a| [a.state, a.state]}, params[:search][:state]), class: "custom-select" %td Marque : =select_tag "search[s_brand]", options_for_select([["",""],["Aucune","null"]]+SBrand.pluck(:name, :id), params[:search][:s_brand]), class: "custom-select" %td Code client : =text_field_tag "search[p_customer_code]", params[:search][:p_customer_code],:class => "form-control" %tr.form-inline %td{width: "110px"} %td.right.mx-4 -if @start and @stop =link_to "< Mois précédent",request.query_parameters.merge({start: ((@start - 1.month).beginning_of_month.strftime('%d/%m/%Y')), stop: ((@stop - 1.month).end_of_month.strftime('%d/%m/%Y'))}), :class => "btn btn-tertiary" %td{width: "20px"} %td.mr-auto -if @start and @stop =link_to "Mois suivant >",request.query_parameters.merge({start: ((@start + 1.month).beginning_of_month.strftime('%d/%m/%Y')), stop: ((@stop + 1.month).end_of_month.strftime('%d/%m/%Y'))}), :class => "btn btn-tertiary" =link_to ic(:search)+" Rechercher", "#", :class => "btn btn-default btn-qi-search", :onclick => "$(this).closest('form').submit();$(this).html('...');return false;" =#render :partial => "qi/qi_ordered_table_search_footer", :locals => {:collection_object => @p_customer_sheets} -nbr_td = 10 .qi_pannel.padding.new_table_container .table-slider .inner .table-area{:style => "overflow:auto;"} .table-area-inner =form_tag new_admin_price_document_path(), :method => "get" do =hidden_field_tag :"document_type", "Demande prix" =hidden_field_tag :"price_line_ids[]", "" .freezeTable %table.table.table-striped.table-hover.table-bordered.data_table %thead.header %tr -if checkbox %th %th.mask.plus-all =link_to ic("plus-square-o"), '#' %th Produit %th Référence / %th Qté %th.mask.col-detail N° Commande %th.mask.col-detail Client %th.mask.col-detail Statut %th.mask.col-detail Commentaire %th.mask.col-detail Date saisie %th.mask.col-detail Date validation %th.mask Date livraison (ETA) %th.mask Qté nécessaire %th.mask Qté en stock %th.mask Qté souhaité %span.info =ic("info-circle") %span.info-text-bottom BPA - Qté en stock %th.mask BPA %th.mask AV BPA %th.mask PAS BPA %tbody -p_product_id = nil -@price_lines.where.not(:p_product_ref_id => nil).group(:p_product_ref_id).order("p_product_id ASC").each do |plr| -if p_product_id != plr.p_product_id -p_product_id = plr.p_product_id %tr.prdct_tr -nbr_td.times.each do %td %td.col-detail %td.col-detail %td.col-detail %td.col-detail %td.col-detail %td.col-detail -ppr_lines = @price_lines.where(:p_product_ref_id => plr.p_product_ref.id) %tr.ref_tr - bpa_qte = ppr_lines.where(:cc_state => "BPA").sum(:qte).to_i - qte_available = LineStock.where(p_product_ref_id: plr.p_product_ref.id).sum(:qte_available).to_i -if checkbox %td %td.plus =link_to ic("plus-square-o"), "#" %td =link_to plr.p_product_ref.p_product.name, [:admin, plr.p_product_ref] %td =link_to [:admin, plr.p_product_ref] do =plr.p_product_ref.ct_sub_name =plr.p_product_ref.p_product_color.name if plr.p_product_ref.p_product_color %td.col-detail %td.mask.col-detail / %td.mask %td.mask.col-detail %td.mask.col-detail %td.mask.col-detail %td.mask.col-detail %td.mask %td.mask ∑ =ppr_lines.sum(:qte).to_i %br %span.asap =ic(:fire) =ppr_lines.asap_triage(20).first %br %span.non-asap =ic(:hourglass) =ppr_lines.asap_triage(20).last %td.mask = qte_available %td.mask =number_field_tag "qte[#{plr.p_product_ref.id}]", '', class: "small-input", value: (bpa_qte - qte_available) %td.mask = bpa_qte %td.mask =ppr_lines.where(:cc_state => "AV BPA").sum(:qte).to_i %td.mask =ppr_lines.where(:cc_state => "PAS BPA").sum(:qte).to_i %tbody.detail -ppr_lines.each do |price_line| %tr - if checkbox %td =check_box_tag :"price_line_ids[]", price_line.id / %td %td %td %td %td.col-detail =link_to [:admin, price_line.price_line_block.price_lineable] do =price_line.price_line_block.price_lineable.id =price_line.price_line_block.price_lineable.past_id %td.col-detail =link_to price_line.p_customer.show_name, [:admin, price_line.p_customer] %td =state_helper price_line.price_line_block.price_lineable.state %td =price_line.comment %td = l price_line.cc_creation_date, :format => :short_date %td = l price_line.cc_validation_date, :format => :short_date if price_line.cc_validation_date %td = l price_line.cc_wish_date, :format => "semaine %V (%Y)" %td =price_line.qte.to_i %td %td %td =price_line.qte.to_i if price_line.cc_state == "BPA" %td =price_line.qte.to_i if price_line.cc_state == "AV BPA" %td =price_line.qte.to_i if price_line.cc_state == "PAS BPA" -p_product_id = plr.p_product_id %tr -nbr_td.times.each do %td %td.col-detail %td.col-detail %td.col-detail %td.col-detail %td.col-detail %td.col-detail =submit_tag "Créer une demande de prix", :class => "btn btn-primary" :scss .ref_tr{ td{ border-top:3px solid gray; } } .prdct_tr{ td{ border-bottom:3px solid red; } } .asap { color: red; } .non-asap { color: darkblue; } .small-input { max-width: 100px; } :javascript $('.detail').hide() $('.col-detail').hide() let state = 0 $('.plus').click(function(event){ if( event.currentTarget.className == "plus") { $(event.currentTarget).removeClass('plus').addClass('minus') state += 1 $('.col-detail').show() $(event.currentTarget).parent().parent().next('tbody.detail').toggle(); }else{ $(event.currentTarget).removeClass('minus').addClass('plus') state -= 1 $(event.currentTarget).parent().parent().next('tbody.detail').toggle(); } $(event.currentTarget).find('i').toggleClass('fa fa-plus-square-o').toggleClass('fa fa-minus-square-o') if(state == 0){ $('.col-detail').hide() }else{ $('.col-detail').show() } }); $('.plus-all').click(function(event){ if( event.currentTarget.className == "mask plus-all") { state += $('.plus').length $(event.currentTarget).removeClass('plus-all').addClass('minus-all') $('tbody.detail').show(); $('.plus').find('i').toggleClass('fa fa-plus-square-o').toggleClass('fa fa-minus-square-o') $('.plus').removeClass('plus').addClass('minus') $(event.currentTarget).find('i').removeClass('fa fa-plus-square-o').addClass('fa fa-minus-square-o') }else{ state -= $('.minus').length $(event.currentTarget).removeClass('minus-all').addClass('plus-all') $('.minus').find('i').removeClass('fa fa-minus-square-o').addClass('fa fa-plus-square-o') $('.minus').removeClass('minus').addClass('plus') $('tbody.detail').hide(); $(event.currentTarget).find('i').removeClass('fa fa-minus-square-o').addClass('fa fa-plus-square-o') } if(state == 0){ $('.col-detail').hide() }else{ $('.col-detail').show() } });