Commit Graph

21023 Commits

Author SHA1 Message Date
Matt-Yorkley
937cede9b8 Fix tax adjustment label
:amount is actually a property on the TaxRate object itself that refers to the rate (eg 10% expressed as 0.10), and is not the same as the adjustment amount being passed in to this method (eg: $4.28)
2021-06-10 17:16:45 +01:00
Matt-Yorkley
5bfe079262 Update Xero Invoices test setup
Uses the new format of enterprise fee taxes
2021-06-06 20:20:41 +01:00
Matt-Yorkley
7b641ace23 Update Xero Invoices scopes for taxable fees
Taxable enterprise fee adjustments now have a tax_category
2021-06-06 20:20:41 +01:00
Matt-Yorkley
7bcb0bcaa8 Eager-load the adjustment's adjustable
Reduces the total migration time by ~15%. Requires including some more models, as order objects are now being eager-loaded as part of the polymorphic associations.
2021-06-06 20:20:41 +01:00
Matt-Yorkley
7ecd67a3fe Skip orphaned adjustments
There are a handful of enterprise fee adjustments on line items in production data where the line item has actually been deleted and no longer exists, but the fee adjustment is still in the database.
2021-06-06 20:20:41 +01:00
Matt-Yorkley
d9f459d94a Update db/migrate/20210406161242_migrate_enterprise_fee_tax_amounts.rb
Co-authored-by: Maikel <maikel@email.org.au>
2021-06-06 20:20:41 +01:00
Matt-Yorkley
76756923ba Use non-legacy-tax example in paypal items spec 2021-06-06 20:20:41 +01:00
Matt-Yorkley
401dd99225 Update stubbing of default country id in TaxRate tests 2021-06-06 20:20:41 +01:00
Matt-Yorkley
e21ef3f182 Add test coverage to #create_tax_charge! with legacy taxes 2021-06-06 20:20:41 +01:00
Matt-Yorkley
9e1d8ab369 Introduce legacy tax handing in Order::Updater whenever order totals change
This will remove legacy tax adjustments, recalculate any relevant taxes for items in the order and re-apply them in non-legacy tax adjustments
2021-06-06 20:20:41 +01:00
Matt-Yorkley
00988dc1e7 Use :order_with_totals factory in payments controller spec
This factory makes an order that actually has a line item 👍
2021-06-06 20:20:41 +01:00
Matt-Yorkley
7007de752d Update BulkLineItemsController spec now that taxes on enterprise fees are updated correctly
Tax on fees previously stayed the same unless the fees were deleted recreated from scratch, instead of updating when the fee amounts changed
2021-06-06 20:20:41 +01:00
Matt-Yorkley
832fbb7d5d Update data migration model definitions
The good_migrations gem was not working with polymorphic associations.
2021-06-06 20:18:05 +01:00
Matt-Yorkley
dc7c674a0e Switch to ApplicationRecord in migation spec
Fixes:

An error occurred while loading ./spec/migrations/migrate_enterprise_fee_tax_amounts_spec.rb.
Failure/Error: require_relative '../../db/migrate/20210406161242_migrate_enterprise_fee_tax_amounts'

TypeError:
  superclass mismatch for class Adjustment
# ./db/migrate/20210406161242_migrate_enterprise_fee_tax_amounts.rb:2:in `<class:MigrateEnterpriseFeeTaxAmounts>'
# ./db/migrate/20210406161242_migrate_enterprise_fee_tax_amounts.rb:1:in `<top (required)>'
# ./spec/migrations/migrate_enterprise_fee_tax_amounts_spec.rb:4:in `require_relative'
# ./spec/migrations/migrate_enterprise_fee_tax_amounts_spec.rb:4:in `<top (required)>'
# -e:1:in `<main>'
2021-06-06 20:18:05 +01:00
Matt-Yorkley
bfea47802e Move fee tax call outside of lock and simplify order updating 2021-06-06 20:18:05 +01:00
Matt-Yorkley
28ebb303af Simplify order interface 2021-06-06 20:17:03 +01:00
Matt-Yorkley
f20cf509d3 Add missing Spree translation 2021-06-06 20:17:03 +01:00
Matt-Yorkley
3f9a3b41da Refactor and improve EnterpriseFeeApplicator spec 2021-06-06 20:17:03 +01:00
Matt-Yorkley
38811b5a28 Add Bugsnag message if legacy taxes are used 2021-06-06 20:17:03 +01:00
Matt-Yorkley
f791f6fa20 Add test coverage to recalculating fees and taxes on completed orders 2021-06-06 20:17:03 +01:00
Matt-Yorkley
c84f9e56fb Tax enterprise fee adjustments when calling #recreate_all_fees! 2021-06-06 20:17:03 +01:00
Matt-Yorkley
355837547e Add test coverage for legacy additional taxes in OrderTaxAdjustmentsFetcher
OrderTaxAdjustmentsFetcher is used in various places to display the taxes on an order. This test validates that legacy taxes are still returned and displayed as normal.
2021-06-06 20:16:03 +01:00
Matt-Yorkley
0f5c39317a Re-apply taxes in Admin::OrdersController#update
Ensures taxes are updated properly when hitting the "Update and Recalculate Fees" button on the order edit page.
2021-06-06 20:16:03 +01:00
Matt-Yorkley
43877f4e34 Add unit tests for data migration 2021-06-06 20:16:03 +01:00
Matt-Yorkley
b427fd6876 Add data migration for enterprise fee tax amounts 2021-06-06 20:16:03 +01:00
Matt-Yorkley
a31487a86d Clear any legacy taxes when applying tax to an order
#create_tax_charge! adds tax (adjustments) to all taxable items on an order. If an order order has legacy taxes (lump-sum tax adjustments on the order object), we remove them here before re-applying taxes (using the new setup).
2021-06-06 20:16:03 +01:00
Matt-Yorkley
84a40e6ae0 Improve Order#enterpise_fee_tax 2021-06-06 20:16:03 +01:00
Matt-Yorkley
19f32b7825 Update checkout tax display test setup 2021-06-06 20:16:03 +01:00
Matt-Yorkley
93e422ec59 Update order fee tax test setup 2021-06-06 20:16:03 +01:00
Matt-Yorkley
6e9ae0b0db Update tax totals calculation in Order::Updater
Line items, shipments, and fees now all have taxes recorded in a uniform way, so we can drop more complexity here (and the number of queries).
2021-06-06 20:16:03 +01:00
Matt-Yorkley
a1438bdb3d Update enterprise fee tax adjustment specs 2021-06-06 20:16:03 +01:00
Matt-Yorkley
510f74f654 Update OrderTaxAdjustmentsFetcher
Taxes on Enterprise Fees are now recorded in proper tax adjustments, so they don't need special treatment.
2021-06-06 20:16:03 +01:00
Matt-Yorkley
52452f7939 Update default tax calculator
Line items, shipments and fees can now all be calculated in the same way when applying tax.
2021-06-06 20:16:03 +01:00
Matt-Yorkley
b3240f859a Add tax category id to adjustments 2021-06-06 20:16:03 +01:00
Matt-Yorkley
2de442f44d Move taxing of enterprise fees to TaxRate 2021-06-06 20:16:03 +01:00
Matt-Yorkley
c2211c501d Improve test setup in Xero Invoices spec 2021-06-06 20:16:03 +01:00
Matt-Yorkley
6c340f8ed4 Update SalesTax test setup 2021-06-06 20:16:03 +01:00
Matt-Yorkley
a22cc96ea5 Simplify DefaultTax calculator
This logic is handled in TaxRate and doesn't need to be duplicated here.
2021-06-06 20:16:03 +01:00
Matt-Yorkley
8c9733d8da Remove included tax check from CalculatedAdjustments
This is handled in TaxRate now.
2021-06-06 20:16:03 +01:00
Matt-Yorkley
ff9ad96b74 Update TaxRate specs 2021-06-06 20:16:03 +01:00
Matt-Yorkley
8479d4ff7c Update outdated calls to TaxRate#adjust in specs 2021-06-06 20:16:03 +01:00
Matt-Yorkley
d450aff607 Update Order#create_tax_charge!
TaxRate#adjust now handles individual items instead of the whole order 🎉 We can use this elsewhere too, for example to re-apply taxes on a single line item, we can do: Spree::TaxRate.adjust(order, [line_item])
2021-06-06 20:16:03 +01:00
Matt-Yorkley
1c28b9783f Bring in Spree::TaxRate test coverage 2021-06-06 20:16:03 +01:00
Matt-Yorkley
f92c082df8 Refactor tax adjustment create_label method 2021-06-06 20:16:03 +01:00
Matt-Yorkley
d69f714032 Bring in changes to TaxRate#adjust 2021-06-06 20:16:03 +01:00
Matt-Yorkley
50d0952dd5 Bring in TaxRate#potentially_applicable method and add eager-loading 2021-06-06 20:16:03 +01:00
Matt-Yorkley
82e38b0156 Merge pull request #7623 from Matt-Yorkley/order-contents
Use OrderContents to update line items
2021-06-05 17:11:45 +02:00
Andy Brett
640aa11f3b Merge pull request #7744 from luisramos0/byebug
Move byebug to test gem group so we can use it in specs
2021-06-04 13:17:43 -07:00
Luis Ramos
b939a292df Move byebug to test gem group so we can use it in specs 2021-06-04 20:59:50 +01:00
Matt-Yorkley
099ef5d358 Add more explicit tests on updating shipping fees in Api::ShipmentsController 2021-06-04 18:19:27 +01:00