Sha256: 99424bfa4feaf00de12a38d6f168674a71c67ea1b1ebce33ccbaaf77d594b6d3

Contents?: true

Size: 1.32 KB

Versions: 5

Compression:

Stored size: 1.32 KB

Contents

module Skr
    module Concerns

        module HasSkuLocLines

            extend ActiveSupport::Concern

            module InstanceMethods

                def other_charge_lines
                    self.lines.select{|l| l.sku.is_other_charge? }
                end

                def regular_lines
                    self.lines.reject{|l| l.sku.is_other_charge? }
                end

                def regular_lines_total
                    self.regular_lines.sum{|l|l.extended_price}
                end

                def subtotal
                    self.regular_lines.inject(0){|sum,line| sum + line.extended_price }
                end

                def total
                    if total = self.read_attribute('total')
                        BigDecimal.new(total)
                    elsif self.new_record? || self.association(:lines).loaded?
                        self.lines.inject( BigDecimal.new('0') ){|sum,line| sum += line.extended_price }
                    else
                        BigDecimal.new( self.lines.sum('price*qty') )
                    end
                end
            end

            module ClassMethods

                def has_sku_loc_lines
                    self.send :include, InstanceMethods
                    export_methods :total
                end
            end

        end
    end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
stockor-0.1.9 lib/skr/concerns/has_sku_loc_lines.rb
stockor-0.1.8 lib/skr/concerns/has_sku_loc_lines.rb
stockor-0.1.7 lib/skr/concerns/has_sku_loc_lines.rb
stockor-0.1.5 lib/skr/concerns/has_sku_loc_lines.rb
stockor-core-0.2 lib/skr/concerns/has_sku_loc_lines.rb