diff --git a/api/database-scripts/05_pack_import_parteneri.pck b/api/database-scripts/05_pack_import_parteneri.pck index 6fe66a2..28b94c9 100644 --- a/api/database-scripts/05_pack_import_parteneri.pck +++ b/api/database-scripts/05_pack_import_parteneri.pck @@ -7,6 +7,8 @@ CREATE OR REPLACE PACKAGE PACK_IMPORT_PARTENERI AS -- 02.04.2026 - parser adrese: extrage APARTAMENT/SCARA/ETAJ embedded in strada (fix "Nr17 apartament 8") -- 02.04.2026 - fallback cautare PF cu permutari nume (evita duplicate la swap firstname/lastname) -- 06.04.2026 - eliminat TIER 2 cautare adresa (judet+loc fara strada) — creeaza adresa noua cand strada difera + -- 06.04.2026 - fix strip_diacritics: UNISTR encoding-safe (TRANSLATE cu UTF-8 literal se corupea pe Windows) + -- 06.04.2026 - fix TIER 1: strip_diacritics si pe localitate (nu doar strada) -- ==================================================================== -- CONSTANTS @@ -160,15 +162,23 @@ END PACK_IMPORT_PARTENERI; CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS -- 01.04.2026 - strip_diacritics la stocare adrese si parteneri + -- 06.04.2026 - fix: UNISTR encoding-safe (TRANSLATE cu UTF-8 literal se corupea pe Windows sqlplus) + -- Hybrid: REPLACE comma-below Ș/Ț → cedilla Ş/Ţ, apoi CONVERT US7ASCII (strips Ă/Â/Î/Ş/Ţ) FUNCTION strip_diacritics(p_text IN VARCHAR2) RETURN VARCHAR2 IS BEGIN IF p_text IS NULL THEN RETURN NULL; END IF; - RETURN TRANSLATE( - UPPER(TRIM(p_text)), - 'ĂăÂâÎîȘșȚțŞşŢţ', - 'AAAAIISSTTSSTT' + RETURN CONVERT( + UPPER(TRIM( + REPLACE(REPLACE(REPLACE(REPLACE( + p_text, + UNISTR('\0218'), UNISTR('\015E')), -- Ș → Ş (comma-below → cedilla) + UNISTR('\0219'), UNISTR('\015F')), -- ș → ş + UNISTR('\021A'), UNISTR('\0162')), -- Ț → Ţ + UNISTR('\021B'), UNISTR('\0163')) -- ț → ţ + )), + 'US7ASCII', 'AL32UTF8' ); END strip_diacritics; @@ -933,14 +943,15 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS v_etaj); -- 01.04.2026 - cautare adresa pe strada + diacritics + id_loc validation - -- TIER 1: county + city + street (diacritics normalized) + valid id_loc + -- 06.04.2026 - strip_diacritics si pe localitate (fix: 'FĂLTICENI' vs 'FALTICENI') + -- TIER 1: county + city + street (all diacritics normalized) + valid id_loc begin select id_adresa into p_id_adresa from ( select id_adresa from vadrese_parteneri where id_part = p_id_part - and judet = v_judet - and localitate = v_localitate + and strip_diacritics(judet) = strip_diacritics(v_judet) + and strip_diacritics(localitate) = strip_diacritics(v_localitate) and strip_diacritics(strada) = strip_diacritics(v_strada) and id_loc IS NOT NULL order by principala desc, id_adresa desc @@ -963,14 +974,14 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS v_id_judet := N_ID_JUD_DEFAULT; end; - -- caut localitatea + -- caut localitatea (strip_diacritics pe ambele parti — fix encoding mismatch) begin select id_loc, id_judet, id_tara into v_id_localitate, v_id_judet, v_id_tara from (select id_loc, id_judet, id_tara, rownum rn from syn_nom_localitati l where id_judet = v_id_judet - and localitate = v_localitate + and strip_diacritics(localitate) = strip_diacritics(v_localitate) and inactiv = 0 and sters = 0 order by localitate)