Sha256: e00cd44d5ebc6767da30612f5764b80f78da65e298f148ccfcff9b106d969165

Contents?: true

Size: 1.29 KB

Versions: 12

Compression:

Stored size: 1.29 KB

Contents

module PolishInvoicer
  class Presenter
    attr_accessor :invoice

    def initialize(invoice)
      @invoice = invoice
      @out = {}
    end

    def data
      copy_available_params
      remove_redundand_params
      copy_additional_params
      format_dates
      format_prices
      format_comments
      format_vat
      @out
    end

    private

    def copy_available_params
      Invoice::AVAILABLE_PARAMS.each do |field|
        @out[field] = @invoice.send(field)
      end
    end

    def remove_redundand_params
      @out.delete(:price)
    end

    def copy_additional_params
      %w(net_value vat_value gross_value).each do |field|
        @out[field.to_sym] = @invoice.send(field)
      end
    end

    def format_dates
      %w(trade_date create_date payment_date).each do |field|
        v = @invoice.send(field)
        next unless v
        @out[field.to_sym] = v.strftime '%d.%m.%Y'
      end
    end

    def format_prices
      %w(net_value vat_value gross_value).each do |field|
        v = @invoice.send(field)
        next unless v
        @out[field.to_sym] = sprintf('%02.2f', v).tr('.', ',')
      end
    end

    def format_comments
      @out[:comments] = [@invoice.comments].flatten.compact
    end

    def format_vat
      @out[:vat] = Vat.to_s(@invoice.vat)
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
polish_invoicer-0.0.17 lib/polish_invoicer/presenter.rb
polish_invoicer-0.0.16 lib/polish_invoicer/presenter.rb
polish_invoicer-0.0.15 lib/polish_invoicer/presenter.rb
polish_invoicer-0.0.14 lib/polish_invoicer/presenter.rb
polish_invoicer-0.0.13 lib/polish_invoicer/presenter.rb
polish_invoicer-0.0.12 lib/polish_invoicer/presenter.rb
polish_invoicer-0.0.11 lib/polish_invoicer/presenter.rb
polish_invoicer-0.0.10 lib/polish_invoicer/presenter.rb
polish_invoicer-0.0.9 lib/polish_invoicer/presenter.rb
polish_invoicer-0.0.8 lib/polish_invoicer/presenter.rb
polish_invoicer-0.0.7 lib/polish_invoicer/presenter.rb
polish_invoicer-0.0.6 lib/polish_invoicer/presenter.rb