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 );