-- configurare initiala serie + plaja numere pentru comenzi service auto (TIP_DOC=20)
--
-- Context: happy-path POST /api/service-auto/comenzi esueaza cu
--   ORA-20000 "Nu exista plaje de serii comenzi auto pentru aceste configurari!"
--   (PACK_SERII_NUMERE line 1071) pentru ca schema MARIUSM_AUTO nu are nicio
--   intrare SERII + PLAJE_NUMERE pentru TIP_DOC=20.
--
-- Verificare live 2026-04-14: AUTHID=DEFINER, verifica_tipdoc(20)=0 (OK),
--   verifica_cursor_serii(20, 1, 0)=ORA-20000. Vezi pack-serii-verification.md.
--
-- IMPORTANT: Aceasta migratie TREBUIE rulata ca MARIUSM_AUTO (sau DBA) — ROA_WEB
--   are EXECUTE pe pachet dar nu are DML pe SERII/PLAJE_NUMERE (corect, DEFINER).
--
-- IMPORTANT: Inainte de executie, inlocuieste placeholder-urile <...> cu valori
--   reale stabilite cu Marius M (administrator MARIUSM AUTO):
--     <SERIE_NAME>         — denumire serie (ex: 'DEV01')
--     <V_LUNGIME>          — lungime numerica (ex: 6 → 1..999999)
--     <V_ID_UTIL>          — ID util administrator (care creeaza seria); in runtime
--                            fiecare user propriu va fi mapat la grup via IdUtil2IdGrupUtil
--     <V_PL_INF>,<V_PL_SUP> — plaja (ex: 1..999999)
--     <V_ID_SUCURSALA>     — 0 pentru toate sucursalele sau ID specific

DECLARE
  v_id_serie NUMBER;
BEGIN
  -- pas 1: inregistreaza seria (idempotent: skip daca exista deja o serie cu acelasi nume)
  BEGIN
    SELECT ID_SERIE INTO v_id_serie
      FROM MARIUSM_AUTO.SERII
     WHERE SERIE = '<SERIE_NAME>'
       AND ROWNUM = 1;
  EXCEPTION WHEN NO_DATA_FOUND THEN
    MARIUSM_AUTO.PACK_SERII_NUMERE.adauga_serie(
      V_SERIE         => '<SERIE_NAME>',
      V_AN            => EXTRACT(YEAR FROM SYSDATE),
      V_LUNA          => EXTRACT(MONTH FROM SYSDATE),
      V_LUNGIME       => <V_LUNGIME>,
      V_INACTIV       => 0,
      V_ID_UTIL       => <V_ID_UTIL>,
      V_ISAUTOFACTURA => 0,
      V_ISBENEFICIARI => 0,
      V_ISTERTI       => 0,
      V_ISFURNIZORI   => 0,
      V_PREFIX        => NULL,
      V_AN2CARACTERE  => 0
    );
    SELECT ID_SERIE INTO v_id_serie
      FROM MARIUSM_AUTO.SERII
     WHERE SERIE = '<SERIE_NAME>'
       AND ROWNUM = 1;
  END;

  -- pas 2: inregistreaza plaja pentru TIP_DOC=20 (idempotent: skip daca exista)
  DECLARE
    v_count NUMBER;
  BEGIN
    SELECT COUNT(*) INTO v_count
      FROM MARIUSM_AUTO.PLAJE_NUMERE
     WHERE ID_TIPDOC = 20
       AND ID_SERIE  = v_id_serie
       AND NVL(ID_SUCURSALA, 0) = NVL(<V_ID_SUCURSALA>, 0);
    IF v_count = 0 THEN
      MARIUSM_AUTO.PACK_SERII_NUMERE.adauga_plaja(
        V_ID_TIPDOC      => 20,
        V_ID_TIPENTITATE => NULL,
        V_ID_SERIE       => v_id_serie,
        V_ID_ENTITATE    => NULL,
        V_ID_SUCURSALA   => <V_ID_SUCURSALA>,
        V_PL_INF         => <V_PL_INF>,
        V_PL_SUP         => <V_PL_SUP>,
        V_DATAI          => TO_DATE('01.01.' || EXTRACT(YEAR FROM SYSDATE), 'DD.MM.YYYY'),
        V_DATAS          => TO_DATE('31.12.' || EXTRACT(YEAR FROM SYSDATE), 'DD.MM.YYYY'),
        V_INACTIV        => 0,
        V_ID_UTIL        => <V_ID_UTIL>
      );
    END IF;
  END;
END;
/

-- verificare post-migratie (nu afecteaza runtime; doar raporteaza status):
DECLARE
  v_rez NUMBER;
  v_cur SYS_REFCURSOR;
BEGIN
  MARIUSM_AUTO.PACK_SERII_NUMERE.verifica_cursor_serii(
    V_ID_TIPDOC    => 20,
    V_ID_UTIL      => <V_ID_UTIL>,
    V_ID_SUCURSALA => <V_ID_SUCURSALA>,
    V_REZULTAT     => v_rez,
    V_CURSOR       => v_cur
  );
  DBMS_OUTPUT.PUT_LINE('verifica_cursor_serii rezultat=' || v_rez);
  IF v_cur IS NOT NULL THEN CLOSE v_cur; END IF;
END;
/

exec pack_migrare.UpdateVersiune('ff_2026_04_14_01_AUTO'); commit;
