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:
co-authored by
adrien2p
Oliver Windall Juhl
parent
3113d8024f
commit
8a60a73389
@@ -30,27 +30,10 @@ class OrderSubscriber {
|
||||
}
|
||||
|
||||
handleOrderPlaced = async (data) => {
|
||||
const order = await this.orderService_.retrieve(data.id, {
|
||||
select: ["subtotal"],
|
||||
relations: ["discounts", "discounts.rule", "items", "gift_cards"],
|
||||
const order = await this.orderService_.retrieveWithTotals(data.id, {
|
||||
relations: ["discounts", "discounts.rule"],
|
||||
})
|
||||
|
||||
await Promise.all(
|
||||
order.items.map(async (i) => {
|
||||
if (i.is_giftcard) {
|
||||
for (let qty = 0; qty < i.quantity; qty++) {
|
||||
await this.giftCardService_.create({
|
||||
region_id: order.region_id,
|
||||
order_id: order.id,
|
||||
value: i.unit_price,
|
||||
balance: i.unit_price,
|
||||
metadata: i.metadata,
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
)
|
||||
|
||||
await Promise.all(
|
||||
order.discounts.map(async (d) => {
|
||||
const usageCount = d?.usage_count || 0
|
||||
|
||||
Reference in New Issue
Block a user