sync SVN r18038

This commit is contained in:
2026-08-23 10:29:05 +03:00
parent 2b695b3656
commit 887ac9faec
8 changed files with 1519 additions and 362 deletions

View File

@@ -4772,7 +4772,7 @@ Function verifica_partener_show_info
*** tcMesajIntrebare: IN, optional, daca se intreaba ceva la sfarsitul formularului (ex: Se completeaza datele in formularul partener nou?)
Local lcCodFiscal, lcDenumire, lcText, llCodRO, llPlatitorTVAMfin, llPlatitorTVAVIES, lnDialogType
Local lnRaspuns, loPartener, lcProvenienta, lcPerioade
Local lnRaspuns, loPartener, lcSursaPrefix, llAtentie, lcTVA, lcStareFirma, lcIdent, lcMesajAnaf
lcCodFiscal = Transform(m.tcCodFiscal)
lcDenumire = Transform(m.tcDenumire)
@@ -4784,50 +4784,68 @@ Function verifica_partener_show_info
llTvaIncasare = loPartener.tvaincasare
llSplitTVA = loPartener.splittva
llInactiv = loPartener.inactiv
*!* 01.08.2026 marius.mutu: marcaj explicit al sursei (ANAF live / cache), nu doar pe randurile din cache
lcProvenienta = ''
llAtentie = ((m.llPlatitorTVAMfin And !m.llCodRO) Or (!m.llPlatitorTVAMfin And m.llCodRO)) Or m.llInactiv
*!* 22.08.2026 marius.mutu: marcaj explicit al sursei (ANAF live / cache), ca prefix pe linia denumirii
lcSursaPrefix = ''
If Pemstatus(m.loPartener, 'sursa', 5) And !Empty(Alltrim(Nvl(loPartener.sursa, '')))
lcProvenienta = Iif(Alltrim(Nvl(loPartener.sursa, '')) == 'ANAF', '(sursa: ANAF)', ;
'(sursa: CACHE ' + Dtoc(Nvl(loPartener.data_sursa, Date())) + Iif(Alltrim(Nvl(loPartener.sursa, '')) == 'CACHE_INDISP', ', ANAF indisponibil', '') + ')')
lcSursaPrefix = Iif(Alltrim(Nvl(loPartener.sursa, '')) == 'ANAF', 'ANAF: ', ;
'CACHE ' + Dtoc(Nvl(loPartener.data_sursa, Date())) + Iif(Alltrim(Nvl(loPartener.sursa, '')) == 'CACHE_INDISP', ' (ANAF indisponibil)', '') + ': ')
Endif
*!* 22.08.2026 marius.mutu: perioadele ANAF, doar cele completate (traseul mfinante.ro nu le are)
lcPerioade = ''
*!* 22.08.2026 marius.mutu: mesaj grupat pe sectiuni TVA/STARE FIRMA/IDENTIFICARE, fara campuri goale
lcMesajAnaf = Iif(!Empty(Alltrim(Nvl(loPartener.stare, ''))), 'Mesaj ANAF: ' + Alltrim(loPartener.stare) + crlf, '')
lcTVA = Iif(m.llPlatitorTVAMfin, "Platitor TVA: DA (la " + Alltrim(loPartener.datatvamfin) + ")", "Platitor TVA: NU") + crlf
lcStareFirma = 'Inactiv: ' + Iif(m.llInactiv, 'DA', 'NU') + crlf
If Pemstatus(m.loPartener, 'data_inceput_scptva', 5)
If !Empty(Nvl(loPartener.data_inceput_scptva, {}))
lcPerioade = m.lcPerioade + 'Perioada TVA: ' + Dtoc(loPartener.data_inceput_scptva) + ' - ' + ;
lcTVA = m.lcTVA + 'Perioada TVA: ' + Dtoc(loPartener.data_inceput_scptva) + ' - ' + ;
Iif(Empty(Nvl(loPartener.data_sfarsit_scptva, {})), 'in vigoare', Dtoc(loPartener.data_sfarsit_scptva)) + ;
Iif(Empty(Nvl(loPartener.data_anul_imp_scptva, {})), '', ' (anulare din oficiu: ' + Dtoc(loPartener.data_anul_imp_scptva) + ')') + crlf
Endif
lcTVA = m.lcTVA + m.lcMesajAnaf + 'TVA la incasare: ' + Iif(m.llTvaIncasare, 'DA', 'NU') + crlf
If !Empty(Nvl(loPartener.data_inceput_tvainc, {}))
lcPerioade = m.lcPerioade + 'Perioada TVA la incasare: ' + Dtoc(loPartener.data_inceput_tvainc) + ' - ' + ;
lcTVA = m.lcTVA + 'Perioada TVA la incasare: ' + Dtoc(loPartener.data_inceput_tvainc) + ' - ' + ;
Iif(Empty(Nvl(loPartener.data_sfarsit_tvainc, {})), 'in vigoare', Dtoc(loPartener.data_sfarsit_tvainc)) + crlf
Endif
lcTVA = m.lcTVA + 'Split TVA: ' + Iif(m.llSplitTVA, 'DA', 'NU') + crlf
If !Empty(Nvl(loPartener.data_inactivare, {}))
lcPerioade = m.lcPerioade + 'Inactivare: ' + Dtoc(loPartener.data_inactivare) + ;
lcStareFirma = m.lcStareFirma + 'Inactivare: ' + Dtoc(loPartener.data_inactivare) + ;
Iif(Empty(Nvl(loPartener.data_reactivare, {})), '', ' Reactivare: ' + Dtoc(loPartener.data_reactivare)) + crlf
Endif
Else
lcTVA = m.lcTVA + m.lcMesajAnaf + 'TVA la incasare: ' + Iif(m.llTvaIncasare, 'DA', 'NU') + crlf + ;
'Split TVA: ' + Iif(m.llSplitTVA, 'DA', 'NU') + crlf
Endif
lcIdent = ''
If !Empty(loPartener.adresa)
lcIdent = m.lcIdent + 'Adresa: ' + Alltrim(loPartener.adresa) + crlf
Endif
If !Empty(loPartener.judet)
lcIdent = m.lcIdent + 'Judet: ' + loPartener.judet + crlf
Endif
If !Empty(loPartener.regcom)
lcIdent = m.lcIdent + 'Reg. comertului: ' + loPartener.regcom + crlf
Endif
If !Empty(loPartener.codpostal)
lcIdent = m.lcIdent + 'Cod postal: ' + loPartener.codpostal + crlf
Endif
If !Empty(loPartener.telefon)
lcIdent = m.lcIdent + 'Telefon: ' + loPartener.telefon + crlf
Endif
If !Empty(loPartener.fax)
lcIdent = m.lcIdent + 'Fax: ' + loPartener.fax + crlf
Endif
lcText = 'VERIFICARE CIF: ' + m.lcCodFiscal + ' ' + m.lcDenumire + crlf + crlf + ;
Alltrim(loPartener.firma) + crlf + ;
Iif(!Empty(m.lcProvenienta), m.lcProvenienta + crlf, '') + ;
Iif((m.llPlatitorTVAMfin And !m.llCodRO) Or (!m.llPlatitorTVAMfin And m.llCodRO), ' *** ATENTIE *** ', '') + ;
Iif(m.llPlatitorTVAMfin, "PLATITOR TVA (" + Alltrim(loPartener.datatvamfin) + ")", "NEPLATITOR TVA") + crlf + ;
'Stare: ' + Alltrim(loPartener.stare) + crlf + ;
'TVA Incasare: ' + Iif(m.llTvaIncasare, 'DA', 'NU') + crlf + ;
'Split TVA: ' + Iif(m.llSplitTVA, 'DA', 'NU') + crlf + ;
'Inactiv: ' + Iif(m.llInactiv, 'DA *** ATENTIE!', 'NU') + crlf + ;
m.lcPerioade + ;
'----------------------------------------------------' + crlf + ;
'* Adresa: ' + Alltrim(loPartener.adresa) + crlf + ;
'* Judet: ' + loPartener.judet + crlf + ;
'* Nr. inregistrare la Registrul Comertului: ' + loPartener.regcom + crlf + ;
'* Cod Postal: ' + loPartener.codpostal + crlf + ;
'* Telefon: ' + loPartener.telefon + crlf + ;
'* Fax: ' + loPartener.fax + crlf + ;
Iif(!Empty(loPartener.eroare), Alltrim(loPartener.eroare) + crlf, '') + ;
'----------------------------------------------------' + crlf + crlf + ;
m.lcSursaPrefix + Alltrim(loPartener.firma) + crlf + ;
Iif(m.llAtentie, ' *** ATENTIE *** ' + crlf, '') + crlf + ;
'--- TVA ---' + crlf + m.lcTVA + crlf + ;
Iif(!Empty(m.lcStareFirma), '--- STARE FIRMA ---' + crlf + m.lcStareFirma + crlf, '') + ;
Iif(!Empty(m.lcIdent), '--- IDENTIFICARE ---' + crlf + m.lcIdent + crlf, '') + ;
Iif(!Empty(loPartener.eroare), Alltrim(loPartener.eroare) + crlf + crlf, '') + ;
Iif(!Empty(m.tcMesajIntrebare), m.tcMesajIntrebare + crlf + crlf + crlf, "")
lnRaspuns = amessagebox(lcText, m.lnDialogType, _Screen.Caption)
@@ -4841,20 +4859,13 @@ Function GetMeniuVerificareCodFiscal
llVerificareCod = Type('tcCodFiscal') = 'C' And !Empty(m.tcCodFiscal)
lcMeniuOptiuniAnte = Iif(Type('tcOptiuniMeniuAnte') = 'C' And !Empty(m.tcOptiuniMeniuAnte), Alltrim(m.tcOptiuniMeniuAnte), '')
*!* 22.08.2026 marius.mutu: meniu scurtat, un raspuns ANAF acopera toate verificarile separate de mai jos
lcMenu = lcMeniuOptiuniAnte + ;
Iif(!m.llVerificareCod, "\", "") + "Verificare ANAF (automat);" + ;
Iif(!m.llVerificareCod, "\", "") + "VERIFICARE ANAF;" + ;
Iif(!m.llVerificareCod, "\", "") + "VERIFICARE VIES;" + ;
"ISTORIC VERIFICARI COD FISCAL;" + ;
"\-;" + ;
Iif(!m.llVerificareCod, "\", "") + "Verificare MFINANTE (manual);" + ;
"\-;" + ;
Iif(!m.llVerificareCod, "\", "") + "Verificare Registru inactivi ANAF (manual);" + ;
"\-;" + ;
Iif(!m.llVerificareCod, "\", "") + "Verificare Registru TVA Incasare (automat);" + ;
Iif(!m.llVerificareCod, "\", "") + "Verificare Registru TVA Incasare (manual);" + ;
"\-;" + ;
Iif(!m.llVerificareCod, "\", "") + "Verificare VIES (automat);" + ;
Iif(!m.llVerificareCod, "\", "") + "Verificare VIES (manual);" + ;
"\-;" + ;
"Istoric verificari cod fiscal"
Iif(!m.llVerificareCod, "\", "") + "DESCHIDE FISA PE MFINANTE.RO"
Return m.lcMenu
Endfunc
@@ -4867,14 +4878,11 @@ Function GetOptiuneVerificareCodFiscal
lnOptiune = Iif(Type('tnOptiune') = 'N', m.tnOptiune, 0)
*!* 22.08.2026 marius.mutu: numerotare pe meniul scurtat (1 ANAF, 2 VIES, 3 ISTORIC, 5 MFINANTE.RO)
lcTipVerificare = Iif(m.lnOptiune = 1, 'ANAF_SERVICIU_WEB', ;
Iif(m.lnOptiune = 3, 'MFIN_MANUAL_COD', ;
Iif(m.lnOptiune = 5, 'ANAF_MANUAL_COD', ;
Iif(m.lnOptiune = 7, 'RTVAI_AUTO_COD', ;
Iif(m.lnOptiune = 8, 'RTVAI_MANUAL_COD', ;
Iif(m.lnOptiune = 10, 'VIES_AUTO', ;
Iif(m.lnOptiune = 11, 'VIES_MANUAL', ;
Iif(m.lnOptiune = 13, 'ISTORIC', ''))))))))
Iif(m.lnOptiune = 2, 'VIES_AUTO', ;
Iif(m.lnOptiune = 3, 'ISTORIC', ;
Iif(m.lnOptiune = 5, 'MFIN_MANUAL_COD', ''))))
Return m.lcTipVerificare
Endfunc

View File

@@ -958,6 +958,10 @@ Define Class VerificareCod As Custom
If Type("This.oHTTP") <> "O" && la prima apelare a verificarii MFIN
If This.lXMLHTTP
This.oHTTP = Createobject("winhttp.winhttprequest.5.1")
Try
This.oHTTP.SetTimeouts(5000, 5000, 10000, 15000)
Catch To loEx
Endtry
Else
This.oHTTP = Createobject("InternetExplorer.Application")
This.oHTTP.Visible = .F.
@@ -1174,6 +1178,10 @@ Define Class VerificareCod As Custom
Try
*!* loHTTP = Createobject("MSXML2.ServerXMLHTTP")
loHTTP = Createobject("winhttp.winhttprequest.5.1")
Try
loHTTP.SetTimeouts(5000, 5000, 10000, 20000)
Catch To loEx
Endtry
loHTTP.Open("GET", lcRomfastURL, .F.)
loHTTP.Send()
lnStatus = loHTTP.Status
@@ -1236,9 +1244,16 @@ Define Class VerificareCod As Custom
*!* 15.03.2010 ^
ENDIF && .F.
Try
*!* 23.08.2026 marius.mutu: text/xml (nu urlencoded) - serviciul VIES da 400 pe content-type gresit
lcViesURL = "https://ec.europa.eu/taxation_customs/vies/services/checkVatService"
loHTTP = Createobject("winhttp.winhttprequest.5.1")
loHTTP.Open("POST", "http://ec.europa.eu/taxation_customs/vies/services/checkVatService", .F.)
loHTTP.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
*!* 23.08.2026 marius.mutu: timeout, altfel apelul blocheaza formularul la nesfarsit daca serviciul nu raspunde
Try
loHTTP.SetTimeouts(5000, 5000, 10000, 20000)
Catch To loEx
Endtry
loHTTP.Open("POST", m.lcViesURL, .F.)
loHTTP.setRequestHeader('Content-Type', 'text/xml; charset=utf-8')
TEXT TO lcValues NOSHOW TEXTMERGE
<s:Envelope xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'>
@@ -1249,20 +1264,21 @@ Define Class VerificareCod As Custom
</checkVat>
</s:Body>
</s:Envelope>
ENDTEXT
ENDTEXT
loHTTP.Send(lcValues)
lnStatus = loHTTP.Status
If lnStatus = 200 && OK
If lnStatus = 200 && OK
lcXML = loHTTP.responseText
llPlatitorTVA = (STREXTRACT(m.lcXML, [<valid>],[</valid>],1,1) = 'true') && true/false
lcFirma = STRTRAN(STREXTRACT(m.lcXML, [<name>],[</name>],1,1), '-','',1,10,1)
lcAdresa = STRTRAN(STREXTRACT(m.lcXML, [<address>],[</address>],1,1), '-','',1,10,1)
*!* 23.08.2026 marius.mutu: raspunsul are prefix de namespace (ns2:valid, ns2:name...) - delimitatorii vechi <valid> nu se mai potriveau
llPlatitorTVA = (STREXTRACT(m.lcXML, [valid>],[<],1,1) = 'true') && true/false
lcFirma = STRTRAN(STREXTRACT(m.lcXML, [name>],[<],1,1), '-','',1,10,1)
lcAdresa = STRTRAN(STREXTRACT(m.lcXML, [address>],[<],1,1), '-','',1,10,1)
lcAdresa = Strtran(m.lcAdresa, Chr(13) + CHR(10), ' ')
llVies = .T.
llVies = .T.
Else
lcEroare = 'VERIFICARE_CIF VIES - ' + m.lcViesURL + ' eroare ' + Alltrim(Str(lnStatus))
Endif && lnStatus
Endif && lnStatus
Catch To loEx
lcEroare = 'VERIFICARE_CIF VIES ' + CRLF + loEx.Message + " " + loEx.LineContents + " " + Transform(loEx.Lineno)
This.Log(m.lcEroare)