module SuperGood::SolidusTaxjar::ApiParams
Public Class Methods
address_params(address)
click to toggle source
# File lib/super_good/solidus_taxjar/api_params.rb, line 21 def address_params(address) [ address.zipcode, { street: address.address1, city: address.city, state: address&.state&.abbr || address.state_name, country: address.country.iso } ] end
order_params(order)
click to toggle source
# File lib/super_good/solidus_taxjar/api_params.rb, line 5 def order_params(order) {} .merge(customer_params(order)) .merge(order_address_params(order.tax_address)) .merge(line_items_params(order.line_items)) .merge(shipping: shipping(order)) .merge(SuperGood::SolidusTaxjar.custom_order_params.call(order)) .tap do |params| next unless SuperGood::SolidusTaxjar.logging_enabled Rails.logger.info( "TaxJar params for #{order.number}: #{params.inspect}" ) end end
refund_params(reimbursement)
click to toggle source
# File lib/super_good/solidus_taxjar/api_params.rb, line 54 def refund_params(reimbursement) additional_taxes = reimbursement.return_items.sum(&:additional_tax_total) {} .merge(order_address_params(reimbursement.order.tax_address)) .merge( transaction_id: reimbursement.number, transaction_reference_id: reimbursement.order.number, transaction_date: reimbursement.order.completed_at.to_formatted_s(:iso8601), amount: reimbursement.total - additional_taxes, shipping: 0, sales_tax: additional_taxes ) end
tax_rate_address_params(address)
click to toggle source
# File lib/super_good/solidus_taxjar/api_params.rb, line 33 def tax_rate_address_params(address) { amount: 100, shipping: 0 }.merge(order_address_params(address)) end
transaction_params(order)
click to toggle source
# File lib/super_good/solidus_taxjar/api_params.rb, line 40 def transaction_params(order) {} .merge(customer_params(order)) .merge(order_address_params(order.tax_address)) .merge(transaction_line_items_params(order.line_items)) .merge( transaction_id: order.number, transaction_date: order.completed_at.to_formatted_s(:iso8601), amount: [order.total - order.additional_tax_total, 0].max, shipping: shipping(order), sales_tax: sales_tax(order) ) end
validate_address_params(spree_address)
click to toggle source
# File lib/super_good/solidus_taxjar/api_params.rb, line 69 def validate_address_params(spree_address) { country: spree_address.country&.iso, state: spree_address.state&.abbr || spree_address.state_name, zip: spree_address.zipcode, city: spree_address.city, street: [spree_address.address1, spree_address.address2].compact.join(' ') } end
Private Class Methods
customer_params(order)
click to toggle source
# File lib/super_good/solidus_taxjar/api_params.rb, line 81 def customer_params(order) return {} unless order.user_id {customer_id: order.user_id.to_s} end
discount(line_item)
click to toggle source
# File lib/super_good/solidus_taxjar/api_params.rb, line 135 def discount(line_item) ::SuperGood::SolidusTaxjar.discount_calculator.new(line_item).discount end
line_item_sales_tax(line_item)
click to toggle source
# File lib/super_good/solidus_taxjar/api_params.rb, line 149 def line_item_sales_tax(line_item) return 0 if line_item.order.total.zero? line_item.additional_tax_total end
line_items_params(line_items)
click to toggle source
# File lib/super_good/solidus_taxjar/api_params.rb, line 97 def line_items_params(line_items) { line_items: valid_line_items(line_items).map do |line_item| { id: line_item.id, quantity: line_item.quantity, unit_price: line_item.price, discount: discount(line_item), product_tax_code: line_item.tax_category&.tax_code } end } end
order_address_params(address)
click to toggle source
# File lib/super_good/solidus_taxjar/api_params.rb, line 87 def order_address_params(address) { to_country: address.country.iso, to_zip: address.zipcode, to_city: address.city, to_state: address&.state&.abbr || address.state_name, to_street: address.address1 } end
sales_tax(order)
click to toggle source
# File lib/super_good/solidus_taxjar/api_params.rb, line 143 def sales_tax(order) return 0 if order.total.zero? order.additional_tax_total end
shipping(order)
click to toggle source
# File lib/super_good/solidus_taxjar/api_params.rb, line 139 def shipping(order) SuperGood::SolidusTaxjar.shipping_calculator.call(order) end
transaction_line_items_params(line_items)
click to toggle source
# File lib/super_good/solidus_taxjar/api_params.rb, line 111 def transaction_line_items_params(line_items) { line_items: valid_line_items(line_items).map do |line_item| { id: line_item.id, quantity: line_item.quantity, product_identifier: line_item.sku, product_tax_code: line_item.tax_category&.tax_code, unit_price: line_item.price, discount: discount(line_item), sales_tax: line_item_sales_tax(line_item) } end } end
valid_line_items(line_items)
click to toggle source
# File lib/super_good/solidus_taxjar/api_params.rb, line 127 def valid_line_items(line_items) # The API appears to error when sent line items with no quantity... # but why would you do that anyway. line_items.reject do |line_item| line_item.quantity.zero? end end