.qi_header .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 = diag do = link_to i(:pencil), edit_admin_price_document_path(@price_document) = link_to i(:eye), admin_price_document_path(@price_document.id), :remote => false, :target => "_blank" = link_to i(:download), print_admin_price_document_path(@price_document.token), :remote => false, :target => "_blank" if !PriceLineBlock::PURCHASE_BLOCKS.include?(@price_document.block_type) %h1 Documents %span =@price_document.price_document_type.label %span ="##{@price_document.id}" %span =@price_document.d_number .qi_row %table.table.table-striped -if @price_document.label == "Réponse fournisseur" %tr %td Nom fournisseur saisi %td =@price_document.public_fournisseur_name -if @price_document.p_fournisseur %tr %td Fournisseur %td =link_to @price_document.p_fournisseur.name, [:admin, @price_document.p_fournisseur] if @price_document.p_fournisseur -if @price_document.label == "Demande prix" %tr %td Avancement (%) %td =@price_document.avancement.to_s + " %" %tr %td Désignation %td =@price_document.list_designaton %tr %td Date de fin de consultation : %td =l @price_document.end_date if @price_document.end_date %tr %td Commentaire %td =simple_format @price_document.dp_comment %tr %td Envoyé à %td =simple_format @price_document.acheteur_text %tr %td Lien pour consultation %td =link_to consult_admin_price_document_url(:id => @price_document.f_token, :lang => nil), consult_admin_price_document_url(:id => @price_document.f_token, :lang => nil) .qi_row .qi_pannel.qi_plain.padding -if false =debug @price_document -if true -price_line_block = @price_document.price_line_block =#render price_line_block -else -params[:search][:per_page] = params[:search][:per_page] || 5000 -per_page = params[:search][:per_page] -page = (params[:page] and params[:page] != "") ? params[:page] : 1 -@price_lines = @price_document.price_line_block.price_lines -@price_lines = sort_by_sorting(@price_lines, "created_at DESC") -@price_lines = @price_lines.page(page).per(per_page) %br .clear =render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @price_lines, :key => "reponses-prix-show"} -if @price_document.label != "Demande prix" and @price_document.label != "Réponse fournisseur" -if current_admin and current_admin.id == 1 %table.table %tr %th Archivé ? %td = diag do -if @price_document.archived Oui =link_to "Désarchiver", unarchive_now_admin_price_document_path(@price_document.id) -else =link_to "Archiver", archive_now_admin_price_document_path(@price_document.id) %tr %th Id bloc %td=price_line_block.id %tr %th Cout block %td=price_line_block.cc_cost_ht -params[:search][:per_page] = params[:search][:per_page] || 5000 -per_page = params[:search][:per_page] -page = (params[:page] and params[:page] != "") ? params[:page] : 1 -@stat_lines = @price_document.stat_lines.order("date DESC, created_at DESC") -@stat_lines = sort_by_sorting(@stat_lines, "created_at DESC") -@stat_lines = @stat_lines.page(page).per(per_page) %br =link_to "Générer les stats", generate_stat_lines_admin_price_document_path(@price_document), :class => "btn btn-primary" %table.table %tr %th HT %td =number_to_currency @stat_lines.sum(:tot_amount_ht) %tr %th TTC %td =number_to_currency @stat_lines.sum(:tot_amount_ttc) %tr %th Coût HT %td =number_to_currency @stat_lines.sum(:cost_ht) .clear =render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @stat_lines} %table.table %thead %tr %th %th Référence %th Produit %th Désignation %th Qté %th P.U. HT %th TVA %th Montant HT %tbody -price_line_block.price_lines.each do |price_line| %tr %td ="##{price_line.id}" %td =price_line.ref %td =link_to price_line.p_product_ref.p_product.name, edit_admin_p_product_path(price_line.p_product_ref.p_product) if price_line.p_product_ref and price_line.p_product_ref.p_product %td =price_line.title %td.numeraire =price_line.qte %td.numeraire =number_to_currency price_line.price_u_ht %td.numeraire =price_line.tva_account_value.to_s+"%" %td.numeraire =number_to_currency price_line.tot_amount_ht %td = price_line.line_stocks.sum(:price_ht) -if current_admin.has_permission?("show-costs") %br %br %p -if @price_document.price_document_type_id == 6 =link_to "Générer les stocks", generate_stocks_admin_price_document_path(@price_document), :class => "btn btn-primary" if !@price_document.stock_ok -elsif @price_document.price_document_type_id == 4 or @price_document.price_document_type_id == 5 %p Coût : =number_to_currency @price_document.cost_ht %p Marge : =number_to_currency @price_document.marge_ht -if !@price_document.cost_ok =link_to "Mettre à jour les stocks, calculer la marge", update_stocks_admin_price_document_path(@price_document), :class => "btn btn-primary" -if false -if @price_document.price_document_type_id == 4 or @price_document.price_document_type_id == 5 and !@price_document.cost_ok %table.table.table-striped.table-hover.table-bordered %thead %tr %th Produit %th Quantité dans cette pièce comptable %th Quantité restante %th -@price_document.price_line_block.price_lines.all.each do |pl| -if pl.p_product_ref -if pl.p_product_ref.assembled -pl.p_product_ref.p_product_assembleds.all.each do |ppa| %tr %td =ppa.p_product_ref.cc_name %td =@a = (pl.qte.to_f * ppa.qte.to_f).to_f %td =link_to admin_line_stocks_path(:p_product_ref_id => ppa.p_product_ref.id) do =@b = LineStock.where(:p_product_ref_id => ppa.p_product_ref_id).sum(:qte_available).to_f %td -if @a > @b .red=ic :warning -else %tr %td =pl.p_product_ref.cc_name %td =@a = pl.qte.to_f %td =link_to admin_line_stocks_path(:p_product_ref_id => pl.p_product_ref.id) do =@b = LineStock.where(:p_product_ref_id => pl.p_product_ref_id).sum(:qte_available).to_f %td -if pl.p_product_ref.stocked and @a > @b .red=ic :warning -if @price_document.price_document_type_id == 6 or @price_document.price_document_type_id == 4 or @price_document.price_document_type_id == 5 %h3 Stocks générés #bills -params[:search][:per_page] = params[:search][:per_page] || 5000 -per_page = params[:search][:per_page] -page = (params[:page] and params[:page] != "") ? params[:page] : 1 -@line_stocks = @price_document.line_stocks.order("date DESC, created_at DESC") -if params[:price_document_ids] -@line_stocks = @line_stocks.where(:id => params[:price_document_ids]) -@line_stocks = sort_by_sorting(@line_stocks, "created_at DESC") -@line_stocks = @line_stocks.page(page).per(per_page) %br .clear =render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @line_stocks} -if @price_document.label == "Demande prix" %h3.ml-2 Réponses fournisseur #bills -params[:search][:per_page] = params[:search][:per_page] || 5000 -per_page = params[:search][:per_page] -page = (params[:page] and params[:page] != "") ? params[:page] : 1 -@price_documents = PriceDocument.where(:doc_ref_id => @price_document.id, :price_document_type_id => PriceDocumentType.find_by_label("Réponse fournisseur").id) -@price_documents = sort_by_sorting(@price_documents, "created_at DESC") -@price_documents = @price_documents.page(page).per(per_page) %br .clear =render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @price_documents, :key => "reponses-prix-show"} %h3.ml-2 Consultations fournisseur #consult -params[:search][:per_page] = params[:search][:per_page] || 5000 -per_page = params[:search][:per_page] -page = (params[:page] and params[:page] != "") ? params[:page] : 1 -@price_documents = PriceDocument.where(:doc_ref_id => @price_document.id, :price_document_type_id => PriceDocumentType.find_by_label("Consultation fournisseur").id) -@price_documents = sort_by_sorting(@price_documents, "created_at DESC") -@price_documents = @price_documents.page(page).per(per_page) %br .clear =render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @price_documents, :key => "reponses-prix-show"} -if @price_documents.empty? .qi_pannel.qi_plain.padding Pas de consultation générée. %br Vous devez d'abord Selectionner les prix sur le page d'analyse : =link_to ic("bar-chart")+" analyse des réponses", analyse_reponses_admin_price_document_path(@price_document), class: "btn btn-primary" puis Generer les consultations -@price_documents.each do |price_document_consult| %h4.ml-2= price_document_consult.p_fournisseur.name = semantic_form_for [:admin, price_document_consult], :html => {:class => "qi_price_form"}, :remote => false do |form| = form.button "Valider modifications)", type: :submit, class: "btn btn-primary m-2" = link_to ic(:clipboard) + " Copier le text", "#", class: "btn btn-primary", "data-document" => price_document_consult.id, onclick: 'copyPriceLines(event)' = link_to "Generer la commande", buy_order_create_admin_price_document_path(price_document_consult) .price-lines{"data-document" => price_document_consult.id} =form.semantic_fields_for :price_line_block do |f| .mx-2 =f.semantic_fields_for :price_lines do |form| =render partial: "admin/price_lines/form_consult", locals: {form: form} :javascript const copyPriceLines = (event) => { event.preventDefault() let priceDocumentId = event.target.dataset.document let names = $(`.p_product_ref_cc_name_${priceDocumentId}`) let qtes = $(`.input_price_line_qte_${priceDocumentId}`) let prices = $(`.price_line_price_u_ht_${priceDocumentId}`) let table = [] names.each(function( i ) { let row = [] row.push(qtes[i].valueAsNumber) row.push(" X ") row.push(names[i].innerText) row.push(" @ ") row.push(prices[i].innerText) table.push(row.join(' ')) }) copyStringToClipboard(table.join('\r\n')) } function copyStringToClipboard (str) { // Create new element var el = document.createElement('textarea'); // Set value (string to be copied) el.value = str; // Set non-editable to avoid focus and move outside of view el.setAttribute('readonly', ''); el.style = {position: 'absolute', left: '-9999px'}; document.body.appendChild(el); // Select text inside element el.select(); // Copy text to clipboard document.execCommand('copy'); // Remove temporary element document.body.removeChild(el); }