Feat(inventory-next, medusa): Add List inventory items endpoint (#6694)

* code for list inventory items

* fix integration tests

* move integration test

* calculate reserved and stocked quantities in db

* update lockfile
This commit is contained in:
Philip Korsholm
2024-03-14 14:48:34 +01:00
committed by GitHub
parent 3dd55efd15
commit c3f8c30ba6
14 changed files with 1247 additions and 16 deletions
@@ -3,7 +3,9 @@ import {
Collection,
Entity,
Filter,
Formula,
OnInit,
OnLoad,
OneToMany,
OptionalProps,
PrimaryKey,
@@ -106,7 +108,21 @@ export class InventoryItem {
() => InventoryLevel,
(inventoryLevel) => inventoryLevel.inventory_item
)
inventory_levels = new Collection<InventoryLevel>(this)
location_levels = new Collection<InventoryLevel>(this)
@Formula(
(item) =>
`(SELECT SUM(reserved_quantity) FROM inventory_level il WHERE il.inventory_item_id = ${item}.id)`,
{ 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)`,
{ lazy: true, serializer: Number, hidden: true }
)
stocked_quantity: number
@BeforeCreate()
private beforeCreate(): void {
@@ -4,11 +4,12 @@ import {
Filter,
ManyToOne,
OnInit,
OnLoad,
PrimaryKey,
Property,
} from "@mikro-orm/core"
import { DALUtils, isDefined } from "@medusajs/utils"
import { DALUtils } from "@medusajs/utils"
import { InventoryItem } from "./inventory-item"
import { createPsqlIndexStatementHelper } from "@medusajs/utils"
import { generateEntityId } from "@medusajs/utils"
@@ -91,6 +92,8 @@ export class InventoryLevel {
})
inventory_item: InventoryItem
available_quantity: number | null = null
@BeforeCreate()
private beforeCreate(): void {
this.id = generateEntityId(this.id, "ilev")
@@ -101,4 +104,11 @@ export class InventoryLevel {
private onInit(): void {
this.id = generateEntityId(this.id, "ilev")
}
@OnLoad()
private onLoad(): void {
if (isDefined(this.stocked_quantity) && isDefined(this.reserved_quantity)) {
this.available_quantity = this.stocked_quantity - this.reserved_quantity
}
}
}