Phase 2 implementation: VFP Integration with Oracle synchronization
Major architectural changes: - Convert Oracle IMPORT_PARTENERI.cauta_sau_creeaza_partener from FUNCTION to PROCEDURE with OUT parameter for VFP compatibility - Add IS_PERSOANA_JURIDICA parameter to support individual vs company detection - Implement sync-comenzi-web.prg orchestrator for generic web order processing with 5-minute timer automation - Create ApplicationSetup class for proper object-oriented configuration management - Add comprehensive Oracle connection and sync settings via settings.ini configuration system - Implement generic web order processing functions (ProcessWebOrder, ValidateWebOrder, CleanWebText, ConvertWebDate) - Add proper VFP-Oracle integration with correct procedure call syntax using OUT parameters - Rename gomag-vending.prg to gomag-adapter.prg for clarity and platform-specific functionality - Move CheckIniFile function to utils.prg for better code organization - Add settings.ini.example template and update .gitignore to exclude actual settings files - Implement comprehensive logging system with rotation and error handling - Add connection validation and retry logic for robust Oracle integration Technical improvements: - Proper JSON processing integration with existing nfjson library - Comprehensive error handling with categorized logging (INFO, ERROR, WARN) - Timer-based automation with configurable intervals - Settings validation and default value creation - Generic function naming for multi-platform support - Class-based setup system replacing procedural approach 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -56,7 +56,8 @@ CREATE OR REPLACE PACKAGE PACK_IMPORT_PARTENERI AS
|
||||
-- ====================================================================
|
||||
|
||||
/**
|
||||
* Functia principala pentru cautarea sau crearea unui partener
|
||||
* Procedura principala pentru cautarea sau crearea unui partener
|
||||
* SCHIMBAT din FUNCTION in PROCEDURE pentru compatibilitate cu DML operations
|
||||
*
|
||||
* Algoritm:
|
||||
* 1. Cauta dupa cod_fiscal (daca > 3 caractere)
|
||||
@@ -70,16 +71,17 @@ CREATE OR REPLACE PACKAGE PACK_IMPORT_PARTENERI AS
|
||||
* @param p_telefon Numar de telefon
|
||||
* @param p_email Adresa de email
|
||||
* @param p_is_persoana_juridica 1=persoana juridica, 0=persoana fizica, NULL=auto-detect prin CNP
|
||||
* @return ID_PART al partenerului gasit sau creat
|
||||
* @param p_id_partener OUT ID_PART al partenerului gasit sau creat
|
||||
*/
|
||||
FUNCTION cauta_sau_creeaza_partener(
|
||||
PROCEDURE cauta_sau_creeaza_partener(
|
||||
p_cod_fiscal IN VARCHAR2,
|
||||
p_denumire IN VARCHAR2,
|
||||
p_adresa IN VARCHAR2 DEFAULT NULL,
|
||||
p_telefon IN VARCHAR2 DEFAULT NULL,
|
||||
p_email IN VARCHAR2 DEFAULT NULL,
|
||||
p_is_persoana_juridica IN NUMBER DEFAULT NULL
|
||||
) RETURN NUMBER;
|
||||
p_is_persoana_juridica IN NUMBER DEFAULT NULL,
|
||||
p_id_partener OUT NUMBER
|
||||
);
|
||||
|
||||
/**
|
||||
* Parseaza o adresa din format semicolon in componentele individuale
|
||||
@@ -509,14 +511,15 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
||||
p_sector := C_SECTOR_DEFAULT;
|
||||
END parseaza_adresa_semicolon;
|
||||
|
||||
FUNCTION cauta_sau_creeaza_partener(
|
||||
PROCEDURE cauta_sau_creeaza_partener(
|
||||
p_cod_fiscal IN VARCHAR2,
|
||||
p_denumire IN VARCHAR2,
|
||||
p_adresa IN VARCHAR2 DEFAULT NULL,
|
||||
p_telefon IN VARCHAR2 DEFAULT NULL,
|
||||
p_email IN VARCHAR2 DEFAULT NULL,
|
||||
p_is_persoana_juridica IN NUMBER DEFAULT NULL
|
||||
) RETURN NUMBER IS
|
||||
p_is_persoana_juridica IN NUMBER DEFAULT NULL,
|
||||
p_id_partener OUT NUMBER
|
||||
) IS
|
||||
|
||||
v_id_part NUMBER;
|
||||
v_id_adresa NUMBER;
|
||||
@@ -546,7 +549,8 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
||||
-- Validare date input
|
||||
IF NOT valideaza_date_partener(p_cod_fiscal, p_denumire) THEN
|
||||
g_last_error := 'Date partener invalide - validare esuata';
|
||||
RETURN -1;
|
||||
p_id_partener := -1;
|
||||
RETURN;
|
||||
END IF;
|
||||
|
||||
v_cod_fiscal_curat := TRIM(p_cod_fiscal);
|
||||
@@ -559,7 +563,8 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
||||
IF v_id_part IS NOT NULL THEN
|
||||
-- pINFO('Partener gasit dupa cod_fiscal. ID_PART=' || v_id_part, 'IMPORT_PARTENERI');
|
||||
-- pINFO('=== SFARSIT cauta_sau_creeaza_partener ===', 'IMPORT_PARTENERI');
|
||||
RETURN v_id_part;
|
||||
p_id_partener := v_id_part;
|
||||
RETURN;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
@@ -569,7 +574,8 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
||||
IF v_id_part IS NOT NULL THEN
|
||||
-- pINFO('Partener gasit dupa denumire. ID_PART=' || v_id_part, 'IMPORT_PARTENERI');
|
||||
-- pINFO('=== SFARSIT cauta_sau_creeaza_partener ===', 'IMPORT_PARTENERI');
|
||||
RETURN v_id_part;
|
||||
p_id_partener := v_id_part;
|
||||
RETURN;
|
||||
END IF;
|
||||
|
||||
-- STEP 3: Creare partener nou
|
||||
@@ -641,7 +647,8 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
||||
|
||||
IF v_id_part IS NULL OR v_id_part <= 0 THEN
|
||||
g_last_error := 'pack_def.adauga_partener a returnat ID invalid';
|
||||
RETURN -1;
|
||||
p_id_partener := -1;
|
||||
RETURN;
|
||||
END IF;
|
||||
|
||||
-- pINFO('Partener creat cu succes. ID_PART=' || v_id_part, 'IMPORT_PARTENERI');
|
||||
@@ -649,7 +656,8 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
g_last_error := 'ERROR la crearea partenerului prin pack_def: ' || SQLERRM;
|
||||
RETURN -1;
|
||||
p_id_partener := -1;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
-- STEP 4: Adaugare adresa (daca exista)
|
||||
@@ -708,12 +716,12 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
||||
-- pINFO('Partener creat complet. ID_PART=' || v_id_part, 'IMPORT_PARTENERI');
|
||||
-- pINFO('=== SFARSIT cauta_sau_creeaza_partener ===', 'IMPORT_PARTENERI');
|
||||
|
||||
RETURN v_id_part;
|
||||
p_id_partener := v_id_part;
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
g_last_error := 'ERROR NEASTEPTAT in cauta_sau_creeaza_partener: ' || SQLERRM;
|
||||
RETURN -1;
|
||||
p_id_partener := -1;
|
||||
|
||||
END cauta_sau_creeaza_partener;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user