Class: SpreeAvataxOfficial::CreateTaxAdjustmentsService

Inherits:
Base
  • Object
show all
Includes:
TaxAdjustmentLabelHelper
Defined in:
app/services/spree_avatax_official/create_tax_adjustments_service.rb

Constant Summary

Constants included from TaxAdjustmentLabelHelper

TaxAdjustmentLabelHelper::PRECISION_OF_PERCENT_VALUE, TaxAdjustmentLabelHelper::STRIP_INSIGNIFICANT_ZEROS

Constants inherited from Base

Base::APP_NAME, Base::APP_VERSION, Base::CONNECTION_OPTIONS, Base::SUCCESS_STATUSES

Instance Method Summary collapse

Methods included from TaxAdjustmentLabelHelper

#format_adjustment_label, #included_label, #tax_adjustment_label

Instance Method Details

#call(order:) ⇒ Object

rubocop:disable Metrics/AbcSize



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/services/spree_avatax_official/create_tax_adjustments_service.rb', line 5

def call(order:) # rubocop:disable Metrics/AbcSize
  return failure(::Spree.t('spree_avatax_official.create_tax_adjustments.order_canceled')) if order.canceled?

  order.all_adjustments.tax.destroy_all

  return failure(::Spree.t('spree_avatax_official.create_tax_adjustments.tax_calculation_unnecessary')) unless order.avatax_tax_calculation_required?

  transaction_cache_key = SpreeAvataxOfficial::GenerateTransactionCacheKeyService.call(order: order).value

  avatax_response       = Rails.cache.fetch(transaction_cache_key, expires_in: 5.minutes) do
    send_transaction_to_avatax(order)
  end

  return failure(build_error_message_from_response(avatax_response.value)) if avatax_failed_response?(avatax_response)

  process_avatax_items(order, avatax_response.value['lines'])

  success(true)
end