sync SVN r18050

This commit is contained in:
2026-08-23 21:23:35 +03:00
parent 019d241e50
commit 6b77d210ab
3 changed files with 65 additions and 8 deletions

View File

@@ -2639,6 +2639,15 @@ DEFINE CLASS frm_firme_nou AS _frmbase OF "_frm_base.vcx"
poRec.reg_comert = Alltrim(Nvl(loPartener.regcom, ""))
poRec.adresa = Alltrim(Nvl(loPartener.adresa, ""))
*** CAEN-ul si revizia se completeaza doar daca ANAF le-a trimis: raspunsul servit din
*** cache nu are cod_CAEN (nu e salvat in istoric_coduri_fiscale), iar revizia se poate
*** deduce doar din numarul de registru in format nou - altfel nu stergem ce era in fisa.
If Pemstatus(loPartener, "caen", 5) And !Empty(Alltrim(Nvl(loPartener.caen, "")))
poRec.caen = Alltrim(Nvl(loPartener.caen, ""))
Endif
If Pemstatus(loPartener, "caen_revizie", 5) And !Empty(Alltrim(Nvl(loPartener.caen_revizie, "")))
poRec.caen_revizie = Alltrim(Nvl(loPartener.caen_revizie, ""))
Endif
*** Judetul si localitatea se potrivesc peste nomenclator: denumirea de la ANAF poate fi
*** scrisa altfel decat in syn_vnom_*, iar formularul are nevoie de id-uri, nu de text.
lcNepotrivit = ""

View File

@@ -170,6 +170,7 @@ diferit de metoda `goExport.export_xls`, doar nume identic.
| VerificareCod (clasa) | validare completa cu webservice: metode VERIFICARE_CIF/VERIFICARE_CNP/ANAF/MFIN/VIES/validare/GetError | 169 |
| VerificareANAF (clasa) | sincronizare lista CIF-uri cu ANAF (VerificaListaCIF, ANAF_SincronWebService_PlatitorTva) | 26 |
| ParseAdresaAnaf / FaraPrefixLoc (VerificareANAF) | sparge adresa ANAF in judet/localitate/strada/nr/bloc/scara/etaj/apart; FaraPrefixLoc taie prefixul administrativ (JUD./MUN./ORS./COM./SAT, plus formele intregi MUNICIPIUL/JUDETUL - pe Bucuresti ANAF trimite "MUNICIPIUL BUCURESTI") pastrand denumirea intreaga. ORASUL/COMUNA/SATUL NU se taie: exista localitati care incep asa (ORASUL NOU). | - |
| CaenAnaf / CaenRevizie (VerificareANAF) | CaenAnaf normalizeaza codul CAEN primit de la ANAF: vine NUMERIC, deci codurile din agricultura pierd zeroul din fata (0141 ajunge 141) - se completeaza inapoi la 4 cifre; intoarce '' pentru valori neplauzibile. CaenRevizie deduce revizia CAEN din formatul numarului de la Registrul Comertului: firmele obligate sa isi actualizeze codul CAEN la revizia 3 au primit atunci si numar in formatul nou, fara '/' (J2017000999304), deci format nou <=> revizia 3; formatul vechi intoarce '' si lasa valoarea din fisa neatinsa. | - |
| test_cif / VALIDARE_CIF / test_cnp / VALIDARE_CNP | validari format + cifra control, offline | 27/19/9/15 |
| VERIFICARE_PLATITORTVA / VIES_VAT / ONRC | platitor TVA / verificare VIES / interogare ONRC | 5/5/9 |
| IntroducereCod (clasa Form) | formular introducere + validare cod | 25 |

View File

@@ -671,6 +671,8 @@ Define Class VerificareCod As Custom
lcAdresa = ''
lcJudet = ''
lcRegCom = ''
lcCaen = ''
lcCaenRevizie = ''
lcCodpostal = ''
lcTelefon = ''
lcFax = ''
@@ -695,7 +697,7 @@ Define Class VerificareCod As Custom
Store {} To ldInceputScpTva, ldSfarsitScpTva, ldAnulImpScpTva, ldInceputTvaInc, ldSfarsitTvaInc, ldInactivare, ldReactivare
Create Cursor cVerificareCod (Valid L, eroare c(250), cod V(100) Null, firma V(100), adresa V(250), judet V(100), ;
regcom V(30), codpostal V(20), telefon V(30), fax V(30), datatvamfin V(30), platitortvamfin L, VIES L, PlatitorTVA L, ;
regcom V(30), caen V(10), caen_revizie V(1), codpostal V(20), telefon V(30), fax V(30), datatvamfin V(30), platitortvamfin L, VIES L, PlatitorTVA L, ;
stare V(100), strada V(100), nr V(25), localitate V(100), Bloc V(30), Scara V(10), Etaj V(10), Apart V(20), ;
tvaincasare L, splittva L, inactiv L, sursa C(20), data_sursa D, ;
data_inceput_scptva D, data_sfarsit_scptva D, data_anul_imp_scptva D, data_inceput_tvainc D, data_sfarsit_tvainc D, data_inactivare D, data_reactivare D)
@@ -722,6 +724,9 @@ Define Class VerificareCod As Custom
lcAdresa = loMFIN.adresa
lcJudet = loMFIN.judet
lcRegCom = loMFIN.regcom
*!* 23.08.2026 marius.mutu: cod_CAEN vine doar de la ANAF; pe traseul mfinante.ro ramane gol
lcCaen = Iif(Pemstatus(loMFIN, 'caen', 5), Alltrim(Nvl(loMFIN.caen, '')), '')
lcCaenRevizie = Iif(Pemstatus(loMFIN, 'caen_revizie', 5), Alltrim(Nvl(loMFIN.caen_revizie, '')), '')
lcCodpostal = loMFIN.codpostal
lcTelefon = loMFIN.telefon
lcFax = loMFIN.fax
@@ -800,9 +805,9 @@ Define Class VerificareCod As Custom
lcStrada = This.RemoveCharacters(m.lcStrada)
TRY
Insert Into cVerificareCod(Valid, eroare, cod, firma, adresa, judet, regcom, codpostal, telefon, fax, datatvamfin, platitortvamfin, VIES, PlatitorTVA, stare, strada, nr, localitate, bloc, scara, etaj, apart, tvaincasare, splittva, inactiv, sursa, data_sursa, ;
Insert Into cVerificareCod(Valid, eroare, cod, firma, adresa, judet, regcom, caen, caen_revizie, codpostal, telefon, fax, datatvamfin, platitortvamfin, VIES, PlatitorTVA, stare, strada, nr, localitate, bloc, scara, etaj, apart, tvaincasare, splittva, inactiv, sursa, data_sursa, ;
data_inceput_scptva, data_sfarsit_scptva, data_anul_imp_scptva, data_inceput_tvainc, data_sfarsit_tvainc, data_inactivare, data_reactivare) ;
Values (m.llValid, Left(m.lcEroare, 250), m.lcVerificareCod, m.lcFirma, m.lcAdresa, m.lcJudet, m.lcRegCom, m.lcCodpostal, m.lcTelefon, m.lcFax, m.lcDataTVAMFIN, m.llPlatitorTVAMFIN, m.llVies, m.llPlatitorTVA, m.lcStare, m.lcStrada, m.lcNr, m.lcLocalitate, m.lcBloc, m.lcscara, m.lcetaj, m.lcapart, m.llTVAIncasare, m.llSplitTVA, m.llInactiv, m.lcSursa, m.ldDataSursa, ;
Values (m.llValid, Left(m.lcEroare, 250), m.lcVerificareCod, m.lcFirma, m.lcAdresa, m.lcJudet, m.lcRegCom, m.lcCaen, m.lcCaenRevizie, m.lcCodpostal, m.lcTelefon, m.lcFax, m.lcDataTVAMFIN, m.llPlatitorTVAMFIN, m.llVies, m.llPlatitorTVA, m.lcStare, m.lcStrada, m.lcNr, m.lcLocalitate, m.lcBloc, m.lcscara, m.lcetaj, m.lcapart, m.llTVAIncasare, m.llSplitTVA, m.llInactiv, m.lcSursa, m.ldDataSursa, ;
m.ldInceputScpTva, m.ldSfarsitScpTva, m.ldAnulImpScpTva, m.ldInceputTvaInc, m.ldSfarsitTvaInc, m.ldInactivare, m.ldReactivare)
Select cVerificareCod
@@ -883,6 +888,8 @@ Define Class VerificareCod As Custom
loMFIN.adresa = adresa
loMFIN.judet = judet
loMFIN.regcom = nrregcom
loMFIN.caen = Nvl(caen, '')
loMFIN.caen_revizie = Nvl(caen_revizie, '')
loMFIN.codpostal = ''
loMFIN.telefon = ''
loMFIN.fax = ''
@@ -1633,6 +1640,9 @@ Define Class VerificareCod As Custom
AddProperty(loMFIN, "Adresa", "")
AddProperty(loMFIN, "Judet", "")
AddProperty(loMFIN, "Regcom", "")
*!* 23.08.2026 marius.mutu: cod_CAEN de la ANAF + revizia dedusa din formatul numarului de registru
AddProperty(loMFIN, "caen", "")
AddProperty(loMFIN, "caen_revizie", "")
AddProperty(loMFIN, "codpostal", "")
AddProperty(loMFIN, "telefon", "")
AddProperty(loMFIN, "fax", "")
@@ -2383,7 +2393,7 @@ Define Class VerificareANAF As Custom
lcAlias = Iif(!Empty(m.tcAlias) And Type('tcAlias') = "C", m.tcAlias, "crsANAF")
If !Used(m.lcAlias)
Create Cursor (m.lcAlias) (cui N(13), data D, denumire V(100), firma V(100), adresa C(244), nrRegCom C(30), scpTVA L, data_inceput_ScpTVA D, data_sfarsit_ScpTVA D, data_anul_imp_ScpTVA D, mesaj_ScpTVA C(244), ;
Create Cursor (m.lcAlias) (cui N(13), data D, denumire V(100), firma V(100), adresa C(244), nrRegCom C(30), caen C(10), caen_revizie C(1), scpTVA L, data_inceput_ScpTVA D, data_sfarsit_ScpTVA D, data_anul_imp_ScpTVA D, mesaj_ScpTVA C(244), ;
dataInceputTvaInc D, dataSfarsitTvaInc D, dataActualizareTvaInc D, dataPublicareTvaInc D, tipActTvaInc C(100), statusTvaIncasare L, dataInactivare D, dataReactivare D, dataPublicare D, dataRadiere D, statusInactivi L, ;
dataInceputSplitTVA D, dataAnulareSplitTVA D, statusSplitTVA L, ;
tva L, tvaincasare L, splittva L, inactiv L, ;
@@ -2429,8 +2439,11 @@ Define Class VerificareANAF As Custom
loDate.etaj = loAdresa.etaj
loDate.apart = loAdresa.apart
loDate.nrRegCom = IIF(TYPE('loDateGenerale.nrRegCom') <> 'U', loDateGenerale.nrRegCom, '')
ENDIF
loDate.nrRegCom = IIF(TYPE('loDateGenerale.nrRegCom') <> 'U', loDateGenerale.nrRegCom, '')
*!* 23.08.2026 marius.mutu: cod_CAEN vine numeric, fara zeroul din fata (0141 ajunge 141) - il aducem inapoi la 4 cifre
loDate.caen = This.CaenAnaf(IIF(TYPE('loDateGenerale.cod_CAEN') <> 'U', loDateGenerale.cod_CAEN, ''))
loDate.caen_revizie = This.CaenRevizie(loDate.nrRegCom)
ENDIF
IF TYPE('loRec.inregistrare_scop_tva') = 'O'
loInregistrareTVA = loRec.inregistrare_scop_tva
@@ -2534,7 +2547,7 @@ Define Class VerificareANAF As Custom
lcAlias = Iif(!Empty(m.tcAlias) And Type('tcAlias') = "C", m.tcAlias, "crsANAF")
If !Used(m.lcAlias)
Create Cursor (m.lcAlias) (cui N(13), data D, denumire V(100), firma V(100), adresa C(244), nrRegCom C(30), scpTVA L, data_inceput_ScpTVA D, data_sfarsit_ScpTVA D, data_anul_imp_ScpTVA D, mesaj_ScpTVA C(244), ;
Create Cursor (m.lcAlias) (cui N(13), data D, denumire V(100), firma V(100), adresa C(244), nrRegCom C(30), caen C(10), caen_revizie C(1), scpTVA L, data_inceput_ScpTVA D, data_sfarsit_ScpTVA D, data_anul_imp_ScpTVA D, mesaj_ScpTVA C(244), ;
dataInceputTvaInc D, dataSfarsitTvaInc D, dataActualizareTvaInc D, dataPublicareTvaInc D, tipActTvaInc C(100), statusTvaIncasare L, dataInactivare D, dataReactivare D, dataPublicare D, dataRadiere D, statusInactivi L, ;
dataInceputSplitTVA D, dataAnulareSplitTVA D, statusSplitTVA L, ;
tva L, tvaincasare L, splittva L, inactiv L, ;
@@ -2772,6 +2785,40 @@ Define Class VerificareANAF As Custom
Return m.lcItem
Endproc
*************************************
*** Normalizeaza codul CAEN primit de la ANAF.
*** ANAF il trimite NUMERIC, deci codurile din sectiunea agricultura pierd zeroul din fata:
*** 0141 ajunge 141, 0111 ajunge 111. Nomenclatorul CAEN are intotdeauna 4 cifre.
*** Intoarce '' pentru orice valoare care nu e un cod plauzibil (gol, 0, peste 4 cifre).
*************************************
Procedure CaenAnaf
Lparameters tuCaen
Local lcCaen
lcCaen = Alltrim(Strtran(Transform(Nvl(m.tuCaen, '')), ' ', ''))
If Empty(m.lcCaen) Or !Isdigit(m.lcCaen) Or Val(m.lcCaen) = 0 Or Len(m.lcCaen) > 4
Return ''
Endif
Return Padl(m.lcCaen, 4, '0')
Endproc
*************************************
*** Deduce revizia nomenclatorului CAEN din formatul numarului de la Registrul Comertului.
*** Firmele au fost obligate ca la prima modificare depusa sa isi actualizeze codul CAEN la
*** revizia 3 si au primit atunci si numar in formatul nou, fara '/' (ex. J2017000999304 in
*** loc de J13/626/1991). Deci format nou <=> cod CAEN in revizia 3.
*** Formatul vechi NU inseamna automat revizia 2 - firma poate avea alta revizie aleasa
*** manual - asa ca intoarce '' si lasa valoarea din formular neatinsa.
*************************************
Procedure CaenRevizie
Lparameters tcRegCom
Local lcRegCom
lcRegCom = Alltrim(Nvl(m.tcRegCom, ''))
If Empty(m.lcRegCom) Or '/' $ m.lcRegCom
Return ''
Endif
Return '3'
Endproc
*************************************
*** Parcurge un cursor in forma crsANAF si salveaza fiecare rand in ISTORIC_CODURI_FISCALE
*** prin pack_parteneri.save_istoric_cod_fiscal (26 parametri); commit din 100 in 100 si la final
@@ -2880,7 +2927,7 @@ Define Class VerificareANAF As Custom
If !Used(m.lcAlias)
*!* 31.07.2026 marius.mutu: aceeasi forma ca crsANAF din ParseJsonANAFv8 - Null pe cele 9 campuri de data muta problema in ParseJsonANAFv8 (SCATTER/aritmetica pe date); NULL-ul din Oracle e tratat cu Nvl la Insert Into, mai jos
Create Cursor (m.lcAlias) (cui N(13), data D, denumire V(100), firma V(100), adresa C(244), nrRegCom C(30), scpTVA L, data_inceput_ScpTVA D, data_sfarsit_ScpTVA D, data_anul_imp_ScpTVA D, mesaj_ScpTVA C(244), ;
Create Cursor (m.lcAlias) (cui N(13), data D, denumire V(100), firma V(100), adresa C(244), nrRegCom C(30), caen C(10), caen_revizie C(1), scpTVA L, data_inceput_ScpTVA D, data_sfarsit_ScpTVA D, data_anul_imp_ScpTVA D, mesaj_ScpTVA C(244), ;
dataInceputTvaInc D, dataSfarsitTvaInc D, dataActualizareTvaInc D, dataPublicareTvaInc D, tipActTvaInc C(100), statusTvaIncasare L, dataInactivare D, dataReactivare D, dataPublicare D, dataRadiere D, statusInactivi L, ;
dataInceputSplitTVA D, dataAnulareSplitTVA D, statusSplitTVA L, ;
tva L, tvaincasare L, splittva L, inactiv L, ;