From 033b73cd60dde6cb346789e5c34a6c3a4ca51ad5 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Sun, 19 Apr 2026 02:43:31 +0000 Subject: [PATCH] feat: setup items, categories, and suppliers database tables with real demo data and images from pexels --- assets/css/custom.css | 17 +++++- assets/images/items/18311171.jpg | Bin 0 -> 9652 bytes assets/images/items/18641665.jpg | Bin 0 -> 5060 bytes assets/images/items/2537658.jpg | Bin 0 -> 14505 bytes assets/images/items/29765806.jpg | Bin 0 -> 9544 bytes assets/images/items/9058886.jpg | Bin 0 -> 7560 bytes cookies.txt | 5 ++ db_seed.php | 36 +++++++++++++ includes/app.php | 43 +++++++++++---- includes/pexels.php | 25 +++++++++ patch_app.php | 17 ++++++ patch_modal.php | 19 +++++++ patch_table.php | 4 ++ purchases.php | 6 +-- seed_items.php | 61 +++++++++++++++++++++ stock.php | 89 ++++++++++++++++++++++--------- users.php | 8 +-- 17 files changed, 286 insertions(+), 44 deletions(-) create mode 100644 assets/images/items/18311171.jpg create mode 100644 assets/images/items/18641665.jpg create mode 100644 assets/images/items/2537658.jpg create mode 100644 assets/images/items/29765806.jpg create mode 100644 assets/images/items/9058886.jpg create mode 100644 cookies.txt create mode 100644 db_seed.php create mode 100644 includes/pexels.php create mode 100644 patch_app.php create mode 100644 patch_modal.php create mode 100644 patch_table.php create mode 100644 seed_items.php diff --git a/assets/css/custom.css b/assets/css/custom.css index 4688093..1334fb9 100644 --- a/assets/css/custom.css +++ b/assets/css/custom.css @@ -136,4 +136,19 @@ body.auth-body { /* Sidebar Sub-menu */ [data-bs-toggle="collapse"][aria-expanded="true"] .toggle-icon { transform: rotate(180deg); -} \ No newline at end of file +} +/* Fix for btn-close in modal-header */ +.modal-header { + position: relative; +} +.modal-header .btn-close { + margin: 0; + position: absolute; + top: 1rem; +} +[dir="rtl"] .modal-header .btn-close { + left: 1rem; +} +[dir="ltr"] .modal-header .btn-close { + right: 1rem; +} diff --git a/assets/images/items/18311171.jpg b/assets/images/items/18311171.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0b0206dcc995ca442e77af1dd1edb58af9d2abf0 GIT binary patch literal 9652 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 q{vhT53LpUl4kYp)0XlNd13P; literal 0 HcmV?d00001 diff --git a/assets/images/items/2537658.jpg b/assets/images/items/2537658.jpg new file mode 100644 index 0000000000000000000000000000000000000000..02bcbb7ebdbd32407ce3f2a74cff8bff2ba4796f GIT binary patch literal 14505 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 literal 0 HcmV?d00001 diff --git a/assets/images/items/29765806.jpg b/assets/images/items/29765806.jpg new file mode 100644 index 0000000000000000000000000000000000000000..37e90e9e49af00a2e36631153a1bf64af3086f2e GIT binary patch literal 9544 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 literal 0 HcmV?d00001 diff --git a/assets/images/items/9058886.jpg b/assets/images/items/9058886.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2ffd222e644c0d62582b9bcc76a788e6cb7317a6 GIT binary patch literal 7560 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 literal 0 HcmV?d00001 diff --git a/cookies.txt b/cookies.txt new file mode 100644 index 0000000..40643ba --- /dev/null +++ b/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 b0jh7ohno1tnaa8tkh48odf595 diff --git a/db_seed.php b/db_seed.php new file mode 100644 index 0000000..6f99dac --- /dev/null +++ b/db_seed.php @@ -0,0 +1,36 @@ +exec(" +CREATE TABLE IF NOT EXISTS items ( + id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, + sku VARCHAR(50) NOT NULL UNIQUE, + name VARCHAR(200) NOT NULL, + price DECIMAL(10,3) NOT NULL, + base_stock INT NOT NULL DEFAULT 0, + vat DECIMAL(5,3) NOT NULL DEFAULT 5.000, + category_id INT UNSIGNED NULL, + supplier_id INT UNSIGNED NULL, + image_url VARCHAR(255) NULL, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE SET NULL, + FOREIGN KEY (supplier_id) REFERENCES suppliers(id) ON DELETE SET NULL +); +"); + +// 2. Insert Categories +$db->exec("INSERT IGNORE INTO categories (id, name_ar, name_en) VALUES +(1, 'إلكترونيات', 'Electronics'), +(2, 'إكسسوارات', 'Accessories'), +(3, 'ملابس', 'Clothing');"); + +// 3. Insert Suppliers +$db->exec("INSERT IGNORE INTO suppliers (id, name, contact_person, phone) VALUES +(1, 'TechCorp', 'John Doe', '123456789'), +(2, 'ElectroWholesale', 'Jane Smith', '987654321'), +(3, 'StyleCo', 'Mike Johnson', '555666777');"); + +echo "Database schema and base entities created.\n"; + diff --git a/includes/app.php b/includes/app.php index e804b31..4d391ed 100644 --- a/includes/app.php +++ b/includes/app.php @@ -193,14 +193,30 @@ function can_access_branch(string $branchCode): bool function catalog(): array { - return [ - 'baklava_box' => ['sku' => 'baklava_box', 'name_ar' => 'بقلاوة مشكلة', 'name_en' => 'Mixed Baklava Box', 'price' => 18.50, 'base_stock' => 72, 'unit_ar' => 'علبة', 'unit_en' => 'box'], - 'date_truffles' => ['sku' => 'date_truffles', 'name_ar' => 'ترافل التمر', 'name_en' => 'Date Truffles', 'price' => 9.25, 'base_stock' => 120, 'unit_ar' => 'علبة', 'unit_en' => 'box'], - 'saffron_maamoul' => ['sku' => 'saffron_maamoul', 'name_ar' => 'معمول الزعفران', 'name_en' => 'Saffron Maamoul', 'price' => 7.80, 'base_stock' => 88, 'unit_ar' => 'صندوق', 'unit_en' => 'pack'], - 'pistachio_bites' => ['sku' => 'pistachio_bites', 'name_ar' => 'لقيمات الفستق', 'name_en' => 'Pistachio Bites', 'price' => 11.40, 'base_stock' => 64, 'unit_ar' => 'علبة', 'unit_en' => 'box'], - 'halwa_classic' => ['sku' => 'halwa_classic', 'name_ar' => 'حلوى عمانية كلاسيك', 'name_en' => 'Classic Omani Halwa', 'price' => 6.20, 'base_stock' => 150, 'unit_ar' => 'عبوة', 'unit_en' => 'jar'], - 'gift_tin' => ['sku' => 'gift_tin', 'name_ar' => 'علبة هدايا فاخرة', 'name_en' => 'Premium Gift Tin', 'price' => 24.00, 'base_stock' => 36, 'unit_ar' => 'علبة', 'unit_en' => 'tin'], - ]; + try { + $db = db(); + $stmt = $db->query("SELECT * FROM items"); + $items = $stmt->fetchAll(PDO::FETCH_ASSOC); + $catalog = []; + foreach ($items as $item) { + $catalog[$item["sku"]] = [ + "sku" => $item["sku"], + "name_ar" => $item["name"], + "name_en" => $item["name"], + "price" => (float)$item["price"], + "base_stock" => (int)$item["base_stock"], + "vat" => (float)$item["vat"], + "category_id" => $item["category_id"], + "supplier_id" => $item["supplier_id"], + "image_url" => $item["image_url"], + "unit_ar" => "قطعة", + "unit_en" => "pcs" + ]; + } + return $catalog; + } catch (Throwable $e) { + return []; + } } function product_label(string $sku): string @@ -210,12 +226,13 @@ function product_label(string $sku): string return $sku; } - return current_lang() === 'ar' ? $item['name_ar'] : $item['name_en']; + return current_lang() === "ar" ? $item["name_ar"] : $item["name_en"]; } + function currency(float $amount): string { - return number_format($amount, 2) . ' ' . tr('ر.ع', 'OMR'); + return number_format($amount, 3) . ' ' . tr('ر.ع', 'OMR'); } function sale_mode_label(string $mode): string @@ -440,7 +457,11 @@ function stock_snapshot(): array 'base_stock' => $base, 'sold' => $used, 'available' => max(0, $base - $used), - 'price' => (float) $item['price'], + 'price' => $item['price'], + 'category_id' => $item['category_id'], + 'supplier_id' => $item['supplier_id'], + 'image_url' => $item['image_url'], + 'vat' => $item['vat'], ]; } diff --git a/includes/pexels.php b/includes/pexels.php new file mode 100644 index 0000000..0c04a85 --- /dev/null +++ b/includes/pexels.php @@ -0,0 +1,25 @@ + 0 ? $k : 'Vc99rnmOhHhJAbgGQoKLZtsaIVfkeownoQNbTj78VemUjKh08ZYRbf18'; +} +function pexels_get($url) { + $ch = curl_init(); + curl_setopt_array($ch, [ + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_HTTPHEADER => [ 'Authorization: '. pexels_key() ], + CURLOPT_TIMEOUT => 15, + ]); + $resp = curl_exec($ch); + $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + if ($code >= 200 && $code < 300 && $resp) return json_decode($resp, true); + return null; +} +function download_to($srcUrl, $destPath) { + $data = file_get_contents($srcUrl); + if ($data === false) return false; + if (!is_dir(dirname($destPath))) mkdir(dirname($destPath), 0775, true); + return file_put_contents($destPath, $data) !== false; +} diff --git a/patch_app.php b/patch_app.php new file mode 100644 index 0000000..1a7d38b --- /dev/null +++ b/patch_app.php @@ -0,0 +1,17 @@ + max(0, $base - $used), + 'price' => $item['price'] + , + 'available' => max(0, $base - $used), + 'price' => $item['price'], + 'category_id' => $item['category_id'], + 'supplier_id' => $item['supplier_id'], + 'image_url' => $item['image_url'], + 'vat' => $item['vat'] + , + $content +); +file_put_contents('includes/app.php', $content); + diff --git a/patch_modal.php b/patch_modal.php new file mode 100644 index 0000000..fb4cee1 --- /dev/null +++ b/patch_modal.php @@ -0,0 +1,19 @@ +<\?= h\(\$row[\'name\']\) \?><\/td>/', "$1\n$1 \n$1 \" alt=\"\" class=\"rounded\" style=\"width: 40px; height: 40px; object-fit: cover;\">\n$1 \n$1
\n$1 \n$1\n$1", $content); +file_put_contents('stock.php', $content); \ No newline at end of file diff --git a/purchases.php b/purchases.php index 17dfe67..7500345 100644 --- a/purchases.php +++ b/purchases.php @@ -10,11 +10,11 @@ $allPurchases = purchase_pipeline(); $search = $_GET['q'] ?? ''; $filteredPurchases = []; if ($search) { - $lowerSearch = mb_strtolower($search); + $lowerSearch = strtolower($search); foreach ($allPurchases as $key => $row) { if ( - str_contains(mb_strtolower($row['supplier']), $lowerSearch) || - str_contains(mb_strtolower($row['reference']), $lowerSearch) + str_contains(strtolower((string)$row['supplier']), $lowerSearch) || + str_contains(strtolower((string)$row['reference']), $lowerSearch) ) { $filteredPurchases[$key] = $row; } diff --git a/seed_items.php b/seed_items.php new file mode 100644 index 0000000..fd6e7c8 --- /dev/null +++ b/seed_items.php @@ -0,0 +1,61 @@ + '10000001', 'name' => 'Laptop Pro 15', 'price' => 1200.000, 'base_stock' => 10, 'category_id' => 1, 'supplier_id' => 1, 'query' => 'laptop'], + ['sku' => '10000002', 'name' => 'Wireless Mouse', 'price' => 25.500, 'base_stock' => 50, 'category_id' => 2, 'supplier_id' => 2, 'query' => 'computer mouse'], + ['sku' => '10000003', 'name' => 'Mechanical Keyboard', 'price' => 85.000, 'base_stock' => 30, 'category_id' => 2, 'supplier_id' => 1, 'query' => 'keyboard'], + ['sku' => '10000004', 'name' => 'USB-C Hub', 'price' => 40.000, 'base_stock' => 100, 'category_id' => 2, 'supplier_id' => 2, 'query' => 'usb cable'], + ['sku' => '10000005', 'name' => 'Cotton T-Shirt', 'price' => 15.000, 'base_stock' => 200, 'category_id' => 3, 'supplier_id' => 3, 'query' => 't-shirt'], +]; + +foreach ($items as $item) { + // Check if sku already exists + $stmt = $db->prepare("SELECT id FROM items WHERE sku = ?"); + $stmt->execute([$item['sku']]); + if ($stmt->fetch()) { + echo "SKU {" . $item['sku'] . "} already exists.\n"; + continue; + } + + $imageUrl = null; + $localImagePath = null; + + // Fetch image from pexels + $url = 'https://api.pexels.com/v1/search?query=' . urlencode($item['query']) . '&orientation=square&per_page=1&page=1'; + $data = pexels_get($url); + if ($data && !empty($data['photos'])) { + $photo = $data['photos'][0]; + $src = $photo['src']['medium'] ?? ($photo['src']['original'] ?? null); + if ($src) { + $dest = __DIR__ . '/assets/images/items/' . $photo['id'] . '.jpg'; + if (download_to($src, $dest)) { + $localImagePath = 'assets/images/items/' . $photo['id'] . '.jpg'; + } + } + } + + if (!$localImagePath) { + $localImagePath = 'https://picsum.photos/400?random=' . rand(1, 1000); // fallback + } + + $stmt = $db->prepare("INSERT INTO items (sku, name, price, base_stock, vat, category_id, supplier_id, image_url) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"); + $stmt->execute([ + $item['sku'], + $item['name'], + $item['price'], + $item['base_stock'], + 5.000, // default VAT + $item['category_id'], + $item['supplier_id'], + $localImagePath + ]); + echo "Inserted {" . $item['name'] . "}\n"; +} + +echo "Done seeding items.\n"; + diff --git a/stock.php b/stock.php index 0ef05f5..991e9f2 100644 --- a/stock.php +++ b/stock.php @@ -22,21 +22,23 @@ try { // Ignore if not present } -// Search logic +// Search and filter logic $search = $_GET['q'] ?? ''; +$catFilter = $_GET['category'] ?? ''; +$supFilter = $_GET['supplier'] ?? ''; $filteredStock = []; -if ($search && empty($dbError)) { - $lowerSearch = mb_strtolower($search); + +if (empty($dbError)) { + $lowerSearch = strtolower($search); foreach ($allStock as $key => $row) { - if ( - str_contains(mb_strtolower($row['sku']), $lowerSearch) || - str_contains(mb_strtolower($row['name']), $lowerSearch) - ) { + $matchSearch = !$search || str_contains(strtolower((string)$row['sku']), $lowerSearch) || str_contains(strtolower((string)$row['name']), $lowerSearch); + $matchCat = !$catFilter || (isset($row['category_id']) && $row['category_id'] == $catFilter); + $matchSup = !$supFilter || (isset($row['supplier_id']) && $row['supplier_id'] == $supFilter); + + if ($matchSearch && $matchCat && $matchSup) { $filteredStock[$key] = $row; } } -} else { - $filteredStock = $allStock; } // Pagination logic @@ -63,10 +65,32 @@ require __DIR__ . '/includes/header.php'; -
-
- - + +
+
+ +
+
+ +
+
+ +
+
+ +
@@ -77,9 +101,10 @@ require __DIR__ . '/includes/header.php';
- + + @@ -109,7 +134,7 @@ require __DIR__ . '/includes/header.php';
SKU - +