feat(medusa): Remove reservations for all line items when an order edit is accepted (#3544)

**What**
- Remove all allocations to line items once an order edit is confirmed

**Why**
- Since all line items of an order are discarded once an order edit is confirmed it will orphan the reservations causing inconsistencies with the stock
This commit is contained in:
Philip Korsholm authored and GitHub committed 2023-03-30 09:56:10 +00:00
1 parent 999aeb116c
commit 5e405be02c
6 files changed
+167 -41

No files matched your search

@@ -1,21 +1,21 @@
import { Connection } from "typeorm"
import faker from "faker"
import { Cart } from "@medusajs/medusa"
import { RegionFactoryData, simpleRegionFactory } from "./simple-region-factory"
import {
LineItemFactoryData,
simpleLineItemFactory,
} from "./simple-line-item-factory"
import {
AddressFactoryData,
simpleAddressFactory,
} from "./simple-address-factory"
import { Connection, DataSource } from "typeorm"
import {
LineItemFactoryData,
simpleLineItemFactory,
} from "./simple-line-item-factory"
import { RegionFactoryData, simpleRegionFactory } from "./simple-region-factory"
import {
ShippingMethodFactoryData,
simpleShippingMethodFactory,
} from "./simple-shipping-method-factory"
import { Cart } from "@medusajs/medusa"
import faker from "faker"
export type CartFactoryData = {
id?: string
region?: RegionFactoryData | string
@@ -27,7 +27,7 @@ export type CartFactoryData = {
}
export const simpleCartFactory = async (
connection: Connection,
dataSource: DataSource,
data: CartFactoryData = {},
seed: number
): Promise<Cart> => {
@@ -35,16 +35,16 @@ export const simpleCartFactory = async (
faker.seed(seed)
}
const manager = connection.manager
const manager = dataSource.manager
let regionId: string
if (typeof data.region === "string") {
regionId = data.region
} else {
const region = await simpleRegionFactory(connection, data.region)
const region = await simpleRegionFactory(dataSource, data.region)
regionId = region.id
}
const address = await simpleAddressFactory(connection, data.shipping_address)
const address = await simpleAddressFactory(dataSource, data.shipping_address)
const id = data.id || `simple-cart-${Math.random() * 1000}`
const toSave = manager.create(Cart, {
@@ -60,12 +60,12 @@ export const simpleCartFactory = async (
const shippingMethods = data.shipping_methods || []
for (const sm of shippingMethods) {
await simpleShippingMethodFactory(connection, { ...sm, cart_id: id })
await simpleShippingMethodFactory(dataSource, { ...sm, cart_id: id })
}
const items = data.line_items
for (const item of items) {
await simpleLineItemFactory(connection, { ...item, cart_id: id })
for (const item of items || []) {
await simpleLineItemFactory(dataSource, { ...item, cart_id: id })
}
return cart