This repository has been archived on 2021-11-24. You can view files and clone it, but cannot push or open issues or pull requests.
phone_app/app/models/partition.rb
2021-08-23 10:26:02 +02:00

127 lines
3.0 KiB
Ruby

class Partition < ApplicationRecord
belongs_to :admin
has_many :partition_lines, :dependent => :destroy
accepts_nested_attributes_for :partition_lines, allow_destroy: true
acts_as_sorting :fields => {
:id => {:name => "Id", :reorder => true},
:created_at => {:name => "Date de création", :reorder => true},
:date => {:name => "Date d'exécution", :reorder => true},
:stock_ok => {:name => "Executé ?", :reorder => true, :as => :boolean},
:actions => {:name => "Actions", :reorder => false}
}
has_many :line_stocks, :as => :stockable
def cancel_execution
#Fonction Admin
self.line_stocks.each do |ls|
ls.destroy
end
self.stock_ok = false
self.save
end
def ecart_warning
r = false
self.partition_lines.each do |pl|
r = true if pl.dif_weight.to_f != 0.0
end
return r
end
def stock_warning
r = false
self.partition_lines.each do |pl|
r = true if !pl.stock_available?
end
return r
end
def ok_to_execute
if !self.stock_ok and !self.ecart_warning and !self.stock_warning
true
else
false
end
end
def generate_stock
if self.ok_to_execute
self.partition_lines.each do |pl|
new_line_stock_price = 0.0
decr_line_stock = LineStock.create(:date => self.date, :p_product_ref => pl.p_product_ref_from, :qte => pl.qte_from*-1, :description => self.description, :price_ht => 0.0, :partition_line_id => pl.id, :stockable => self)
puts "a"
puts decr_line_stock.id
puts "b"
price = 0.0
line_stock_usages = []
qte_to_affect = pl.qte_from
LineStock.where(:p_product_ref_id => pl.p_product_ref_from.id).where("qte_available > 0.0").each do |ls| #.where("date <= ?", self.date) à rajouter lorsqu'on bloquera les dates...
if qte_to_affect <= ls.qte_available
qte_here = qte_to_affect
else
qte_here = ls.qte_available
end
qte_to_affect = qte_to_affect - qte_here
lsu = LineStockUsage.new(:qte => qte_here, :line_stock => ls, :dest_line_stock_id => decr_line_stock.id)
if lsu.save
else
raise
end
line_stock_usages << lsu
price += lsu.price_ht
ls.save
break if qte_to_affect == 0.0
#price_u_ht
end
decr_line_stock.price_ht = price * -1
decr_line_stock.save
new_line_stock_price += (decr_line_stock.price_ht * -1)
LineStock.create(:date => self.date, :p_product_ref => pl.p_product_ref_to, :description => self.description, :qte => pl.qte_to, :price_ht => new_line_stock_price, :partition_line_id => pl.id, :stockable => self)
end
self.stock_ok = true
self.save
return true
end
end
end