Implement unified error handling system for PACK_IMPORT_PARTENERI
- Add g_last_error package variable matching PACK_JSON/PACK_IMPORT_COMENZI pattern - Implement get_last_error() and clear_error() functions for VFP orchestrator integration - Replace exceptions with error storage in validation and main functions - Return -1 on errors instead of raising exceptions for deferred error handling - Enable orchestrator to read errors before deciding when to log them 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -35,6 +35,9 @@ CREATE OR REPLACE PACKAGE PACK_IMPORT_PARTENERI AS
|
|||||||
C_MIN_COD_FISCAL CONSTANT NUMBER := 3;
|
C_MIN_COD_FISCAL CONSTANT NUMBER := 3;
|
||||||
C_CUI_PERS_FIZICA CONSTANT NUMBER := 13; -- CNP are 13 cifre
|
C_CUI_PERS_FIZICA CONSTANT NUMBER := 13; -- CNP are 13 cifre
|
||||||
|
|
||||||
|
-- Variabila package pentru ultima eroare (pentru orchestrator VFP)
|
||||||
|
g_last_error VARCHAR2(4000);
|
||||||
|
|
||||||
-- ====================================================================
|
-- ====================================================================
|
||||||
-- CUSTOM EXCEPTIONS
|
-- CUSTOM EXCEPTIONS
|
||||||
-- ====================================================================
|
-- ====================================================================
|
||||||
@@ -134,6 +137,20 @@ CREATE OR REPLACE PACKAGE PACK_IMPORT_PARTENERI AS
|
|||||||
p_prenume OUT VARCHAR2
|
p_prenume OUT VARCHAR2
|
||||||
);
|
);
|
||||||
|
|
||||||
|
-- ====================================================================
|
||||||
|
-- ERROR MANAGEMENT FUNCTIONS (similar cu PACK_JSON)
|
||||||
|
-- ====================================================================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returneaza ultima eroare pentru orchestrator VFP
|
||||||
|
*/
|
||||||
|
FUNCTION get_last_error RETURN VARCHAR2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reseteaza eroarea
|
||||||
|
*/
|
||||||
|
PROCEDURE clear_error;
|
||||||
|
|
||||||
|
|
||||||
END PACK_IMPORT_PARTENERI;
|
END PACK_IMPORT_PARTENERI;
|
||||||
/
|
/
|
||||||
@@ -144,6 +161,19 @@ END PACK_IMPORT_PARTENERI;
|
|||||||
|
|
||||||
CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
||||||
|
|
||||||
|
-- ================================================================
|
||||||
|
-- ERROR MANAGEMENT FUNCTIONS IMPLEMENTATION
|
||||||
|
-- ================================================================
|
||||||
|
FUNCTION get_last_error RETURN VARCHAR2 IS
|
||||||
|
BEGIN
|
||||||
|
RETURN g_last_error;
|
||||||
|
END get_last_error;
|
||||||
|
|
||||||
|
PROCEDURE clear_error IS
|
||||||
|
BEGIN
|
||||||
|
g_last_error := NULL;
|
||||||
|
END clear_error;
|
||||||
|
|
||||||
-- ====================================================================
|
-- ====================================================================
|
||||||
-- PRIVATE FUNCTIONS
|
-- PRIVATE FUNCTIONS
|
||||||
-- ====================================================================
|
-- ====================================================================
|
||||||
@@ -158,13 +188,15 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
|||||||
BEGIN
|
BEGIN
|
||||||
-- Verificari obligatorii
|
-- Verificari obligatorii
|
||||||
IF p_denumire IS NULL THEN
|
IF p_denumire IS NULL THEN
|
||||||
RAISE_APPLICATION_ERROR(-20001, 'Denumirea partenerului nu poate fi goala');
|
g_last_error := 'Denumirea partenerului nu poate fi goala';
|
||||||
|
RETURN FALSE;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
-- Cod fiscal optional, dar daca exista trebuie sa aiba minim 3 caractere
|
-- Cod fiscal optional, dar daca exista trebuie sa aiba minim 3 caractere
|
||||||
IF p_cod_fiscal IS NOT NULL AND LENGTH(TRIM(p_cod_fiscal)) > 0 THEN
|
IF p_cod_fiscal IS NOT NULL AND LENGTH(TRIM(p_cod_fiscal)) > 0 THEN
|
||||||
IF LENGTH(TRIM(p_cod_fiscal)) < C_MIN_COD_FISCAL THEN
|
IF LENGTH(TRIM(p_cod_fiscal)) < C_MIN_COD_FISCAL THEN
|
||||||
RAISE_APPLICATION_ERROR(-20001, 'Codul fiscal trebuie sa aiba minim ' || C_MIN_COD_FISCAL || ' caractere');
|
g_last_error := 'Codul fiscal trebuie sa aiba minim ' || C_MIN_COD_FISCAL || ' caractere';
|
||||||
|
RETURN FALSE;
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
@@ -172,8 +204,8 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
|||||||
|
|
||||||
EXCEPTION
|
EXCEPTION
|
||||||
WHEN OTHERS THEN
|
WHEN OTHERS THEN
|
||||||
pINFO('ERROR in valideaza_date_partener: ' || SQLERRM, 'IMPORT_PARTENERI');
|
g_last_error := 'ERROR in valideaza_date_partener: ' || SQLERRM;
|
||||||
RAISE;
|
RETURN FALSE;
|
||||||
END valideaza_date_partener;
|
END valideaza_date_partener;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -500,6 +532,9 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
|||||||
v_denumire_curata VARCHAR2(200);
|
v_denumire_curata VARCHAR2(200);
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
|
-- Resetare eroare la inceputul procesarii
|
||||||
|
clear_error;
|
||||||
|
|
||||||
pINFO('=== ÎNCEPUT cauta_sau_creeaza_partener ===', 'IMPORT_PARTENERI');
|
pINFO('=== ÎNCEPUT cauta_sau_creeaza_partener ===', 'IMPORT_PARTENERI');
|
||||||
pINFO('Input: cod_fiscal=' || NVL(p_cod_fiscal, 'NULL') ||
|
pINFO('Input: cod_fiscal=' || NVL(p_cod_fiscal, 'NULL') ||
|
||||||
', denumire=' || NVL(p_denumire, 'NULL') ||
|
', denumire=' || NVL(p_denumire, 'NULL') ||
|
||||||
@@ -507,7 +542,8 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
|||||||
|
|
||||||
-- Validare date input
|
-- Validare date input
|
||||||
IF NOT valideaza_date_partener(p_cod_fiscal, p_denumire) THEN
|
IF NOT valideaza_date_partener(p_cod_fiscal, p_denumire) THEN
|
||||||
RAISE partener_invalid_exception;
|
g_last_error := 'Date partener invalide - validare esuata';
|
||||||
|
RETURN -1;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
v_cod_fiscal_curat := TRIM(p_cod_fiscal);
|
v_cod_fiscal_curat := TRIM(p_cod_fiscal);
|
||||||
@@ -594,15 +630,16 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
|||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
IF v_id_part IS NULL OR v_id_part <= 0 THEN
|
IF v_id_part IS NULL OR v_id_part <= 0 THEN
|
||||||
RAISE_APPLICATION_ERROR(-20003, 'pack_def.adauga_partener a returnat ID invalid');
|
g_last_error := 'pack_def.adauga_partener a returnat ID invalid';
|
||||||
|
RETURN -1;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
pINFO('Partener creat cu succes. ID_PART=' || v_id_part, 'IMPORT_PARTENERI');
|
pINFO('Partener creat cu succes. ID_PART=' || v_id_part, 'IMPORT_PARTENERI');
|
||||||
|
|
||||||
EXCEPTION
|
EXCEPTION
|
||||||
WHEN OTHERS THEN
|
WHEN OTHERS THEN
|
||||||
pINFO('ERROR la crearea partenerului prin pack_def: ' || SQLERRM, 'IMPORT_PARTENERI');
|
g_last_error := 'ERROR la crearea partenerului prin pack_def: ' || SQLERRM;
|
||||||
RAISE integrare_pack_def_exception;
|
RETURN -1;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
-- STEP 4: Adaugare adresa (daca exista)
|
-- STEP 4: Adaugare adresa (daca exista)
|
||||||
@@ -662,17 +699,9 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
|||||||
RETURN v_id_part;
|
RETURN v_id_part;
|
||||||
|
|
||||||
EXCEPTION
|
EXCEPTION
|
||||||
WHEN partener_invalid_exception THEN
|
|
||||||
pINFO('ERROR: Date partener invalide', 'IMPORT_PARTENERI');
|
|
||||||
RAISE_APPLICATION_ERROR(-20001, 'Date partener invalide: ' || SQLERRM);
|
|
||||||
|
|
||||||
WHEN integrare_pack_def_exception THEN
|
|
||||||
pINFO('ERROR: Problema la integrarea cu pack_def', 'IMPORT_PARTENERI');
|
|
||||||
RAISE_APPLICATION_ERROR(-20003, 'Eroare la integrarea cu pack_def: ' || SQLERRM);
|
|
||||||
|
|
||||||
WHEN OTHERS THEN
|
WHEN OTHERS THEN
|
||||||
pINFO('ERROR NEAȘTEPTAT in cauta_sau_creeaza_partener: ' || SQLERRM, 'IMPORT_PARTENERI');
|
g_last_error := 'ERROR NEAȘTEPTAT in cauta_sau_creeaza_partener: ' || SQLERRM;
|
||||||
RAISE_APPLICATION_ERROR(-20099, 'Eroare neasteptata la crearea partenerului: ' || SQLERRM);
|
RETURN -1;
|
||||||
|
|
||||||
END cauta_sau_creeaza_partener;
|
END cauta_sau_creeaza_partener;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user