class Purchase < ActiveRecord::Base ## Associaciones belongs_to :supplier belongs_to :pointsale belongs_to :warehouse belongs_to :user has_many :cash_registers_moves has_many :purchase_details has_many :inventories_moves has_many :products, :through => :purchase_details ##--- Llevar registro de Actividad del usuario audited enum status: [:notpaid, :cancelled, :paid, :parcial ] accepts_nested_attributes_for :purchase_details ##--- Validaciones previas de guardar validates :supplier_id , presence: { message: "Debe seleccionar el proveedor." } validates :pointsale_id , presence: { message: "Debe seleccionar un almacén o un punto de venta." }, :if => Proc.new {|c| c.warehouse_id.blank?} validates :warehouse_id , presence: { message: "Debe seleccionar un almacén o un punto de venta." }, :if => Proc.new {|c| c.pointsale_id.blank?} validates :exchange , presence: { message: "Debe capturar el tipo de cambio." }, :if => Proc.new {|c| c.is_in_dollars? } ##--- Tipo de vistas / consultas scope :notpaid, -> { where( "status = 0") } scope :paid, -> { where( "status = 2") } scope :cancelled, -> { where( "status = 1") } scope :active, -> { where( "status != 1") } def code_with_price "Codigo: #{purchase_code} - $ #{total}" end end