From ab23c4540e779ee3993e8324c6a0a435a184e820 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Mon, 2 Mar 2026 10:39:33 +0000 Subject: [PATCH] adding services --- .../items/item_69a567f77a8364.03372918.jpeg | Bin 0 -> 4281 bytes items.php | 211 +++--------------- order_details.php | 87 ++++---- pos.php | 75 ++----- 4 files changed, 90 insertions(+), 283 deletions(-) create mode 100644 assets/images/items/item_69a567f77a8364.03372918.jpeg diff --git a/assets/images/items/item_69a567f77a8364.03372918.jpeg b/assets/images/items/item_69a567f77a8364.03372918.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..1c937c04cbbd4000820ef4b9ec74588e7d42b9ea GIT binary patch literal 4281 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 VegaIC{|vJKTRs0L1S3vn{sqprepare("INSERT INTO prices (branch_id, item_id, variant_id, service_id, price) - VALUES (?, ?, ?, ?, ?) + $stmt = db()->prepare("INSERT INTO prices (branch_id, item_id, service_id, price) + VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE price = ?"); - $stmt->execute([$branch_id, $item_id, $variant_id, $service_id, $price, $price]); + $stmt->execute([$branch_id, $item_id, $service_id, $price, $price]); if (isset($_POST['ajax'])) { header('Content-Type: application/json'); @@ -178,35 +177,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) { header('Location: items.php?success=price_updated'); exit; - } elseif ($_POST['action'] === 'add_variant') { - $item_id = $_POST['item_id']; - $name_en = $_POST['variant_name_en']; - $name_ar = $_POST['variant_name_ar']; - $stmt = db()->prepare("INSERT INTO item_variants (item_id, name_en, name_ar) VALUES (?, ?, ?)"); - $stmt->execute([$item_id, $name_en, $name_ar]); - header('Location: items.php?success=variant_added'); - exit; - } elseif ($_POST['action'] === 'edit_variant') { - $id = $_POST['id']; - $name_en = $_POST['name_en']; - $name_ar = $_POST['name_ar']; - $stmt = db()->prepare("UPDATE item_variants SET name_en = ?, name_ar = ? WHERE id = ?"); - $stmt->execute([$name_en, $name_ar, $id]); - - if (isset($_POST['ajax'])) { - header('Content-Type: application/json'); - echo json_encode(['success' => true]); - exit; - } - - header('Location: items.php?success=variant_updated'); - exit; - } elseif ($_POST['action'] === 'delete_variant') { - $id = $_POST['id']; - $stmt = db()->prepare("DELETE FROM item_variants WHERE id = ?"); - $stmt->execute([$id]); - header('Location: items.php?success=variant_deleted'); - exit; } } @@ -226,14 +196,7 @@ $stmt->execute([$branch_id]); $prices_raw = $stmt->fetchAll(); $prices = []; foreach ($prices_raw as $p) { - $v_key = $p['variant_id'] ?: 'default'; - $prices[$p['item_id']][$v_key][$p['service_id']] = $p['price']; -} - -$item_variants = db()->query("SELECT * FROM item_variants ORDER BY name_en ASC")->fetchAll(); -$variants_by_item = []; -foreach ($item_variants as $v) { - $variants_by_item[$v['item_id']][] = $v; + $prices[$p['item_id']][$p['service_id']] = $p['price']; } ?> @@ -268,7 +231,7 @@ foreach ($item_variants as $v) { - + @@ -302,7 +265,7 @@ foreach ($item_variants as $v) { % @@ -324,10 +287,10 @@ foreach ($item_variants as $v) {
-
How to use Variants & Services?
+
How to manage Services?

- Services: General actions like "Wash Only", "Urgent Wash", "Iron Only". Add them once and set prices for each item.
- Variants: Specific garment types or materials like "Silk Dress", "Wool Suit", or "Large Carpet". Use them if an item has different versions with unique pricing. + Services: Actions like "Wash Only", "Urgent Wash", "Iron Only". Add them using the Services button at the top, then set prices for each item in the table above.
+ Simplified: We removed "Variants" to make it easier. Now you just define your services and set their prices for each item.

@@ -535,64 +498,35 @@ foreach ($item_variants as $v) {