diff --git a/debts.php b/debts.php index e70bb4d..6f9e349 100644 --- a/debts.php +++ b/debts.php @@ -128,7 +128,7 @@ require_once 'includes/header.php';
-
+
@@ -160,7 +160,7 @@ require_once 'includes/header.php';
-
+
diff --git a/eid_sale.php b/eid_sale.php index 198060f..eca044c 100644 --- a/eid_sale.php +++ b/eid_sale.php @@ -2,7 +2,8 @@ require_once __DIR__ . '/includes/app.php'; $saleMode = 'normal'; $orderType = 'eid'; -$pageTitle = tr('إنشاء طلب عيد', 'Create Eid Order'); +$pageTitle = tr("إنشاء طلب عيد", "Create Eid Order"); +$activeNav = "eid_sale"; $backUrl = url_for('eid_orders.php'); $backLabel = tr('عودة لطلبات العيد', 'Back to Eid Orders'); $saveLabel = tr('حفظ طلب العيد', 'Save Eid Order'); diff --git a/includes/header.php b/includes/header.php index 2b886be..c281d73 100644 --- a/includes/header.php +++ b/includes/header.php @@ -99,13 +99,13 @@ $isPublic = !empty($forcePublic) || !isset($user) || !$user; - +
-
+
@@ -113,12 +113,6 @@ $isPublic = !empty($forcePublic) || !isset($user) || !$user; - - - - - - @@ -131,6 +125,26 @@ $isPublic = !empty($forcePublic) || !isset($user) || !$user;
+ + + + +
+ + +
+
+
+ +
+ diff --git a/my_cookies.txt b/my_cookies.txt new file mode 100644 index 0000000..2845e32 --- /dev/null +++ b/my_cookies.txt @@ -0,0 +1,5 @@ +# Netscape HTTP Cookie File +# https://curl.se/docs/http-cookies.html +# This file was generated by libcurl! Edit at your own risk. + +127.0.0.1 FALSE / FALSE 0 PHPSESSID dkl8f65dp116jrva8sgf07ar29 diff --git a/new_cookies.txt b/new_cookies.txt new file mode 100644 index 0000000..85e1d87 --- /dev/null +++ b/new_cookies.txt @@ -0,0 +1,5 @@ +# Netscape HTTP Cookie File +# https://curl.se/docs/http-cookies.html +# This file was generated by libcurl! Edit at your own risk. + +127.0.0.1 FALSE / FALSE 0 PHPSESSID i717431bue0iep7i5urn7atmi0 diff --git a/print_label_dates.php b/print_label_dates.php index d5eaf45..31e4145 100644 --- a/print_label_dates.php +++ b/print_label_dates.php @@ -143,8 +143,8 @@ if (!empty($items)) { if (isset($items[$sku])) { for ($i = 0; $i < (int)$qty; $i++) { $itemData = $items[$sku]; - $itemData['prod_date'] = $_POST['prod_date'][$sku] ?? date('Y-m'); - $itemData['exp_date'] = $_POST['exp_date'][$sku] ?? date('Y-m', strtotime('+1 year')); + $itemData['prod_date'] = $_POST['prod_date'][$sku] ?? date('Y-m-d'); + $itemData['exp_date'] = $_POST['exp_date'][$sku] ?? date('Y-m-d', strtotime('+1 year')); $labelsToPrint[] = $itemData; } } @@ -154,8 +154,8 @@ if (!empty($items)) { foreach ($skus as $sku) { if (isset($items[$sku])) { $itemData = $items[$sku]; - $itemData['prod_date'] = date('Y-m'); - $itemData['exp_date'] = date('Y-m', strtotime('+1 year')); + $itemData['prod_date'] = date('Y-m-d'); + $itemData['exp_date'] = date('Y-m-d', strtotime('+1 year')); $labelsToPrint[] = $itemData; } } @@ -217,7 +217,7 @@ $companyName = current_lang() === 'ar' ? get_setting('company_name_ar', 'حلو .label-name { font-size: 9px; font-weight: bold; line-height: 1.1; margin-bottom: 2px; max-height: 20px; overflow: hidden; } .label-price { font-size: 10px; font-weight: bold; margin-top: 1px; } .label-sku { font-size: 8px; color: #555; } - .label-dates { font-size: 7.5px; font-weight: bold; margin-top: 1px; color: #111; letter-spacing: 0.2px; } + .label-dates { font-size: 6.5px; font-weight: bold; margin-top: 1px; color: #111; letter-spacing: 0.2px; } .label-barcode { margin: 0; display: flex; align-items: center; justify-content: center; } .label-barcode svg { width: 100%; height: 100%; max-height: 14px; } @@ -289,7 +289,9 @@ $companyName = current_lang() === 'ar' ? get_setting('company_name_ar', 'حلو SKU - + + + @@ -303,7 +305,13 @@ $companyName = current_lang() === 'ar' ? get_setting('company_name_ar', 'حلو - + + + + + + +
- P:E: + P:E:
diff --git a/sohar_cookies.txt b/sohar_cookies.txt new file mode 100644 index 0000000..b5891c2 --- /dev/null +++ b/sohar_cookies.txt @@ -0,0 +1,5 @@ +# Netscape HTTP Cookie File +# https://curl.se/docs/http-cookies.html +# This file was generated by libcurl! Edit at your own risk. + +127.0.0.1 FALSE / FALSE 0 PHPSESSID 10595d2a14je99l2dqr2ksv6v4 diff --git a/stock.php b/stock.php index 17848cf..d510a25 100644 --- a/stock.php +++ b/stock.php @@ -242,7 +242,31 @@ if (empty($dbError)) { } } -// Pagination logic + +// Sorting logic +$sortField = $_GET['sort'] ?? ''; +$sortOrder = strtolower($_GET['order'] ?? 'asc') === 'desc' ? 'desc' : 'asc'; + +if ($sortField && !empty($filteredStock)) { + usort($filteredStock, function($a, $b) use ($sortField, $sortOrder) { + $valA = $a[$sortField] ?? ''; + $valB = $b[$sortField] ?? ''; + + if (in_array($sortField, ['price', 'cost_price', 'base_stock', 'sold', 'available'])) { + $valA = (float)$valA; + $valB = (float)$valB; + } else { + $valA = (string)$valA; + $valB = (string)$valB; + } + + if ($valA == $valB) return 0; + $cmp = ($valA < $valB) ? -1 : 1; + return $sortOrder === 'asc' ? $cmp : -$cmp; + }); +} + +# Pagination logic $page = max(1, (int)($_GET['p'] ?? 1)); $limit = 10; $total = count($filteredStock); @@ -250,6 +274,28 @@ $totalPages = max(1, ceil($total / $limit)); $offset = ($page - 1) * $limit; $stockRows = array_slice($filteredStock, $offset, $limit, true); + +function sortable_header($field, $label, $currentSortField, $currentSortOrder, $search, $catFilter, $supFilter) { + $nextOrder = ($currentSortField === $field && $currentSortOrder === 'asc') ? 'desc' : 'asc'; + $icon = ''; + if ($currentSortField === $field) { + $icon = $currentSortOrder === 'asc' ? '' : ''; + if (in_array($field, ['price', 'cost_price', 'base_stock', 'sold', 'available'])) { + $icon = $currentSortOrder === 'asc' ? '' : ''; + } + } else { + $icon = ''; + } + $url = url_for('stock.php', [ + 'q' => $search, + 'category' => $catFilter, + 'supplier' => $supFilter, + 'sort' => $field, + 'order' => $nextOrder + ]); + return '' . h($label) . ' ' . $icon . ''; +} + require __DIR__ . '/includes/header.php'; ?> @@ -332,14 +378,14 @@ require __DIR__ . '/includes/header.php'; - SKU + - - - - - - + + + + + + @@ -401,7 +447,7 @@ require __DIR__ . '/includes/header.php';
  • - +
diff --git a/temp_debts.html b/temp_debts.html new file mode 100644 index 0000000..e69de29 diff --git a/temp_debts.log b/temp_debts.log new file mode 100644 index 0000000..c674378 --- /dev/null +++ b/temp_debts.log @@ -0,0 +1,445 @@ + + + + + + الديون والفواتير الآجلة · حلوى الريامي | Al Riyami Sweets + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + +
+ + +
+

الديون والفواتير الآجلة

+
+ + +
+ +
+
+
+
الديون حسب العميل
+
+
+
    +
  • +
    + Moosa Ali Al-Abri +
    99359472
    +
    7 فواتير مفتوحة
    +
    3 منها دفعات جزئية
    +
    + 280.410 ر.ع +
  • +
  • +
    + عميل غير معروف +
    3 فواتير مفتوحة
    +
    1 منها دفعات جزئية
    +
    + 8.122 ر.ع +
  • +
+
+
+
+ + +
+
+
+
الفواتير غير المدفوعة والجزئية
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
رقم الفاتورةالعميلالهاتفالتاريخالإجماليالمدفوعالمتبقيالحالةالإجراء
+ + 6 + Moosa Ali Al-Abri-2026-04-223.150 ر.ع0.000 ر.ع3.150 ر.ع + غير مدفوعة + + +
+ + 5 + Moosa Ali Al-Abri-2026-04-221,260.000 ر.ع1,000.000 ر.ع260.000 ر.ع + مدفوعة جزئياً + + +
+ + 4 + --2026-04-222.830 ر.ع2.828 ر.ع0.002 ر.ع + مدفوعة جزئياً + + +
+ + 877100 + Moosa Ali Al-Abri-2026-04-225.250 ر.ع2.000 ر.ع3.250 ر.ع + مدفوعة جزئياً + + +
+ + 900748 + Moosa Ali Al-Abri-2026-04-212.830 ر.ع1.000 ر.ع1.830 ر.ع + مدفوعة جزئياً + + +
+ + 132196 + Moosa Ali Al-Abri-2026-04-205.490 ر.ع0.000 ر.ع5.490 ر.ع + غير مدفوعة + + +
+ + 968774 + Moosa Ali Al-Abri-2026-04-203.150 ر.ع0.000 ر.ع3.150 ر.ع + غير مدفوعة + + +
+ + 911033 + --2026-04-205.490 ر.ع0.000 ر.ع5.490 ر.ع + غير مدفوعة + + +
+ + 859389 + Moosa Ali Al-Abri-2026-04-203.540 ر.ع0.000 ر.ع3.540 ر.ع + غير مدفوعة + + +
+ + 356570 + Moosa Ali Al-Abri993594722026-04-202.630 ر.ع0.000 ر.ع2.630 ر.ع + غير مدفوعة + + +
+
+
+
+
+
+ + + +
+ + + + + +
+
+ + + + + + + diff --git a/temp_debts_out.html b/temp_debts_out.html new file mode 100644 index 0000000..1a93435 --- /dev/null +++ b/temp_debts_out.html @@ -0,0 +1,1696 @@ + + + + + + الديون والفواتير الآجلة · حلوى الريامي | Al Riyami Sweets + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + +
+ + + +
+

الديون والفواتير الآجلة

+
+ + +
+ +
+
+
+
الديون حسب العميل
+
+
+
    +
  • +
    + Moosa Ali Al-Abri +
    99359472
    +
    7 فواتير مفتوحة
    +
    3 منها دفعات جزئية
    +
    + 280.410 ر.ع +
  • +
  • +
    + عميل غير معروف +
    3 فواتير مفتوحة
    +
    1 منها دفعات جزئية
    +
    + 8.122 ر.ع +
  • +
+
+
+
+ + +
+
+
+
الفواتير غير المدفوعة والجزئية
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
رقم الفاتورةالعميلالهاتفالتاريخالإجماليالمدفوعالمتبقيالحالةالإجراء
+ + 6 + Moosa Ali Al-Abri-2026-04-223.150 ر.ع0.000 ر.ع3.150 ر.ع + غير مدفوعة + + +
+ + 5 + Moosa Ali Al-Abri-2026-04-221,260.000 ر.ع1,000.000 ر.ع260.000 ر.ع + مدفوعة جزئياً + + +
+ + 4 + --2026-04-222.830 ر.ع2.828 ر.ع0.002 ر.ع + مدفوعة جزئياً + + +
+ + 877100 + Moosa Ali Al-Abri-2026-04-225.250 ر.ع2.000 ر.ع3.250 ر.ع + مدفوعة جزئياً + + +
+ + 900748 + Moosa Ali Al-Abri-2026-04-212.830 ر.ع1.000 ر.ع1.830 ر.ع + مدفوعة جزئياً + + +
+ + 132196 + Moosa Ali Al-Abri-2026-04-205.490 ر.ع0.000 ر.ع5.490 ر.ع + غير مدفوعة + + +
+ + 968774 + Moosa Ali Al-Abri-2026-04-203.150 ر.ع0.000 ر.ع3.150 ر.ع + غير مدفوعة + + +
+ + 911033 + --2026-04-205.490 ر.ع0.000 ر.ع5.490 ر.ع + غير مدفوعة + + +
+ + 859389 + Moosa Ali Al-Abri-2026-04-203.540 ر.ع0.000 ر.ع3.540 ر.ع + غير مدفوعة + + +
+ + 356570 + Moosa Ali Al-Abri993594722026-04-202.630 ر.ع0.000 ر.ع2.630 ر.ع + غير مدفوعة + + +
+
+
+
+
+
+ + + +
+ + + + + +
+
+ + + + + + + + + + + + + + + diff --git a/test_debts_cli.php b/test_debts_cli.php new file mode 100644 index 0000000..235a970 --- /dev/null +++ b/test_debts_cli.php @@ -0,0 +1,10 @@ +query("SELECT * FROM users WHERE username = 'cashier_sohar'"); +$user = $stmt->fetch(PDO::FETCH_ASSOC); + +session_start(); +$_SESSION['auth_user'] = $user; +require_once 'debts.php'; \ No newline at end of file