class Workarea::Avatax::TaxRequest

Attributes

options[R]
order[R]
shippings[R]

Public Class Methods

new(order:, shippings: [], **options) click to toggle source
# File lib/workarea/avatax/tax_request.rb, line 6
def initialize(order:, shippings: [], **options)
  @order = order
  @shippings = shippings
  @options = options.deep_symbolize_keys
end

Public Instance Methods

response() click to toggle source
# File lib/workarea/avatax/tax_request.rb, line 12
def response
  @response ||= Response.new(
    response: Avatax.gateway.create_transaction(request_body, request_options),
    request_order_line_items: order_lines.order_line_items,
    request_shipping_line_items: order_lines.shipping_line_items
  )
end

Private Instance Methods

addresses() click to toggle source
# File lib/workarea/avatax/tax_request.rb, line 40
def addresses
  Addresses.new(tax_request: self)
end
commit() click to toggle source
# File lib/workarea/avatax/tax_request.rb, line 52
def commit
  options[:commit] || false
end
company_code() click to toggle source
# File lib/workarea/avatax/tax_request.rb, line 68
def company_code
  Workarea::Avatax.config.company_code
end
customer_code() click to toggle source
# File lib/workarea/avatax/tax_request.rb, line 56
def customer_code
  return "" unless order.email.present?

  order.email.truncate(50, omission: "")
end
customer_usage_type() click to toggle source
# File lib/workarea/avatax/tax_request.rb, line 62
def customer_usage_type
  return "" unless order.email.present?

  User.find_by_email(order.email).try(:customer_usage_type)
end
date() click to toggle source
# File lib/workarea/avatax/tax_request.rb, line 44
def date
  DateTime.now.iso8601
end
order_lines() click to toggle source
# File lib/workarea/avatax/tax_request.rb, line 72
def order_lines
  @order_lines ||= OrderLines.new(order, shippings)
end
request_body() click to toggle source
# File lib/workarea/avatax/tax_request.rb, line 22
def request_body
  {
    type:              type,
    date:              date,
    code:              order.id.to_s,
    companyCode:       company_code,
    customerCode:      customer_code,
    customerUsageType: customer_usage_type,
    addresses:         addresses.hash,
    commit:            commit,
    lines:             order_lines.lines.map(&:hash)
  }
end
request_options() click to toggle source
# File lib/workarea/avatax/tax_request.rb, line 36
def request_options
  options.slice(:timeout)
end
type() click to toggle source
# File lib/workarea/avatax/tax_request.rb, line 48
def type
  options[:type] || "SalesOrder"
end