Commit Graph

81 Commits

Author SHA1 Message Date
vedanshujain aaa85ac74c Use standard way to calculate total in `get_subtotal_to_display` for consistency.
We were calculating subtotal to display slightly differently then we would have calculated subtotal in the cart. This was affecting subtotal value in invoices and in order confirmation screen.

This patch updates how we calculate subtotal to display such that we calculate in same way.
2019-11-27 04:43:23 +05:30
vedanshujain 8c2c83d488 Use `wc_round_tax_total` to make it consistent with how we round taxes.
When price includes taxes, we round down. This patch uses the correct method to round taxes depending on the mode instead of plain rounding.
2019-11-27 03:13:39 +05:30
vedanshujain 1de30e8963 Refactor so that trait don't have class specific functions. 2019-11-26 01:30:45 +05:30
vedanshujain 60cd7b3651 Refactor Order Class to use shared calculation logic.
We added a trait to move shared logic betweem Orders and Cart. This commit refactors Order class to use that shared logic.
Also adds a test for a failing case.
2019-11-25 17:53:14 +05:30
vedanshujain bee7ea4490 Add trait which contains common total calc logic.
`WC_Abstract_Order` and `WC_Cart_Totals` have their own logic to calculate totals. This means that we would have to fix in two places. This commit adds a trait which can be used to place shared logic between above two classes.
2019-11-25 17:53:14 +05:30
Claudio Sanches 6e6ca196f9
Merge branch 'master' into fix/23340 2019-07-09 16:32:43 -03:00
vedanshujain 8ab6cb2b5a Round late when rounding at subtotal to reduce rounding error.
We were earlier rounding different tax rate values while they are merged, even if rounding at subtotal setting is enabled. This increases the rounding error, especially when prices are inclusive of taxes, and thus there is a chance that the total will be slightly different from when add the original values. For egs: https://github.com/woocommerce/woocommerce/issues/23917 .

This commit changes this behavior to round *after* we have summed all the precise unround values. Similar for items prices, we now round as late as possible, if rounding at subtotal is enabled.
2019-07-04 22:34:29 +05:30
Mike Jolley 33b1c4205b Fix cart tests - move round so taxes are correct 2019-04-17 16:49:46 +01:00
Mike Jolley b8921f9fba
Merge pull request #22420 from woocommerce/refactor/tax-rounding-methods
Refactor tax rounding methods for consistency
2019-02-12 16:13:58 +00:00
Mike Jolley a77578a989
Merge pull request #22347 from woocommerce/fix/20911
Tweak tax handling when exempt of VAT and woocommerce_adjust_non_base…
2019-01-31 13:33:36 +00:00
Mike Jolley 2d14315f3d woocommerce_cart_totals_get_item_tax_rates 2019-01-21 15:38:48 +00:00
RobertoDonPedro 3a2b3d10ad
Filter get_item_tax_rates in class-wc-cart-totals.php
Adds filter on the return value of function 'get_item_tax_rates' to prevent the mandatory caching of tax rates, described in https://github.com/woocommerce/woocommerce/issues/21855
2019-01-17 13:57:31 +01:00
Mike Jolley 50af71b9bd Calculated items_subtotal_tax using rounded tax subtotals. 2019-01-11 12:59:23 +00:00
Mike Jolley 96ba549b2b Remove type hint 2019-01-10 13:23:49 +00:00
Mike Jolley f67ab4e447 correct version 2019-01-10 13:20:02 +00:00
Mike Jolley 82365fd6d2 Tweak tax handling when exempt of VAT and woocommerce_adjust_non_base_location_prices is off 2019-01-04 16:46:52 +00:00
Grzegorz Rola 9df10fac5a Taxes should be rounded on subtotals in cart when option woocommerce_tax_round_at_subtotal is checked. 2018-08-29 13:43:13 +02:00
Grzegorz Rola 20ac4a8b69 Taxes should be rounded on subtotals in cart when option woocommerce_tax_round_at_subtotal is checked. 2018-08-29 13:34:22 +02:00
Grzegorz Rola 5c3f4c9c10 Revert "Taxes should be rounded on subtotals in cart when option woocommerce_tax_round_at_subtotal is checked."
This reverts commit dafcbc5
2018-08-29 13:25:22 +02:00
Grzegorz Rola dafcbc56b0 Taxes should be rounded on subtotals in cart when option woocommerce_tax_round_at_subtotal is checked. 2018-08-29 13:22:51 +02:00
Boro Sitnikovski 15cbe7daee Pass current object as context 2018-06-20 14:16:14 +02:00
Boro Sitnikovski 1b90d8114c Add filter for tax calculation in cart totals 2018-06-20 10:51:05 +02:00
Mike Jolley e677340fcc No need to load tax rates when taxes are disabled 2018-05-01 11:56:39 +01:00
Claudio Sanches 67cd6b8fbf Fixed includes/class-wc-cart-totals.php PHPCS violations 2018-03-16 14:47:18 -03:00
claudiulodro f39a9ee61a Round fractional cents when oob 2018-03-14 08:35:41 -07:00
Torre Lasley 64f85346c0 Add filter to allow plugins to override the default coupon apply order. (#19339)
* Fix for Issue #10523 - Variations ID lookup by SKU

I copied the code from the bulk() function to look up the Variation ID by the Variation SKU if the Variation ID is missing.

* Added new filter woocommerce_coupon_sort to allow plugins to override the default coupon apply order.
2018-03-13 10:26:22 +00:00
Mike Jolley a44e4f64ac Round correctly when removing taxes from prices. 2018-01-05 14:56:33 +00:00
Mike Jolley 7a94bf06df Reversion changes 2017-12-07 15:39:10 +00:00
Mike Jolley 7e7b79efd0 typo 2017-12-07 15:31:55 +00:00
Mike Jolley b6f87e70d7 round total to cents 2017-12-04 22:42:39 +00:00
Mike Jolley 7da5780c00 Store unrounded, calc rounded. 2017-12-04 21:40:12 +00:00
Mike Jolley 277127a400 Round line totals and taxes per line correctly to the store DP setting. 2017-12-04 20:38:00 +00:00
Mike Jolley 6ef391666f Only remove base taxes in cart totals class if item is taxable
Fixes #17880
2017-11-23 11:08:10 +00:00
Mike Jolley 15230e295c Add precision after multiplying quantity
Closes #17860

Has no effect on core it seems because we only store prices to the DP
setting. This would be to correct precision added by plugins.
2017-11-22 10:49:28 +00:00
Mike Jolley ec5db3b123 When adding precision to taxes, don't round when adding precision. 2017-11-20 16:30:23 +00:00
Mike Jolley 040443a04d Out of base rounding error fixes 2017-11-02 20:00:49 +00:00
Mike Jolley 9ea088f6c9 Adjust discount logic when out of base 2017-11-02 16:18:51 +00:00
Mike Jolley 65f2ee0f49 Cart totals: don't add shipping unless show_shipping is true.
Closes #17412
2017-10-27 17:30:33 +01:00
Claudiu Lodromanean 3aa43ed5d2 Calculate shipping after discounts (#17364)
* Calculate shipping after discounts

* Calculate grand total after shipping is calculated

* Keep fees calculation before shipping
2017-10-26 15:27:10 +01:00
Mike Jolley f27c8a226f Fix issue when customer is VAT exempt and prices include tax
Ref: https://github.com/woocommerce/woocommerce-eu-vat-number/issues/82

In this scenario, base taxes need to be removed from the item price.
2017-10-18 09:31:35 -07:00
Mike Jolley d694483735 Fix tax display issue for discounts 2017-10-13 14:36:35 +01:00
Mike Jolley 4f3393fc2f Tax calculations should use `unfiltered` context for tax class
This fixes variations which have a ‘parent’ tax class. It should
inherit from the parent.

Closes #17147
2017-10-12 10:12:20 +01:00
lars ac24a56ff3 #16938 rename filter for clarity 2017-10-04 10:56:56 +02:00
lars 73bc8b8e6c added actions and filters to modify tax calculation for shipping taxes and fee taxes #16938
Filters and actions are needed to ensure correct tax calculation by
German law.

The filter in class-wc-cart-totals.php is used to modify fee tax
calculation during checkout and in cart.

The actions in the other files are used to modify tax calculation in
backend for manual orders.
2017-09-28 12:52:55 +02:00
Mike Jolley f1f56423c0 Docblocks 2017-09-27 17:16:33 +01:00
Mike Jolley 40040f534b These classes require WC_Cart objects 2017-09-27 17:12:45 +01:00
Mike Jolley 5151415eec Merge branch 'discounts-class-fixes-and-tests' 2017-09-20 18:44:18 +01:00
Mike Jolley 21dfde842a Revised coupon sort order to not rely on IDs which can differ between cart and tests
Also edited test to match
2017-09-20 18:41:48 +01:00
Mike Jolley d3da954133 Move cart totals setter for 3.1 compat
Closes #16794
2017-09-15 11:15:50 -07:00
Mike Jolley 804feb9333 Store fee amount and prevent totals going negative 2017-08-23 12:15:06 +01:00