Leere Chargenfelder vor dem Speichern bestätigen

This commit is contained in:
gitea_admin committed 2026-09-08 09:30:22 +02:00
1 parent c8d9f03d7d
commit de2df1a13b
3 files changed
+23 -13

No files matched your search

+5 -4
View File
@@ -68,10 +68,10 @@ try {
if ($action === 'prepare_lot') {
$productId = (int) ($data['productId'] ?? 0);
$lotNumber = trim((string) ($data['lotNumber'] ?? ''));
if ($lotNumber === '') {
$lotId = (int) ($data['lotId'] ?? 0);
if ($lotNumber === '' && $lotId <= 0) {
throw new InvalidArgumentException('Naurua-Chargennummer fehlt');
}
$lotId = (int) ($data['lotId'] ?? 0);
if ($lotId > 0) {
$lotStmt = $pdo->prepare(
"SELECT id
@@ -104,7 +104,8 @@ try {
0.0,
0.0,
$lotNumber,
$targetQty
$targetQty,
$lotId > 0 && $lotNumber === ''
);
json_response(200, ['ok' => true, 'lot' => $preparedLot, 'balance' => get_stock_lot_balance($pdo, $lotId)]);
}
@@ -115,5 +116,5 @@ try {
} catch (InvalidArgumentException $error) {
json_response(422, ['ok' => false, 'error' => $error->getMessage()]);
} catch (Throwable $error) {
json_response(500, ['ok' => false, 'error' => 'Internal server error: ' . $error->getMessage()]);
json_response(500, ['ok' => false, 'error' => 'Interner Serverfehler']);
}
+11 -4
View File
@@ -243,7 +243,8 @@ function update_stock_lot_traceability(
float $adjustmentQty = 0.0,
float $outQty = 0.0,
?string $lotNumber = null,
?float $targetQty = null
?float $targetQty = null,
bool $clearLotNumber = false
): array {
if ($lotId <= 0) {
throw new InvalidArgumentException('Chargen-ID fehlt');
@@ -254,9 +255,12 @@ function update_stock_lot_traceability(
$manufacturerLotNumber = null;
}
$lotNumber = $lotNumber !== null ? trim($lotNumber) : null;
if ($lotNumber === '') {
if ($lotNumber === '' && !$clearLotNumber) {
throw new InvalidArgumentException('Naurua-Chargennummer fehlt');
}
if ($lotNumber === '') {
$lotNumber = null;
}
if (!is_finite($receiptQty) || !is_finite($adjustmentQty) || !is_finite($outQty)) {
throw new InvalidArgumentException('Ungueltige Bewegungsmenge');
@@ -363,7 +367,7 @@ function update_stock_lot_traceability(
$updateStmt = $pdo->prepare(
"UPDATE stock_lot
SET lot_number = COALESCE(:lot_number, lot_number),
SET lot_number = CASE WHEN :clear_lot_number THEN NULL ELSE COALESCE(:lot_number, lot_number) END,
manufacturer_party_id = :manufacturer_party_id,
manufacturer_lot_number = :manufacturer_lot_number,
mfg_date = :mfg_date,
@@ -374,6 +378,7 @@ function update_stock_lot_traceability(
);
$updateStmt->execute([
':lot_number' => $lotNumber,
':clear_lot_number' => $clearLotNumber,
':manufacturer_party_id' => $manufacturerPartyId,
':manufacturer_lot_number' => $manufacturerLotNumber,
':mfg_date' => $dates['mfg_date'],
@@ -383,7 +388,9 @@ function update_stock_lot_traceability(
]);
$after = $before;
if ($lotNumber !== null) {
if ($clearLotNumber) {
$after['lot_number'] = null;
} elseif ($lotNumber !== null) {
$after['lot_number'] = $lotNumber;
}
$after['manufacturer_party_id'] = $manufacturerPartyId;