class Skr::InvLine
Public Instance Methods
ensure_unlocked()
click to toggle source
# File lib/skr/models/inv_line.rb, line 49 def ensure_unlocked if invoice.is_locked? self.errors.add(:invoice_date, "invoice date falls on a locked GL Period") end end
total()
click to toggle source
# File lib/skr/models/inv_line.rb, line 45 def total (qty||0) * (price||0) end
Private Instance Methods
gl_origin_description()
click to toggle source
# File lib/skr/models/inv_line.rb, line 106 def gl_origin_description "INV #{self.invoice.visible_id}:#{self.sku.code}" end
perform_adjustments()
click to toggle source
# File lib/skr/models/inv_line.rb, line 81 def perform_adjustments debit = self.sku.gl_asset_account credit = self.invoice.customer.gl_receivables_account old_extended_price = self.price_was && self.qty_was ? self.price_was * self.qty_was : BigDecimal.new(0) price_change = self.extended_price - old_extended_price if self.sku.does_track_inventory? changed_qty = self.qty - (qty_was || 0) self.sku_trans.build( origin: self, qty: changed_qty * -1, sku_loc: self.sku_loc, uom: self.uom, mac: 0, cost: price_change, origin_description: gl_origin_description, debit_gl_account: debit, credit_gl_account: credit ) else GlTransaction.push_or_save( owner: self, amount: price_change, debit: debit, credit: credit, options: {description: gl_origin_description} ) end true end
prevent_destroy()
click to toggle source
# File lib/skr/models/inv_line.rb, line 110 def prevent_destroy errors.add(:base, "Can not destroy #{self.class.model_name}, only create/modify is allowed" ) end
set_defaults()
click to toggle source
# File lib/skr/models/inv_line.rb, line 57 def set_defaults # puts "set_defaults #{self}" line = [ self.pt_line, self.so_line ].detect{ |l| ! l.blank? } if line self.uom = line.uom if self.uom.blank? self.sku_code = line.sku_code self.description ||= line.description self.sku_loc ||= line.sku_loc self.qty ||= line.qty self.so_line ||= line.so_line elsif sku self.uom = sku.uoms.default if self.uom_code.blank? self.sku_code ||= sku.code self.description ||= sku.description self.sku_loc_id ||= sku.sku_locs.for_location( self.invoice.location ).id if self.invoice && self.invoice.location end if !price && invoice && invoice.customer && sku_loc && uom.present? self.price = Skr.config.pricing_provider.price( sku_loc:sku_loc, customer:invoice.customer, uom:uom, qty: qty ) end true end