64 lines
2.1 KiB
Ruby
64 lines
2.1 KiB
Ruby
class ProductOrderDocument < ActiveRecord::Base
|
|
belongs_to :product_order
|
|
belongs_to :product_order_document_type
|
|
|
|
after_create do
|
|
generate_number
|
|
end
|
|
|
|
before_validation do
|
|
self.verify
|
|
if !self.id
|
|
puts "TTTT"
|
|
puts ProductOrderDocument.where(:product_order_id => self.product_order_id,:product_order_document_type_id => self.product_order_document_type_id).count
|
|
|
|
#sdffdsfds = sffds
|
|
if ProductOrderDocument.where(:product_order_id => self.product_order_id,:product_order_document_type_id => self.product_order_document_type_id).count > 0
|
|
|
|
#sdfsd = sdfdsfsdf
|
|
errors.add(:product_order_id, 'Le document existe déjà')
|
|
end
|
|
end
|
|
end
|
|
|
|
def generate_number
|
|
|
|
|
|
if !self.d_number
|
|
|
|
self.d_year = self.product_order.created_at.year
|
|
|
|
|
|
self.d_prefix = self.product_order_document_type.prefix.to_s
|
|
self.label = self.product_order_document_type.label.to_s
|
|
self.header = self.product_order_document_type.header.to_s
|
|
self.footer = self.product_order_document_type.footer.to_s
|
|
self.image_file_id = self.product_order_document_type.image_file_id
|
|
self.data_file_id = self.product_order_document_type.data_file_id
|
|
self.reseaux_id = self.product_order_document_type.reseaux_id
|
|
self.fournisseur_id = self.product_order_document_type.fournisseur_id
|
|
self.name = self.product_order_document_type.name
|
|
|
|
last_number = 0
|
|
last_dt = ProductOrderDocument.where("d_number is not null").where(:d_year => self.d_year,:product_order_document_type_id => self.product_order_document_type_id).order("d_index DESC").first
|
|
#sdfdfs = sfsdsdf
|
|
last_number = last_dt.d_index if last_dt
|
|
|
|
self.d_index = last_number+1
|
|
self.d_number = self.d_prefix+self.d_year.to_s+('%05d' % self.d_index)
|
|
self.save #(:validate => false)
|
|
|
|
|
|
end
|
|
end
|
|
def verify(size=16)
|
|
if !self.token
|
|
s = ""
|
|
size.times { s << (i = Kernel.rand(62); i += ((i < 10) ? 48 : ((i < 36) ? 55 : 61 ))).chr }
|
|
self.token = s
|
|
end
|
|
end
|
|
|
|
|
|
end
|