83 lines
2.9 KiB
SQL
83 lines
2.9 KiB
SQL
|
|
CREATE TABLE IF NOT EXISTS `roles` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`name` VARCHAR(255) NOT NULL UNIQUE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
INSERT INTO `roles` (name) VALUES ('Administrador'), ('Gestor'), ('Funcionário');
|
|
|
|
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_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,
|
|
`unit` VARCHAR(50) NOT NULL, -- e.g., kg, L, un
|
|
`quantity` DECIMAL(10, 2) NOT NULL DEFAULT 0.00,
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `stock_movements` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`product_id` INT NOT NULL,
|
|
`type` ENUM('entrada', 'saída') NOT NULL,
|
|
`quantity` DECIMAL(10, 2) NOT NULL,
|
|
`user_id` INT,
|
|
`notes` TEXT,
|
|
`date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (`product_id`) REFERENCES `products`(`id`),
|
|
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `financial_categories` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`name` VARCHAR(255) NOT NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
INSERT INTO `financial_categories` (name) VALUES ('Combustível'), ('Sementes'), ('Defensivos'), ('Maquinário'), ('Mão de Obra'), ('Manutenção'), ('Receita de Venda'), ('Outros');
|
|
|
|
CREATE TABLE IF NOT EXISTS `financial_transactions` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`description` VARCHAR(255) NOT NULL,
|
|
`type` ENUM('receita', 'despesa') NOT NULL,
|
|
`amount` DECIMAL(10, 2) NOT NULL,
|
|
`category_id` INT,
|
|
`user_id` INT,
|
|
`date` DATE NOT NULL,
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (`category_id`) REFERENCES `financial_categories`(`id`),
|
|
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `crops` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`name` VARCHAR(255) NOT NULL,
|
|
`area` DECIMAL(10, 2) NOT NULL, -- in hectares
|
|
`start_date` DATE NOT NULL,
|
|
`end_date` DATE,
|
|
`expected_yield` DECIMAL(10, 2),
|
|
`actual_yield` DECIMAL(10, 2),
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `crop_inputs` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`crop_id` INT NOT NULL,
|
|
`product_id` INT NOT NULL,
|
|
`quantity` DECIMAL(10, 2) NOT NULL,
|
|
`application_date` DATE NOT NULL,
|
|
`user_id` INT,
|
|
`notes` TEXT,
|
|
FOREIGN KEY (`crop_id`) REFERENCES `crops`(`id`),
|
|
FOREIGN KEY (`product_id`) REFERENCES `products`(`id`),
|
|
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|