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
@@ -3,7 +3,6 @@ import { defaultAdminGiftCardFields, defaultAdminGiftCardRelations } from "."
|
||||
|
||||
import { GiftCardService } from "../../../../services"
|
||||
import { Type } from "class-transformer"
|
||||
import { validator } from "../../../../utils/validator"
|
||||
import { EntityManager } from "typeorm"
|
||||
|
||||
/**
|
||||
@@ -87,16 +86,13 @@ import { EntityManager } from "typeorm"
|
||||
* $ref: "#/components/responses/500_error"
|
||||
*/
|
||||
export default async (req, res) => {
|
||||
const validated = await validator(AdminPostGiftCardsReq, req.body)
|
||||
const validatedBody: AdminPostGiftCardsReq & { balance?: number } = req.validatedBody
|
||||
validatedBody.balance = validatedBody.value
|
||||
|
||||
const giftCardService: GiftCardService = req.scope.resolve("giftCardService")
|
||||
|
||||
const manager: EntityManager = req.scope.resolve("manager")
|
||||
const newly = await manager.transaction(async (transactionManager) => {
|
||||
return await giftCardService.withTransaction(transactionManager).create({
|
||||
...validated,
|
||||
balance: validated.value,
|
||||
})
|
||||
return await giftCardService.withTransaction(transactionManager).create(validatedBody)
|
||||
})
|
||||
|
||||
const giftCard = await giftCardService.retrieve(newly.id, {
|
||||
|
||||
@@ -2,8 +2,9 @@ import { Router } from "express"
|
||||
import "reflect-metadata"
|
||||
import { GiftCard } from "../../../.."
|
||||
import { DeleteResponse, PaginatedResponse } from "../../../../types/common"
|
||||
import middlewares, { transformQuery } from "../../../middlewares"
|
||||
import middlewares, { transformQuery, transformBody } from "../../../middlewares"
|
||||
import { AdminGetGiftCardsParams } from "./list-gift-cards"
|
||||
import { AdminPostGiftCardsReq } from './create-gift-card'
|
||||
|
||||
const route = Router()
|
||||
|
||||
@@ -20,7 +21,11 @@ export default (app) => {
|
||||
middlewares.wrap(require("./list-gift-cards").default)
|
||||
)
|
||||
|
||||
route.post("/", middlewares.wrap(require("./create-gift-card").default))
|
||||
route.post(
|
||||
"/",
|
||||
transformBody(AdminPostGiftCardsReq),
|
||||
middlewares.wrap(require("./create-gift-card").default)
|
||||
)
|
||||
|
||||
route.get("/:id", middlewares.wrap(require("./get-gift-card").default))
|
||||
|
||||
@@ -39,6 +44,7 @@ export const defaultAdminGiftCardFields: (keyof GiftCard)[] = [
|
||||
"region_id",
|
||||
"is_disabled",
|
||||
"ends_at",
|
||||
"tax_rate",
|
||||
"created_at",
|
||||
"updated_at",
|
||||
"deleted_at",
|
||||
|
||||
Reference in New Issue
Block a user