class AvataxClient::Request::Transaction
Handles requests to Avatax api dealing with Transactions.
Public Class Methods
@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
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
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
@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
@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
@see {.commit!}
# File lib/avatax_client/request/transaction.rb, line 136 def commit! self.class.commit!(company_code: company_code, transaction_code: code) end
@see {.create!}
# File lib/avatax_client/request/transaction.rb, line 131 def create! self.class.create!(transaction: self) end