From 3694996f67a6cca6ed303a5665dda534da5c3c0f Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Tue, 5 May 2026 04:54:23 +0000 Subject: [PATCH] update vat issue --- assets/pasted-20260505-042538-9c56fd70.png | Bin 0 -> 6672 bytes eid_orders.php | 15 ++++- includes/app.php | 19 +++++-- includes/footer_settings.php | 61 ++++++++++++++------- includes/sale_form.php | 8 +-- 5 files changed, 70 insertions(+), 33 deletions(-) create mode 100644 assets/pasted-20260505-042538-9c56fd70.png diff --git a/assets/pasted-20260505-042538-9c56fd70.png b/assets/pasted-20260505-042538-9c56fd70.png new file mode 100644 index 0000000000000000000000000000000000000000..7cf65e5811dfc584e282df7de181798b4553185a GIT binary patch literal 6672 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 - -
-
# ·
+ +
#
+
+ 0): ?> + : + + + +
inTransaction()) { + ensure_sales_table(); + } $seedStmt = $pdo->query("SELECT COALESCE(MAX(eid_serial_no), 0) + 1 FROM sales_orders WHERE order_type = 'eid'"); $seed = max(1, (int) $seedStmt->fetchColumn()); @@ -1918,7 +1920,9 @@ function reset_eid_serial_next(PDO $pdo, int $nextNumber = 1): void function next_eid_serial_no(PDO $pdo): int { - ensure_sales_table(); + if (!$pdo->inTransaction()) { + ensure_sales_table(); + } $settingKey = eid_serial_setting_key(); $seedValue = current_eid_serial_next($pdo); @@ -1952,7 +1956,10 @@ function create_sale(array $data): int ensure_sales_table(); $pdo = db(); - $pdo->beginTransaction(); + $ownsTransaction = !$pdo->inTransaction(); + if ($ownsTransaction) { + $pdo->beginTransaction(); + } try { $receiptNo = isset($data['receipt_no']) && trim((string) $data['receipt_no']) !== '' ? trim((string) $data['receipt_no']) @@ -2010,10 +2017,12 @@ function create_sale(array $data): int $saleId = (int) $pdo->lastInsertId(); sync_order_stock_reservation([], 'completed', $data['items'] ?? [], (string) ($data['status'] ?? 'completed')); - $pdo->commit(); + if ($ownsTransaction && $pdo->inTransaction()) { + $pdo->commit(); + } return $saleId; } catch (Throwable $e) { - if ($pdo->inTransaction()) { + if ($ownsTransaction && $pdo->inTransaction()) { $pdo->rollBack(); } throw $e; diff --git a/includes/footer_settings.php b/includes/footer_settings.php index e7f8b73..a1fcd5b 100644 --- a/includes/footer_settings.php +++ b/includes/footer_settings.php @@ -129,28 +129,29 @@
-
-
-

+
+
+
+
+

+
-
-
-
-
+
+
+
+
-
@@ -355,9 +356,18 @@ margin-top: -0.125rem; } + #settingsModal .settings-eid-header-row { + flex-wrap: nowrap; + } + #settingsModal .settings-eid-reset-box { - padding-top: 0.875rem; - padding-bottom: 0.875rem; + flex: 0 0 auto; + min-width: 290px; + align-self: flex-start; + } + + #settingsModal .settings-eid-inline-controls { + justify-content: space-between; } #settingsModal .settings-inline-save { @@ -380,6 +390,15 @@ width: 100%; justify-content: flex-end; } + + #settingsModal .settings-eid-header-row { + flex-wrap: wrap; + } + + #settingsModal .settings-eid-reset-box { + width: 100%; + min-width: 0; + } } #wablasSettingsModal { diff --git a/includes/sale_form.php b/includes/sale_form.php index 333df6b..d022d01 100644 --- a/includes/sale_form.php +++ b/includes/sale_form.php @@ -15,6 +15,7 @@ $savePrintLabel = $savePrintLabel ?? tr('حفظ مع الطباعة', 'Save with $error = ''; $paymentAmountInput = (string) ($_POST['payment_amount'] ?? ''); $catalog = catalog(); +$globalVatPercent = max(0, (float) get_setting('vat_percentage', 5)); $allowedBranches = get_user_branches($user); $deliveryOptions = eid_delivery_status_options(); $selectedDeliveryStatus = trim((string) ($_POST['delivery_status'] ?? ($isEidOrder ? 'pending' : ''))); @@ -110,8 +111,7 @@ $itemNote = trim((string) ($item['item_note'] ?? '')); : (float) $product['price']; $lineTotal = $price * $qty; - $vatPercent = (float) ($product['vat'] ?? 0); - // Assuming price is inclusive of VAT: + $vatPercent = $globalVatPercent; $itemVat = $lineTotal * ($vatPercent / 100); $totalVat += $itemVat; @@ -547,7 +547,7 @@ require __DIR__ . '/header.php'; 0.000
- + 0.000
@@ -879,7 +879,7 @@ function renderInvoice() { const item = invoiceItems[sku]; const lineTotal = item.qty * item.price; - const vatPercent = parseFloat(catalogData[sku].vat) || 0; + const vatPercent = ; const itemVat = lineTotal * (vatPercent / 100); totalVat += itemVat;