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)