54 lines
1.7 KiB
SQL
54 lines
1.7 KiB
SQL
-- Expenses module tables
|
|
|
|
CREATE TABLE IF NOT EXISTS expense_categories (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(100) NOT NULL,
|
|
description TEXT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS expenses (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
date DATE NOT NULL,
|
|
category_id INT NOT NULL,
|
|
amount DECIMAL(15,2) NOT NULL,
|
|
reference VARCHAR(100),
|
|
description TEXT,
|
|
vendor VARCHAR(100),
|
|
payment_method ENUM('Cash', 'Bank Transfer', 'Credit Card', 'Check', 'Other') DEFAULT 'Cash',
|
|
receipt_file VARCHAR(255),
|
|
user_id INT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (category_id) REFERENCES expense_categories(id) ON DELETE RESTRICT
|
|
);
|
|
|
|
-- Seed default categories
|
|
INSERT INTO expense_categories (name, description) VALUES
|
|
('Office Supplies', 'Pens, paper, toner, etc.'),
|
|
('Travel', 'Flights, hotels, transport'),
|
|
('Meals & Entertainment', 'Client lunches, team events'),
|
|
('Utilities', 'Electricity, water, internet'),
|
|
('Rent', 'Office rent'),
|
|
('Salaries', 'Employee salaries'),
|
|
('Maintenance', 'Repairs and maintenance'),
|
|
('Advertising', 'Marketing and ads'),
|
|
('Software', 'Subscriptions and licenses'),
|
|
('Other', 'Miscellaneous expenses');
|
|
|
|
-- Add permissions
|
|
INSERT IGNORE INTO user_permissions (user_id, page, can_view, can_add, can_edit, can_delete)
|
|
SELECT id, 'expenses',
|
|
IF(role = 'admin', 1, 0),
|
|
IF(role = 'admin', 1, 0),
|
|
IF(role = 'admin', 1, 0),
|
|
IF(role = 'admin', 1, 0)
|
|
FROM users;
|
|
|
|
INSERT IGNORE INTO user_permissions (user_id, page, can_view, can_add, can_edit, can_delete)
|
|
SELECT id, 'expense_settings',
|
|
IF(role = 'admin', 1, 0),
|
|
IF(role = 'admin', 1, 0),
|
|
IF(role = 'admin', 1, 0),
|
|
IF(role = 'admin', 1, 0)
|
|
FROM users;
|