Fix(medusa): Totals on draft orders (#2785)
* test subtotals on draft order operations * fetch cart with subtotals when doing draft order operations * write test for updating discounts seeing changes in totals * formatting * udpate test * force taxes * missing select * add import * rm force_taxes
This commit is contained in:
@@ -793,6 +793,10 @@ describe("/admin/draft-orders", () => {
|
||||
|
||||
expect(item.title).toEqual("Update title")
|
||||
expect(item.unit_price).toEqual(1000)
|
||||
expect(updatedDraftOrder.data.draft_order.cart.subtotal).not.toEqual(
|
||||
undefined
|
||||
)
|
||||
expect(updatedDraftOrder.data.draft_order.cart.subtotal).not.toEqual(0)
|
||||
})
|
||||
|
||||
it("removes the line item, if quantity is 0", async () => {
|
||||
@@ -831,7 +835,7 @@ describe("/admin/draft-orders", () => {
|
||||
await db.teardown()
|
||||
})
|
||||
|
||||
it("updates a line item on the draft order", async () => {
|
||||
it("updates the draft order", async () => {
|
||||
const api = useApi()
|
||||
|
||||
const response = await api.post(
|
||||
@@ -861,17 +865,37 @@ describe("/admin/draft-orders", () => {
|
||||
|
||||
expect(response.status).toEqual(200)
|
||||
|
||||
const updatedDraftOrder = await api.get(
|
||||
`/admin/draft-orders/test-draft-order`,
|
||||
adminReqConfig
|
||||
)
|
||||
|
||||
const dorder = updatedDraftOrder.data.draft_order
|
||||
const dorder = response.data.draft_order
|
||||
|
||||
expect(dorder.cart.email).toEqual("lebron@james.com")
|
||||
expect(dorder.cart.billing_address.first_name).toEqual("lebron")
|
||||
expect(dorder.cart.shipping_address.last_name).toEqual("james")
|
||||
expect(dorder.cart.discounts[0].code).toEqual("TEST")
|
||||
expect(dorder.cart.total).toEqual(7200)
|
||||
})
|
||||
|
||||
it("updates the draft order, removing discount", async () => {
|
||||
const api = useApi()
|
||||
|
||||
const updatedDraftOrder = await api.post(
|
||||
"/admin/draft-orders/test-draft-order",
|
||||
{
|
||||
discounts: [{ code: "TEST" }],
|
||||
},
|
||||
adminReqConfig
|
||||
)
|
||||
|
||||
expect(updatedDraftOrder.data.draft_order.cart.total).toEqual(7200)
|
||||
|
||||
const orderWithNoDiscount = await api.post(
|
||||
"/admin/draft-orders/test-draft-order",
|
||||
{
|
||||
discounts: [],
|
||||
},
|
||||
adminReqConfig
|
||||
)
|
||||
|
||||
expect(orderWithNoDiscount.data.draft_order.cart.total).toEqual(8000)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
0
packages/medusa-plugin-economic/utils/eu-countries.js
Normal file → Executable file
0
packages/medusa-plugin-economic/utils/eu-countries.js
Normal file → Executable file
@@ -11,6 +11,8 @@ import {
|
||||
ValidateNested,
|
||||
} from "class-validator"
|
||||
import {
|
||||
defaultAdminDraftOrdersCartFields,
|
||||
defaultAdminDraftOrdersCartRelations,
|
||||
defaultAdminDraftOrdersFields,
|
||||
defaultAdminDraftOrdersRelations,
|
||||
} from "."
|
||||
@@ -18,7 +20,7 @@ import {
|
||||
import { Type } from "class-transformer"
|
||||
import { EntityManager } from "typeorm"
|
||||
import { DraftOrder } from "../../../.."
|
||||
import { DraftOrderService } from "../../../../services"
|
||||
import { CartService, DraftOrderService } from "../../../../services"
|
||||
import { AddressPayload } from "../../../../types/common"
|
||||
import { DraftOrderCreateProps } from "../../../../types/draft-orders"
|
||||
import { validator } from "../../../../utils/validator"
|
||||
@@ -230,6 +232,15 @@ export default async (req, res) => {
|
||||
select: defaultAdminDraftOrdersFields,
|
||||
})
|
||||
|
||||
const cartService: CartService = req.scope.resolve("cartService")
|
||||
|
||||
draftOrder.cart = await cartService
|
||||
.withTransaction(manager)
|
||||
.retrieveWithTotals(draftOrder.cart_id, {
|
||||
relations: defaultAdminDraftOrdersCartRelations,
|
||||
select: defaultAdminDraftOrdersCartFields,
|
||||
})
|
||||
|
||||
res.status(200).json({ draft_order: draftOrder })
|
||||
}
|
||||
|
||||
|
||||
@@ -153,7 +153,7 @@ export default async (req, res) => {
|
||||
|
||||
draftOrder.cart = await cartService
|
||||
.withTransaction(manager)
|
||||
.retrieve(draftOrder.cart_id, {
|
||||
.retrieveWithTotals(draftOrder.cart_id, {
|
||||
relations: defaultAdminDraftOrdersCartRelations,
|
||||
select: defaultAdminDraftOrdersCartFields,
|
||||
})
|
||||
|
||||
@@ -89,7 +89,7 @@ export default async (req, res) => {
|
||||
|
||||
draftOrder.cart = await cartService
|
||||
.withTransaction(manager)
|
||||
.retrieve(draftOrder.cart_id, {
|
||||
.retrieveWithTotals(draftOrder.cart_id, {
|
||||
relations: defaultAdminDraftOrdersCartRelations,
|
||||
select: defaultAdminDraftOrdersCartFields,
|
||||
})
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { CartService, DraftOrderService } from "../../../../services"
|
||||
import {
|
||||
defaultAdminDraftOrdersCartFields,
|
||||
defaultAdminDraftOrdersCartRelations,
|
||||
defaultAdminDraftOrdersFields,
|
||||
defaultAdminDraftOrdersRelations,
|
||||
@@ -72,15 +73,10 @@ export default async (req, res) => {
|
||||
relations: defaultAdminDraftOrdersRelations,
|
||||
})
|
||||
|
||||
draftOrder.cart = await cartService.retrieveWithTotals(
|
||||
draftOrder.cart_id,
|
||||
{
|
||||
relations: defaultAdminDraftOrdersCartRelations,
|
||||
},
|
||||
{
|
||||
force_taxes: true,
|
||||
}
|
||||
)
|
||||
draftOrder.cart = await cartService.retrieveWithTotals(draftOrder.cart_id, {
|
||||
relations: defaultAdminDraftOrdersCartRelations,
|
||||
select: defaultAdminDraftOrdersCartFields,
|
||||
})
|
||||
|
||||
res.json({ draft_order: draftOrder })
|
||||
}
|
||||
|
||||
@@ -107,7 +107,7 @@ export default async (req, res) => {
|
||||
await orderService.withTransaction(manager).capturePayment(result.id)
|
||||
})
|
||||
|
||||
const order = await orderService.retrieve(result.id, {
|
||||
const order = await orderService.retrieveWithTotals(result.id, {
|
||||
relations: defaultOrderRelations,
|
||||
select: defaultOrderFields,
|
||||
})
|
||||
|
||||
@@ -173,7 +173,7 @@ export default async (req, res) => {
|
||||
await cartService.update(draftOrder.cart_id, cartDataToUpdate)
|
||||
})
|
||||
|
||||
draftOrder.cart = await cartService.retrieve(draftOrder.cart_id, {
|
||||
draftOrder.cart = await cartService.retrieveWithTotals(draftOrder.cart_id, {
|
||||
relations: defaultAdminDraftOrdersCartRelations,
|
||||
select: defaultAdminDraftOrdersCartFields,
|
||||
})
|
||||
|
||||
@@ -148,7 +148,7 @@ export default async (req, res) => {
|
||||
|
||||
draftOrder.cart = await cartService
|
||||
.withTransaction(manager)
|
||||
.retrieve(draftOrder.cart_id, {
|
||||
.retrieveWithTotals(draftOrder.cart_id, {
|
||||
relations: defaultAdminDraftOrdersCartRelations,
|
||||
select: defaultAdminDraftOrdersCartFields,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user