-- Tabel Template Sampling CREATE TABLE sampling_templates ( SamplingTemplateID INT PRIMARY KEY AUTO_INCREMENT, SamplingTemplateName VARCHAR(100), SamplingTemplateDescription TEXT, SamplingTemplateIsActive BOOLEAN DEFAULT TRUE, SamplingTemplateCreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP, SamplingTemplateCreatedUserID INT, SamplingTemplateUpdatedAt DATETIME, SamplingTemplateUpdatedUserID INT, SamplingTemplateDeletedAt DATETIME, SamplingTemplateDeletedUserID INT ); -- Tabel Template Analisis CREATE TABLE analysis_templates ( AnalysisTemplateID INT PRIMARY KEY AUTO_INCREMENT, AnalysisTemplateName VARCHAR(100), AnalysisTemplateDescription TEXT, AnalysisTemplateIsLabAnalysis BOOLEAN DEFAULT TRUE, AnalysisTemplateIsActive BOOLEAN DEFAULT TRUE, AnalysisTemplateCreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP, AnalysisTemplateCreatedUserID INT, AnalysisTemplateUpdatedAt DATETIME, AnalysisTemplateUpdatedUserID INT, AnalysisTemplateDeletedAt DATETIME, AnalysisTemplateDeletedUserID INT ); -- Tabel Parameter Analisis CREATE TABLE analysis_parameters ( AnalysisParameterID INT PRIMARY KEY AUTO_INCREMENT, AnalysisParameterCode VARCHAR(20), AnalysisParameterName VARCHAR(100), AnalysisParameterTestingMethod VARCHAR(100), AnalysisParameterUnit VARCHAR(20), AnalysisParameterStandardMethodNumber VARCHAR(50), AnalysisParameterPrice DECIMAL(10,2), AnalysisParameterIsActive BOOLEAN DEFAULT TRUE, AnalysisParameterCreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP, AnalysisParameterCreatedUserID INT, AnalysisParameterUpdatedAt DATETIME, AnalysisParameterUpdatedUserID INT, AnalysisParameterDeletedAt DATETIME, AnalysisParameterDeletedUserID INT ); -- Tabel Template Parameter CREATE TABLE template_parameters ( TemplateParameterID INT PRIMARY KEY AUTO_INCREMENT, AnalysisTemplateID INT, AnalysisParameterID INT, TemplateParameterIsRequired BOOLEAN DEFAULT FALSE, TemplateParameterCreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP, TemplateParameterCreatedUserID INT, TemplateParameterUpdatedAt DATETIME, TemplateParameterUpdatedUserID INT, TemplateParameterDeletedAt DATETIME, TemplateParameterDeletedUserID INT ); -- Tabel Permintaan Layanan CREATE TABLE service_requests ( ServiceRequestID INT PRIMARY KEY AUTO_INCREMENT, ServiceRequestCode VARCHAR(20) UNIQUE, CustomerID INT, ServiceRequestType ENUM('sampling_analysis', 'analysis_only'), AnalysisTemplateID INT, ServiceRequestSamplingDate DATE, ServiceRequestSamplingLocation TEXT, ServiceRequestGPSCoordinates VARCHAR(50), ServiceRequestStatus ENUM('draft', 'submitted', 'approved', 'rejected', 'in_progress', 'completed'), ServiceRequestSamplingOfficerID INT, ServiceRequestTestingOfficerID INT, ServiceRequestTotalAmount DECIMAL(10,2), ServiceRequestDPAmount DECIMAL(10,2), ServiceRequestDPStatus ENUM('unpaid', 'paid') DEFAULT 'unpaid', ServiceRequestNotes TEXT, ServiceRequestCreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP, ServiceRequestCreatedUserID INT, ServiceRequestUpdatedAt DATETIME, ServiceRequestUpdatedUserID INT, ServiceRequestDeletedAt DATETIME, ServiceRequestDeletedUserID INT ); -- Tabel Detail Parameter Permintaan CREATE TABLE request_parameters ( RequestParameterID INT PRIMARY KEY AUTO_INCREMENT, ServiceRequestID INT, AnalysisParameterID INT, RequestParameterPrice DECIMAL(10,2), RequestParameterStatus ENUM('pending', 'in_progress', 'completed', 'rejected'), RequestParameterResultValue VARCHAR(50), RequestParameterResultUnit VARCHAR(20), RequestParameterIsCompliant BOOLEAN, RequestParameterNotes TEXT, RequestParameterCreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP, RequestParameterCreatedUserID INT, RequestParameterUpdatedAt DATETIME, RequestParameterUpdatedUserID INT, RequestParameterDeletedAt DATETIME, RequestParameterDeletedUserID INT ); -- Tabel Quotation CREATE TABLE quotations ( QuotationID INT PRIMARY KEY AUTO_INCREMENT, QuotationCode VARCHAR(20) UNIQUE, ServiceRequestID INT, QuotationIssueDate DATE, QuotationValidUntil DATE, QuotationStatus ENUM('draft', 'sent', 'approved', 'rejected'), QuotationSubtotal DECIMAL(10,2), QuotationTaxPercentage DECIMAL(5,2), QuotationTaxAmount DECIMAL(10,2), QuotationTotalAmount DECIMAL(10,2), QuotationTermsAndConditions TEXT, QuotationNotes TEXT, QuotationCreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP, QuotationCreatedUserID INT, QuotationUpdatedAt DATETIME, QuotationUpdatedUserID INT, QuotationDeletedAt DATETIME, QuotationDeletedUserID INT ); -- Tabel Peralatan Sampling CREATE TABLE sampling_equipment ( SamplingEquipmentID INT PRIMARY KEY AUTO_INCREMENT, SamplingEquipmentName VARCHAR(100), SamplingEquipmentCode VARCHAR(50), SamplingEquipmentIsAvailable BOOLEAN DEFAULT TRUE, SamplingEquipmentLastCalibrationDate DATE, SamplingEquipmentNextCalibrationDate DATE, SamplingEquipmentNotes TEXT, SamplingEquipmentCreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP, SamplingEquipmentCreatedUserID INT, SamplingEquipmentUpdatedAt DATETIME, SamplingEquipmentUpdatedUserID INT, SamplingEquipmentDeletedAt DATETIME, SamplingEquipmentDeletedUserID INT ); -- Tabel Peralatan yang Digunakan dalam Sampling CREATE TABLE request_equipment ( RequestEquipmentID INT PRIMARY KEY AUTO_INCREMENT, ServiceRequestID INT, SamplingEquipmentID INT, RequestEquipmentUsageDate DATE, RequestEquipmentReturnDate DATE, RequestEquipmentNotes TEXT, RequestEquipmentCreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP, RequestEquipmentCreatedUserID INT, RequestEquipmentUpdatedAt DATETIME, RequestEquipmentUpdatedUserID INT, RequestEquipmentDeletedAt DATETIME, RequestEquipmentDeletedUserID INT ); -- Contoh data template sampling INSERT INTO sampling_templates (SamplingTemplateName, SamplingTemplateDescription) VALUES ('Air Limbah Industri', 'Template untuk sampling air limbah industri'), ('Kualitas Udara Ambien', 'Template untuk sampling kualitas udara'), ('Air Permukaan', 'Template untuk sampling air sungai/danau'); -- Contoh data parameter analisis INSERT INTO analysis_parameters (AnalysisParameterCode, AnalysisParameterName, AnalysisParameterUnit, AnalysisParameterPrice, AnalysisParameterTestingMethod) VALUES ('BOD5', 'Biochemical Oxygen Demand', 'mg/L', 250000, 'SNI 6989.72:2009'), ('COD', 'Chemical Oxygen Demand', 'mg/L', 200000, 'SNI 6989.2:2009'), ('TSS', 'Total Suspended Solid', 'mg/L', 150000, 'SNI 06-6989.3-2004'), ('PH', 'Derajat Keasaman', '-', 100000, 'SNI 06-6989.11-2004'); -- Contoh data permintaan layanan INSERT INTO service_requests (ServiceRequestCode, CustomerID, ServiceRequestType, ServiceRequestSamplingDate, ServiceRequestSamplingLocation, ServiceRequestStatus, ServiceRequestTotalAmount) VALUES ('REQ001', 1, 'sampling_analysis', '2024-03-20', 'Plant A - Outlet IPAL', 'approved', 700000), ('REQ002', 2, 'analysis_only', '2024-03-21', 'Lab Internal', 'submitted', 450000), ('REQ003', 3, 'sampling_analysis', '2024-03-22', 'Intake Water Treatment', 'draft', 550000); -- Contoh data parameter yang diminta INSERT INTO request_parameters (ServiceRequestID, AnalysisParameterID, RequestParameterPrice) VALUES (1, 1, 250000), (1, 2, 200000), (1, 3, 150000), (1, 4, 100000), (2, 1, 250000), (2, 2, 200000), (3, 3, 150000), (3, 4, 100000); -- Contoh data quotation INSERT INTO quotations (QuotationCode, ServiceRequestID, QuotationIssueDate, QuotationValidUntil, QuotationStatus, QuotationTotalAmount) VALUES ('QUO001', 1, '2024-03-15', '2024-04-15', 'approved', 700000), ('QUO002', 2, '2024-03-16', '2024-04-16', 'sent', 450000), ('QUO003', 3, '2024-03-17', '2024-04-17', 'draft', 550000);