Merge branch 'feature/OrderAddChangedProduct' into test

This commit is contained in:
E98Developer 2026-06-05 13:00:57 +02:00
commit b74f777cbc
3 changed files with 137 additions and 18 deletions

View File

@ -886,6 +886,10 @@ public function getOrderData(?int $orderId = null, ?Order $Order = null): array
$orderData = $Order->toArray(); $orderData = $Order->toArray();
if ($Order->orderFlag == 'modifier' && $Order->rel_id) {
$orderData['changedItems'] = $this->getChangedItems($Order);
}
if ($Order->orderType == 'weekly') { if ($Order->orderType == 'weekly') {
$orderData['items'] = $this->getOrderItemsFromOrderData(null, $Order); $orderData['items'] = $this->getOrderItemsFromOrderData(null, $Order);
if (is_array($orderData['items']['weekDayItems'])) { if (is_array($orderData['items']['weekDayItems'])) {
@ -903,6 +907,89 @@ public function getOrderData(?int $orderId = null, ?Order $Order = null): array
return $orderData; return $orderData;
} }
private function getChangedItems(Order $order): array
{
$originalOrder = OrderArchive::with('items')->find($order->rel_id);
if (! $originalOrder) {
return [];
}
$currentItems = (array) json_decode($order->productSelected, true);
$originalItems = [];
$productDataMap = [];
foreach ($originalOrder->items as $item) {
// Find current product_id by supplierProductNumber and supplier_id
$product = Product::where('supplierProductNumber', $item->supplierProductNumber)
->where('supplier_id', $item->supplier_id)
->first();
$pId = $product ? $product->id : null;
if ($pId) {
$originalItems[$pId] = $item->quantity;
$productDataMap[$pId] = [
'name' => $item->name,
'article_number' => $item->supplierProductNumber,
];
} else {
// If product not found in current products table, use a unique key but it might not match currentItems
// However, if it's not in currentItems, it will be treated as removed.
$tempKey = 'old_' . $item->id;
$originalItems[$tempKey] = $item->quantity;
$productDataMap[$tempKey] = [
'name' => $item->name,
'article_number' => $item->supplierProductNumber,
];
}
}
$changedItems = [];
$allProductIds = array_unique(array_merge(array_keys($currentItems), array_keys($originalItems)));
foreach ($allProductIds as $productId) {
$currentQty = $currentItems[$productId] ?? 0;
$originalQty = $originalItems[$productId] ?? 0;
if ($currentQty != $originalQty) {
if (isset($productDataMap[$productId])) {
$name = $productDataMap[$productId]['name'];
$articleNumber = $productDataMap[$productId]['article_number'];
} else {
$product = Product::find($productId);
$name = $product ? $product->name : 'Ismeretlen termék';
$articleNumber = $product ? $product->supplierProductNumber : '-';
}
// Handle weekly order structure (array of days)
if (is_array($currentQty) || is_array($originalQty)) {
for ($day = 1; $day <= 7; $day++) {
$cQty = is_array($currentQty) ? ($currentQty[$day] ?? 0) : 0;
$oQty = is_array($originalQty) ? ($originalQty[$day] ?? 0) : 0;
if ($cQty != $oQty) {
$changedItems[] = [
'name' => $name,
'article_number' => $articleNumber,
'old_qty' => $oQty,
'new_qty' => $cQty,
'day' => $day,
];
}
}
} else {
$changedItems[] = [
'name' => $name,
'article_number' => $articleNumber,
'old_qty' => $originalQty,
'new_qty' => $currentQty,
];
}
}
}
return $changedItems;
}
private function getOrderStatus(int $orderId) private function getOrderStatus(int $orderId)
{ {
if ($Order = Order::find($orderId)) { if ($Order = Order::find($orderId)) {

View File

@ -18,6 +18,37 @@
@if(isset($orderData['changedItems']) && count($orderData['changedItems']) > 0)
<h3>Módosult tételek az eredeti megrendeléshez képest:</h3>
<table border="1" cellpadding="5" style="border-collapse: collapse; width: 100%;">
<thead>
<tr style="background-color: #f2f2f2;">
<th>Cikkszám</th>
<th>Terméknév</th>
@if($orderData['orderType'] == 'weekly')
<th>Nap</th>
@endif
<th>Eredeti db</th>
<th>Módosított db</th>
</tr>
</thead>
<tbody>
@foreach($orderData['changedItems'] as $item)
<tr>
<td>{{ $item['article_number'] }}</td>
<td>{{ $item['name'] }}</td>
@if($orderData['orderType'] == 'weekly')
<td>{{ $item['day'] }}. nap</td>
@endif
<td>{{ $item['old_qty'] }}</td>
<td>{{ $item['new_qty'] }}</td>
</tr>
@endforeach
</tbody>
</table>
<br>
@endif
<p>A megrendelés feldolgozása után abban az esetben várjuk mielőbbi visszajelzésüket, ha a rendelés egyes tételeit nem, vagy nem a megrendelt mennyiségben tudják szállítani, illetve visszajelzést várunk még a várható szállítási dátummal kapcsolatosan.</p> <p>A megrendelés feldolgozása után abban az esetben várjuk mielőbbi visszajelzésüket, ha a rendelés egyes tételeit nem, vagy nem a megrendelt mennyiségben tudják szállítani, illetve visszajelzést várunk még a várható szállítási dátummal kapcsolatosan.</p>
<p>Együttműködését előre is köszönjük!</p> <p>Együttműködését előre is köszönjük!</p>
<p>Üdvözlettel:</p> <p>Üdvözlettel:</p>

View File

@ -63,8 +63,7 @@
if (typeof APP.OrderArchiveModule === "undefined") { if (typeof APP.OrderArchiveModule === "undefined") {
APP.OrderArchiveModule = new OrderArchiveModule(); APP.OrderArchiveModule = new OrderArchiveModule();
} }
APP.OrderArchiveModule.init( APP.OrderArchiveModule.init({
{
URL: { URL: {
root: '{{url('')}}', root: '{{url('')}}',
getDataTableContent: '{{route('orderArchive.getDataTableContent')}}', getDataTableContent: '{{route('orderArchive.getDataTableContent')}}',
@ -73,10 +72,12 @@
edit: '{{route('orderArchive.edit',"%id%")}}', edit: '{{route('orderArchive.edit',"%id%")}}',
}, },
testMode: {{$testMode ? 'true' : 'false'}} testMode: {{$testMode ? 'true' : 'false'}}
} });
);
APP.OrderArchiveModule.initViewList({orderDirective:[[4, "desc"]]}); var orderColIndex = APP.IsUserAdmin ? 4 : 3;
APP.OrderArchiveModule.initViewList({
orderDirective: [[orderColIndex, "desc"]]
});
}); });
</script> </script>