Autosave: 20260220-124258

This commit is contained in:
Flatlogic Bot 2026-02-20 12:42:58 +00:00
parent deddf67d73
commit e9db807320
10 changed files with 849 additions and 114 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

14
check_schema.php Normal file
View File

@ -0,0 +1,14 @@
<?php
require 'db/config.php';
$tables = ['invoices', 'invoice_items', 'pos_transactions', 'pos_items', 'payments', 'pos_payments'];
foreach ($tables as $t) {
echo "Table: $t\n";
try {
$res = db()->query("DESCRIBE $t");
while ($r = $res->fetch(PDO::FETCH_ASSOC)) {
echo " {$r['Field']} ({$r['Type']})\n";
}
} catch (Exception $e) {
echo " Error: " . $e->getMessage() . "\n";
}
}

View File

@ -0,0 +1,23 @@
<?php
require 'db/config.php';
$db = db();
$queries = [
"ALTER TABLE invoices ADD COLUMN IF NOT EXISTS transaction_no VARCHAR(50) DEFAULT NULL AFTER id",
"ALTER TABLE invoices ADD COLUMN IF NOT EXISTS is_pos TINYINT(1) DEFAULT 0",
"ALTER TABLE invoices ADD COLUMN IF NOT EXISTS discount_amount DECIMAL(15,3) DEFAULT 0",
"ALTER TABLE invoices ADD COLUMN IF NOT EXISTS loyalty_points_earned DECIMAL(15,3) DEFAULT 0",
"ALTER TABLE invoices ADD COLUMN IF NOT EXISTS loyalty_points_redeemed DECIMAL(15,3) DEFAULT 0",
"ALTER TABLE invoices ADD COLUMN IF NOT EXISTS created_by INT(11) DEFAULT NULL",
"ALTER TABLE payments ADD COLUMN IF NOT EXISTS transaction_id INT(11) DEFAULT NULL", // To keep link if needed
"ALTER TABLE invoices MODIFY COLUMN status ENUM('paid','unpaid','partially_paid','refunded','cancelled') DEFAULT 'unpaid'"
];
foreach ($queries as $q) {
try {
$db->exec($q);
echo "Executed: $q\n";
} catch (Exception $e) {
echo "Error executing $q: " . $e->getMessage() . "\n";
}
}

View File

@ -0,0 +1,13 @@
-- Unify POS and Sales Invoices
-- Date: 2026-02-20
ALTER TABLE invoices ADD COLUMN IF NOT EXISTS transaction_no VARCHAR(50) DEFAULT NULL AFTER id;
ALTER TABLE invoices ADD COLUMN IF NOT EXISTS is_pos TINYINT(1) DEFAULT 0;
ALTER TABLE invoices ADD COLUMN IF NOT EXISTS discount_amount DECIMAL(15,3) DEFAULT 0;
ALTER TABLE invoices ADD COLUMN IF NOT EXISTS loyalty_points_earned DECIMAL(15,3) DEFAULT 0;
ALTER TABLE invoices ADD COLUMN IF NOT EXISTS loyalty_points_redeemed DECIMAL(15,3) DEFAULT 0;
ALTER TABLE invoices ADD COLUMN IF NOT EXISTS created_by INT(11) DEFAULT NULL;
ALTER TABLE payments ADD COLUMN IF NOT EXISTS transaction_id INT(11) DEFAULT NULL;
ALTER TABLE invoices MODIFY COLUMN status ENUM('paid','unpaid','partially_paid','refunded','cancelled') DEFAULT 'unpaid';

View File

@ -0,0 +1,2 @@
ALTER TABLE lpos DROP FOREIGN KEY lpos_ibfk_1;
ALTER TABLE lpos ADD CONSTRAINT lpos_ibfk_1 FOREIGN KEY (supplier_id) REFERENCES suppliers(id);

13
describe_tables.php Normal file
View File

@ -0,0 +1,13 @@
<?php
require 'db/config.php';
foreach(['pos_transactions', 'invoices', 'pos_items', 'invoice_items'] as $t) {
echo "Table: $t\n";
try {
$res = db()->query("DESCRIBE $t");
while($r = $res->fetch(PDO::FETCH_ASSOC)) {
echo " {$r['Field']} ({$r['Type']})\n";
}
} catch (Exception $e) {
echo " Error: " . $e->getMessage() . "\n";
}
}

View File

@ -14,6 +14,7 @@ $translations = [
'sales_returns' => 'Sales Returns',
'purchases' => 'Purchases',
'purchase_returns' => 'Purchase Returns',
'lpos' => 'Local Purchase Orders (LPO)',
'quotations' => 'Quotations',
'expenses' => 'Expenses',
'expense_categories' => 'Expense Categories',
@ -107,6 +108,7 @@ $translations = [
'sales_returns' => 'مرتجعات المبيعات',
'purchases' => 'المشتريات',
'purchase_returns' => 'مرتجعات المشتريات',
'lpos' => 'أوامر الشراء المحلية (LPO)',
'quotations' => 'عروض الأسعار',
'expenses' => 'المصاريف',
'expense_categories' => 'فئات المصاريف',

854
index.php

File diff suppressed because it is too large Load Diff

View File

@ -133,3 +133,35 @@
2026-02-20 07:30:15 - POST: {"type":"purchase","customer_id":"7","invoice_date":"2026-02-20","due_date":"","payment_type":"cash","status":"paid","paid_amount":"0.000","item_ids":["1"],"quantities":["150"],"prices":["0.400"],"add_invoice":""}
2026-02-20 09:27:36 - POST: {"invoice_id":"7","return_date":"2026-02-20","quantities":["5"],"item_ids":["1"],"prices":["0.400"],"notes":"","add_purchase_return":""}
2026-02-20 09:28:59 - POST: {"invoice_id":"7","return_date":"2026-02-20","quantities":["3"],"item_ids":["1"],"prices":["0.400"],"notes":"","add_purchase_return":""}
2026-02-20 09:31:35 - POST: {"invoice_id":"31","return_date":"2026-02-20","quantities":["1"],"item_ids":["1"],"prices":["0.450"],"notes":"","add_sales_return":""}
2026-02-20 09:50:43 - POST: {"supplier_id":"7","lpo_date":"2026-02-20","delivery_date":"2026-02-22","terms_conditions":"","add_lpo":""}
2026-02-20 09:50:46 - POST: {"supplier_id":"7","lpo_date":"2026-02-20","delivery_date":"2026-02-22","terms_conditions":"","add_lpo":""}
2026-02-20 09:53:21 - POST: {"supplier_id":"7","lpo_date":"2026-02-20","delivery_date":"2026-02-22","terms_conditions":"","add_lpo":""}
2026-02-20 10:00:29 - POST: {"supplier_id":"7","lpo_date":"2026-02-20","delivery_date":"2026-02-22","terms_conditions":"","add_lpo":""}
2026-02-20 10:00:33 - POST: {"delete_lpo":"","id":"1"}
2026-02-20 10:10:17 - POST: {"lpo_id":"4","supplier_id":"6","lpo_date":"2026-02-20","delivery_date":"2026-02-22","status":"pending","terms_conditions":"","item_ids":["1"],"quantities":["100"],"prices":["0.400"],"edit_lpo":""}
2026-02-20 10:21:07 - POST: {"action":"save_pos_transaction","customer_id":"","payments":"[{\"method\":\"cash\",\"amount\":0.95}]","total_amount":"0.95","tax_amount":"0.011904761904761904","discount_code_id":"","discount_amount":"0","loyalty_redeemed":"0","items":"[{\"id\":1,\"qty\":1,\"price\":0.45,\"vat_rate\":0,\"vat_amount\":0},{\"id\":3,\"qty\":1,\"price\":0.25,\"vat_rate\":0,\"vat_amount\":0},{\"id\":2,\"qty\":1,\"price\":0.25,\"vat_rate\":5,\"vat_amount\":0.011904761904761904}]"}
2026-02-20 10:22:29 - POST: {"lpo_id":"4","supplier_id":"6","lpo_date":"2026-02-20","delivery_date":"2026-02-22","status":"pending","terms_conditions":"","item_ids":["1"],"quantities":["10"],"prices":["0.400"],"edit_lpo":""}
2026-02-20 11:13:39 - POST: {"lpo_id":"4","supplier_id":"6","lpo_date":"2026-02-20","delivery_date":"2026-02-22","status":"pending","terms_conditions":"","item_ids":["1"],"quantities":["10"],"prices":["0.400"],"edit_lpo":""}
2026-02-20 11:14:12 - POST: {"action":"save_pos_transaction","customer_id":"","payments":"[{\"method\":\"cash\",\"amount\":0.95}]","total_amount":"0.95","tax_amount":"0.011904761904761904","discount_code_id":"","discount_amount":"0","loyalty_redeemed":"0","items":"[{\"id\":1,\"qty\":1,\"price\":0.45,\"vat_rate\":0,\"vat_amount\":0},{\"id\":3,\"qty\":1,\"price\":0.25,\"vat_rate\":0,\"vat_amount\":0},{\"id\":2,\"qty\":1,\"price\":0.25,\"vat_rate\":5,\"vat_amount\":0.011904761904761904}]"}
2026-02-20 11:15:52 - POST: {"action":"save_pos_transaction","customer_id":"","payments":"[{\"method\":\"cash\",\"amount\":6.3}]","total_amount":"6.3","tax_amount":"0","discount_code_id":"","discount_amount":"0","loyalty_redeemed":"0","items":"[{\"id\":1,\"qty\":14,\"price\":0.45,\"vat_rate\":0,\"vat_amount\":0}]"}
2026-02-20 11:21:57 - POST: {"supplier_id":"7","lpo_date":"2026-02-20","delivery_date":"","terms_conditions":"","item_ids":["1"],"quantities":["112"],"prices":["0.400"],"add_lpo":""}
2026-02-20 11:22:28 - POST: {"delete_lpo":"","id":"2"}
2026-02-20 11:22:40 - POST: {"delete_lpo":"","id":"3"}
2026-02-20 11:22:48 - POST: {"delete_lpo":"","id":"4"}
2026-02-20 11:27:45 - POST: {"supplier_id":"6","lpo_date":"2026-02-20","delivery_date":"","terms_conditions":"","item_ids":["2"],"quantities":["100"],"prices":["0.150"],"add_lpo":""}
2026-02-20 11:28:37 - POST: {"supplier_id":"5","lpo_date":"2026-02-20","delivery_date":"","terms_conditions":"","item_ids":["2"],"quantities":["100"],"prices":["0.150"],"add_lpo":""}
2026-02-20 11:32:03 - POST: {"supplier_id":"5","lpo_date":"2026-02-20","delivery_date":"","terms_conditions":"","item_ids":["2"],"quantities":["100"],"prices":["0.150"],"add_lpo":""}
2026-02-20 11:32:32 - POST: {"supplier_id":"5","lpo_date":"2026-02-20","delivery_date":"","terms_conditions":"","item_ids":["2"],"quantities":["100"],"prices":["0.150"],"add_lpo":""}
2026-02-20 11:33:08 - POST: {"supplier_id":"5","lpo_date":"2026-02-20","delivery_date":"","terms_conditions":"","item_ids":["2"],"quantities":["100"],"prices":["0.150"],"add_lpo":""}
2026-02-20 11:34:18 - POST: {"supplier_id":"5","lpo_date":"2026-02-20","delivery_date":"","terms_conditions":"","item_ids":["2"],"quantities":["100"],"prices":["0.150"],"add_lpo":""}
2026-02-20 11:34:41 - POST: {"supplier_id":"6","lpo_date":"2026-02-20","delivery_date":"","terms_conditions":"","item_ids":["2"],"quantities":["1"],"prices":["0.150"],"add_lpo":""}
2026-02-20 11:37:33 - POST: {"supplier_id":"6","lpo_date":"2026-02-20","delivery_date":"","terms_conditions":"","item_ids":["2"],"quantities":["1"],"prices":["0.150"],"add_lpo":""}
2026-02-20 11:39:11 - POST: {"supplier_id":"6","lpo_date":"2026-02-20","delivery_date":"","terms_conditions":"","item_ids":["2"],"quantities":["1"],"prices":["0.150"],"add_lpo":""}
2026-02-20 11:45:55 - POST: {"supplier_id":"6","lpo_date":"2026-02-20","delivery_date":"","terms_conditions":"","item_ids":["2"],"quantities":["1"],"prices":["0.150"],"add_lpo":""}
2026-02-20 11:46:07 - POST: {"supplier_id":"6","lpo_date":"2026-02-20","delivery_date":"","terms_conditions":"","item_ids":["2"],"quantities":["1"],"prices":["0.150"],"add_lpo":""}
2026-02-20 11:49:24 - POST: {"supplier_id":"6","lpo_date":"2026-02-20","delivery_date":"","terms_conditions":"","item_ids":["2"],"quantities":["1"],"prices":["0.150"],"add_lpo":""}
2026-02-20 12:39:16 - POST: {"supplier_id":"6","lpo_date":"2026-02-20","delivery_date":"","terms_conditions":"","item_ids":["2"],"quantities":["1"],"prices":["0.150"],"add_lpo":""}
2026-02-20 12:39:30 - POST: {"supplier_id":"6","lpo_date":"2026-02-20","delivery_date":"","terms_conditions":"","item_ids":["2"],"quantities":["1"],"prices":["0.150"],"add_lpo":""}
2026-02-20 12:40:43 - POST: {"supplier_id":"7","lpo_date":"2026-02-20","delivery_date":"","terms_conditions":"","item_ids":["2"],"quantities":["1"],"prices":["0.150"],"add_lpo":""}
2026-02-20 12:40:54 - POST: {"supplier_id":"7","lpo_date":"2026-02-20","delivery_date":"","terms_conditions":"","item_ids":["2"],"quantities":["1"],"prices":["0.150"],"add_lpo":""}

View File

@ -2,3 +2,13 @@
2026-02-19 14:55:24 - search_items call: q=to
2026-02-20 07:29:03 - search_items call: q=to
2026-02-20 07:30:08 - search_items call: q=to
2026-02-20 10:08:31 - search_items call: q=a
2026-02-20 10:09:42 - search_items call: q=to
2026-02-20 10:22:22 - search_items call: q=to
2026-02-20 11:21:36 - search_items call: q=to
2026-02-20 11:27:38 - search_items call: q=on
2026-02-20 11:28:26 - search_items call: q=ob
2026-02-20 11:28:28 - search_items call: q=oni
2026-02-20 11:34:38 - search_items call: q=on
2026-02-20 12:40:40 - search_items call: q=on
2026-02-20 12:40:40 - search_items call: q=oni