93 lines
3.4 KiB
SQL
93 lines
3.4 KiB
SQL
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; |