48 lines
3.5 KiB
SQL
48 lines
3.5 KiB
SQL
-- Extend SmartPakker schema to support the uploaded Excel workbook.
|
|
-- This migration only adds fields; it does not import Excel data.
|
|
|
|
ALTER TABLE material_packages
|
|
ADD COLUMN IF NOT EXISTS excel_source_file varchar(255) DEFAULT NULL AFTER difficulty_level,
|
|
ADD COLUMN IF NOT EXISTS excel_source_sheet varchar(120) DEFAULT NULL AFTER excel_source_file,
|
|
ADD COLUMN IF NOT EXISTS excel_source_row int(11) DEFAULT NULL AFTER excel_source_sheet,
|
|
ADD COLUMN IF NOT EXISTS excel_package_name varchar(255) DEFAULT NULL AFTER excel_source_row,
|
|
ADD COLUMN IF NOT EXISTS unit varchar(100) DEFAULT NULL AFTER excel_package_name,
|
|
ADD COLUMN IF NOT EXISTS time_per_unit decimal(10,2) DEFAULT NULL AFTER unit,
|
|
ADD COLUMN IF NOT EXISTS unit_price decimal(12,2) DEFAULT NULL AFTER time_per_unit,
|
|
ADD COLUMN IF NOT EXISTS price_per_unit decimal(12,2) DEFAULT NULL AFTER unit_price,
|
|
ADD COLUMN IF NOT EXISTS standard_price decimal(12,2) DEFAULT NULL AFTER price_per_unit,
|
|
ADD COLUMN IF NOT EXISTS price_basis_note text DEFAULT NULL AFTER standard_price,
|
|
ADD COLUMN IF NOT EXISTS raw_material_lines mediumtext DEFAULT NULL AFTER price_basis_note,
|
|
ADD COLUMN IF NOT EXISTS raw_task_lines mediumtext DEFAULT NULL AFTER raw_material_lines,
|
|
ADD COLUMN IF NOT EXISTS price_source varchar(120) DEFAULT NULL AFTER raw_task_lines,
|
|
ADD COLUMN IF NOT EXISTS price_source_value varchar(255) DEFAULT NULL AFTER price_source,
|
|
ADD COLUMN IF NOT EXISTS excel_raw_data longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (excel_raw_data IS NULL OR json_valid(excel_raw_data)) AFTER price_source_value;
|
|
|
|
ALTER TABLE package_materials
|
|
ADD COLUMN IF NOT EXISTS excel_source_sheet varchar(120) DEFAULT NULL AFTER waste_factor,
|
|
ADD COLUMN IF NOT EXISTS excel_source_row int(11) DEFAULT NULL AFTER excel_source_sheet,
|
|
ADD COLUMN IF NOT EXISTS source_line_order int(11) DEFAULT NULL AFTER excel_source_row,
|
|
ADD COLUMN IF NOT EXISTS raw_line text DEFAULT NULL AFTER source_line_order,
|
|
ADD COLUMN IF NOT EXISTS item_code varchar(100) DEFAULT NULL AFTER raw_line,
|
|
ADD COLUMN IF NOT EXISTS quantity_text varchar(100) DEFAULT NULL AFTER item_code,
|
|
ADD COLUMN IF NOT EXISTS unit_price_text varchar(100) DEFAULT NULL AFTER quantity_text,
|
|
ADD COLUMN IF NOT EXISTS price_note text DEFAULT NULL AFTER unit_price_text,
|
|
ADD COLUMN IF NOT EXISTS excel_raw_data longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (excel_raw_data IS NULL OR json_valid(excel_raw_data)) AFTER price_note;
|
|
|
|
ALTER TABLE smart_package_tasks
|
|
ADD COLUMN IF NOT EXISTS excel_source_sheet varchar(120) DEFAULT NULL AFTER material_varenr,
|
|
ADD COLUMN IF NOT EXISTS excel_source_row int(11) DEFAULT NULL AFTER excel_source_sheet,
|
|
ADD COLUMN IF NOT EXISTS source_line_order int(11) DEFAULT NULL AFTER excel_source_row,
|
|
ADD COLUMN IF NOT EXISTS raw_line text DEFAULT NULL AFTER source_line_order,
|
|
ADD COLUMN IF NOT EXISTS price_basis_note text DEFAULT NULL AFTER raw_line,
|
|
ADD COLUMN IF NOT EXISTS excel_raw_data longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (excel_raw_data IS NULL OR json_valid(excel_raw_data)) AFTER price_basis_note;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_material_packages_excel_source
|
|
ON material_packages (excel_source_sheet, excel_source_row);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_package_materials_excel_source
|
|
ON package_materials (excel_source_sheet, excel_source_row);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_smart_package_tasks_excel_source
|
|
ON smart_package_tasks (excel_source_sheet, excel_source_row);
|