diff --git a/engines/order_management/app/services/order_management/reports/enterprise_fee_summary/enterprise_fee_type_total_summarizer.rb b/engines/order_management/app/services/order_management/reports/enterprise_fee_summary/enterprise_fee_type_total_summarizer.rb index cd7875f758..d4daa05db9 100644 --- a/engines/order_management/app/services/order_management/reports/enterprise_fee_summary/enterprise_fee_type_total_summarizer.rb +++ b/engines/order_management/app/services/order_management/reports/enterprise_fee_summary/enterprise_fee_type_total_summarizer.rb @@ -2,6 +2,12 @@ module OrderManagement module Reports module EnterpriseFeeSummary class EnterpriseFeeTypeTotalSummarizer + PAYMENT_METHOD_SOURCE_TYPE = 1 + SHIPPING_METHOD_SOURCE_TYPE = 2 + COORDINATOR_FEE_SOURCE_TYPE = 3 + INCOMING_EXCHANGE_LINE_ITEM_FEE_SOURCE_TYPE = 4 + OUTGOING_EXCHANGE_LINE_ITEM_FEE_SOURCE_TYPE = 5 + attr_accessor :data def initialize(data) @@ -9,33 +15,34 @@ module OrderManagement end def fee_type - if for_payment_method? - i18n_translate("fee_type.payment_method") - elsif for_shipping_method? - i18n_translate("fee_type.shipping_method") - else - data["fee_type"].try(:capitalize) - end + case adjustment_source_type + when PAYMENT_METHOD_SOURCE_TYPE + i18n_translate("fee_type.payment_method") + when SHIPPING_METHOD_SOURCE_TYPE + i18n_translate("fee_type.shipping_method") + else + data["fee_type"].try(:capitalize) + end end def enterprise_name - if for_payment_method? - data["hub_name"] - elsif for_shipping_method? - data["hub_name"] - else - data["enterprise_name"] - end + case adjustment_source_type + when PAYMENT_METHOD_SOURCE_TYPE, SHIPPING_METHOD_SOURCE_TYPE + data["hub_name"] + else + data["enterprise_name"] + end end def fee_name - if for_payment_method? - data["payment_method_name"] - elsif for_shipping_method? - data["shipping_method_name"] - else - data["fee_name"] - end + case adjustment_source_type + when PAYMENT_METHOD_SOURCE_TYPE + data["payment_method_name"] + when SHIPPING_METHOD_SOURCE_TYPE + data["shipping_method_name"] + else + data["fee_name"] + end end def customer_name @@ -43,25 +50,34 @@ module OrderManagement end def fee_placement - return if for_payment_method? || for_shipping_method? - - i18n_translate("fee_placements.#{data['placement_enterprise_role']}") + case adjustment_source_type + when PAYMENT_METHOD_SOURCE_TYPE, SHIPPING_METHOD_SOURCE_TYPE + nil + else + i18n_translate("fee_placements.#{data['placement_enterprise_role']}") + end end def fee_calculated_on_transfer_through_name - return if for_payment_method? || for_shipping_method? - - transfer_through_all_string = i18n_translate("fee_calculated_on_transfer_through_all") - - data["incoming_exchange_enterprise_name"] || data["outgoing_exchange_enterprise_name"] || - (transfer_through_all_string if data["placement_enterprise_role"] == "coordinator") + case adjustment_source_type + when COORDINATOR_FEE_SOURCE_TYPE + i18n_translate("fee_calculated_on_transfer_through_all") + when INCOMING_EXCHANGE_LINE_ITEM_FEE_SOURCE_TYPE + data["incoming_exchange_enterprise_name"] + when OUTGOING_EXCHANGE_LINE_ITEM_FEE_SOURCE_TYPE + data["outgoing_exchange_enterprise_name"] + end end def tax_category_name - return if for_payment_method? - return i18n_translate("tax_category_name.shipping_instance_rate") if for_shipping_method? - - data["tax_category_name"] || data["product_tax_category_name"] + case adjustment_source_type + when PAYMENT_METHOD_SOURCE_TYPE + nil + when SHIPPING_METHOD_SOURCE_TYPE + i18n_translate("tax_category_name.shipping_instance_rate") + else + data["tax_category_name"] || data["product_tax_category_name"] + end end def total_amount @@ -70,6 +86,14 @@ module OrderManagement private + def adjustment_source_type + return PAYMENT_METHOD_SOURCE_TYPE if for_payment_method? + return SHIPPING_METHOD_SOURCE_TYPE if for_shipping_method? + return COORDINATOR_FEE_SOURCE_TYPE if for_coordinator_fee? + return INCOMING_EXCHANGE_LINE_ITEM_FEE_SOURCE_TYPE if for_incoming_exchange? + return OUTGOING_EXCHANGE_LINE_ITEM_FEE_SOURCE_TYPE if for_outgoing_exchange? + end + def for_payment_method? data["payment_method_name"].present? end @@ -78,6 +102,18 @@ module OrderManagement data["shipping_method_name"].present? end + def for_coordinator_fee? + data["placement_enterprise_role"] == "coordinator" + end + + def for_incoming_exchange? + data["placement_enterprise_role"] == "supplier" + end + + def for_outgoing_exchange? + data["placement_enterprise_role"] == "distributor" + end + def i18n_translate(translation_key) I18n.t("order_management.reports.enterprise_fee_summary.#{translation_key}") end