improved new warehouse stuff
This commit is contained in:
@@ -6,7 +6,7 @@ class WarehouseOfferModel extends TTCrudBaseModel {
|
||||
public string $reference;
|
||||
public string $customerNumber;
|
||||
public string $customerName;
|
||||
public string $contactPerson;
|
||||
public ?string $contactPerson;
|
||||
public string $customerStreet;
|
||||
public string $customerCity;
|
||||
public string $customerZip;
|
||||
|
||||
@@ -345,31 +345,80 @@ $appendToBody
|
||||
return;
|
||||
}
|
||||
|
||||
$order = WarehouseOrderModel::get($postData['orderId']);
|
||||
$orderAsArray = (array) $order;
|
||||
|
||||
$fullLogMessage = '';
|
||||
|
||||
// 1. Status change message
|
||||
if ($postData['status'] !== 'noChanges') {
|
||||
$statusColumn = array_values(array_filter($this->columns, fn($c) => $c['key'] === 'status'))[0]['modal']['items'];
|
||||
|
||||
$oldStatusKey = array_search($order->status, array_column($statusColumn, 'value'));
|
||||
$newStatusKey = array_search($postData['status'], array_column($statusColumn, 'value'));
|
||||
|
||||
$oldStatusText = ($oldStatusKey !== false) ? $statusColumn[$oldStatusKey]['text'] : $order->status;
|
||||
$newStatusText = ($newStatusKey !== false) ? $statusColumn[$newStatusKey]['text'] : $postData['status'];
|
||||
|
||||
$fullLogMessage .= 'Status wurde geändert von ' . $oldStatusText . ' auf ' . $newStatusText . '.';
|
||||
}
|
||||
|
||||
// 2. Main note from user
|
||||
if (!empty($postData['note'])) {
|
||||
$fullLogMessage .= ($fullLogMessage ? "\n\n" : "") . $postData['note'];
|
||||
}
|
||||
|
||||
// 3. Handle delivery data if present
|
||||
if (isset($postData['deliveryData']) && is_array($postData['deliveryData'])) {
|
||||
$deliveryDetails = [];
|
||||
|
||||
foreach ($postData['deliveryData'] as $delivery) {
|
||||
$orderedAmount = floatval($delivery['orderedAmount']);
|
||||
$deliveredAmount = floatval($delivery['amount']);
|
||||
$articleName = $delivery['articleName'];
|
||||
|
||||
// Only log if there's a discrepancy
|
||||
if ($deliveredAmount < $orderedAmount) {
|
||||
$reasonText = !empty($delivery['reason']) ? " Grund: " . $delivery['reason'] . "." : "";
|
||||
$discrepancyMessage = "Artikel '$articleName': {$deliveredAmount} von {$orderedAmount} Stk. geliefert.{$reasonText}";
|
||||
|
||||
if (isset($delivery['cancelRest']) && $delivery['cancelRest']) {
|
||||
$remaining = $orderedAmount - $deliveredAmount;
|
||||
$discrepancyMessage .= " Restliche {$remaining} Stk. storniert.";
|
||||
}
|
||||
$deliveryDetails[] = $discrepancyMessage;
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($deliveryDetails)) {
|
||||
$fullLogMessage .= ($fullLogMessage ? "\n\n" : "") . "Lieferdetails:\n- " . implode("\n- ", $deliveryDetails);
|
||||
}
|
||||
}
|
||||
|
||||
$log = [
|
||||
"table" => "WarehouseOrder",
|
||||
"rowId" => intval($postData['orderId']),
|
||||
"type" => $postData['status'] === 'noChanges' ? 'noChanges' : 'statusChange',
|
||||
"fileIds" => $postData['fileIds'] ?? null,
|
||||
"message" => $postData['note'] ?? null,
|
||||
"message" => trim($fullLogMessage),
|
||||
"createBy" => intval($this->user->id),
|
||||
"create" => time()
|
||||
];
|
||||
|
||||
try {
|
||||
$order = WarehouseOrderModel::get($log['rowId']);
|
||||
if ($postData['status'] !== 'noChanges') {
|
||||
$oldStatusText = array_values(array_filter($this->columns, fn($c) => $c['key'] === 'status'))[0]['modal']['items'][array_search($order->status, array_column(array_values(array_filter($this->columns, fn($c) => $c['key'] === 'status'))[0]['modal']['items'], 'value'))]['text'];
|
||||
$newStatusText = array_values(array_filter($this->columns, fn($c) => $c['key'] === 'status'))[0]['modal']['items'][array_search($postData['status'], array_column(array_values(array_filter($this->columns, fn($c) => $c['key'] === 'status'))[0]['modal']['items'], 'value'))]['text'];
|
||||
$log['message'] = 'Status wurde geändert von ' . $oldStatusText . ' auf ' . $newStatusText . ($log['message'] ? ': ' . $log['message'] : '');
|
||||
$order->status = $postData['status'];
|
||||
$order = (array) $order;
|
||||
WarehouseOrderModel::update($order);
|
||||
$orderAsArray['status'] = $postData['status'];
|
||||
WarehouseOrderModel::update($orderAsArray);
|
||||
}
|
||||
|
||||
WarehouseLogModel::create($log);
|
||||
self::returnJson(['success' => 'Log entry created']);
|
||||
// Only create a log entry if there's actually something to log
|
||||
if ($postData['status'] !== 'noChanges' || !empty($log['message']) || !empty($log['fileIds'])) {
|
||||
WarehouseLogModel::create($log);
|
||||
}
|
||||
|
||||
self::returnJson(['success' => true, 'message' => 'Log entry created']);
|
||||
} catch (Exception $e) {
|
||||
self::returnJson(['error' => 'Error creating log entry']);
|
||||
self::returnJson(['error' => 'Error creating log entry: ' . $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user