diff --git a/modules/erp/lager/service.php b/modules/erp/lager/service.php index a505d86..ce1af83 100644 --- a/modules/erp/lager/service.php +++ b/modules/erp/lager/service.php @@ -365,9 +365,10 @@ function update_stock_lot_traceability( throw new InvalidArgumentException('Korrekturen und Abgaenge koennen nur auf der aktiven Charge gebucht werden'); } + $lotNumberAssignment = $clearLotNumber ? 'NULL' : 'COALESCE(:lot_number, lot_number)'; $updateStmt = $pdo->prepare( "UPDATE stock_lot - SET lot_number = CASE WHEN :clear_lot_number THEN NULL ELSE COALESCE(:lot_number, lot_number) END, + SET lot_number = {$lotNumberAssignment}, manufacturer_party_id = :manufacturer_party_id, manufacturer_lot_number = :manufacturer_lot_number, mfg_date = :mfg_date, @@ -376,16 +377,18 @@ function update_stock_lot_traceability( updated_at = NOW() WHERE id = :id" ); - $updateStmt->execute([ - ':lot_number' => $lotNumber, - ':clear_lot_number' => $clearLotNumber, + $updateParams = [ ':manufacturer_party_id' => $manufacturerPartyId, ':manufacturer_lot_number' => $manufacturerLotNumber, ':mfg_date' => $dates['mfg_date'], ':expiry_date' => $dates['expiry_date'], ':purchase_date' => $dates['purchase_date'], ':id' => $lotId, - ]); + ]; + if (!$clearLotNumber) { + $updateParams[':lot_number'] = $lotNumber; + } + $updateStmt->execute($updateParams); $after = $before; if ($clearLotNumber) {