lib/xeroizer/models/invoice.rb in xeroizer-2.18.1 vs lib/xeroizer/models/invoice.rb in xeroizer-2.19.0

- old
+ new

@@ -87,10 +87,11 @@ belongs_to :contact has_many :line_items, :complete_on_page => true has_many :payments has_many :credit_notes + has_many :prepayments validates_presence_of :date, :due_date, :unless => :new_record? validates_inclusion_of :type, :in => INVOICE_TYPES validates_inclusion_of :status, :in => INVOICE_STATUSES, :unless => :new_record? validates_inclusion_of :line_amount_types, :in => LINE_AMOUNT_TYPES, :unless => :new_record? @@ -149,11 +150,11 @@ end # Calculate sub_total from line_items. def sub_total(always_summary = false) if !@sub_total_is_set && not_summary_or_loaded_record(always_summary) - overall_sum = (line_items || []).inject(BigDecimal.new('0')) { | sum, line_item | sum + line_item.line_amount } + overall_sum = (line_items || []).inject(BigDecimal('0')) { | sum, line_item | sum + line_item.line_amount } # If the default amount types are inclusive of 'tax' then remove the tax amount from this sub-total. overall_sum -= total_tax if line_amount_types == 'Inclusive' overall_sum else @@ -162,11 +163,11 @@ end # Calculate total_tax from line_items. def total_tax(always_summary = false) if !@total_tax_is_set && not_summary_or_loaded_record(always_summary) - (line_items || []).inject(BigDecimal.new('0')) { | sum, line_item | sum + line_item.tax_amount } + (line_items || []).inject(BigDecimal('0')) { | sum, line_item | sum + line_item.tax_amount } else attributes[:total_tax] end end @@ -205,9 +206,15 @@ end # Approve a draft invoice def approve! change_status!('AUTHORISED') + end + + # Send an email containing the invoice. + def email + email_url = "#{parent.url}/#{CGI.escape(id)}/Email" + parent.application.http_post(parent.application.client, email_url, "") end protected def change_status!(new_status)