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_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
|
||||
-- ====================================================================
|
||||
@@ -134,6 +137,20 @@ CREATE OR REPLACE PACKAGE PACK_IMPORT_PARTENERI AS
|
||||
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;
|
||||
/
|
||||
@@ -144,6 +161,19 @@ END PACK_IMPORT_PARTENERI;
|
||||
|
||||
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
|
||||
-- ====================================================================
|
||||
@@ -158,13 +188,15 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
||||
BEGIN
|
||||
-- Verificari obligatorii
|
||||
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;
|
||||
|
||||
-- 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 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;
|
||||
|
||||
@@ -172,8 +204,8 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
pINFO('ERROR in valideaza_date_partener: ' || SQLERRM, 'IMPORT_PARTENERI');
|
||||
RAISE;
|
||||
g_last_error := 'ERROR in valideaza_date_partener: ' || SQLERRM;
|
||||
RETURN FALSE;
|
||||
END valideaza_date_partener;
|
||||
|
||||
/**
|
||||
@@ -500,6 +532,9 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
||||
v_denumire_curata VARCHAR2(200);
|
||||
|
||||
BEGIN
|
||||
-- Resetare eroare la inceputul procesarii
|
||||
clear_error;
|
||||
|
||||
pINFO('=== ÎNCEPUT cauta_sau_creeaza_partener ===', 'IMPORT_PARTENERI');
|
||||
pINFO('Input: cod_fiscal=' || NVL(p_cod_fiscal, 'NULL') ||
|
||||
', denumire=' || NVL(p_denumire, 'NULL') ||
|
||||
@@ -507,7 +542,8 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
||||
|
||||
-- Validare date input
|
||||
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;
|
||||
|
||||
v_cod_fiscal_curat := TRIM(p_cod_fiscal);
|
||||
@@ -594,15 +630,16 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
||||
END IF;
|
||||
|
||||
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;
|
||||
|
||||
pINFO('Partener creat cu succes. ID_PART=' || v_id_part, 'IMPORT_PARTENERI');
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
pINFO('ERROR la crearea partenerului prin pack_def: ' || SQLERRM, 'IMPORT_PARTENERI');
|
||||
RAISE integrare_pack_def_exception;
|
||||
g_last_error := 'ERROR la crearea partenerului prin pack_def: ' || SQLERRM;
|
||||
RETURN -1;
|
||||
END;
|
||||
|
||||
-- STEP 4: Adaugare adresa (daca exista)
|
||||
@@ -662,17 +699,9 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
||||
RETURN v_id_part;
|
||||
|
||||
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
|
||||
pINFO('ERROR NEAȘTEPTAT in cauta_sau_creeaza_partener: ' || SQLERRM, 'IMPORT_PARTENERI');
|
||||
RAISE_APPLICATION_ERROR(-20099, 'Eroare neasteptata la crearea partenerului: ' || SQLERRM);
|
||||
g_last_error := 'ERROR NEAȘTEPTAT in cauta_sau_creeaza_partener: ' || SQLERRM;
|
||||
RETURN -1;
|
||||
|
||||
END cauta_sau_creeaza_partener;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user