<?php
/**
 * Sesiuni de generare recepție FBE.
 *
 * O „sesiune de recepție" e un snapshot salvat al unei generări:
 *   - metadata: nume + nr. recepție (numărul dat de eMAG/intern) + cont
 *   - items: lista de EAN-uri în ordinea exactă dată de user, cu cantitatea
 *     (bucăți) la momentul generării. Cantitatea e înghețată (snapshot) — chiar
 *     dacă ulterior schimbi fbe_qty pe produs, sesiunea rămâne ce ai trimis atunci.
 *
 * Permite re-descărcarea fișierului Excel și păstrarea istoricului recepțiilor.
 */
return function (PDO $db): void {

    $db->exec("
        CREATE TABLE fbe_receptions (
            id               INTEGER PRIMARY KEY AUTOINCREMENT,
            name             TEXT    NOT NULL,
            reception_number TEXT    NULL,
            emag_account_id  INTEGER NULL REFERENCES emag_accounts(id) ON DELETE SET NULL,
            created_at       TEXT    NOT NULL DEFAULT CURRENT_TIMESTAMP,
            updated_at       TEXT    NOT NULL DEFAULT CURRENT_TIMESTAMP
        )
    ");
    $db->exec("
        CREATE TRIGGER trg_fbe_receptions_updated
        AFTER UPDATE ON fbe_receptions
        FOR EACH ROW
        BEGIN
            UPDATE fbe_receptions SET updated_at = CURRENT_TIMESTAMP WHERE id = OLD.id;
        END
    ");

    $db->exec("
        CREATE TABLE fbe_reception_items (
            id            INTEGER PRIMARY KEY AUTOINCREMENT,
            reception_id  INTEGER NOT NULL REFERENCES fbe_receptions(id) ON DELETE CASCADE,
            position      INTEGER NOT NULL DEFAULT 0,
            ean           TEXT    NULL,
            qty           INTEGER NULL,
            product_id    INTEGER NULL REFERENCES products(id) ON DELETE SET NULL,
            product_name  TEXT    NULL
        )
    ");
    $db->exec("CREATE INDEX idx_fbe_items_reception ON fbe_reception_items(reception_id)");
};
