fix(inventory): Entity Formulas + softDelete and restore (#7851)
This commit is contained in:
@@ -131,14 +131,14 @@ export class InventoryItem {
|
||||
|
||||
@Formula(
|
||||
(item) =>
|
||||
`(SELECT SUM(reserved_quantity) FROM inventory_level il WHERE il.inventory_item_id = ${item}.id)`,
|
||||
`(SELECT SUM(reserved_quantity) FROM inventory_level il WHERE il.inventory_item_id = ${item}.id AND il.deleted_at IS NULL)`,
|
||||
{ lazy: true, serializer: Number, hidden: true }
|
||||
)
|
||||
reserved_quantity: number
|
||||
|
||||
@Formula(
|
||||
(item) =>
|
||||
`(SELECT SUM(stocked_quantity) FROM inventory_level il WHERE il.inventory_item_id = ${item}.id)`,
|
||||
`(SELECT SUM(stocked_quantity) FROM inventory_level il WHERE il.inventory_item_id = ${item}.id AND il.deleted_at IS NULL)`,
|
||||
{ lazy: true, serializer: Number, hidden: true }
|
||||
)
|
||||
stocked_quantity: number
|
||||
|
||||
@@ -6,26 +6,28 @@ import {
|
||||
ModuleJoinerConfig,
|
||||
ModulesSdkTypes,
|
||||
ReservationItemDTO,
|
||||
RestoreReturn,
|
||||
SoftDeleteReturn,
|
||||
} from "@medusajs/types"
|
||||
import { IInventoryService } from "@medusajs/types/dist/inventory"
|
||||
import {
|
||||
arrayDifference,
|
||||
CommonEvents,
|
||||
EmitEvents,
|
||||
InjectManager,
|
||||
InjectTransactionManager,
|
||||
InventoryEvents,
|
||||
isDefined,
|
||||
isString,
|
||||
MedusaContext,
|
||||
MedusaError,
|
||||
MedusaService,
|
||||
arrayDifference,
|
||||
isDefined,
|
||||
isString,
|
||||
partitionArray,
|
||||
promiseAll,
|
||||
} from "@medusajs/utils"
|
||||
import { InventoryItem, InventoryLevel, ReservationItem } from "@models"
|
||||
import { entityNameToLinkableKeysMap, joinerConfig } from "../joiner-config"
|
||||
import InventoryLevelService from "./inventory-level"
|
||||
import { IInventoryService } from "@medusajs/types/dist/inventory"
|
||||
|
||||
type InjectedDependencies = {
|
||||
baseRepository: DAL.RepositoryService
|
||||
@@ -774,6 +776,48 @@ export default class InventoryModuleService
|
||||
return result
|
||||
}
|
||||
|
||||
@InjectTransactionManager("baseRepository_")
|
||||
// @ts-expect-error
|
||||
async softDeleteReservationItems(
|
||||
ids: string | string[],
|
||||
config?: SoftDeleteReturn<string>,
|
||||
@MedusaContext() context: Context = {}
|
||||
): Promise<void> {
|
||||
const reservations: InventoryTypes.ReservationItemDTO[] =
|
||||
await super.listReservationItems({ id: ids }, {}, context)
|
||||
|
||||
const result = await super.softDeleteReservationItems(
|
||||
{ id: ids },
|
||||
config,
|
||||
context
|
||||
)
|
||||
|
||||
await this.adjustInventoryLevelsForReservationsDeletion(
|
||||
reservations,
|
||||
context
|
||||
)
|
||||
|
||||
result
|
||||
}
|
||||
|
||||
@InjectTransactionManager("baseRepository_")
|
||||
// @ts-expect-error
|
||||
async restoreReservationItems(
|
||||
ids: string | string[],
|
||||
config?: RestoreReturn<string>,
|
||||
@MedusaContext() context: Context = {}
|
||||
): Promise<void> {
|
||||
const reservations: InventoryTypes.ReservationItemDTO[] =
|
||||
await super.listReservationItems({ id: ids }, {}, context)
|
||||
|
||||
await super.restoreReservationItems({ id: ids }, config, context)
|
||||
|
||||
await this.adjustInventoryLevelsForReservationsRestore(
|
||||
reservations,
|
||||
context
|
||||
)
|
||||
}
|
||||
|
||||
@InjectTransactionManager("baseRepository_")
|
||||
@EmitEvents()
|
||||
async deleteReservationItemByLocationId(
|
||||
|
||||
Reference in New Issue
Block a user