75 lines
2.6 KiB
SQL
75 lines
2.6 KiB
SQL
-- Create material packages system
|
|
-- This allows users to create custom packages of materials
|
|
|
|
-- Create material_packages table
|
|
CREATE TABLE IF NOT EXISTS material_packages (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(255) NOT NULL,
|
|
description TEXT,
|
|
category VARCHAR(100),
|
|
created_by VARCHAR(100),
|
|
total_estimated_price DECIMAL(12,2) DEFAULT 0,
|
|
is_active BOOLEAN DEFAULT TRUE,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
INDEX idx_category (category),
|
|
INDEX idx_name (name),
|
|
INDEX idx_active (is_active)
|
|
);
|
|
|
|
-- Create package_materials junction table
|
|
CREATE TABLE IF NOT EXISTS package_materials (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
package_id INT NOT NULL,
|
|
material_name VARCHAR(255) NOT NULL,
|
|
material_category VARCHAR(100),
|
|
quantity DECIMAL(10,3) NOT NULL,
|
|
unit VARCHAR(50) NOT NULL,
|
|
unit_price DECIMAL(10,2) NOT NULL,
|
|
total_price DECIMAL(12,2) NOT NULL,
|
|
supplier VARCHAR(255),
|
|
notes TEXT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
FOREIGN KEY (package_id) REFERENCES material_packages(id) ON DELETE CASCADE,
|
|
INDEX idx_package (package_id),
|
|
INDEX idx_category (material_category)
|
|
);
|
|
|
|
-- Update material categories to match Bygma standards
|
|
-- Create a mapping table for category standardization
|
|
CREATE TABLE IF NOT EXISTS material_category_mapping (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
old_category VARCHAR(100),
|
|
new_category VARCHAR(100) NOT NULL,
|
|
bygma_category VARCHAR(100) NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
INDEX idx_old (old_category),
|
|
INDEX idx_new (new_category)
|
|
);
|
|
|
|
-- Insert Bygma standard categories
|
|
INSERT INTO material_category_mapping (old_category, new_category, bygma_category) VALUES
|
|
('træmaterialer', 'Træ', 'Træ'),
|
|
('Trægulv', 'Gulv', 'Gulv'),
|
|
('gulvmaterialer', 'Gulv', 'Gulv'),
|
|
('Beslag og skruer', 'Beslag og befæstigelse', 'Beslag og befæstigelse'),
|
|
('Isolering', 'Isolering', 'Isolering'),
|
|
('Døre og vinduer', 'Døre og vinduer', 'Døre og vinduer'),
|
|
('tagmaterialer', 'Tag', 'Tag'),
|
|
('Lim og bindemidler', 'Lim', 'Lim'),
|
|
('træbeslag', 'Beslag og befæstigelse', 'Beslag og befæstigelse'),
|
|
(NULL, 'Mursten og blokke', 'Mursten og blokke'),
|
|
(NULL, 'Byggeplader', 'Byggeplader'),
|
|
(NULL, 'Armering', 'Armering'),
|
|
(NULL, 'Lister', 'Lister'),
|
|
(NULL, 'Murerartikler', 'Murerartikler'),
|
|
(NULL, 'Trapper', 'Trapper'),
|
|
(NULL, 'Dampspærre', 'Dampspærre'),
|
|
(NULL, 'Facadebeklædning', 'Facadebeklædning'),
|
|
(NULL, 'Fliser', 'Fliser'),
|
|
(NULL, 'Belægningsten', 'Belægningsten'),
|
|
(NULL, 'Kloak', 'Kloak'),
|
|
(NULL, 'Asfalt', 'Asfalt'); |