class AvataxClient::Request::Transaction

Handles requests to Avatax api dealing with Transactions.

Public Class Methods

adjust!(adjustment_reason:, adjustment_description: "", transaction:) click to toggle source

@param adjustment_reason [String] @see developer.avalara.com/avatax/api-reference/tax/v2/Transactions/#ApiV2CompaniesByCompanyCodeTransactionsByTransactionCodeAdjustPost @param adjustment_description [String] description as to why the adjustment was made. @param transaction [AvataxClient::Request::Transaction] @return (see AvataxClient::Request::Base.handle_response)

# File lib/avatax_client/request/transaction.rb, line 41
def adjust!(adjustment_reason:, adjustment_description: "", transaction:)
  body_params = {
    adjustmentReason: adjustment_reason,
    adjustmentDescription: adjustment_description,
    newTransaction: transaction.to_body
  }
  body = JSON.generate(body_params.delete_if { |_key, value| value.blank? })

  path = "companies/#{transaction.company_code}/transactions/#{transaction.code}/adjust"
  res = Typhoeus.post(url(path), body: body, headers: headers, userpwd: credentials)
  handle_response(response: res)
end
adjustment_reasons() click to toggle source

Reasons to make an adjustment to a Avatax Transaction. @return [OpenStruct]

rubocop:disable Metrics/MethodLength

# File lib/avatax_client/request/transaction.rb, line 21
def adjustment_reasons
  OpenStruct.new(
    bad_debt: "BadDebt",
    exempt_cert: "ExemptCertApplied",
    not_adjusted: "NotAdjusted",
    offline: "Offline",
    other: "Other",
    price_adjusted: "PriceAdjusted",
    product_exchanged: "ProductExchanged",
    product_returned: "ProductReturned",
    reconciled: "ReconciledWithGeneralLedger",
    sourcing_issue: "SourcingIssue"
  )
end
commit!(company_code:, transaction_code:) click to toggle source

Changes an uncommitted transaction into a committed transaction. @param company_code [String] unique code identifying the company @param transaction_code [String] unique code identifying the transaction @return (see AvataxClient::Request::Base.handle_response)

# File lib/avatax_client/request/transaction.rb, line 68
def commit!(company_code:, transaction_code:)
  path = "companies/#{company_code}/transactions/#{transaction_code}/commit"
  body = JSON.generate(commit: true)
  res = Typhoeus.post(url(path), body: body, headers: headers, userpwd: credentials)
  handle_response(response: res)
end
create!(transaction:) click to toggle source

@param transaction [AvataxClient::Request::Transaction] @return (see AvataxClient::Request::Base.handle_response)

# File lib/avatax_client/request/transaction.rb, line 56
def create!(transaction:)
  path = "transactions/create"
  hash = transaction.to_body
  body = JSON.generate(hash)
  res = Typhoeus.post(url(path), body: body, headers: headers, userpwd: credentials)
  handle_response(response: res)
end

Public Instance Methods

adjust!(adjustment_description: "", adjustment_reason:) click to toggle source

@see {.adjust!}

# File lib/avatax_client/request/transaction.rb, line 125
def adjust!(adjustment_description: "", adjustment_reason:)
  self.class.adjust!(adjustment_description: adjustment_description, adjustment_reason: adjustment_reason,
                     transaction: self)
end
commit!() click to toggle source

@see {.commit!}

# File lib/avatax_client/request/transaction.rb, line 136
def commit!
  self.class.commit!(company_code: company_code, transaction_code: code)
end
create!() click to toggle source

@see {.create!}

# File lib/avatax_client/request/transaction.rb, line 131
def create!
  self.class.create!(transaction: self)
end