From 50894939154dfa70c9a2f2451eded0abc98a6a6f Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Mon, 16 Feb 2026 08:27:58 +0000 Subject: [PATCH] Autosave: 20260216-082758 --- index.php | 265 ++++++++++++++++++++++---- uploads/items/item_6992d1c375bb8.jfif | Bin 0 -> 7546 bytes 2 files changed, 232 insertions(+), 33 deletions(-) create mode 100644 uploads/items/item_6992d1c375bb8.jfif diff --git a/index.php b/index.php index 49d8844..cc557df 100644 --- a/index.php +++ b/index.php @@ -10,10 +10,11 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $email = $_POST['email'] ?? ''; $phone = $_POST['phone'] ?? ''; $balance = (float)($_POST['balance'] ?? 0); + $type = $_POST['type'] ?? 'customer'; if ($name) { - $stmt = db()->prepare("INSERT INTO customers (name, email, phone, balance) VALUES (?, ?, ?, ?)"); - $stmt->execute([$name, $email, $phone, $balance]); - $message = "Customer added successfully!"; + $stmt = db()->prepare("INSERT INTO customers (name, email, phone, balance, type) VALUES (?, ?, ?, ?, ?)"); + $stmt->execute([$name, $email, $phone, $balance, $type]); + $message = ucfirst($type) . " added successfully!"; } } @@ -83,21 +84,67 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $stmt->execute([$id]); $message = "Item deleted successfully!"; } + + if (isset($_POST['edit_item'])) { + $id = (int)$_POST['id']; + $cat_id = $_POST['category_id'] ?: null; + $unit_id = $_POST['unit_id'] ?: null; + $supplier_id = $_POST['supplier_id'] ?: null; + $name_en = $_POST['name_en'] ?? ''; + $name_ar = $_POST['name_ar'] ?? ''; + $sku = $_POST['sku'] ?? ''; + $p_price = (float)($_POST['purchase_price'] ?? 0); + $s_price = (float)($_POST['sale_price'] ?? 0); + $qty = (float)($_POST['stock_quantity'] ?? 0); + $min_stock = (float)($_POST['min_stock_level'] ?? 0); + $expiry = $_POST['expiry_date'] ?: null; + + $stmt = db()->prepare("SELECT image_path FROM stock_items WHERE id = ?"); + $stmt->execute([$id]); + $image_path = $stmt->fetchColumn(); + + if (isset($_FILES['image']) && $_FILES['image']['error'] === UPLOAD_ERR_OK) { + // Delete old image + if ($image_path && file_exists($image_path)) { + unlink($image_path); + } + $ext = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION); + $filename = uniqid('item_') . '.' . $ext; + $target = 'uploads/items/' . $filename; + if (move_uploaded_file($_FILES['image']['tmp_name'], $target)) { + $image_path = $target; + } + } + + if ($name_en && $name_ar) { + $stmt = db()->prepare("UPDATE stock_items SET category_id = ?, unit_id = ?, supplier_id = ?, name_en = ?, name_ar = ?, sku = ?, purchase_price = ?, sale_price = ?, stock_quantity = ?, min_stock_level = ?, expiry_date = ?, image_path = ? WHERE id = ?"); + $stmt->execute([$cat_id, $unit_id, $supplier_id, $name_en, $name_ar, $sku, $p_price, $s_price, $qty, $min_stock, $expiry, $image_path, $id]); + $message = "Item updated successfully!"; + } + } } // Routing & Data Fetching $page = $_GET['page'] ?? 'dashboard'; $data = []; +// Global data for modals +$data['categories'] = db()->query("SELECT * FROM stock_categories ORDER BY name_en ASC")->fetchAll(); +$data['units'] = db()->query("SELECT * FROM stock_units ORDER BY name_en ASC")->fetchAll(); +$data['suppliers'] = db()->query("SELECT * FROM customers WHERE type = 'supplier' ORDER BY name ASC")->fetchAll(); + switch ($page) { + case 'suppliers': + $data['customers'] = db()->query("SELECT * FROM customers WHERE type = 'supplier' ORDER BY id DESC")->fetchAll(); + break; case 'customers': - $data['customers'] = db()->query("SELECT * FROM customers ORDER BY id DESC")->fetchAll(); + $data['customers'] = db()->query("SELECT * FROM customers WHERE type = 'customer' ORDER BY id DESC")->fetchAll(); break; case 'categories': - $data['categories'] = db()->query("SELECT * FROM stock_categories ORDER BY id DESC")->fetchAll(); + // Already fetched globally break; case 'units': - $data['units'] = db()->query("SELECT * FROM stock_units ORDER BY id DESC")->fetchAll(); + // Already fetched globally break; case 'items': $data['items'] = db()->query("SELECT i.*, c.name_en as cat_en, c.name_ar as cat_ar, u.short_name_en as unit_en, u.short_name_ar as unit_ar, s.name as supplier_name @@ -106,18 +153,12 @@ switch ($page) { LEFT JOIN stock_units u ON i.unit_id = u.id LEFT JOIN customers s ON i.supplier_id = s.id ORDER BY i.id DESC")->fetchAll(); - $data['categories'] = db()->query("SELECT * FROM stock_categories ORDER BY name_en ASC")->fetchAll(); - $data['units'] = db()->query("SELECT * FROM stock_units ORDER BY name_en ASC")->fetchAll(); - $data['suppliers'] = db()->query("SELECT * FROM customers ORDER BY name ASC")->fetchAll(); break; default: - $data['customers'] = db()->query("SELECT * FROM customers ORDER BY id DESC LIMIT 5")->fetchAll(); - $data['categories'] = db()->query("SELECT * FROM stock_categories ORDER BY name_en ASC")->fetchAll(); - $data['units'] = db()->query("SELECT * FROM stock_units ORDER BY name_en ASC")->fetchAll(); - $data['suppliers'] = db()->query("SELECT * FROM customers ORDER BY name ASC")->fetchAll(); + $data['customers'] = db()->query("SELECT * FROM customers WHERE type = 'customer' ORDER BY id DESC LIMIT 5")->fetchAll(); // Dashboard stats $data['stats'] = [ - 'total_customers' => db()->query("SELECT COUNT(*) FROM customers")->fetchColumn(), + 'total_customers' => db()->query("SELECT COUNT(*) FROM customers WHERE type = 'customer'")->fetchColumn(), 'total_items' => db()->query("SELECT COUNT(*) FROM stock_items")->fetchColumn(), ]; break; @@ -162,7 +203,7 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System'; - + Suppliers @@ -184,6 +225,7 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System'; $titles = [ 'dashboard' => ['en' => 'Dashboard', 'ar' => 'لوحة القيادة'], 'customers' => ['en' => 'Customers', 'ar' => 'العملاء'], + 'suppliers' => ['en' => 'Suppliers', 'ar' => 'الموردون'], 'categories' => ['en' => 'Stock Categories', 'ar' => 'فئات المخزون'], 'units' => ['en' => 'Stock Units', 'ar' => 'وحدات المخزون'], 'items' => ['en' => 'Stock Items', 'ar' => 'أصناف المخزون'], @@ -292,12 +334,12 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System'; - +
-
Customer Management
+
Management
@@ -440,13 +482,107 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
- +
+ + +