-- ============================================================================
-- Stundenzettel Produkte
-- Welche Produkte wurden verbaut/geliefert
-- ============================================================================

CREATE TABLE llx_stundenzettel_product (
    rowid               INTEGER AUTO_INCREMENT PRIMARY KEY,
    fk_stundenzettel    INTEGER NOT NULL,               -- Verknüpfung zum Stundenzettel

    -- Produkt-Referenz
    fk_product          INTEGER DEFAULT NULL,           -- Produkt-ID (kann NULL sein bei freien Zeilen)
    fk_commandedet      INTEGER DEFAULT NULL,           -- Original-Zeile aus Auftrag
    fk_manager_line     INTEGER DEFAULT NULL,           -- Zeile aus llx_facture_lines_manager (für Produktgruppen)

    -- Produktdaten (Kopie für Historie)
    product_ref         VARCHAR(128),                   -- Produktreferenz
    product_label       VARCHAR(255),                   -- Produktbezeichnung
    description         TEXT,                           -- Beschreibung

    -- Mengen
    qty_original        DECIMAL(24,8) DEFAULT 0,        -- Ursprüngliche Menge aus Auftrag
    qty_done            DECIMAL(24,8) DEFAULT 0,        -- Erledigte/verbaute Menge auf diesem Zettel
    qty_cumulated       DECIMAL(24,8) DEFAULT 0,        -- Kumuliert über alle Stundenzettel

    -- Herkunft: 'order' = aus Auftrag, 'added' = manuell hinzugefügt
    origin              VARCHAR(20) DEFAULT 'order',

    -- Rang für Sortierung
    rang                INTEGER DEFAULT 0,

    -- Technisch
    tms                 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

    -- Indizes
    INDEX idx_szproduct_stundenzettel (fk_stundenzettel),
    INDEX idx_szproduct_product (fk_product),
    INDEX idx_szproduct_commandedet (fk_commandedet),
    INDEX idx_szproduct_manager (fk_manager_line),

    -- Foreign Key
    CONSTRAINT fk_szproduct_stundenzettel FOREIGN KEY (fk_stundenzettel)
        REFERENCES llx_stundenzettel(rowid) ON DELETE CASCADE
) ENGINE=InnoDB;
