* 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>
36 lines
746 B
TypeScript
36 lines
746 B
TypeScript
import { GiftCard } from "@medusajs/medusa"
|
|
import faker from "faker"
|
|
import { Connection } from "typeorm"
|
|
|
|
export type GiftCardFactoryData = {
|
|
id?: string
|
|
code?: string
|
|
region_id: string
|
|
value: number
|
|
balance: number
|
|
tax_rate?: number
|
|
}
|
|
|
|
export const simpleGiftCardFactory = async (
|
|
connection: Connection,
|
|
data: GiftCardFactoryData,
|
|
seed?: number
|
|
): Promise<GiftCard> => {
|
|
if (typeof seed !== "undefined") {
|
|
faker.seed(seed)
|
|
}
|
|
|
|
const manager = connection.manager
|
|
|
|
const toSave = manager.create(GiftCard, {
|
|
id: data.id,
|
|
code: data.code ?? "TESTGCCODE",
|
|
region_id: data.region_id,
|
|
value: data.value,
|
|
balance: data.balance,
|
|
tax_rate: data.tax_rate,
|
|
})
|
|
|
|
return await manager.save(toSave)
|
|
}
|