81 lines
2.6 KiB
SQL
81 lines
2.6 KiB
SQL
-- 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;
|