Import parteneri: coduri fiscale/CNP invalide se salveaza gol, partenerii straini nu se valideaza romaneste

This commit is contained in:
2026-08-02 10:02:31 +03:00
parent da0fb555d7
commit 349130c369
6 changed files with 291 additions and 25 deletions

View File

@@ -272,7 +272,7 @@ DEFINE CLASS form1 AS form
* Completez id_part
Local lcBanca, lcCod_fiscal, lcCont_Banca, lcCorespDel, lcDenumire, lcIdString, lcId_categ_ent
Local lcId_loc_inreg, lcId_util, lcMesaj, lcMotiv_inactiv, lcNume, lcPrefix, lcPrenume, lcReg_comert
Local lcSql, lcSqlInsert, lcSufix, lcTip_persoana, lcinactiv, lnSucces
Local lcSql, lcSqlInsert, lcSufix, lcTip_persoana, lcinactiv, lnSucces, lcCodValid, lnTip_persoana, lcCodTara
Local lcAdresa, lcAdreseParteneri, lcApart, lcBloc, lcCaleImport, lcCod, lcCodpostal, lcDA_apare
Local lcDenumire_adresa, lcEmail, lcEtaj, lcFax, lcFile, lcIdPart, lcId_Judet, lcId_loc, lcId_tara
Local lcItem1, lcItem2, lcItem3, lcItem4, lcJudet, lcJudetBucuresti, lcLocalitate, lcNumar
@@ -401,29 +401,24 @@ DEFINE CLASS form1 AS form
***************************
lcCod=Alltrim(Upper(Nvl(m.lcCod_fiscal,"")))
lcTip_persoana="2" && 1 = juridica, 2 = fizica
* Prefer persoanele fizice pentru ca sunt mai multe fata de persoanele juridice
* Sunt multe persoane fizice cu CNP-uri gresite
* Prefer persoanele fizice pentru ca sunt mai multe fata de persoanele juridice.
* Sunt multe persoane fizice cu CNP-uri gresite (lungime gresita sau cifra de control gresita).
* GetCodFiscalValid curata si valideaza codul; daca este invalid intoarce sir gol,
* deci partenerul se salveaza in ROA FARA cod fiscal si nu mai da erori la D394/D406.
If !Empty(m.lcCod)
If Left(lcCod,2)="RO"
lcCod=Substr(m.lcCod,3)
lcTip_persoana="1"
ENDIF
IF ISALPHA(m.lcCod)
lcTip_persoana="1"
ENDIF
If Len(m.lcCod)=13 And Isdigit(m.lcCod)
If !cValidCNP(m.lcCod)
* daca CNP invalid, sterg CNP, sa nu dea eroare la D406
lcCod_fiscal = ''
Endif
ELSE
* PJ din ROMANIA au coduri fiscale intre 2-10 cifre
* Exista si PJ din alte tari care pot avea coduri fiscale cu alt numar de cifre, dar sunt exceptii
If Len(m.lcCod)>=2 And Len(m.lcCod)<=10 And Isdigit(m.lcCod)
lcTip_persoana="1"
Endif
Endif
lnTip_persoana = 0
lcCodTara = Alltrim(Upper(Nvl(cod_tara, "")))
lcCodValid = GetCodFiscalValid(m.lcCod, @lnTip_persoana, m.lcCodTara)
Do Case
Case !Empty(m.lcCodValid)
lcCod_fiscal = m.lcCodValid
lcTip_persoana = Iif(m.lnTip_persoana = 1, "1", "2")
Otherwise
* numeric dar invalid (12/14/15 cifre, cifra de control gresita): sterg codul
Thisform.trace('Cod fiscal invalid, se salveaza gol: [' + m.lcCod + '] ' + Alltrim(m.lcDenumire))
lcCod_fiscal = ''
lcTip_persoana = "2"
Endcase
ENDIF
IF m.lcTip_Persoana = "2"
lnPos = At(' ', m.lcNume)