feat(piece) : add quantity field to piece types, sanitization and hydration

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Matthieu
2026-03-12 12:08:43 +01:00
parent 5c31045e83
commit 695d56a6d3
5 changed files with 14 additions and 0 deletions

View File

@@ -175,6 +175,9 @@ export const normalizeStructureForSave = (input: any): any => {
if (piece.reference) {
payload.reference = piece.reference
}
if ((piece as any).quantity !== undefined && (piece as any).quantity >= 1) {
payload.quantity = (piece as any).quantity
}
return payload
}) as any

View File

@@ -103,6 +103,7 @@ export const hydratePieces = (pieces: any[]): ComponentModelPiece[] => {
reference: piece?.reference ?? '',
familyCode: piece?.familyCode ?? piece?.typePiece?.code ?? '',
role: piece?.role ?? '',
...(piece?.quantity !== undefined && piece.quantity >= 1 ? { quantity: piece.quantity } : {}),
}))
}
@@ -175,6 +176,7 @@ export const mapComponentPieces = (pieces: any[]): ComponentModelPiece[] => {
typePieceLabel: piece?.typePieceLabel ?? piece?.typePiece?.name ?? '',
familyCode: piece?.familyCode ?? piece?.typePiece?.code ?? '',
role: piece?.role ?? '',
...(piece?.quantity !== undefined && piece.quantity >= 1 ? { quantity: piece.quantity } : {}),
}))
}

View File

@@ -162,6 +162,8 @@ export const sanitizePieces = (pieces: any[]): ComponentModelPiece[] => {
const rawRole = typeof piece?.role === 'string' ? piece.role.trim() : ''
const role = rawRole.length > 0 ? rawRole : undefined
const quantity = typeof piece?.quantity === 'number' && piece.quantity >= 1 ? piece.quantity : undefined
if (!typePieceId && !typePieceLabel && !reference && !familyCode) {
return null
}
@@ -182,6 +184,9 @@ export const sanitizePieces = (pieces: any[]): ComponentModelPiece[] => {
if (typePieceLabel) {
result.typePieceLabel = typePieceLabel
}
if (quantity !== undefined) {
result.quantity = quantity
}
return result
})
.filter((piece): piece is ComponentModelPiece => !!piece)

View File

@@ -21,6 +21,7 @@ export interface ComponentModelPiece {
reference?: string
familyCode?: string
role?: string
quantity?: number
}
export interface ComponentModelProduct {
@@ -156,6 +157,7 @@ const validatePiece = (
const reference = ensureString(value.reference)
const familyCode = ensureString(value.familyCode)
const role = ensureString(value.role)
const quantity = typeof value.quantity === 'number' && value.quantity >= 1 ? value.quantity : undefined
if (!typePieceId && !typePieceLabel && !reference && !familyCode) {
issues.push(`${path}: au moins un identifiant, une famille ou une référence de pièce est requis`)
@@ -168,6 +170,7 @@ const validatePiece = (
...(reference ? { reference } : {}),
...(familyCode ? { familyCode } : {}),
...(role ? { role } : {}),
...(quantity ? { quantity } : {}),
}
}

View File

@@ -176,6 +176,7 @@ export function sanitizePieceDefinition(definition: ComponentModelPiece) {
typePieceLabel: definition.typePieceLabel ?? null,
reference: definition.reference ?? null,
familyCode: (definition as any).familyCode ?? null,
quantity: typeof (definition as any).quantity === 'number' ? (definition as any).quantity : null,
})
}