Class: Uomi::InvoiceAdjustment

Inherits:
Object
  • Object
show all
Defined in:
lib/uomi/invoice_adjustment.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(invoice) ⇒ InvoiceAdjustment

Returns a new instance of InvoiceAdjustment.



7
8
9
10
# File 'lib/uomi/invoice_adjustment.rb', line 7

def initialize(invoice)
  raise CannotAdjustIssuedDocument unless invoice.draft?
  self.invoice = invoice
end

Instance Attribute Details

#invoiceObject

Returns the value of attribute invoice.



5
6
7
# File 'lib/uomi/invoice_adjustment.rb', line 5

def invoice
  @invoice
end

Instance Method Details

#add_line_item(params) ⇒ Object



16
17
18
# File 'lib/uomi/invoice_adjustment.rb', line 16

def add_line_item(params)
  invoice.line_item(params)
end

#add_payment_reference(payment_reference) ⇒ Object



29
30
31
# File 'lib/uomi/invoice_adjustment.rb', line 29

def add_payment_reference(payment_reference)
  invoice.payment_reference(payment_reference)
end

#decorate_with(decorations) ⇒ Object



45
46
47
# File 'lib/uomi/invoice_adjustment.rb', line 45

def decorate_with(decorations)
  invoice.decorate_with(decorations)
end

#due(due_date) ⇒ Object



12
13
14
# File 'lib/uomi/invoice_adjustment.rb', line 12

def due(due_date)
  invoice.due(due_date)
end

#edit_line_item(item, params) ⇒ Object

Raises:

  • (CannotEditNonExistantLineItem)


20
21
22
23
# File 'lib/uomi/invoice_adjustment.rb', line 20

def edit_line_item(item, params)
  raise CannotEditNonExistantLineItem if invoice.line_items.find(item.id).blank?
  self.invoice.line_items.for(item).update_attributes(params)
end

#numbered(invoice_number) ⇒ Object



41
42
43
# File 'lib/uomi/invoice_adjustment.rb', line 41

def numbered(invoice_number)
  invoice.numbered(invoice_number)
end

#persist!Object



49
50
51
52
53
54
55
56
# File 'lib/uomi/invoice_adjustment.rb', line 49

def persist!
  # this method makes me a little sad.
  self.invoice.transaction do 
    self.invoice.invoice_decorator.save
    self.invoice.line_items.map(&:reload)
    self.invoice.save!
  end
end

#remove_line_item(item) ⇒ Object



25
26
27
# File 'lib/uomi/invoice_adjustment.rb', line 25

def remove_line_item(item)
  invoice.line_items.delete(item)
end

#remove_payment_reference(payment_reference) ⇒ Object



33
34
35
# File 'lib/uomi/invoice_adjustment.rb', line 33

def remove_payment_reference(payment_reference)
  invoice.remove_payment_reference(payment_reference)
end

#to(buyerable) ⇒ Object



37
38
39
# File 'lib/uomi/invoice_adjustment.rb', line 37

def to(buyerable)
  invoice.to(buyerable)
end