Refactor SQL result summarizer for report

This commit is contained in:
Kristina Lim
2019-01-16 16:57:12 +08:00
parent 06ba5182b4
commit 0212454041

View File

@@ -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