Leere Chargenfelder vor dem Speichern bestätigen
This commit is contained in:
1 parent
c8d9f03d7d
commit
de2df1a13b
3 files changed
+23
-13
No files matched your search
@@ -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']);
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user