Sha256: e438b7727d4627b7d96d07aeab141210552034c9a756b63fe0c237688ff34749

Contents?: true

Size: 1.11 KB

Versions: 3

Compression:

Stored size: 1.11 KB

Contents

module SolidusAvataxCertified
  module Request
    class ReturnTax < SolidusAvataxCertified::Request::Base

      def initialize(order, opts={})
        super
        @refund = opts[:refund]
      end

      def generate
        @request = {
          DocCode: order.number.to_s + '.' + @refund.id.to_s,
          DocDate: Date.today.strftime('%F'),
          Commit: @commit,
          DocType: @doc_type ? @doc_type : 'ReturnOrder',
          Addresses: address_lines,
          Lines: sales_lines
        }.merge(base_tax_hash)

        check_vat_id

        @request
      end

      protected

      def doc_date
        Date.today.strftime('%F')
      end

      def base_tax_hash
        super.merge(tax_override)
      end

      def tax_override
        {
          TaxOverride: {
            TaxOverrideType: 'TaxDate',
            Reason: @refund.try(:reason).try(:name).limit(255) || 'Return',
            TaxDate: order.completed_at.strftime('%F')
          }
        }
      end

      def sales_lines
        @sales_lines ||= SolidusAvataxCertified::Line.new(order, @doc_type, @refund).lines
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
solidus_avatax_certified-3.0.0 app/models/solidus_avatax_certified/request/return_tax.rb
solidus_avatax_certified-2.0.0 app/models/solidus_avatax_certified/request/return_tax.rb
solidus_avatax_certified-1.1.0 app/models/solidus_avatax_certified/request/return_tax.rb