Files
tilbudgivern/setup_material_packages.sql
Alex ae12fc0a44 feat: Implement Material Packages feature
- Added MaterialPackageService for handling CRUD operations on material packages.
- Introduced new API endpoints for creating, retrieving, updating, and deleting material packages.
- Developed frontend components for managing material packages, including forms for creating and listing packages.
- Implemented styling for the Material Packages interface.
- Created SQL setup script for material packages and related tables, including category mapping for Bygma standards.
2025-09-24 15:41:40 +02:00

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');