Wip bon de livraison
This commit is contained in:
parent
2a540f292a
commit
6751e34f29
@ -670,4 +670,84 @@ class Admin::PriceDocumentsController < ApplicationController
|
||||
redirect_to admin_price_document_path(@price_document)
|
||||
end
|
||||
end
|
||||
|
||||
def bon_de_reception
|
||||
@past_price_document = PriceDocument.find(params[:id])
|
||||
|
||||
@p_customer_sheet = @past_price_document.ref_element
|
||||
|
||||
if @p_customer_sheet
|
||||
price_document = @p_customer_sheet.price_documents.new(:price_document_type => PriceDocumentType.find_by_label("Bon de réception achat"), :demande_de_prix_id => @past_price_document.id, :date => Date.today)
|
||||
|
||||
else
|
||||
price_document = PriceDocument.new(:price_document_type => PriceDocumentType.find_by_label("Bon de réception achat"), :date => Date.today)
|
||||
end
|
||||
|
||||
price_document.doc_ref_id = @past_price_document.id
|
||||
|
||||
price_document.p_fournisseur = @past_price_document.p_fournisseur
|
||||
|
||||
|
||||
price_document.price_line_block = @past_price_document.price_line_block.dup
|
||||
|
||||
if @past_price_document.cc_label == "Commande achat"
|
||||
price_document.bon_de_commande_achat_id = @past_price_document.id
|
||||
price_document.reliquat = true if PriceDocument.where(:bon_de_commande_achat_id => @past_price_document.id, :price_document_type_id => [5]).count > 0
|
||||
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
if @past_price_document.cc_label == "Facture achat"
|
||||
price_document.facture_achat_id = @past_price_document.id
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
price_document.price_line_block.ac_bon_de_commande_id = nil
|
||||
price_document.price_line_block.ac_bon_de_livraison_id = nil
|
||||
price_document.price_line_block.ac_facture_id = nil
|
||||
price_document.price_line_block.ac_block_type = nil
|
||||
price_document.price_line_block.ac_reliquat = nil
|
||||
|
||||
|
||||
|
||||
|
||||
@past_price_document.price_line_block.price_lines.each do |pl|
|
||||
new_pl = pl.dup
|
||||
new_pl.price_line_ref_id = pl.id
|
||||
new_pl.ac_block_type = nil
|
||||
|
||||
if price_document.reliquat and @p_customer_sheet
|
||||
bls = PriceDocument.where(:bon_de_commande_achat_id => @past_price_document.id, :price_document_type_id => [5])
|
||||
|
||||
qte_ok = PriceLine.where(:price_line_ref_id => new_pl.price_line_ref_id).where(:price_line_block_id => PriceLineBlock.where(:price_lineable_type => "PriceDocument", :price_lineable_id => bls.ids)).sum(:qte)
|
||||
|
||||
new_pl.qte = new_pl.qte - qte_ok
|
||||
|
||||
end
|
||||
price_document.price_line_block.price_lines << new_pl
|
||||
end
|
||||
|
||||
if price_document.save
|
||||
#price_document.reset_for_update
|
||||
#price_document.archive_now
|
||||
if @p_customer_sheet
|
||||
@p_customer_sheet.state = "Bon de réception achat"
|
||||
@p_customer_sheet.save
|
||||
end
|
||||
|
||||
if price_document.ref_element
|
||||
redirect_to [:admin, price_document.ref_element]
|
||||
else
|
||||
redirect_to [:admin, price_document]
|
||||
end
|
||||
|
||||
|
||||
else
|
||||
render :inline => price_document.errors.messages.to_s
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -5,25 +5,25 @@
|
||||
|
||||
-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
|
||||
|
||||
@ -35,16 +35,21 @@
|
||||
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.d_number?
|
||||
%tr
|
||||
%td Numéro
|
||||
%td=@price_document.d_number
|
||||
%tr
|
||||
%td Date
|
||||
%td=l @price_document.date, :format => :date
|
||||
|
||||
-if @price_document.label == "Demande prix"
|
||||
%tr
|
||||
@ -57,23 +62,23 @@
|
||||
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é à
|
||||
Envoyé à
|
||||
%td
|
||||
=simple_format @price_document.acheteur_text
|
||||
|
||||
|
||||
%tr
|
||||
%td
|
||||
Lien pour consultation
|
||||
@ -86,20 +91,20 @@
|
||||
.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
|
||||
-page = (params[:page] and params[:page] != "") ? params[:page] : 1
|
||||
|
||||
-@price_lines = @price_document.price_line_block.price_lines
|
||||
|
||||
@ -112,85 +117,86 @@
|
||||
|
||||
|
||||
|
||||
.clear
|
||||
.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)
|
||||
|
||||
-enable_stat = false
|
||||
-if enable_stat
|
||||
%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
|
||||
|
||||
|
||||
.clear
|
||||
=render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @stat_lines}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
%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}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
%h3 Lignes de produits
|
||||
%table.table
|
||||
%thead
|
||||
%tr
|
||||
%th
|
||||
%th Référence
|
||||
%th Produit
|
||||
%th Marque
|
||||
%th Désignation
|
||||
%th Qté
|
||||
%th P.U. HT
|
||||
@ -204,131 +210,130 @@
|
||||
="##{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
|
||||
|
||||
|
||||
=price_line.p_product_ref.p_product.s_brand.name
|
||||
|
||||
%td
|
||||
=price_line.title
|
||||
|
||||
=link_to price_line.p_product_ref.cc_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.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
|
||||
|
||||
/ %td=# price_line.line_stocks.sum(:price_ht)
|
||||
|
||||
.qi_row
|
||||
-if current_admin.has_permission?("show-costs")
|
||||
%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 @price_document.d_number
|
||||
-if @price_document.cc_label == "Commande achat"
|
||||
%p=link_to "Générer un bon de réception", bon_de_reception_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
|
||||
=pl.p_product_ref.cc_name
|
||||
=ppa.p_product_ref.cc_name
|
||||
%td
|
||||
=@a = pl.qte.to_f
|
||||
|
||||
=@a = (pl.qte.to_f * ppa.qte.to_f).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
|
||||
|
||||
=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 pl.p_product_ref.stocked and @a > @b
|
||||
-if @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
|
||||
|
||||
-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
|
||||
|
||||
|
||||
.clear
|
||||
=render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @line_stocks}
|
||||
|
||||
|
||||
-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
|
||||
-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")
|
||||
@ -337,19 +342,19 @@
|
||||
|
||||
|
||||
|
||||
.clear
|
||||
.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
|
||||
-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")
|
||||
@ -358,7 +363,7 @@
|
||||
|
||||
|
||||
|
||||
.clear
|
||||
.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
|
||||
|
@ -632,6 +632,8 @@ Rails.application.routes.draw do
|
||||
post :analyse_reponses_save
|
||||
get :generate_final_consult
|
||||
get :buy_order_create
|
||||
get :bon_de_reception
|
||||
|
||||
end
|
||||
collection do
|
||||
get :search_to_affect
|
||||
|
Reference in New Issue
Block a user