From a70af4ac2a87dd7df7949e75f690e1b9bec500f4 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Fri, 27 Feb 2026 03:59:05 +0000 Subject: [PATCH] fix 10 --- db/migrations/040_vat_system.sql | 22 +++++++++++++++++++ db/schema.sql | 37 ++++++++++++++++++++++++++++++-- 2 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 db/migrations/040_vat_system.sql diff --git a/db/migrations/040_vat_system.sql b/db/migrations/040_vat_system.sql new file mode 100644 index 0000000..94165ba --- /dev/null +++ b/db/migrations/040_vat_system.sql @@ -0,0 +1,22 @@ +-- VAT system migration +-- Add vat column to orders +ALTER TABLE orders ADD COLUMN vat DECIMAL(10, 3) DEFAULT 0.000 AFTER discount; + +-- Update order_type ENUM to include takeaway +ALTER TABLE orders MODIFY COLUMN order_type ENUM('dine-in', 'delivery', 'drive-thru', 'takeaway') DEFAULT 'takeaway'; + +-- Add vat_percent to products +ALTER TABLE products ADD COLUMN vat_percent DECIMAL(5, 2) DEFAULT 0.00 AFTER price; + +-- Add stock_quantity and promo fields to products +ALTER TABLE products ADD COLUMN stock_quantity INT DEFAULT 0; +ALTER TABLE products ADD COLUMN promo_discount_percent DECIMAL(5, 2) DEFAULT 0.00; +ALTER TABLE products ADD COLUMN promo_date_from DATE DEFAULT NULL; +ALTER TABLE products ADD COLUMN promo_date_to DATE DEFAULT NULL; + +-- Add vat fields to order_items +ALTER TABLE order_items ADD COLUMN vat_percent DECIMAL(5, 2) DEFAULT 0.00 AFTER unit_price; +ALTER TABLE order_items ADD COLUMN vat_amount DECIMAL(10, 3) DEFAULT 0.000 AFTER vat_percent; + +-- Add vat_number to company_settings +ALTER TABLE company_settings ADD COLUMN vat_number VARCHAR(50) DEFAULT NULL; \ No newline at end of file diff --git a/db/schema.sql b/db/schema.sql index 39ad5e2..427a5e8 100644 --- a/db/schema.sql +++ b/db/schema.sql @@ -1,6 +1,7 @@ CREATE TABLE IF NOT EXISTS outlets ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, + name_ar VARCHAR(255), address TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); @@ -8,6 +9,8 @@ CREATE TABLE IF NOT EXISTS outlets ( CREATE TABLE IF NOT EXISTS categories ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, + name_ar VARCHAR(255), + image_url VARCHAR(255), sort_order INT DEFAULT 0 ); @@ -15,10 +18,18 @@ CREATE TABLE IF NOT EXISTS products ( id INT AUTO_INCREMENT PRIMARY KEY, category_id INT, name VARCHAR(255) NOT NULL, + name_ar VARCHAR(255), description TEXT, price DECIMAL(10, 2) NOT NULL, + cost_price DECIMAL(10, 2) DEFAULT 0.00, + vat_percent DECIMAL(5, 2) DEFAULT 0.00, + stock_quantity INT DEFAULT 0, + promo_discount_percent DECIMAL(5, 2) DEFAULT 0.00, + promo_date_from DATE DEFAULT NULL, + promo_date_to DATE DEFAULT NULL, image_url VARCHAR(255), is_loyalty TINYINT(1) DEFAULT 0, + is_deleted TINYINT(1) DEFAULT 0, FOREIGN KEY (category_id) REFERENCES categories(id) ); @@ -26,7 +37,9 @@ CREATE TABLE IF NOT EXISTS product_variants ( id INT AUTO_INCREMENT PRIMARY KEY, product_id INT, name VARCHAR(255) NOT NULL, + name_ar VARCHAR(255), price_adjustment DECIMAL(10, 2) DEFAULT 0.00, + is_deleted TINYINT(1) DEFAULT 0, FOREIGN KEY (product_id) REFERENCES products(id) ); @@ -47,14 +60,27 @@ CREATE TABLE IF NOT EXISTS tables ( FOREIGN KEY (area_id) REFERENCES areas(id) ); +CREATE TABLE IF NOT EXISTS payment_types ( + id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(255) NOT NULL, + name_ar VARCHAR(255), + is_active TINYINT(1) DEFAULT 1 +); + CREATE TABLE IF NOT EXISTS orders ( id INT AUTO_INCREMENT PRIMARY KEY, outlet_id INT, + user_id INT, + customer_id INT, + payment_type_id INT, table_id INT, table_number VARCHAR(50), - order_type ENUM('dine-in', 'delivery', 'drive-thru') DEFAULT 'dine-in', + order_type ENUM('dine-in', 'delivery', 'drive-thru', 'takeaway') DEFAULT 'takeaway', status ENUM('pending', 'preparing', 'ready', 'completed', 'cancelled') DEFAULT 'pending', total_amount DECIMAL(10, 2) NOT NULL, + discount DECIMAL(10, 2) DEFAULT 0.00, + vat DECIMAL(10, 3) DEFAULT 0.000, + commission_amount DECIMAL(10, 2) DEFAULT 0.00, customer_name VARCHAR(255), customer_phone VARCHAR(50), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, @@ -66,9 +92,13 @@ CREATE TABLE IF NOT EXISTS order_items ( id INT AUTO_INCREMENT PRIMARY KEY, order_id INT, product_id INT, + product_name VARCHAR(255), variant_id INT, + variant_name VARCHAR(255), quantity INT NOT NULL, unit_price DECIMAL(10, 2) NOT NULL, + vat_percent DECIMAL(5, 2) DEFAULT 0.00, + vat_amount DECIMAL(10, 3) DEFAULT 0.000, FOREIGN KEY (order_id) REFERENCES orders(id), FOREIGN KEY (product_id) REFERENCES products(id) ); @@ -77,7 +107,10 @@ CREATE TABLE IF NOT EXISTS order_items ( CREATE TABLE IF NOT EXISTS loyalty_customers ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), + phone VARCHAR(50), email VARCHAR(255) UNIQUE, points INT DEFAULT 0, + total_redemptions INT DEFAULT 0, + address TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -); \ No newline at end of file +);