fix(core-flows): Allow return requests with no shipping (#8472)
Closes CC-265
This commit is contained in:
@@ -986,9 +986,8 @@ medusaIntegrationTestRunner({
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
describe("POST /admin/returns/:id/request-items/:action_id", () => {
|
describe("POST /admin/returns/:id/request", () => {
|
||||||
let returnId
|
let returnId
|
||||||
let itemChange
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
let result = await api.post(
|
let result = await api.post(
|
||||||
@@ -1004,7 +1003,7 @@ medusaIntegrationTestRunner({
|
|||||||
returnId = result.data.return.id
|
returnId = result.data.return.id
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should unset reason and note", async () => {
|
it("should confirm return request", async () => {
|
||||||
const item = order.items[0]
|
const item = order.items[0]
|
||||||
let result = (
|
let result = (
|
||||||
await api.post(
|
await api.post(
|
||||||
@@ -1023,31 +1022,195 @@ medusaIntegrationTestRunner({
|
|||||||
)
|
)
|
||||||
).data.order_preview
|
).data.order_preview
|
||||||
|
|
||||||
itemChange = result.items[0].actions[0]
|
result = (
|
||||||
|
await api.post(
|
||||||
|
`/admin/returns/${returnId}/request`,
|
||||||
|
{},
|
||||||
|
adminHeaders
|
||||||
|
)
|
||||||
|
).data.return
|
||||||
|
|
||||||
expect(result.items[0].actions[0]).toEqual(
|
expect(result).toEqual(
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
details: expect.objectContaining({
|
id: returnId,
|
||||||
reason_id: returnReason.id,
|
status: "requested",
|
||||||
}),
|
requested_at: expect.any(String),
|
||||||
internal_note: "Test note",
|
})
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should confirm return request with shipping", async () => {
|
||||||
|
const item = order.items[0]
|
||||||
|
let result = (
|
||||||
|
await api.post(
|
||||||
|
`/admin/returns/${returnId}/request-items`,
|
||||||
|
{
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
id: item.id,
|
||||||
|
quantity: 2,
|
||||||
|
reason_id: returnReason.id,
|
||||||
|
internal_note: "Test note",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
adminHeaders
|
||||||
|
)
|
||||||
|
).data.order_preview
|
||||||
|
|
||||||
|
result = (
|
||||||
|
await api.post(
|
||||||
|
`/admin/returns/${returnId}/shipping-method`,
|
||||||
|
{
|
||||||
|
shipping_option_id: returnShippingOption.id,
|
||||||
|
},
|
||||||
|
adminHeaders
|
||||||
|
)
|
||||||
|
).data.order_preview
|
||||||
|
|
||||||
|
expect(result).toEqual(
|
||||||
|
expect.objectContaining({
|
||||||
|
id: order.id,
|
||||||
|
shipping_methods: expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
id: expect.any(String),
|
||||||
|
name: "Return shipping",
|
||||||
|
amount: 1000,
|
||||||
|
subtotal: 1000,
|
||||||
|
total: 1000,
|
||||||
|
}),
|
||||||
|
]),
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
|
||||||
result = (
|
result = (
|
||||||
await api.post(
|
await api.post(
|
||||||
`/admin/returns/${returnId}/request-items/${itemChange.id}`,
|
`/admin/returns/${returnId}/request`,
|
||||||
{ quantity: 1, reason_id: null, internal_note: null },
|
{},
|
||||||
|
adminHeaders
|
||||||
|
)
|
||||||
|
).data.return
|
||||||
|
|
||||||
|
expect(result).toEqual(
|
||||||
|
expect.objectContaining({
|
||||||
|
id: returnId,
|
||||||
|
status: "requested",
|
||||||
|
requested_at: expect.any(String),
|
||||||
|
})
|
||||||
|
)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
describe("POST /admin/returns/:id/request", () => {
|
||||||
|
let returnId
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
let result = await api.post(
|
||||||
|
"/admin/returns",
|
||||||
|
{
|
||||||
|
order_id: order.id,
|
||||||
|
description: "Test",
|
||||||
|
location_id: location.id,
|
||||||
|
},
|
||||||
|
adminHeaders
|
||||||
|
)
|
||||||
|
|
||||||
|
returnId = result.data.return.id
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should confirm return request", async () => {
|
||||||
|
const item = order.items[0]
|
||||||
|
let result = (
|
||||||
|
await api.post(
|
||||||
|
`/admin/returns/${returnId}/request-items`,
|
||||||
|
{
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
id: item.id,
|
||||||
|
quantity: 2,
|
||||||
|
reason_id: returnReason.id,
|
||||||
|
internal_note: "Test note",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
adminHeaders
|
adminHeaders
|
||||||
)
|
)
|
||||||
).data.order_preview
|
).data.order_preview
|
||||||
|
|
||||||
expect(result.items[0].actions[0]).toEqual(
|
result = (
|
||||||
|
await api.post(
|
||||||
|
`/admin/returns/${returnId}/request`,
|
||||||
|
{},
|
||||||
|
adminHeaders
|
||||||
|
)
|
||||||
|
).data.return
|
||||||
|
|
||||||
|
expect(result).toEqual(
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
details: expect.objectContaining({
|
id: returnId,
|
||||||
reason_id: null,
|
status: "requested",
|
||||||
}),
|
requested_at: expect.any(String),
|
||||||
internal_note: null,
|
})
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should confirm return request with shipping", async () => {
|
||||||
|
const item = order.items[0]
|
||||||
|
let result = (
|
||||||
|
await api.post(
|
||||||
|
`/admin/returns/${returnId}/request-items`,
|
||||||
|
{
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
id: item.id,
|
||||||
|
quantity: 2,
|
||||||
|
reason_id: returnReason.id,
|
||||||
|
internal_note: "Test note",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
adminHeaders
|
||||||
|
)
|
||||||
|
).data.order_preview
|
||||||
|
|
||||||
|
result = (
|
||||||
|
await api.post(
|
||||||
|
`/admin/returns/${returnId}/shipping-method`,
|
||||||
|
{
|
||||||
|
shipping_option_id: returnShippingOption.id,
|
||||||
|
},
|
||||||
|
adminHeaders
|
||||||
|
)
|
||||||
|
).data.order_preview
|
||||||
|
|
||||||
|
expect(result).toEqual(
|
||||||
|
expect.objectContaining({
|
||||||
|
id: order.id,
|
||||||
|
shipping_methods: expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
id: expect.any(String),
|
||||||
|
name: "Return shipping",
|
||||||
|
amount: 1000,
|
||||||
|
subtotal: 1000,
|
||||||
|
total: 1000,
|
||||||
|
}),
|
||||||
|
]),
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
|
result = (
|
||||||
|
await api.post(
|
||||||
|
`/admin/returns/${returnId}/request`,
|
||||||
|
{},
|
||||||
|
adminHeaders
|
||||||
|
)
|
||||||
|
).data.return
|
||||||
|
|
||||||
|
expect(result).toEqual(
|
||||||
|
expect.objectContaining({
|
||||||
|
id: returnId,
|
||||||
|
status: "requested",
|
||||||
|
requested_at: expect.any(String),
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -106,12 +106,8 @@ function prepareFulfillmentData({
|
|||||||
}
|
}
|
||||||
|
|
||||||
function extractReturnShippingOptionId({ orderPreview, orderReturn }) {
|
function extractReturnShippingOptionId({ orderPreview, orderReturn }) {
|
||||||
if (!orderPreview.shipping_methods?.length) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
let returnShippingMethod
|
let returnShippingMethod
|
||||||
for (const shippingMethod of orderPreview.shipping_methods) {
|
for (const shippingMethod of orderPreview.shipping_methods ?? []) {
|
||||||
const modifiedShippingMethod_ = shippingMethod as any
|
const modifiedShippingMethod_ = shippingMethod as any
|
||||||
if (!modifiedShippingMethod_.actions) {
|
if (!modifiedShippingMethod_.actions) {
|
||||||
continue
|
continue
|
||||||
@@ -124,6 +120,11 @@ function extractReturnShippingOptionId({ orderPreview, orderReturn }) {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!returnShippingMethod) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
return returnShippingMethod.shipping_option_id
|
return returnShippingMethod.shipping_option_id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,6 +50,9 @@ function updateReturnItems(returnEntry, items) {
|
|||||||
const data = items.find((i) => i.details.reference_id === item.item_id)
|
const data = items.find((i) => i.details.reference_id === item.item_id)
|
||||||
if (!data) return
|
if (!data) return
|
||||||
|
|
||||||
|
console.log("ITEM: ", item)
|
||||||
|
console.log("DATA: ", data)
|
||||||
|
|
||||||
const receivedQuantity = MathBN.add(
|
const receivedQuantity = MathBN.add(
|
||||||
item.received_quantity || 0,
|
item.received_quantity || 0,
|
||||||
data.details.quantity
|
data.details.quantity
|
||||||
|
|||||||
Reference in New Issue
Block a user