From ca2c8e6ff2ca4145f0ed59e739fdfb7fc1dd68ac Mon Sep 17 00:00:00 2001 From: Kristina Lim Date: Thu, 14 Feb 2019 22:18:01 +1100 Subject: [PATCH 1/5] Add test showing non-"eligible" entries included --- .../report_service_spec.rb | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/engines/order_management/spec/services/order_management/reports/enterprise_fee_summary/report_service_spec.rb b/engines/order_management/spec/services/order_management/reports/enterprise_fee_summary/report_service_spec.rb index 2161bbb4c6..b4c8162afc 100644 --- a/engines/order_management/spec/services/order_management/reports/enterprise_fee_summary/report_service_spec.rb +++ b/engines/order_management/spec/services/order_management/reports/enterprise_fee_summary/report_service_spec.rb @@ -151,6 +151,36 @@ describe OrderManagement::Reports::EnterpriseFeeSummary::ReportService do end end + describe "data exclusions" do + describe "invalid adjustments (through 'eligible') like failed payments" do + let!(:customer_order) { prepare_order(customer: customer) } + + before do + # Make the payment fail. See Spree::Payment#revoke_adjustment_eligibility. + payment = customer_order.payments.first + payment.state = "failed" + payment.save! + end + + it "is included" do + totals = service.list + + expect(totals.length).to eq(2) + + expected_result = [ + ["Payment Transaction", "Sample Distributor", "Sample Payment Method", "Sample Customer", + nil, nil, nil, "2.00"], + ["Shipment", "Sample Distributor", "Sample Shipping Method", "Sample Customer", + nil, nil, "Platform Rate", "1.00"] + ] + + expected_result.each_with_index do |expected_attributes, row_index| + expect_total_attributes(totals[row_index], expected_attributes) + end + end + end + end + describe "handling of more complex cases" do context "with non-sender fee for incoming exchange and non-receiver fee for outgoing" do let!(:variant) do From 8ce7337c9d4d5c63d5ea192962f2954860eb6e3c Mon Sep 17 00:00:00 2001 From: Kristina Lim Date: Mon, 18 Feb 2019 12:59:19 +1100 Subject: [PATCH 2/5] Add test showing $0 non-mandatory adjustments included --- .../report_service_spec.rb | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/engines/order_management/spec/services/order_management/reports/enterprise_fee_summary/report_service_spec.rb b/engines/order_management/spec/services/order_management/reports/enterprise_fee_summary/report_service_spec.rb index b4c8162afc..751f06187e 100644 --- a/engines/order_management/spec/services/order_management/reports/enterprise_fee_summary/report_service_spec.rb +++ b/engines/order_management/spec/services/order_management/reports/enterprise_fee_summary/report_service_spec.rb @@ -179,6 +179,45 @@ describe OrderManagement::Reports::EnterpriseFeeSummary::ReportService do end end end + + describe "non-mandatory $0 adjustments (through 'eligible')" do + let!(:variant) { prepare_variant(outgoing_exchange_fees: [enterprise_fee]) } + + let!(:enterprise_fee) do + create(:enterprise_fee, :per_item, name: "Sample Enterprise Fee", enterprise: distributor, + fee_type: "admin", amount: 0) + end + + let!(:customer_order) { prepare_order(customer: customer) } + + before do + # Change "eligible" in enterprise fee adjustment to false. $0 adjustments that are not + # mandatory are set to be ineligible, but there are no non-mandatory adjustments supported + # by the report yet. + adjustment = Spree::Adjustment.where(originator_type: "EnterpriseFee").first + adjustment.eligible = false + adjustment.save! + end + + it "is included" do + totals = service.list + + expect(totals.length).to eq(3) + + expected_result = [ + ["Admin", "Sample Distributor", "Sample Enterprise Fee", "Sample Customer", + "Outgoing", "Sample Distributor", nil, "0.00"], + ["Payment Transaction", "Sample Distributor", "Sample Payment Method", "Sample Customer", + nil, nil, nil, "2.00"], + ["Shipment", "Sample Distributor", "Sample Shipping Method", "Sample Customer", + nil, nil, "Platform Rate", "1.00"] + ] + + expected_result.each_with_index do |expected_attributes, row_index| + expect_total_attributes(totals[row_index], expected_attributes) + end + end + end end describe "handling of more complex cases" do From 19f99255fa64d6063734c3a4b0953d8b30ff5d2d Mon Sep 17 00:00:00 2001 From: Kristina Lim Date: Mon, 18 Feb 2019 09:30:03 +0800 Subject: [PATCH 3/5] Exclude non-eligible entries from report --- .../reports/enterprise_fee_summary/scope.rb | 2 +- .../reports/enterprise_fee_summary/report_service_spec.rb | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/engines/order_management/app/services/order_management/reports/enterprise_fee_summary/scope.rb b/engines/order_management/app/services/order_management/reports/enterprise_fee_summary/scope.rb index 9ebec61417..9760e80933 100644 --- a/engines/order_management/app/services/order_management/reports/enterprise_fee_summary/scope.rb +++ b/engines/order_management/app/services/order_management/reports/enterprise_fee_summary/scope.rb @@ -46,7 +46,7 @@ module OrderManagement def find_adjustments chain_to_scope do - Spree::Adjustment + Spree::Adjustment.eligible end end diff --git a/engines/order_management/spec/services/order_management/reports/enterprise_fee_summary/report_service_spec.rb b/engines/order_management/spec/services/order_management/reports/enterprise_fee_summary/report_service_spec.rb index 751f06187e..2fccd7bce0 100644 --- a/engines/order_management/spec/services/order_management/reports/enterprise_fee_summary/report_service_spec.rb +++ b/engines/order_management/spec/services/order_management/reports/enterprise_fee_summary/report_service_spec.rb @@ -165,11 +165,9 @@ describe OrderManagement::Reports::EnterpriseFeeSummary::ReportService do it "is included" do totals = service.list - expect(totals.length).to eq(2) + expect(totals.length).to eq(1) expected_result = [ - ["Payment Transaction", "Sample Distributor", "Sample Payment Method", "Sample Customer", - nil, nil, nil, "2.00"], ["Shipment", "Sample Distributor", "Sample Shipping Method", "Sample Customer", nil, nil, "Platform Rate", "1.00"] ] @@ -202,11 +200,9 @@ describe OrderManagement::Reports::EnterpriseFeeSummary::ReportService do it "is included" do totals = service.list - expect(totals.length).to eq(3) + expect(totals.length).to eq(2) expected_result = [ - ["Admin", "Sample Distributor", "Sample Enterprise Fee", "Sample Customer", - "Outgoing", "Sample Distributor", nil, "0.00"], ["Payment Transaction", "Sample Distributor", "Sample Payment Method", "Sample Customer", nil, nil, nil, "2.00"], ["Shipment", "Sample Distributor", "Sample Shipping Method", "Sample Customer", From 36fd385f7d4db12e3cbde259fdd6e0d89e967469 Mon Sep 17 00:00:00 2001 From: Kristina Lim Date: Mon, 18 Feb 2019 16:07:10 +0800 Subject: [PATCH 4/5] Add test showing $0 mandatory adjustments included --- .../report_service_spec.rb | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/engines/order_management/spec/services/order_management/reports/enterprise_fee_summary/report_service_spec.rb b/engines/order_management/spec/services/order_management/reports/enterprise_fee_summary/report_service_spec.rb index 2fccd7bce0..e9fbc62f89 100644 --- a/engines/order_management/spec/services/order_management/reports/enterprise_fee_summary/report_service_spec.rb +++ b/engines/order_management/spec/services/order_management/reports/enterprise_fee_summary/report_service_spec.rb @@ -214,6 +214,31 @@ describe OrderManagement::Reports::EnterpriseFeeSummary::ReportService do end end end + + describe "$0 mandatory adjustments" do + let!(:payment_method) do + create(:payment_method, :per_item, amount: 0, name: "Sample Payment Method") + end + + let!(:customer_order) { prepare_order(customer: customer) } + + it "is included" do + totals = service.list + + expect(totals.length).to eq(2) + + expected_result = [ + ["Payment Transaction", "Sample Distributor", "Sample Payment Method", "Sample Customer", + nil, nil, nil, "0.00"], + ["Shipment", "Sample Distributor", "Sample Shipping Method", "Sample Customer", + nil, nil, "Platform Rate", "1.00"] + ] + + expected_result.each_with_index do |expected_attributes, row_index| + expect_total_attributes(totals[row_index], expected_attributes) + end + end + end end describe "handling of more complex cases" do From b0a82b0e214686899aedc3967e59eebb0d9e4c1b Mon Sep 17 00:00:00 2001 From: Kristina Lim Date: Mon, 18 Feb 2019 16:52:40 +0800 Subject: [PATCH 5/5] Exclude $0 adjustments from report --- .../reports/enterprise_fee_summary/scope.rb | 6 +++++- .../reports/enterprise_fee_summary/report_service_spec.rb | 4 +--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/engines/order_management/app/services/order_management/reports/enterprise_fee_summary/scope.rb b/engines/order_management/app/services/order_management/reports/enterprise_fee_summary/scope.rb index 9760e80933..d6bcb8554a 100644 --- a/engines/order_management/app/services/order_management/reports/enterprise_fee_summary/scope.rb +++ b/engines/order_management/app/services/order_management/reports/enterprise_fee_summary/scope.rb @@ -17,7 +17,7 @@ module OrderManagement end def result - group_data.select_attributes + group_data.exclude_groups_with_zero_total.select_attributes @scope.all end @@ -336,6 +336,10 @@ module OrderManagement if params.payment_method_ids.present? end + def exclude_groups_with_zero_total + filter_scope("spree_adjustments.amount != 0") + end + def group_data chain_to_scope do group("enterprise_fees.id", "enterprises.id", "customers.id", "hubs.id", diff --git a/engines/order_management/spec/services/order_management/reports/enterprise_fee_summary/report_service_spec.rb b/engines/order_management/spec/services/order_management/reports/enterprise_fee_summary/report_service_spec.rb index e9fbc62f89..38a760dc96 100644 --- a/engines/order_management/spec/services/order_management/reports/enterprise_fee_summary/report_service_spec.rb +++ b/engines/order_management/spec/services/order_management/reports/enterprise_fee_summary/report_service_spec.rb @@ -225,11 +225,9 @@ describe OrderManagement::Reports::EnterpriseFeeSummary::ReportService do it "is included" do totals = service.list - expect(totals.length).to eq(2) + expect(totals.length).to eq(1) expected_result = [ - ["Payment Transaction", "Sample Distributor", "Sample Payment Method", "Sample Customer", - nil, nil, nil, "0.00"], ["Shipment", "Sample Distributor", "Sample Shipping Method", "Sample Customer", nil, nil, "Platform Rate", "1.00"] ]