From 85ec771e272e7ac16765c63521fcbabc817aa25a Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Tue, 11 Feb 2025 08:17:12 -0600 Subject: [PATCH 1/3] Adds coverage on supplier option to charge tax --- .../pay_your_suppliers_report_spec.rb | 49 ++++++++++++++----- 1 file changed, 37 insertions(+), 12 deletions(-) diff --git a/spec/lib/reports/suppliers/pay_your_suppliers_report_spec.rb b/spec/lib/reports/suppliers/pay_your_suppliers_report_spec.rb index 945c47f541..2ef98b7361 100644 --- a/spec/lib/reports/suppliers/pay_your_suppliers_report_spec.rb +++ b/spec/lib/reports/suppliers/pay_your_suppliers_report_spec.rb @@ -75,7 +75,6 @@ RSpec.describe "Pay Your Suppliers Report" do before do # Prepare order or line_item to have respective tax adjustments hub.update!(charges_sales_tax: true) - supplier.update!(charges_sales_tax: true) line_item.variant.update!(tax_category:) line_item.copy_tax_category @@ -92,18 +91,44 @@ RSpec.describe "Pay Your Suppliers Report" do order.create_tax_charge! end - it "Generates the report" do - expect(report_table_rows.length).to eq(1) - table_row = report_table_rows.first + context "supplier charges tax" do + before do + supplier.update!(charges_sales_tax: true) + end - expect(table_row.producer_charges_gst).to eq('Yes') - expect(table_row.total_excl_fees_and_tax.to_f).to eq(10.0) - expect(table_row.total_excl_vat.to_f).to eq(10.1) - expect(table_row.total_fees_excl_tax.to_f).to eq(0.1) - expect(table_row.total_tax_on_fees.to_f).to eq(0.01) - expect(table_row.total_tax_on_product.to_f).to eq(1.0) - expect(table_row.total_tax.to_f).to eq(1.01) - expect(table_row.total.to_f).to eq(11.11) + it "Generates the report" do + expect(report_table_rows.length).to eq(1) + table_row = report_table_rows.first + + expect(table_row.producer_charges_gst).to eq('Yes') + expect(table_row.total_excl_fees_and_tax.to_f).to eq(10.0) + expect(table_row.total_excl_vat.to_f).to eq(10.1) + expect(table_row.total_fees_excl_tax.to_f).to eq(0.1) + expect(table_row.total_tax_on_fees.to_f).to eq(0.01) + expect(table_row.total_tax_on_product.to_f).to eq(1.0) + expect(table_row.total_tax.to_f).to eq(1.01) + expect(table_row.total.to_f).to eq(11.11) + end + end + + context "supplier does not charge tax" do + before do + supplier.update!(charges_sales_tax: false) + end + + it "Generates the report" do + expect(report_table_rows.length).to eq(1) + table_row = report_table_rows.first + + expect(table_row.producer_charges_gst).to eq('No') + expect(table_row.total_excl_fees_and_tax.to_f).to eq(10.0) + expect(table_row.total_excl_vat.to_f).to eq(10.1) + expect(table_row.total_fees_excl_tax.to_f).to eq(0.1) + expect(table_row.total_tax_on_fees.to_f).to eq(0.00) + expect(table_row.total_tax_on_product.to_f).to eq(0.0) + expect(table_row.total_tax.to_f).to eq(0.00) + expect(table_row.total.to_f).to eq(10.1) + end end end end From 48f5df349a0e3c52a99cbd85e1ef1ce1a2b3458e Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Wed, 12 Feb 2025 18:27:57 -0600 Subject: [PATCH 2/3] Adds test case on included tax --- .../pay_your_suppliers_report_spec.rb | 58 +++++++++++++------ 1 file changed, 41 insertions(+), 17 deletions(-) diff --git a/spec/lib/reports/suppliers/pay_your_suppliers_report_spec.rb b/spec/lib/reports/suppliers/pay_your_suppliers_report_spec.rb index 2ef98b7361..a40f6e3609 100644 --- a/spec/lib/reports/suppliers/pay_your_suppliers_report_spec.rb +++ b/spec/lib/reports/suppliers/pay_your_suppliers_report_spec.rb @@ -51,15 +51,17 @@ RSpec.describe "Pay Your Suppliers Report" do context "with taxes and fees" do let(:line_item) { order.line_items.first } + let(:tax_rate) { + create( + :tax_rate, + included_in_price: false, + zone: create(:zone_with_member) + ) + } let(:tax_category) { create( :tax_category, - tax_rates: [ - create( - :tax_rate, - zone: create(:zone_with_member) - ) - ] + tax_rates: [tax_rate] ) } let!(:enterprise_fee) do @@ -96,18 +98,40 @@ RSpec.describe "Pay Your Suppliers Report" do supplier.update!(charges_sales_tax: true) end - it "Generates the report" do - expect(report_table_rows.length).to eq(1) - table_row = report_table_rows.first + context "added tax" do + it "Generates the report" do + expect(report_table_rows.length).to eq(1) + table_row = report_table_rows.first - expect(table_row.producer_charges_gst).to eq('Yes') - expect(table_row.total_excl_fees_and_tax.to_f).to eq(10.0) - expect(table_row.total_excl_vat.to_f).to eq(10.1) - expect(table_row.total_fees_excl_tax.to_f).to eq(0.1) - expect(table_row.total_tax_on_fees.to_f).to eq(0.01) - expect(table_row.total_tax_on_product.to_f).to eq(1.0) - expect(table_row.total_tax.to_f).to eq(1.01) - expect(table_row.total.to_f).to eq(11.11) + expect(table_row.producer_charges_gst).to eq('Yes') + expect(table_row.total_excl_fees_and_tax.to_f).to eq(10.0) + expect(table_row.total_excl_vat.to_f).to eq(10.1) + expect(table_row.total_fees_excl_tax.to_f).to eq(0.1) + expect(table_row.total_tax_on_fees.to_f).to eq(0.01) + expect(table_row.total_tax_on_product.to_f).to eq(1.0) + expect(table_row.total_tax.to_f).to eq(1.01) + expect(table_row.total.to_f).to eq(11.11) + end + end + + context "included tax" do + before do + tax_rate.update(included_in_price: true) + order.create_tax_charge! + end + it "Generates the report" do + expect(report_table_rows.length).to eq(1) + table_row = report_table_rows.first + + expect(table_row.producer_charges_gst).to eq('Yes') + expect(table_row.total_excl_fees_and_tax.to_f).to eq(9.09) + expect(table_row.total_excl_vat.to_f).to eq(9.18) + expect(table_row.total_fees_excl_tax.to_f).to eq(0.09) + expect(table_row.total_tax_on_fees.to_f).to eq(0.01) + expect(table_row.total_tax_on_product.to_f).to eq(0.91) + expect(table_row.total_tax.to_f).to eq(0.92) + expect(table_row.total.to_f).to eq(10.10) + end end end From 77b857a30d921f5c7e6f29810cd4d7f70d895a85 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Wed, 12 Feb 2025 21:18:41 -0600 Subject: [PATCH 3/3] Adds test case when the hub is owner of the fee --- .../pay_your_suppliers_report_spec.rb | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/spec/lib/reports/suppliers/pay_your_suppliers_report_spec.rb b/spec/lib/reports/suppliers/pay_your_suppliers_report_spec.rb index a40f6e3609..fbfb56df54 100644 --- a/spec/lib/reports/suppliers/pay_your_suppliers_report_spec.rb +++ b/spec/lib/reports/suppliers/pay_your_suppliers_report_spec.rb @@ -139,8 +139,7 @@ RSpec.describe "Pay Your Suppliers Report" do before do supplier.update!(charges_sales_tax: false) end - - it "Generates the report" do + it "Generates the report, without displaying taxes" do expect(report_table_rows.length).to eq(1) table_row = report_table_rows.first @@ -154,5 +153,31 @@ RSpec.describe "Pay Your Suppliers Report" do expect(table_row.total.to_f).to eq(10.1) end end + + context "fee is owned by the hub" do + before do + enterprise_fee.update(enterprise: hub) + order.create_tax_charge! + end + + it "Generates the report, without displaying enterprise fees" do + # enterprise fee exists on the order + fee = Spree::Adjustment.where(originator_type: "EnterpriseFee")[0] + expect(fee.amount.to_f).to eq(0.1) + + # but is not displayed on the report + expect(report_table_rows.length).to eq(1) + table_row = report_table_rows.first + + expect(table_row.producer_charges_gst).to eq('No') + expect(table_row.total_excl_fees_and_tax.to_f).to eq(10.0) + expect(table_row.total_excl_vat.to_f).to eq(10.0) + expect(table_row.total_fees_excl_tax.to_f).to eq(0.0) + expect(table_row.total_tax_on_fees.to_f).to eq(0.00) + expect(table_row.total_tax_on_product.to_f).to eq(0.0) + expect(table_row.total_tax.to_f).to eq(0.00) + expect(table_row.total.to_f).to eq(10.0) + end + end end end