117 lines
3.5 KiB
SQL
117 lines
3.5 KiB
SQL
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
|
|
);
|
|
|
|
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
|
|
);
|
|
|
|
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)
|
|
);
|
|
|
|
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)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS areas (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
outlet_id INT,
|
|
name VARCHAR(255) NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (outlet_id) REFERENCES outlets(id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS tables (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
area_id INT,
|
|
name VARCHAR(50) NOT NULL,
|
|
capacity INT DEFAULT 4,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
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', '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,
|
|
FOREIGN KEY (outlet_id) REFERENCES outlets(id),
|
|
FOREIGN KEY (table_id) REFERENCES tables(id)
|
|
);
|
|
|
|
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)
|
|
);
|
|
|
|
-- Loyalty
|
|
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
|
|
);
|