99 lines
3.6 KiB
SQL
99 lines
3.6 KiB
SQL
-- 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;
|