lib/xero_gateway/payment.rb in xero_gateway-2.0.19 vs lib/xero_gateway/payment.rb in xero_gateway-2.1.0

- old
+ new

@@ -5,39 +5,66 @@ # Any errors that occurred when the #valid? method called. attr_reader :errors # All accessible fields - attr_accessor :payment_id, :date, :amount, :reference, :currency_rate - + attr_accessor :invoice_id, :invoice_number, :account_id, :code, :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 + when 'Invoice' then payment.send("#{element.children.first.name.underscore}=", element.children.first.text) + when 'Account' then payment.send("#{element.children.first.name.underscore}=", element.children.first.text) + end end payment - end - + end + def ==(other) [:payment_id, :date, :amount].each do |field| return false if send(field) != other.send(field) end return true end - + + def to_xml(b = Builder::XmlMarkup.new) + b.Payment do + + if self.invoice_id || self.invoice_number + b.Invoice do |i| + i.InvoiceID self.invoice_id if self.invoice_id + i.InvoiceNumber self.invoice_number if self.invoice_number + end + end + + if self.account_id || self.code + b.Account do |a| + a.AccountID self.account_id if self.account_id + a.Code self.code if self.code + end + end + + b.Amount self.amount if self.amount + b.CurrencyRate self.currency_rate if self.currency_rate + b.Reference self.reference if self.reference + + b.Date self.class.format_date(self.date || Date.today) + end + end + end end \ No newline at end of file