feat(inventory): support line-based assignments and movements

This commit is contained in:
2026-06-19 01:05:33 +02:00
parent 8e6a00c2a9
commit 6d34a2f74f
17 changed files with 713 additions and 189 deletions
+29 -7
View File
@@ -56,8 +56,14 @@ export const ItemService = {
assets: opts?.includeAssets
? { select: { id: true, serialNumber: true, status: true } }
: false,
movements: opts?.includeMovements
? { select: { id: true, type: true, quantity: true } }
stockMovementLines: opts?.includeMovements
? {
select: {
id: true,
stockDelta: true,
movement: { select: { type: true } },
},
}
: false,
},
})
@@ -114,13 +120,23 @@ export const ItemService = {
findByIdWithAssetAndMovementCount: async (
id: string,
): Promise<ItemWithAssetAndMovementCount | null> => {
return prisma.item.findUnique({
const item = await prisma.item.findUnique({
where: { id },
include: {
category: { select: { id: true, name: true } },
_count: { select: { assets: true, movements: true } },
_count: { select: { assets: true, stockMovementLines: true } },
},
})
return item
? {
...item,
_count: {
assets: item._count.assets,
movements: item._count.stockMovementLines,
},
}
: null
},
findByName: async (
@@ -129,7 +145,7 @@ export const ItemService = {
): Promise<Item | null> => {
return db.item.findFirst({
where: { name },
include: { category: true, assets: true, movements: true },
include: { category: true, assets: true, stockMovementLines: true },
}) as Promise<Item | null>
},
@@ -139,7 +155,7 @@ export const ItemService = {
): Promise<Item | null> => {
return db.item.findUnique({
where: { id },
include: { category: true, assets: true, movements: true },
include: { category: true, assets: true, stockMovementLines: true },
}) as Promise<Item | null>
},
@@ -153,7 +169,13 @@ export const ItemService = {
include: {
category: true,
assets: { select: { id: true, serialNumber: true, status: true } },
movements: { select: { id: true, type: true, quantity: true } },
stockMovementLines: {
select: {
id: true,
stockDelta: true,
movement: { select: { type: true } },
},
},
},
}) as Promise<Item[]>
},