updaing items 3
This commit is contained in:
parent
9060a6d586
commit
f08a6b75bb
51
items.php
51
items.php
@ -202,8 +202,14 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) {
|
|||||||
if ($price === '') {
|
if ($price === '') {
|
||||||
try {
|
try {
|
||||||
if ($branch_id) {
|
if ($branch_id) {
|
||||||
|
// Delete branch-specific price
|
||||||
$stmt = db()->prepare("DELETE FROM prices WHERE item_id = ? AND service_id = ? AND branch_id = ?");
|
$stmt = db()->prepare("DELETE FROM prices WHERE item_id = ? AND service_id = ? AND branch_id = ?");
|
||||||
$stmt->execute([$item_id, $service_id, $branch_id]);
|
$stmt->execute([$item_id, $service_id, $branch_id]);
|
||||||
|
|
||||||
|
// Also try to delete global price if it's the one currently showing or if we want it completely gone
|
||||||
|
// Most users expect that clicking "Delete" removes the item/service association they see.
|
||||||
|
$stmtGlobal = db()->prepare("DELETE FROM prices WHERE item_id = ? AND service_id = ? AND branch_id IS NULL");
|
||||||
|
$stmtGlobal->execute([$item_id, $service_id]);
|
||||||
} else {
|
} else {
|
||||||
$stmt = db()->prepare("DELETE FROM prices WHERE item_id = ? AND service_id = ? AND branch_id IS NULL");
|
$stmt = db()->prepare("DELETE FROM prices WHERE item_id = ? AND service_id = ? AND branch_id IS NULL");
|
||||||
$stmt->execute([$item_id, $service_id]);
|
$stmt->execute([$item_id, $service_id]);
|
||||||
@ -231,16 +237,27 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) {
|
|||||||
$price = (float)$price;
|
$price = (float)$price;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
// Check if record exists manually to handle MySQL UNIQUE index with NULL behavior
|
||||||
if ($branch_id) {
|
if ($branch_id) {
|
||||||
$stmt = db()->prepare("INSERT INTO prices (item_id, service_id, price, branch_id)
|
$chk = db()->prepare("SELECT id FROM prices WHERE item_id = ? AND service_id = ? AND branch_id = ?");
|
||||||
VALUES (?, ?, ?, ?)
|
$chk->execute([$item_id, $service_id, $branch_id]);
|
||||||
ON DUPLICATE KEY UPDATE price = ?");
|
|
||||||
$stmt->execute([$item_id, $service_id, $price, $branch_id, $price]);
|
|
||||||
} else {
|
} else {
|
||||||
$stmt = db()->prepare("INSERT INTO prices (item_id, service_id, price)
|
$chk = db()->prepare("SELECT id FROM prices WHERE item_id = ? AND service_id = ? AND branch_id IS NULL");
|
||||||
VALUES (?, ?, ?)
|
$chk->execute([$item_id, $service_id]);
|
||||||
ON DUPLICATE KEY UPDATE price = ?");
|
}
|
||||||
$stmt->execute([$item_id, $service_id, $price, $price]);
|
$existing = $chk->fetch();
|
||||||
|
|
||||||
|
if ($existing) {
|
||||||
|
$stmt = db()->prepare("UPDATE prices SET price = ? WHERE id = ?");
|
||||||
|
$stmt->execute([$price, $existing['id']]);
|
||||||
|
} else {
|
||||||
|
if ($branch_id) {
|
||||||
|
$stmt = db()->prepare("INSERT INTO prices (item_id, service_id, price, branch_id) VALUES (?, ?, ?, ?)");
|
||||||
|
$stmt->execute([$item_id, $service_id, $price, $branch_id]);
|
||||||
|
} else {
|
||||||
|
$stmt = db()->prepare("INSERT INTO prices (item_id, service_id, price) VALUES (?, ?, ?)");
|
||||||
|
$stmt->execute([$item_id, $service_id, $price]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($isAjax) {
|
if ($isAjax) {
|
||||||
@ -301,12 +318,24 @@ $items = $stmt->fetchAll();
|
|||||||
|
|
||||||
$services = db()->query("SELECT * FROM services ORDER BY name_en ASC")->fetchAll();
|
$services = db()->query("SELECT * FROM services ORDER BY name_en ASC")->fetchAll();
|
||||||
|
|
||||||
$stmt = db()->prepare("SELECT * FROM prices ");
|
// Fetch prices based on current branch
|
||||||
$stmt->execute();
|
$current_branch_id = $_SESSION['branch_id'] ?? null;
|
||||||
|
if ($current_branch_id === 'all') $current_branch_id = null;
|
||||||
|
|
||||||
|
if ($current_branch_id) {
|
||||||
|
$stmt = db()->prepare("SELECT * FROM prices WHERE branch_id = ? OR branch_id IS NULL ORDER BY branch_id DESC"); // Branch-specific first
|
||||||
|
$stmt->execute([$current_branch_id]);
|
||||||
|
} else {
|
||||||
|
$stmt = db()->prepare("SELECT * FROM prices WHERE branch_id IS NULL");
|
||||||
|
$stmt->execute();
|
||||||
|
}
|
||||||
$prices_raw = $stmt->fetchAll();
|
$prices_raw = $stmt->fetchAll();
|
||||||
$prices = [];
|
$prices = [];
|
||||||
foreach ($prices_raw as $p) {
|
foreach ($prices_raw as $p) {
|
||||||
$prices[$p['item_id']][$p['service_id']] = $p['price'];
|
// If multiple prices exist (global + branch-specific), the branch-specific one wins due to ORDER BY branch_id DESC
|
||||||
|
if (!isset($prices[$p['item_id']][$p['service_id']])) {
|
||||||
|
$prices[$p['item_id']][$p['service_id']] = $p['price'];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderServiceList($lang) {
|
function renderServiceList($lang) {
|
||||||
|
|||||||
30
pos.php
30
pos.php
@ -9,7 +9,8 @@ if ($edit_order_id && !has_permission('edit')) {
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
$branch_id = $_SESSION['branch_id'] ?? 1;
|
$branch_id = $_SESSION['branch_id'] ?? null;
|
||||||
|
if ($branch_id === 'all') $branch_id = null;
|
||||||
|
|
||||||
// Loyalty Settings
|
// Loyalty Settings
|
||||||
$loyalty_enabled = get_setting('loyalty_enabled', '0');
|
$loyalty_enabled = get_setting('loyalty_enabled', '0');
|
||||||
@ -20,8 +21,13 @@ $loyalty_currency_per_point = get_setting('loyalty_currency_per_point', '0.05');
|
|||||||
$edit_order = null;
|
$edit_order = null;
|
||||||
$edit_items = [];
|
$edit_items = [];
|
||||||
if ($edit_order_id) {
|
if ($edit_order_id) {
|
||||||
$stmt = db()->prepare("SELECT * FROM orders WHERE id = ? AND branch_id = ?");
|
$stmt = db()->prepare("SELECT * FROM orders WHERE id = ?");
|
||||||
$stmt->execute([$edit_order_id, $branch_id]);
|
if ($branch_id) {
|
||||||
|
$stmt = db()->prepare("SELECT * FROM orders WHERE id = ? AND branch_id = ?");
|
||||||
|
$stmt->execute([$edit_order_id, $branch_id]);
|
||||||
|
} else {
|
||||||
|
$stmt->execute([$edit_order_id]);
|
||||||
|
}
|
||||||
$edit_order = $stmt->fetch();
|
$edit_order = $stmt->fetch();
|
||||||
|
|
||||||
if ($edit_order) {
|
if ($edit_order) {
|
||||||
@ -61,14 +67,22 @@ $items_raw = $stmt->fetchAll();
|
|||||||
// Get all services
|
// Get all services
|
||||||
$services_raw = db()->query("SELECT * FROM services ORDER BY name_en ASC")->fetchAll();
|
$services_raw = db()->query("SELECT * FROM services ORDER BY name_en ASC")->fetchAll();
|
||||||
|
|
||||||
// Get all prices
|
// Get prices for current branch or global
|
||||||
$stmt = db()->prepare("SELECT p.item_id, p.service_id, p.price FROM prices p");
|
if ($branch_id) {
|
||||||
$stmt->execute();
|
$stmt = db()->prepare("SELECT * FROM prices WHERE branch_id = ? OR branch_id IS NULL ORDER BY branch_id DESC");
|
||||||
|
$stmt->execute([$branch_id]);
|
||||||
|
} else {
|
||||||
|
$stmt = db()->prepare("SELECT * FROM prices WHERE branch_id IS NULL");
|
||||||
|
$stmt->execute();
|
||||||
|
}
|
||||||
$prices_raw = $stmt->fetchAll();
|
$prices_raw = $stmt->fetchAll();
|
||||||
|
|
||||||
$prices = [];
|
$prices = [];
|
||||||
foreach ($prices_raw as $p) {
|
foreach ($prices_raw as $p) {
|
||||||
$prices[$p['item_id']][$p['service_id']] = (float)$p['price'];
|
// Prefer branch-specific price
|
||||||
|
if (!isset($prices[$p['item_id']][$p['service_id']])) {
|
||||||
|
$prices[$p['item_id']][$p['service_id']] = (float)$p['price'];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$items = [];
|
$items = [];
|
||||||
@ -98,7 +112,7 @@ foreach ($items_raw as $i) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get all customers for this branch
|
// Get all customers
|
||||||
$stmt = db()->prepare("SELECT id, name_en, name_ar, phone, loyalty_points FROM customers ORDER BY name_en ASC");
|
$stmt = db()->prepare("SELECT id, name_en, name_ar, phone, loyalty_points FROM customers ORDER BY name_en ASC");
|
||||||
$stmt->execute();
|
$stmt->execute();
|
||||||
$customers = $stmt->fetchAll();
|
$customers = $stmt->fetchAll();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user