CREATE TABLE IF NOT EXISTS `products` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `sku` VARCHAR(100), `barcode` VARCHAR(100), `brand` VARCHAR(100), `category` VARCHAR(100), `unit` VARCHAR(50), `purchase_price` DECIMAL(10, 2) NOT NULL, `sale_price` DECIMAL(10, 2) NOT NULL, `tax_percentage` DECIMAL(5, 2) DEFAULT 0.00, `stock_quantity` INT NOT NULL DEFAULT 0, `alert_quantity` INT DEFAULT 0, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS `customers` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `email` VARCHAR(255), `phone` VARCHAR(50), `address` TEXT, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS `sales` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `customer_id` INT, `total_amount` DECIMAL(10, 2) NOT NULL, `discount` DECIMAL(10, 2) DEFAULT 0.00, `tax_amount` DECIMAL(10, 2) DEFAULT 0.00, `payable_amount` DECIMAL(10, 2) NOT NULL, `payment_method` VARCHAR(50) DEFAULT 'cash', `sale_date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (`customer_id`) REFERENCES `customers`(`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS `sale_items` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `sale_id` INT NOT NULL, `product_id` INT NOT NULL, `quantity` INT NOT NULL, `price_per_unit` DECIMAL(10, 2) NOT NULL, `total_price` DECIMAL(10, 2) NOT NULL, FOREIGN KEY (`sale_id`) REFERENCES `sales`(`id`) ON DELETE CASCADE, FOREIGN KEY (`product_id`) REFERENCES `products`(`id`) ON DELETE RESTRICT ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS `expenses` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `description` TEXT NOT NULL, `amount` DECIMAL(10, 2) NOT NULL, `expense_date` DATE, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS `users` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `email` VARCHAR(255) NOT NULL UNIQUE, `password` VARCHAR(255) NOT NULL, `role` ENUM('admin', 'cashier', 'manager') DEFAULT 'cashier', `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS `suppliers` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `contact_person` VARCHAR(255), `phone` VARCHAR(50), `email` VARCHAR(255), `address` TEXT, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS `purchases` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `supplier_id` INT, `total_amount` DECIMAL(10, 2) NOT NULL, `purchase_date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (`supplier_id`) REFERENCES `suppliers`(`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS `purchase_items` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `purchase_id` INT NOT NULL, `product_id` INT NOT NULL, `quantity` INT NOT NULL, `price_per_unit` DECIMAL(10, 2) NOT NULL, `total_price` DECIMAL(10, 2) NOT NULL, FOREIGN KEY (`purchase_id`) REFERENCES `purchases`(`id`) ON DELETE CASCADE, FOREIGN KEY (`product_id`) REFERENCES `products`(`id`) ON DELETE RESTRICT ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;