-
Notifications
You must be signed in to change notification settings - Fork 89
/
payment.rb
43 lines (35 loc) · 1.15 KB
/
payment.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
module XeroGateway
class Payment
include Money
include Dates
# Any errors that occurred when the #valid? method called.
attr_reader :errors
# All accessible fields
attr_accessor :payment_id, :date, :amount, :reference, :currency_rate
def initialize(params = {})
@errors ||= []
params.each do |k,v|
self.send("#{k}=", v)
end
end
def self.from_xml(payment_element)
payment = Payment.new
payment_element.children.each do | element |
case element.name
when 'PaymentID' then payment.payment_id = element.text
when 'Date' then payment.date = parse_date_time(element.text)
when 'Amount' then payment.amount = BigDecimal.new(element.text)
when 'Reference' then payment.reference = element.text
when 'CurrencyRate' then payment.currency_rate = BigDecimal.new(element.text)
end
end
payment
end
def ==(other)
[:payment_id, :date, :amount].each do |field|
return false if send(field) != other.send(field)
end
return true
end
end
end