-- Initial schema for CheersPOS System CREATE TABLE IF NOT EXISTS `roles` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL UNIQUE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- Insert default roles INSERT IGNORE INTO `roles` (`name`) VALUES ('Admin'), ('Manager'), ('Inventory Manager'), ('Cashier'), ('HR Manager'), ('Customer Manager'); CREATE TABLE IF NOT EXISTS `users` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `username` VARCHAR(255) NOT NULL UNIQUE, `password` VARCHAR(255) NOT NULL, `email` VARCHAR(255) NOT NULL UNIQUE, `role_id` INT, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (`role_id`) REFERENCES `roles`(`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS `products` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `description` TEXT, `price` DECIMAL(10, 2) NOT NULL, `cost` DECIMAL(10, 2) NOT NULL DEFAULT 0.00, `quantity` INT NOT NULL 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, `first_name` VARCHAR(255) NOT NULL, `last_name` VARCHAR(255) NOT NULL, `email` VARCHAR(255) NOT NULL UNIQUE, `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, `subtotal` DECIMAL(10, 2) NOT NULL, `tax_total` DECIMAL(10, 2) NOT NULL DEFAULT 0.00, `total_amount` DECIMAL(10, 2) NOT NULL, `sale_date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (`customer_id`) REFERENCES `customers`(`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS `sale_items` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `sale_id` INT, `product_id` INT, `quantity` INT NOT NULL, `price` DECIMAL(10, 2) NOT NULL, FOREIGN KEY (`sale_id`) REFERENCES `sales`(`id`) ON DELETE CASCADE, FOREIGN KEY (`product_id`) REFERENCES `products`(`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS `taxes` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL UNIQUE, `rate` DECIMAL(5, 2) NOT NULL COMMENT 'Percentage' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS `sale_taxes` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `sale_id` INT, `tax_id` INT, `tax_amount` DECIMAL(10, 2) NOT NULL, FOREIGN KEY (`sale_id`) REFERENCES `sales`(`id`) ON DELETE CASCADE, FOREIGN KEY (`tax_id`) REFERENCES `taxes`(`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;