fix(medusa): gift card values & taxes are calculated correctly (#2777)

* chore: tax_rate is added to giftcards

* chore: minor

* chore: update gift card tax calculations to look at giftCard.tax_rate

* chore: gift card transactions use tax rate from gift card for legacy

* fix: gift cart total check for transaction should check the length

* chore: use tax exclusive cost + use giftcard tax rate for gctransactions + refactor

* chore: fix integration test

* chore: address issues brought up in comments

* chore: move gift card creation as a part of order service on order placed

* chore: add type handling for gift card creation

* chore: fix specs

* chore: use taxLines to calculate tax of a gift card

* chore: specs for line items containing gift cards and without

* chore: add integration specs + fix tax rate bug

* chore: round totaling + add GC application specs

* chore: cleanup trialables

* chore: write migration script to backfill gift cards with null tax_rate

* chore: update legacy totals service for gift cards

* chore: add changeset

* chore: address PR review changes

* chore: fix tests based on new totals calc

* chore: address review comments

Co-authored-by: adrien2p <adrien.deperetti@gmail.com>
Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
This commit is contained in:
Riqwan Thamir
2022-12-20 22:24:25 +01:00
committed by GitHub
co-authored by adrien2p Oliver Windall Juhl
parent 3113d8024f
commit 8a60a73389
26 changed files with 968 additions and 181 deletions
@@ -8,6 +8,7 @@ export type GiftCardFactoryData = {
region_id: string
value: number
balance: number
tax_rate?: number
}
export const simpleGiftCardFactory = async (
@@ -27,6 +28,7 @@ export const simpleGiftCardFactory = async (
region_id: data.region_id,
value: data.value,
balance: data.balance,
tax_rate: data.tax_rate,
})
return await manager.save(toSave)
@@ -23,6 +23,7 @@ export type LineItemFactoryData = {
thumbnail?: string
should_merge?: boolean
allow_discounts?: boolean
is_giftcard?: boolean
unit_price?: number
quantity?: number
fulfilled_quantity?: boolean
@@ -74,6 +75,7 @@ export const simpleLineItemFactory = async (
adjustments: data.adjustments,
includes_tax: data.includes_tax,
order_edit_id: data.order_edit_id,
is_giftcard: data.is_giftcard || false
})
const line = await manager.save(toSave)