**What**
- Fixes wrong payload class for `POST /admin/shipping-profiles`
- Fixes wrong payload class for `POST /admin/shipping-profiles/:id`
- Fixes an issue where updating a shipping profile with products and/or shipping options would fail.
- Fixes an issue where passing `profile_id` to `ShippingOptionService.update()` would not update the shipping profile of the option.
**Testing**
- Adds new `simpleshippingProfileFactory`
- Adds new integration test suite for shipping profiles operations.
Resolves CORE-1065
* add feature flag for tax inclusive pricing
* update db model for TIP
* add migration
* set featureflag column decorators
* remove unused prop
* update tests to reflect feature_flags as any array
* fix types
* reference key from featureFlag file
* use feature flag key in models
* fix copy paste mistake
* unify spelling
* Create gorgeous-experts-guess.md
* feat(medusa): create/update endpoints of currency/region/price-lists/shipping-options should allow to pass includes_tax
* test(integration): continue to add some integration test
* test(integration): continue to add some integration test
* test(unit): Fix region service tests
* fix(medusa): API unit tests flags management
* feat(medusa): Minor cleanup
* style(medusa): Fix typo
* fix(medusa): rebase
* feat(medusa): Replace old tag with the new one
* feat(medusa): revert flag
* feat(medusa): Cleanup
* feat(medusa): feedback
* feat(medusa): Rename currency retrieve method
* test(medudsa): fix unit tests
* chore(medusa): fix oas
* feat(medusa): ShippingMethod should include tax setting from parent option (#2021)
* feat(medusa): Shipping method should includes tax from parent options
* feat(medusa): Condition the includes tax flag to the availability of the feature and add some other tests
* test(integration): Move cart/order ff test in separate files
* fix: snapshots folder
* fix(integration): snapshots
* Create calm-baboons-sit.md
* test(integration): file naming
Co-authored-by: Carlos R. L. Rodrigues <rodrigolr@gmail.com>
* Feat/tax inclusive pricing extend price selection strategy (#2087)
* initial changes to price selection strategy including unit tests
* typing for tax calculation
* update types and remove region and currency from prices results
* fix casing
* include tax calculation in priceselectionstrategy
* integration tests for tax inclusive pricing price calculations
* fix build
* include tax inclusive considerations when calculating tax fields for variants
* include only "includes_tax" fields from currency and region joins
* test to see errors in pipelines
* conditionally join featureflagged fields
* add "includes_tax" to price list factory
* add tests for tax inclusive price list prices and currency prices
* fix unit tests
* refactor pricing array checks to expect arraycontaining
* undo error handler
* Feat/tax inclusive pricing flag on generated lineitems (#2108)
* include tax inclusive pricing flag on generated lineitems
* initial addition of tax inclusivity for lineitem service
* add generate test to ensure that includes_tax is set when returned from price selection strategy
* add integration test for generating lineitem including tax
* add test for negative tax inclusion
* add tests for mixed pricing
* add negative test for setting tax exclusivity
* restructure the setting of includes_tax on lineitems
* fix: update cwd to be correct in cart test
* feat(medusa): Line item totals calculations (#2123)
* feat(medusa): Update totals and tax calculation way to calculate the totals
* feat(medusa): remove region feetching from decorate total
* feat(medusa): cleanup
* test(medusa): fix tax calculation tests
* comment
* test(integration): cleanup
* test(integration): cleanup
* fix(medusa): return service missing await
* feat(medusa): cleanup
* feat(medusa): cleanup
* test(integration): fix data
* feat(medusa): improve tax calculation readability
* test(medusa): improve tax calculation structure case
Co-authored-by: Sebastian Rindom <skrindom@gmail.com>
* Feat(medusa): tax inclusive pricing in shipping method tax (#2125)
* initial implementation and test
* include tax inclusive calculations for getting shipping options
* remove inaccurate comment
* remove console log
* refactor how prices and taxes are set for shipping methods
* fix integration tests
* remove verbose flag
* fix integration tests
* remove console log
* format util
* use util in price service and tax strategy
* fix faulty integration test
* undo tax calculation strategy changes in favor or Carlos' pr
* undo changes to tax calculation strategy tests
* round tax amount
* feat(medusa): cleanup calculate tax amount utils and its usage (#2136)
* feat(medusa): Refund line totals calculation (#2139)
Rely on the update of the following pr https://github.com/medusajs/medusa/pull/2136
**WIP Missing integration tests**
**What**
Update the totals calculation on the refund line to include the notion of tax inclusive
**Test**
- Update and add new tests around the refund
Fixes CORE-482
* feat(medusa): Tax inclusive discounts calculations (#2137)
**What**
- Calculate line adjustments correctly taking into account the tax inclusivity
- fix totals getLineItemTotals by adjusting the sub total with the original tax amount instead of the tax amount when the unit price includes the taxes
**Tests**
- The tests create a cart with a percentage discount of 15%, the cart includes 2 items mixing the tax inclusive and validate the items on the result cart as well as the totals on each item. I ve based my calculation validation based on what we have done + some articles around discount apply on price without taxes to validate the output.,
FIXES CORE-477
* Chore: shipping methods tax inclusive total (#2130)
* chore: calculate tax inclusive shipping methods
* chore: additional tests and check undefined tax_rate (#2157)
* chore: additional tests and check undefined tax_rate
* fix: naming + correct price type check
* fix: remove price_includes_tax from type
* fix: remove price_includes_tax from type
Co-authored-by: Philip Korsholm <philip.korsholm@hotmail.com>
Co-authored-by: adrien2p <adrien.deperetti@gmail.com>
Co-authored-by: Carlos R. L. Rodrigues <rodrigolr@gmail.com>
Co-authored-by: Philip Korsholm <88927411+pKorsholm@users.noreply.github.com>
Co-authored-by: Sebastian Rindom <skrindom@gmail.com>
Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com>
**What**
Since the release of the Tax API the line item totals calculations on orders with gift cards have been wrong. To understand the bug consider the below order:
Region:
- tax_rate: 25%
- gift_cards_taxable: true
Order:
- applied gift card: 1000
- items:
- A: unit_price: 1000
- B: unit_price: 500
- Subtotal: 1500
**Previous calculation method**
1. Determine how much of the gift card is used for each item using `item_total / subtotal * gift_card_amount`:
- Item A: 1000/1500 * 1000 = 666.67
- Item B: 500/1500 * 1000 = 333.33
2. Calculate line item totals including taxes using `(unit_price - gift_card) * (1 + tax_rate)`
- Item A: 1000 - 666.67 = 333.33; vat amount -> 83.33
- Item B: 500 - 333.33 = 166.67; vat amount -> 41.67
3. Add up the line item totals: order subtotal = 500; vat amount = 125; total = 625
This is all correct at the totals level; but at the line item level we should still use the "original prices" i.e. the line item total for item a should be (1000 * 1.25) = 1250 with a tax amount of 250.
**New calculation method**
1. Use default totals calculations
- Item A: subtotal: 1000, tax_total: 250, total: 1250
- Item B: subtotal: 500, tax_total: 125, total: 625
2. Add up the line item totals: subtotal: 1500, tax_total: 375, total: 1875
3. Reduce total with gift card: subtotal: 1500 - 1000 = 500, tax_total: 375 - 250 = 125, total = 625
Totals can now be forwarded correctly to accounting plugins.
Fixes CORE-310.
* feat: add product list for price lists
* feat: add product list for price lists
* refactor: product list controller
* fix: add integration test for price list products
* fix: use getListConfig