subtotaltitle/sql/llx_facture_lines_manager.sql
2026-01-26 19:48:26 +01:00

136 lines
5 KiB
SQL

-- Copyright (C) 2026 Eduard Wisch
--
-- Haupttabelle für Verwaltung von Rechnungs-, Angebots- und Auftragszeilen
-- Diese Datei wird beim Modul-Upgrade ausgeführt
--
-- Prüfen ob Spalten existieren und hinzufügen falls nicht
SET @exist := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = DATABASE()
AND table_name = 'llx_facture_lines_manager'
AND column_name = 'document_type');
SET @sqlstmt := IF(@exist = 0,
'ALTER TABLE llx_facture_lines_manager ADD COLUMN document_type VARCHAR(20) DEFAULT ''invoice'' NOT NULL AFTER fk_facture',
'SELECT ''Column document_type already exists'' as msg');
PREPARE stmt FROM @sqlstmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- fk_propal hinzufügen
SET @exist := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = DATABASE()
AND table_name = 'llx_facture_lines_manager'
AND column_name = 'fk_propal');
SET @sqlstmt := IF(@exist = 0,
'ALTER TABLE llx_facture_lines_manager ADD COLUMN fk_propal INT(11) DEFAULT NULL AFTER document_type',
'SELECT ''Column fk_propal already exists'' as msg');
PREPARE stmt FROM @sqlstmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- fk_commande hinzufügen
SET @exist := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = DATABASE()
AND table_name = 'llx_facture_lines_manager'
AND column_name = 'fk_commande');
SET @sqlstmt := IF(@exist = 0,
'ALTER TABLE llx_facture_lines_manager ADD COLUMN fk_commande INT(11) DEFAULT NULL AFTER fk_propal',
'SELECT ''Column fk_commande already exists'' as msg');
PREPARE stmt FROM @sqlstmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- fk_propaldet hinzufügen
SET @exist := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = DATABASE()
AND table_name = 'llx_facture_lines_manager'
AND column_name = 'fk_propaldet');
SET @sqlstmt := IF(@exist = 0,
'ALTER TABLE llx_facture_lines_manager ADD COLUMN fk_propaldet INT(11) DEFAULT NULL AFTER fk_facturedet',
'SELECT ''Column fk_propaldet already exists'' as msg');
PREPARE stmt FROM @sqlstmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- fk_commandedet hinzufügen
SET @exist := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = DATABASE()
AND table_name = 'llx_facture_lines_manager'
AND column_name = 'fk_commandedet');
SET @sqlstmt := IF(@exist = 0,
'ALTER TABLE llx_facture_lines_manager ADD COLUMN fk_commandedet INT(11) DEFAULT NULL AFTER fk_propaldet',
'SELECT ''Column fk_commandedet already exists'' as msg');
PREPARE stmt FROM @sqlstmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- Bestehende Daten aktualisieren
UPDATE llx_facture_lines_manager
SET document_type = 'invoice'
WHERE fk_facture IS NOT NULL AND (document_type IS NULL OR document_type = '');
-- Indizes hinzufügen falls sie nicht existieren
SET @exist := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
WHERE table_schema = DATABASE()
AND table_name = 'llx_facture_lines_manager'
AND index_name = 'idx_fk_propal');
SET @sqlstmt := IF(@exist = 0,
'ALTER TABLE llx_facture_lines_manager ADD INDEX idx_fk_propal (fk_propal)',
'SELECT ''Index idx_fk_propal already exists'' as msg');
PREPARE stmt FROM @sqlstmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @exist := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
WHERE table_schema = DATABASE()
AND table_name = 'llx_facture_lines_manager'
AND index_name = 'idx_fk_commande');
SET @sqlstmt := IF(@exist = 0,
'ALTER TABLE llx_facture_lines_manager ADD INDEX idx_fk_commande (fk_commande)',
'SELECT ''Index idx_fk_commande already exists'' as msg');
PREPARE stmt FROM @sqlstmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @exist := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
WHERE table_schema = DATABASE()
AND table_name = 'llx_facture_lines_manager'
AND index_name = 'idx_fk_propaldet');
SET @sqlstmt := IF(@exist = 0,
'ALTER TABLE llx_facture_lines_manager ADD INDEX idx_fk_propaldet (fk_propaldet)',
'SELECT ''Index idx_fk_propaldet already exists'' as msg');
PREPARE stmt FROM @sqlstmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @exist := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
WHERE table_schema = DATABASE()
AND table_name = 'llx_facture_lines_manager'
AND index_name = 'idx_fk_commandedet');
SET @sqlstmt := IF(@exist = 0,
'ALTER TABLE llx_facture_lines_manager ADD INDEX idx_fk_commandedet (fk_commandedet)',
'SELECT ''Index idx_fk_commandedet already exists'' as msg');
PREPARE stmt FROM @sqlstmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @exist := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
WHERE table_schema = DATABASE()
AND table_name = 'llx_facture_lines_manager'
AND index_name = 'idx_document_type');
SET @sqlstmt := IF(@exist = 0,
'ALTER TABLE llx_facture_lines_manager ADD INDEX idx_document_type (document_type)',
'SELECT ''Index idx_document_type already exists'' as msg');
PREPARE stmt FROM @sqlstmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;