Sha256: e98c5acb34c2b223a555983875a26165564f4910b3b6b59b80f7204d7f23a1df

Contents?: true

Size: 1.99 KB

Versions: 4

Compression:

Stored size: 1.99 KB

Contents

module Economic
  class Invoice < Base
    # currency, customer, date, layout, paymentTerms, recipient, recipient.name, recipient.vatZone
    field :currency
    field :date
    field :dueDate
    field :exchangeRate
    field :grossAmount
    field :grossAmountInBaseCurrency
    field :marginInBaseCurrency
    field :marginPercentage
    field :netAmount
    field :roundingAmount
    field :vatAmount
    field :draftInvoiceNumber, id: true # This changes name depending on its type (draft, unpaid etc)

    relation :customer, fields: [:customerNumber]
    # relation :delivery, fields: []
    # relation :deliveryLocation, fields: []
    relation :layout, fields: [:layoutNumber]
    # relation :notes, fields: []
    relation :paymentTerms, fields: [:paymentTermsNumber]
    # relation :pdf, fields: []
    # relation :project, fields: []
    relation :recipient, fields: [:name]
    relation :references, fields: [:other]
    relation :lines, fields: [:lineNumber], multiple: true

    def self.build_from_soap_api(data)
      hash = {
        "currency" => data[:currency_handle][:code],
        "date" => data[:date].to_date,
        "dueDate" => data[:due_date].to_date,
        "exchangeRate" => data[:exchange_rate],
        "grossAmount" => data[:gross_amount],
        # where is grossAmountInBaseCurrency?
        "lines" => repo.find_lines(data[:handle][:id]),
        "marginInBaseCurrency" => data[:margin],
        "marginPercentage" => data[:margin_as_percent],
        "netAmount" => data[:net_amount],
        "roundingAmount" => data[:rounding_amount],
        "vatAmount" => data[:vat_amount],
        "draftInvoiceNumber" => data[:handle][:id], # TODO: What about id?
        "customer" => {"customerNumber" => data[:debtor_handle][:id].to_i},
        "layout" => {"layoutNumber" => data[:layout_handle][:id].to_i},
        "paymentTerms" => {"paymentTermsNumber" => data[:term_of_payment_handle][:id].to_i},
      }

      new(hash)
    end

    def self.repo
      Economic::Invoices::DraftsRepo
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
economic-rest-0.4.3 lib/economic/invoice.rb
economic-rest-0.4.2 lib/economic/invoice.rb
economic-rest-0.4.1 lib/economic/invoice.rb
economic-rest-0.4.0 lib/economic/invoice.rb