2226 lines
80 KiB
Plaintext
2226 lines
80 KiB
Plaintext
*!* 15.03.2010
|
|
*!* marius.mutu
|
|
*!* VerificareCod.Vies - iau direct din pagina web in loc de serviciu web (nu mai merge)
|
|
|
|
*!* 07.04.2011
|
|
*!* marius.mutu
|
|
*!* adaugare verificarecod.InfoMfin2Array, ParseTable
|
|
*!* modificat Verificarecod.MFIN - alta aranjare in pagina a tabelului cu date de la mfinante.ro
|
|
*!* s-a modificat adresa de la mfinante.ro
|
|
|
|
*!* 12.04.2011
|
|
*!* marius.mutu
|
|
*!* verificarecod.validare_cif - intorc .T. pentru CIF-urile <> RO (nu am algoritm)
|
|
*!* tratare VIES alte tari din UE in afara de RO
|
|
|
|
*!* 20.01.2012
|
|
*!* marius.mutu
|
|
*!* VERIFICARE_CIF, MFIN - Taxa pe valoarea adaugata (data luarii in evidenta) + datatvamfin, platitortvamfin
|
|
|
|
*!* 27.01.2012
|
|
*!* marius.mutu
|
|
*!* VerificareCod.Init - nu mai este nevoie de tlMFINROMFAST, tlVIESROMFAST ca parametri - se citesc din settings.ini
|
|
|
|
*!* 28.11.2012
|
|
*!* marius.mutu
|
|
*!* verificare_cif, mfin - Se verifica si starea pentru un cod fiscal de pe mfinante.ro
|
|
*!* s-au adaugat proprietati pentru captcha, si o singura sesiune xmlhttp
|
|
|
|
*!* 04.12.2014
|
|
*!* marius.mutu
|
|
*!* MFIN - se foloseste GET in loc de POST - restrictii puse de MF
|
|
|
|
*!* 27.02.2017
|
|
*!* marius.mutu
|
|
*!* ANAF_SincronWebService_PlatitorTva
|
|
*!* se incearca prima oara cu inHTTP.winHTTPrequest.5.1
|
|
|
|
*!* 10.01.2018
|
|
*!* marius.mutu
|
|
*!* VerificareANAF - completare stare TVA Incasare, Split TVA, Inactiv
|
|
|
|
*!* 20.07.2020
|
|
*!* marius.mutu
|
|
*!* ANAF_SincronWebService_PlatitorTva api v4
|
|
|
|
*!* 06.01.2021
|
|
*!* marius.mutu
|
|
*!* ANAF_SincronWebService_PlatitorTva api v5 +nrRegCom
|
|
|
|
*!* 24.04.2023
|
|
*!* marius.mutu
|
|
*!* ANAF_SincronWebService_PlatitorTva api v8
|
|
|
|
*!* 19.05.2025
|
|
*!* marius.mutu
|
|
*!* ANAF_SincronWebService_PlatitorTva api v9
|
|
|
|
*!* http://ec.europa.eu/taxation_customs/vies/viesquer.do
|
|
*!* http://localhost/contafinupdate/verificarecod.aspx/verificarecod/verificare/CIF/1879855/MFIN
|
|
*!* http://localhost/contafinupdate/verificarecod.aspx/verificarecod/verificare/CNP/1810228134187
|
|
|
|
*!* http://localhost:1512/WebRoot/codfiscaldebug.aspx/verificarecod/verificare/CIF/1879855/1
|
|
|
|
*!* http://localhost/update/codfiscal.aspx/verificarecod/validare/CIF/1879855
|
|
*!* http://localhost/update/codfiscal.aspx/verificarecod/validare/CNP/1810228134187
|
|
|
|
#Define TIP_CNP 1
|
|
#Define TIP_CIF 2
|
|
#Define TIP_IBAN 3
|
|
#Define TIP_CC 4
|
|
#Define TIP_ISBN 5
|
|
#Define TIP_NIF 6
|
|
#Define CRLF Chr(13) + Chr(10)
|
|
#Define CR Chr(13)
|
|
|
|
Clear
|
|
Local lcDir, lcPath, llVIESURL, lcRomfastURL, loVerificare
|
|
Local llMFINURL, lcMfinanteURL, lcMfinanteParams, I
|
|
Local llValid, lcRegCom, llPlatitorTVA
|
|
|
|
lcDir = Addbs(Justpath(Sys(16, 0)))
|
|
lcDir = Left(lcDir, Rat('\', lcDir, 2) )
|
|
*!* MESSAGEBOX(lcDir)
|
|
Set Default To (lcDir)
|
|
lcPath = lcDir + 'controllers;' + ;
|
|
lcDir + 'programe;' + ;
|
|
lcDir + 'utility;'
|
|
|
|
Set Path To (lcPath)
|
|
Set Procedure To regex.prg Additive
|
|
|
|
*!* strPattern = "[^A-Za-z 0-9 \.,\?'""!@#\$%\^&\*\(\)-_=\+;:<>\/\\\|\}\{\[\]`~]*"
|
|
Create Cursor cTeste (test c(200), rezultat L, mesaj c(250))
|
|
|
|
If .T.
|
|
*!* TREBUIE OPTIUNI - VARIABILE PUBLICE gcVIESDotNet, gcVIESURL
|
|
|
|
lcRomfastURL = "http://localhost/update/verificarecod.aspx/verificarecod/verificare/CIF/|CIF|/|TIP|"
|
|
*!* lcMfinanteURL = "http://www.mfinante.ro/contribuabili/link.jsp?body=/cod.do"
|
|
*!* lcMfinanteURL = "http://apt1.mfinante.ro/site/contribuabili/link.jsp?body=/cod.do"
|
|
*!* lcMfinanteParams = "cod=|CIF|"
|
|
lcMfinanteURL = "http://www.mfinante.ro/infocodfiscal.html"
|
|
lcMfinanteParams = "cod=|CIF|&captcha=|CAPTCHA|&B1=VIZUALIZARE"
|
|
|
|
For I = 1 To 2
|
|
|
|
llVIESURL = I = 1
|
|
llMFINURL = I = 1
|
|
?
|
|
?'------------------------------------------'
|
|
If I = 1
|
|
?'* VERIFICARE CIF PE ROMFAST'
|
|
Else
|
|
?'* VERIFICARE PE MFINANTE SI CU DLL DIRECT PE VIES'
|
|
Endif
|
|
|
|
?
|
|
?'* ROMFAST SRL - VALIDARE', I
|
|
llValid = .T.
|
|
lcRegCom = ''
|
|
llPlatitorTVA = .F.
|
|
test_verificare_cif('1879855', '', llVIESURL, llMFINURL, lcRomfastURL, lcMfinanteURL, lcMfinanteParams, llValid, lcRegCom, llPlatitorTVA)
|
|
|
|
?
|
|
?'* ROMFAST SRL - VIES', I
|
|
llValid = .T.
|
|
lcRegCom = ''
|
|
llPlatitorTVA = .T.
|
|
test_verificare_cif('1879855', 'VIES', llVIESURL, llMFINURL, lcRomfastURL, lcMfinanteURL, lcMfinanteParams, llValid, lcRegCom, llPlatitorTVA)
|
|
|
|
?
|
|
?'* ROMFAST SRL - MFIN', I
|
|
llValid = .T.
|
|
lcRegCom = 'J13/626/1991'
|
|
llPlatitorTVA = .F.
|
|
test_verificare_cif('1879855', 'MFIN', llVIESURL, llMFINURL, lcRomfastURL, lcMfinanteURL, lcMfinanteParams, llValid, lcRegCom, llPlatitorTVA)
|
|
|
|
?
|
|
?'* ROMFAST SRL - MFINVIES', I
|
|
llValid = .T.
|
|
lcRegCom = 'J13/626/1991'
|
|
llPlatitorTVA = .T.
|
|
test_verificare_cif('1879855', 'MFINVIES', llVIESURL, llMFINURL, lcRomfastURL, lcMfinanteURL, lcMfinanteParams, llValid, lcRegCom, llPlatitorTVA)
|
|
|
|
?
|
|
?'* COD INVALID - VALIDARE', I
|
|
llValid = .F.
|
|
lcRegCom = ''
|
|
llPlatitorTVA = .F.
|
|
test_verificare_cif('187985X', 'MFINVIES', llVIESURL, llMFINURL, lcRomfastURL, lcMfinanteURL, lcMfinanteParams, llValid, lcRegCom, llPlatitorTVA)
|
|
Endfor && i
|
|
Endif
|
|
|
|
?
|
|
?'------------------------------------------'
|
|
?'* VALIDARE CIF'
|
|
loVerificare = Createobject("verificarecod")
|
|
test_cif('7320118', .T.)
|
|
test_cif('RO7320118', .T.)
|
|
test_cif('RO 7320118', .T.)
|
|
test_cif('R 7320118', .T.)
|
|
test_cif('R7320118', .T.)
|
|
test_cif('7320117', .F.)
|
|
test_cif('RO7320117', .F.)
|
|
test_cif('', .F.)
|
|
test_cif('3654392', .F.)
|
|
test_cif('14699589', .T.)
|
|
test_cif('11071295', .T.)
|
|
|
|
?
|
|
?'------------------------------------------'
|
|
?'VALIDARE CNP'
|
|
?
|
|
test_cnp('1810228134187', .T.)
|
|
test_cnp('181022813418', .F.)
|
|
|
|
Select cTeste
|
|
Browse
|
|
|
|
*!* TESTEAZA FUNCTIA DE VALIDARE CIF
|
|
Function test_cif
|
|
Lparameters tcCIF, tuValoareCorect
|
|
Local luRezultat, lcMesaj
|
|
Local luReturn
|
|
luReturn = .F.
|
|
|
|
luRezultat = VALIDARE_CIF(tcCIF)
|
|
lcMesaj = 'VALIDARE_CIF(' + tcCIF + ') ' + Transform(luRezultat) + ' (' + Transform(tuValoareCorect) + ')'
|
|
|
|
If luRezultat <> tuValoareCorect
|
|
lcMesaj = 'ERR ' + m.lcMesaj
|
|
luReturn = .F.
|
|
Else
|
|
lcMesaj = 'OK ' + m.lcMesaj
|
|
luReturn = .T.
|
|
Endif
|
|
?m.lcMesaj
|
|
If Used('cTeste')
|
|
Insert Into cTeste (test, rezultat, mesaj) Values('VALIDARE CIF', luReturn, lcMesaj)
|
|
Endif
|
|
|
|
Return luReturn
|
|
|
|
Endfunc && TEST_CIF
|
|
|
|
*!* TESTEAZA FUNCTIA DE VALIDARE CNP
|
|
Function test_cnp
|
|
Lparameters tcCNP, tuValoareCorect
|
|
Local luRezultat, lcMesaj
|
|
Local luReturn
|
|
luReturn = .F.
|
|
|
|
luRezultat = VALIDARE_CNP(tcCNP)
|
|
|
|
lcMesaj = 'VALIDARE_CNP(' + tcCNP + ') ' + Transform(luRezultat) + ' (' + Transform(tuValoareCorect) + ')'
|
|
|
|
If luRezultat <> tuValoareCorect
|
|
lcMesaj = 'ERR ' + m.lcMesaj
|
|
luReturn = .F.
|
|
Else
|
|
lcMesaj = 'OK ' + m.lcMesaj
|
|
luReturn = .T.
|
|
Endif
|
|
?m.lcMesaj
|
|
|
|
If Used('cTeste')
|
|
Insert Into cTeste (test, rezultat, mesaj) Values('VALIDARE CNP', luReturn, lcMesaj)
|
|
Endif
|
|
|
|
Return luReturn
|
|
|
|
Endfunc && TEST_CNP
|
|
|
|
*!* TESTEAZA FUNCTIA DE VERIFICARE CIF
|
|
Function test_verificare_cif
|
|
Lparameters tcCIF, tcTipInterogare, tlVIESURL, tlMFINURL, tcRomfastURL, tcMfinanteURL, tcMfinanteParams, tlValid, tcRegCom, tlPlatitorTVA
|
|
|
|
|
|
|
|
Local lcMesaj, llSucces, lcEroare
|
|
Local loVerificare, llValid, lcRegCom, llPlatitorTVA
|
|
Local lcXML, loEx As Exception
|
|
Local luReturn
|
|
luReturn = .F.
|
|
|
|
llSucces = .F.
|
|
Try
|
|
loVerificare = Createobject("verificarecod", tlVIESURL, tlMFINURL, tcRomfastURL, tcMfinanteURL, tcMfinanteParams)
|
|
lcXML = loVerificare.verificare('CIF', tcCIF, tcTipInterogare)
|
|
llValid = loVerificare.oEntitate.Valid
|
|
lcRegCom = loVerificare.oEntitate.regcom
|
|
llPlatitorTVA = loVerificare.oEntitate.PlatitorTVA
|
|
llSucces = .T.
|
|
Catch To loEx
|
|
lcEroare = loEx.Message
|
|
Endtry
|
|
|
|
If llSucces
|
|
lcMesaj = 'VERIFICARE_CIF ' + tcCIF + ' VALID: ' + Transform(llValid) + '(' + Transform(tlValid) + ')' + ;
|
|
' REGCOM: ' + Alltrim(Transform(lcRegCom)) + '(' + Transform(tcRegCom) + ')' + ;
|
|
' PLATITOR TVA: ' + Transform(llPlatitorTVA) + '(' + Transform(tlPlatitorTVA) + ')'
|
|
Else
|
|
lcMesaj = 'VERIFICARE_CIF ' + tcCIF + ' ' + lcEroare
|
|
Endif
|
|
|
|
If !llSucces Or (tlValid <> llValid Or tcRegCom <> lcRegCom Or tlPlatitorTVA <> tlPlatitorTVA)
|
|
lcMesaj = 'ERR ' + m.lcMesaj
|
|
luReturn = .F.
|
|
Else
|
|
lcMesaj = 'OK ' + m.lcMesaj
|
|
luReturn = .T.
|
|
Endif
|
|
?m.lcMesaj
|
|
|
|
If Used('cTeste')
|
|
Insert Into cTeste (test, rezultat, mesaj) Values('VERIFICARE CIF', luReturn, lcMesaj)
|
|
Endif
|
|
Return luReturn
|
|
|
|
Endfunc && TEST_VERIFICARE_CIF
|
|
|
|
|
|
*=============================
|
|
*!* verifica lungimea <= 10 caractere
|
|
|
|
|
|
*=============================
|
|
*!* VALIDARE CIF
|
|
*!* tcCIF - codul fiscal
|
|
*!* toVerificare - optional in cazul in care am multe verificari sa nu se se instantiatieze obiectul la fiecare verificare
|
|
Function VALIDARE_CIF
|
|
Lparameters tcCIF, toVerificare
|
|
Local loVerificare, lcCod, llReturn
|
|
|
|
If Type('tcCIF') <> 'C'
|
|
lcCod = ''
|
|
Else
|
|
lcCod = tcCIF
|
|
Endif
|
|
If Type('toVerificare') = 'O' And Pemstatus(toVerificare, 'VALIDARE', 5)
|
|
loVerificare = toVerificare
|
|
Else
|
|
loVerificare = Createobject("verificarecod")
|
|
Endif
|
|
|
|
|
|
llReturn = loVerificare.validare('CIF', lcCod)
|
|
Return llReturn
|
|
Endfunc && VALIDARE_CIF
|
|
|
|
|
|
*=============================
|
|
*!* VERIFICARE_PLATITORTVA
|
|
*!* tcCIF - codul fiscal
|
|
*!* toVerificare - optional in cazul in care am multe verificari sa nu se se instantiatieze obiectul la fiecare verificare
|
|
Function VERIFICARE_PLATITORTVA
|
|
Lparameters tcCIF, toVerificare
|
|
Local loVerificare, lcCod, llReturn
|
|
Local llReturn
|
|
|
|
If Type('tcCIF') <> 'C'
|
|
lcCod = ''
|
|
Else
|
|
lcCod = tcCIF
|
|
Endif
|
|
If Type('toVerificare') = 'O' And Pemstatus(toVerificare, 'VALIDARE', 5)
|
|
loVerificare = toVerificare
|
|
Else
|
|
loVerificare = Createobject("verificarecod")
|
|
Endif
|
|
|
|
|
|
llReturn = loVerificare.verificare('CIF', lcCod)
|
|
Return llReturn
|
|
Endfunc && VALIDARE_CIF
|
|
|
|
*=============================
|
|
*!* VALIDARE CNP
|
|
*!* tcCIF - CNP
|
|
*!* toVerificare - optional in cazul in care am multe verificari sa nu se se instantiatieze obiectul la fiecare verificare
|
|
Function VALIDARE_CNP
|
|
Lparameters tcCNP, toVerificare
|
|
Local loVerificare, lcCod, llReturn
|
|
|
|
If Type('tcCNP') <> 'C'
|
|
lcCod = ''
|
|
Else
|
|
lcCod = tcCNP
|
|
Endif
|
|
|
|
If Type('toVerificare') = 'O' And Pemstatus(toVerificare, 'VALIDARE', 5)
|
|
loVerificare = toVerificare
|
|
Else
|
|
loVerificare = Createobject("verificarecod")
|
|
Endif
|
|
|
|
llReturn = loVerificare.validare('CNP', lcCod)
|
|
Return llReturn
|
|
Endfunc && VALIDARE_CNP
|
|
|
|
*====================================
|
|
Define Class VerificareCod As Custom
|
|
lVIESURL = .F. && .T. ROMFAST URL, .F. DOT NET DIRECT VIES
|
|
lMFINURL = .F. && .T. ROMFAST URL, .F. www.mfinante.ro
|
|
cRomfastURL = "http://83.103.197.79:3002/contafinupdate/verificarecod.aspx/verificarecod/verificare/CIF/|CIF|/|TIP|" && url catre Romfast pentru verificare MFIN, VIES
|
|
|
|
*!* cMfinanteURL = "http://www.mfinante.ro/contribuabili/link.jsp?body=/cod.do" && url catre www.mfinante.ro
|
|
*!* cMfinanteParams = "cod=|CIF|"
|
|
|
|
cMfinanteURL = "" && "http://voes.mfinante.ro/codfiscal/codfiscal.html" && url catre www.mfinante.ro
|
|
cMfinanteParams = "" && [cod=|CIF|&cap=null&B1=VIZUALIZARE]
|
|
|
|
cMFINURL = '' && url catre Romfast pentru verificare informatii cod fiscal
|
|
oEntitate = Null
|
|
|
|
cMfinCaptcha = "" && codul CAPTCHA pentru verificarea codurilor fiscale pe mfinante
|
|
oHTTP = Null
|
|
|
|
*** se pare ca mfinante.ro are un bug - nu mai cere kaptcha la interogare directa si nu da mesajul "serverul este ocupat" la interogare rapida daca sunt sesiuni diferite
|
|
lOneSession = .T. && oHTTP se retine pe instanta sau se creeaza oHTTP la fiecare interogare
|
|
lCaptcha = .T. && se apeleaza Captcha de la mfinante, valabil doar pentru apelarea din program, nu de pe serverul romfast
|
|
|
|
|
|
cMfinAnchorString = "AGENTUL ECONOMIC CU CODUL UNIC" && textul dupa care apare tabelul cu informatii MFIN
|
|
cMfinNuExistaString = "NU EXISTA AGENT ECONOMIC CU ACEST COD FISCAL"
|
|
lXMLHTTP = .F. && daca se foloseste xmlhttp pentru interogarea MFINANTE sau InternetExplorer.Application din luna 02/2017 nu mai merge apelul prin xmlhttp
|
|
|
|
dDataAct = DATE()
|
|
|
|
*=================================
|
|
Procedure Init
|
|
Lparameters tlVIESURL, tlMFINURL, tcRomfastURL, tcMfinanteURL, tcMfinanteParams
|
|
|
|
This.cMfinanteURL = "http://www.mfinante.gov.ro/infocodfiscal.html" && url catre www.mfinante.ro
|
|
This.cMfinanteParams = "cod=|CIF|&captcha=|CAPTCHA|&B1=VIZUALIZARE"
|
|
|
|
*!* 27.01.2012
|
|
If Pcount() >= 2 And Type('goApi') = 'O' And Type('gcSettingsFile') = 'C' And !Empty(m.gcSettingsFile)
|
|
lcMFINROMFAST = goAPI.GetProfileString(m.gcSettingsFile, [validare], "mfinromfast")
|
|
lcVIESROMFAST = goAPI.GetProfileString(m.gcSettingsFile, [validare], "viesromfast")
|
|
lcMFINROMFAST = Nvl(m.lcMFINROMFAST, '')
|
|
lcVIESROMFAST = Nvl(m.lcVIESROMFAST, '')
|
|
If !Inlist(m.lcMFINROMFAST, '.T.', '.F.')
|
|
tlMFINURL = .T.
|
|
Else
|
|
tlMFINURL = &lcMFINROMFAST
|
|
Endif
|
|
If !Inlist(m.lcVIESROMFAST, '.T.', '.F.')
|
|
tlVIESURL = .T.
|
|
Else
|
|
tlVIESURL = &lcVIESROMFAST
|
|
Endif
|
|
Endif && PCOUNT
|
|
*!* 27.01.2012 ^
|
|
|
|
If Type('goApi') = 'O' And Type('gcSettingsFile') = 'C' And !Empty(m.gcSettingsFile)
|
|
lcXMLHTTP = goAPI.GetProfileString(m.gcSettingsFile, [validare], "xmlhttp")
|
|
lcXMLHTTP = Nvl(m.lcXMLHTTP, '')
|
|
If !Inlist(m.lcXMLHTTP, '.T.', '.F.')
|
|
llXMLHTTP = .F.
|
|
Else
|
|
llXMLHTTP = &lcXMLHTTP
|
|
Endif
|
|
This.lXMLHTTP = m.llXMLHTTP
|
|
Endif
|
|
|
|
This.lVIESURL = Iif(Type('tlVIESURL') = 'L', tlVIESURL, .F.) && default .F. pentru dll
|
|
This.lMFINURL = Iif(Type('tlMFINURL') = 'L', tlMFINURL, .F.) && default .F. pentru www.mfinante.ro
|
|
If Type('tcRomfastUrl') = 'C' And !Empty(tcRomfastURL)
|
|
This.cRomfastURL = tcRomfastURL
|
|
Endif
|
|
If Type('tcMfinanteUrl') = 'C' And !Empty(tcMfinanteURL)
|
|
This.cMfinanteURL = tcMfinanteURL
|
|
Endif
|
|
If Type('tcMfinanteParams') = 'C' And !Empty(tcMfinanteParams)
|
|
This.cMfinanteParams = tcMfinanteParams
|
|
Endif
|
|
*!* 13.01.2012
|
|
If _vfp.StartMode = 0
|
|
This.cRomfastURL = Strtran(This.cRomfastURL, '83.103.197.79:3002', '10.0.20.122:81')
|
|
Endif
|
|
*!* 13.01.2012 ^
|
|
This.cMfinCaptcha = ""
|
|
Endproc && Init
|
|
|
|
Function Destroy
|
|
Local loEx As Exception
|
|
If Type('This.oHTTP') = 'O' And Pemstatus(This.oHTTP, 'visible', 5)
|
|
Try
|
|
This.oHTTP.Visible = .F.
|
|
This.oHTTP.Quit
|
|
This.oHTTP = Null
|
|
Catch To loEx
|
|
*
|
|
Endtry
|
|
Endif
|
|
Endfunc && Destroy
|
|
|
|
*=================================
|
|
Function verificare
|
|
Lparameters tcTip, tcCod, tcExtraParam1, tcExtraParam2, tcExtraParam3, tcExtraParam4, tcExtraParam5
|
|
Local lcTip, lcXML
|
|
lcXML = ''
|
|
lcTip = Iif(Type('tcTip') = 'C' And !Empty(tcTip), Upper(tcTip), 'CIF')
|
|
|
|
This.Log('VERIFICARE ' + lcTip + ' ' + tcCod + ' ' + Transform(tcExtraParam1) + ' ' + Transform(tcExtraParam2) + ' ' + Transform(tcExtraParam3) + ' ' + Transform(tcExtraParam4) + ' ' + Transform(tcExtraParam5) )
|
|
|
|
Do Case
|
|
Case lcTip = 'CNP'
|
|
lcXML = This.VERIFICARE_CNP(tcCod)
|
|
Case lcTip = 'CIF'
|
|
lcXML = This.VERIFICARE_CIF(tcCod, tcExtraParam1, tcExtraParam2, tcExtraParam3, tcExtraParam4, tcExtraParam5)
|
|
Otherwise
|
|
lcXML = ''
|
|
Endcase
|
|
|
|
Return lcXML
|
|
Endfunc && VERIFICARE
|
|
|
|
|
|
*=================================
|
|
Function XMLCursorToOBj
|
|
Lparameters tcXML
|
|
Local lcCursor, lcSelect, loReturn
|
|
Local lcEroare, loEx
|
|
|
|
loReturn = Null
|
|
lcCursor = Sys(2015)
|
|
lcSelect = Select()
|
|
Try
|
|
Xmltocursor(tcXML, lcCursor)
|
|
Select (lcCursor)
|
|
Scatter Name loReturn
|
|
Catch To loEx
|
|
lcEroare = 'XMLCursorToOBj ' + loEx.Message + " " + loEx.LineContents + " " + Transform(loEx.Lineno)
|
|
This.Log(m.lcEroare)
|
|
Endtry
|
|
|
|
Use In (Select(lcSelect))
|
|
Select (lcSelect)
|
|
Return loReturn
|
|
Endfunc && XMLCursorToOBj
|
|
|
|
*=================================
|
|
Function ISCIF
|
|
Lparameters tcCod
|
|
Local lcCod, llIsCIF
|
|
llIsCIF = .F.
|
|
lcCod = Iif(Type('tcCod') <> 'C', '', Alltrim(tcCod))
|
|
|
|
Do Case
|
|
Case !Isdigit(lcCod) && Daca incepe cu o litera il consider COD FISCAL && ROXXX
|
|
llIsCIF = .T.
|
|
Case Len(lcCod) <= 10
|
|
llIsCIF = .T.
|
|
Endcase
|
|
|
|
Return llIsCIF
|
|
|
|
Endfunc && IsCIF
|
|
|
|
*=================================
|
|
* VERIFICARE_CNP('1810228134187')
|
|
Procedure VERIFICARE_CNP
|
|
Lparameters tcCNP
|
|
|
|
|
|
Local lcSelect, lcCNP, llSucces, loEx As Exception, lcEroare, llValid, lcXML
|
|
|
|
lcXML = ''
|
|
lcSelect = Select()
|
|
lcCNP = Iif(Empty(tcCNP) Or Type('tcCNP') <> 'C', '', Alltrim(tcCNP))
|
|
lcEroare = ''
|
|
|
|
|
|
Create Cursor cVerificareCod (Valid L, eroare c(250), cod c(100) Null)
|
|
Cursortoxml("cVerificareCod", "lcXML", 1, 0, 0, "1")
|
|
Select cVerificareCod
|
|
Scatter Name This.oEntitate
|
|
|
|
llSucces = .F.
|
|
llValid = .F.
|
|
Try
|
|
llValid = This.validare('CNP', lcCNP)
|
|
llSucces = .T.
|
|
Catch To loEx
|
|
lcEroare = 'VERIFICARE_CNP VALIDARE ' + loEx.Message + " " + loEx.LineContents + " " + Transform(loEx.Lineno)
|
|
This.Log(m.lcEroare)
|
|
Endtry
|
|
|
|
Try
|
|
Insert Into cVerificareCod(Valid, eroare, cod) ;
|
|
Values (llValid, lcEroare, lcCNP)
|
|
|
|
Cursortoxml("cVerificareCod", "lcXML", 1, 0, 0, "1")
|
|
Catch To loEx
|
|
lcEroare = 'VERIFICARE_CNP XML ' + loEx.Message + " " + loEx.LineContents + " " + Transform(loEx.Lineno)
|
|
This.Log(m.lcEroare)
|
|
Endtry
|
|
|
|
Select cVerificareCod
|
|
Go Top
|
|
Scatter Name This.oEntitate
|
|
|
|
Use In (Select('cVerificareCod'))
|
|
Select (lcSelect)
|
|
|
|
Return m.lcXML
|
|
|
|
Endproc && VERIFICARE_CNP
|
|
|
|
|
|
*=================================
|
|
* VERIFICARE_CIF('1879855', ['VIES' | 'MFIN' | 'MFINVIES'])
|
|
* valideaza CIF + aduna informatii de pe www.mfinante.ro + platitor tva de pe vies
|
|
Procedure VERIFICARE_CIF
|
|
Lparameters tcVerificareCod, tcTipInterogare, tdData, tcExtraParam3, tcExtraParam4, tcExtraParam5
|
|
|
|
Local lcVerificareCod, lcFirma, lcAdresa, lcJudet, lcRegCom, lcCodpostal, lcTelefon, lcFax, lcSelect, lcXML, llVies, llPlatitorTVA, llValid, lcCodTara, llRO, lcStare
|
|
Local loEx As Exception
|
|
Local lcMfinanteURL, lcMfinanteParams, lcRomfastURL, llMFINURL, loMFIN, loVIES, lcProcedura, llInterogareAnaf
|
|
Local lStare, lcApart, lcBloc, lcDataTVAMFIN, lcEtaj, lcLocalitate, lcNr, lcScara, lcStrada
|
|
Local llPlatitorTVAMFIN, lnSucces, llTVAIncasare, llSplitTVA, llInactiv, ldData
|
|
|
|
Local lcTipInterogare, llInterogareVies, llInterogareMfin
|
|
If Empty(tcTipInterogare) Or Type('tcTipInterogare') <> 'C'
|
|
lcTipInterogare = ''
|
|
Else
|
|
lcTipInterogare = Upper(tcTipInterogare)
|
|
ENDIF
|
|
ldData = IIF(EMPTY(m.tdData) or TYPE('tdData') <> 'D', {}, m.tdData)
|
|
|
|
llInterogareVies = 'VIES' $ lcTipInterogare
|
|
llInterogareMfin = 'MFIN' $ lcTipInterogare
|
|
llInterogareAnaf = 'ANAF' $ lcTipInterogare
|
|
lcMfinanteURL = This.cMfinanteURL
|
|
lcMfinanteParams = This.cMfinanteParams
|
|
lcRomfastURL = This.cRomfastURL
|
|
llMFINURL = This.lMFINURL
|
|
*!* This.Log(Alltrim(Transform(tcVerificareCod)))
|
|
|
|
|
|
|
|
Local llSucces, lcEroare
|
|
|
|
lcXML = ''
|
|
lcSelect = Select()
|
|
lcVerificareCod = Iif(Empty(tcVerificareCod) Or Type('tcVerificareCod') <> 'C', '', UPPER(Alltrim(tcVerificareCod)))
|
|
*!* 12.04.2011
|
|
lcCodTara = This.GetCodTara(m.lcVerificareCod)
|
|
llRO = lcCodTara = 'RO'
|
|
lcVerificareCod = Strtran(lcVerificareCod, m.lcCodTara, '')
|
|
lcVerificareCod = Strtran(Strtran(Strtran(lcVerificareCod, ' ', ''), 'RO', ''), 'R', '')
|
|
*!* 12.04.2011 ^
|
|
lcFirma = ''
|
|
lcAdresa = ''
|
|
lcJudet = ''
|
|
lcRegCom = ''
|
|
lcCodpostal = ''
|
|
lcTelefon = ''
|
|
lcFax = ''
|
|
llPlatitorTVA = .F.
|
|
llVies = .F.
|
|
lcEroare = ''
|
|
lcDataTVAMFIN = ""
|
|
llPlatitorTVAMFIN = .F.
|
|
lcStare = ''
|
|
lcStrada = ''
|
|
lcNr = ''
|
|
lcLocalitate = ''
|
|
lcBloc = ''
|
|
lcScara = ''
|
|
lcEtaj = ''
|
|
lcApart = ''
|
|
llTVAIncasare = .F.
|
|
llSplitTVA = .F.
|
|
llInactiv = .F.
|
|
|
|
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, ;
|
|
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)
|
|
|
|
Cursortoxml("cVerificareCod", "lcXML", 1, 0, 0, "1")
|
|
Select cVerificareCod
|
|
Scatter Name This.oEntitate
|
|
|
|
llSucces = .F.
|
|
llValid = .F.
|
|
Try
|
|
llValid = This.validare('CIF', m.tcVerificareCod)
|
|
llSucces = .T.
|
|
Catch To loEx
|
|
lcEroare = 'VERIFICARE_CIF VALIDARE ' + loEx.Message + " " + loEx.LineContents + " " + Transform(loEx.Lineno)
|
|
This.Log(m.lcEroare)
|
|
Endtry
|
|
|
|
If m.llValid And m.llRO And m.llInterogareAnaf
|
|
|
|
loMFIN = This.ANAF(m.lcVerificareCod, m.ldData)
|
|
|
|
lcFirma = loMFIN.firma
|
|
lcAdresa = loMFIN.adresa
|
|
lcJudet = loMFIN.judet
|
|
lcRegCom = loMFIN.regcom
|
|
lcCodpostal = loMFIN.codpostal
|
|
lcTelefon = loMFIN.telefon
|
|
lcFax = loMFIN.fax
|
|
lcEroare = loMFIN.eroare
|
|
lcDataTVAMFIN = TRANSFORM(loMFIN.datatvamfin)
|
|
llPlatitorTVAMFIN = loMFIN.platitortvamfin
|
|
lcStare = loMFIN.stare
|
|
lcStrada = loMFIN.strada
|
|
lcNr = loMFIN.nr
|
|
lcLocalitate = loMFIN.localitate
|
|
lcBloc = EVALUATE('loMFIN.Bloc')
|
|
lcScara = loMFIN.scara
|
|
lcEtaj = loMFIN.etaj
|
|
lcApart = loMFIN.apart
|
|
llTvaIncasare = loMFIN.tvaIncasare
|
|
llSplitTVA = loMFIN.SplitTVA
|
|
llInactiv = loMFIN.Inactiv
|
|
Endif && llValid AND llInterogareMfin
|
|
|
|
If m.llValid And m.llRO And m.llInterogareMfin
|
|
loMFIN = This.MFIN(lcVerificareCod)
|
|
|
|
lcFirma = loMFIN.firma
|
|
lcAdresa = loMFIN.adresa
|
|
lcJudet = loMFIN.judet
|
|
lcRegCom = loMFIN.regcom
|
|
lcCodpostal = loMFIN.codpostal
|
|
lcTelefon = loMFIN.telefon
|
|
lcFax = loMFIN.fax
|
|
lcEroare = loMFIN.eroare
|
|
lcDataTVAMFIN = loMFIN.datatvamfin
|
|
llPlatitorTVAMFIN = loMFIN.platitortvamfin
|
|
lcStare = loMFIN.stare
|
|
lcStrada = loMFIN.strada
|
|
lcNr = loMFIN.nr
|
|
lcLocalitate = loMFIN.localitate
|
|
lcBloc = EVALUATE('loMFIN.Bloc')
|
|
lcScara = loMFIN.scara
|
|
lcEtaj = loMFIN.etaj
|
|
lcApart = loMFIN.apart
|
|
llTvaIncasare = loMFIN.tvaIncasare
|
|
llSplitTVA = loMFIN.SplitTVA
|
|
llInactiv = loMFIN.Inactiv
|
|
Endif && llValid AND llInterogareMfin
|
|
|
|
*!* VERIFICARE VIES pentru platitori TVA
|
|
If llValid And llInterogareVies
|
|
loVIES = This.VIES(m.lcVerificareCod, m.lcCodTara)
|
|
llPlatitorTVA = loVIES.PlatitorTVA
|
|
If !llInterogareMfin Or Empty(lcFirma)
|
|
lcFirma = loVIES.firma
|
|
lcAdresa = loVIES.adresa
|
|
Endif
|
|
llVies = loVIES.VIES
|
|
lcEroare = lcEroare + ' ' + loVIES.eroare
|
|
Endif && llValid AND llInterogareVies
|
|
* lcAdresa = StripNonAscii(lcAdresa, ' ') && regex.prg
|
|
|
|
lcFirma = This.RemoveCharacters(m.lcFirma) && Strtran(Strtran(Upper(Alltrim(Nvl(m.lcFirma, ''))), Chr(170), 'S'), Chr(222), 'T')
|
|
lcAdresa = This.RemoveCharacters(m.lcAdresa) && Strtran(Strtran(Upper(Alltrim(Nvl(m.lcAdresa, ''))), Chr(170), 'S'), Chr(222), 'T')
|
|
lcJudet = This.RemoveCharacters(m.lcJudet) && Strtran(Strtran(Upper(Alltrim(Nvl(m.lcJudet, ''))), Chr(170), 'S'), Chr(222), 'T')
|
|
lcRegCom = This.RemoveCharacters(m.lcRegCom) && Strtran(Strtran(Upper(Alltrim(Nvl(m.lcRegCom, ''))), Chr(170), 'S'), Chr(222), 'T')
|
|
lcLocalitate = This.RemoveCharacters(m.lcLocalitate)
|
|
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) ;
|
|
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)
|
|
|
|
Select cVerificareCod
|
|
Go Top
|
|
Scatter Name This.oEntitate
|
|
Cursortoxml("cVerificareCod", "lcXML", 1, 0, 0, "1")
|
|
|
|
*** ROA salvez datele in istoric_coduri_fiscale
|
|
If Type('goExecutor') = 'O'
|
|
Private pcCodFiscal, pcFirma, pcAdresa, pcJudet, pcRegCom, pcCodPostal, pcTelefon, pcFax, pcDataTvamfin, pnPlatitorTvaMfin, pcStare, pnPlatitorTvaVies, pnInterogareVies
|
|
pcCodFiscal = m.lcVerificareCod
|
|
pcFirma = m.lcFirma && Strtran(Strtran(Upper(Alltrim(Nvl(m.lcFirma, ''))), Chr(170), 'S'), Chr(222), 'T')
|
|
pcAdresa = m.lcAdresa && Strtran(Strtran(Upper(Alltrim(Nvl(m.lcAdresa, ''))), Chr(170), 'S'), Chr(222), 'T')
|
|
pcJudet = m.lcJudet && Strtran(Strtran(Upper(Alltrim(Nvl(m.lcJudet, ''))), Chr(170), 'S'), Chr(222), 'T')
|
|
pcRegCom = m.lcRegCom && Strtran(Strtran(Upper(Alltrim(Nvl(m.lcRegCom, ''))), Chr(170), 'S'), Chr(222), 'T')
|
|
pcCodPostal = Upper(Alltrim(Nvl(m.lcCodpostal, '')))
|
|
pcTelefon = Upper(Alltrim(Nvl(m.lcTelefon, '')))
|
|
pcFax = Upper(Alltrim(Nvl(m.lcFax, '')))
|
|
pcDataTvamfin = Upper(Alltrim(Nvl(m.lcDataTVAMFIN, '')))
|
|
pnPlatitorTvaMfin = Iif(m.llPlatitorTVAMFIN, 1, 0)
|
|
pcStare = Upper(Alltrim(Nvl(m.lcStare, '')))
|
|
pnPlatitorTvaVies = Iif(m.llPlatitorTVA, 1, 0)
|
|
pnInterogareVies = Iif(m.llVies, 1, 0)
|
|
If !Empty(m.pcFirma)
|
|
lnSucces = goExecutor.oExecuta("begin pack_parteneri.save_istoric_cod_fiscal(?pcCodFiscal,?pcFirma,?pcAdresa,?pcJudet,?pcRegCom,?pcCodPostal,?pcTelefon,?pcFax,?pcDataTvamfin,?pnPlatitorTvaMfin,?pcStare,?pnPlatitorTvaVies,?pnInterogareVies,?gnIdUtil); end;")
|
|
Endif
|
|
Endif
|
|
*** CONTAFIN salvez datele in istoric_coduri_fiscale
|
|
If Used('ISTORIC_CODURI_FISCALE')
|
|
lcProcedura = [SAVE_ISTORIC_COD_FISCAL] && sa nu dea eroarea ROACONT la compilare ca nu gaseste procedura din CONCONT
|
|
Do &lcProcedura With This.oEntitate In proceduri_comune.prg
|
|
Endif
|
|
|
|
Catch To loEx
|
|
lcEroare = 'VERIFICARE_CIF INSERT XML' + loEx.Message + " " + loEx.LineContents + " " + Transform(loEx.Lineno)
|
|
This.Log(m.lcEroare)
|
|
Endtry
|
|
|
|
Use In (Select('cVerificareCod'))
|
|
Select (lcSelect)
|
|
|
|
Return m.lcXML
|
|
Endproc && VERIFICARE_CIF
|
|
|
|
|
|
*==================================================
|
|
*!* Aduce informatii despre starea de platitor TVA si adresa prin SERVICIU WEB ANAF
|
|
*==================================================
|
|
Procedure ANAF
|
|
Lparameters tcCodFiscal, tdData
|
|
* tcCodFiscal
|
|
* optional tdData
|
|
|
|
Local loVerificareANAF As "VerificareANAF"
|
|
Local lcCodFiscal, lcCursorVerificareANAF, lcSelect, loMFIN, ldData
|
|
lcCodFiscal = Iif(!Empty(m.tcCodFiscal) And Type('tcCodFiscal') = 'C', Alltrim(m.tcCodFiscal), '')
|
|
lcSelect = Select()
|
|
ldData = IIF(TYPE('tdData') = 'D' and !EMPTY(m.tdData), m.tdData, DATE(m.gnAn, m.gnLuna, 1))
|
|
loMFIN = This.GetEmptyMfinObj()
|
|
|
|
&& verificare serviciu web ANAF
|
|
loVerificareANAF = Createobject("VerificareANAF") && validare.prg
|
|
lcCursorVerificareANAF = loVerificareANAF.VerificaListaCIF(m.lcCodFiscal, m.ldData)
|
|
If Used(m.lcCursorVerificareANAF)
|
|
If Reccount(m.lcCursorVerificareANAF) >= 1
|
|
Select (m.lcCursorVerificareANAF)
|
|
Go Top
|
|
loMFIN.firma = firma
|
|
loMFIN.adresa = adresa
|
|
loMFIN.judet = judet
|
|
loMFIN.regcom = nrregcom
|
|
loMFIN.codpostal = ''
|
|
loMFIN.telefon = ''
|
|
loMFIN.fax = ''
|
|
loMFIN.eroare = ''
|
|
loMFIN.datatvamfin = Data
|
|
loMFIN.platitortvamfin = tva
|
|
loMFIN.stare = mesaj
|
|
loMFIN.strada = strada
|
|
loMFIN.nr = nr
|
|
loMFIN.localitate = localitate
|
|
loMFIN.Bloc = Bloc
|
|
loMFIN.scara = scara
|
|
loMFIN.etaj = etaj
|
|
loMFIN.apart = apart
|
|
loMFIN.TVAIncasare = tvaincasare
|
|
loMFIN.SplitTVA = splittva
|
|
loMFIN.Inactiv = inactiv
|
|
Endif
|
|
Endif
|
|
|
|
Select (lcSelect)
|
|
Return loMFIN
|
|
|
|
Endproc && ANAF
|
|
|
|
*==================================================
|
|
*!* VERIFICARE INFORMATII MFINANTE
|
|
*!* DIRECT PE MFINANTE.RO PE URL ROMFAST
|
|
Procedure MFIN
|
|
Lparameters tcCodFiscal
|
|
Local llMFINURL, lcMfinanteURL, lcMfinanteParams, lcRomfastURL, lcSelect, loHTTP
|
|
Local llPlatitorTVA, lcFirma, lcAdresa, lcEroare, llVies, lcStrada, lcNr, lcLocalitate
|
|
|
|
Local loMFIN
|
|
Local lnStatus, lcXML, lcJudet, lcRegCom, lcCodpostal, lcDataTVAMFIN, llPlatitorTVAMFIN, lcStare
|
|
Local lcTelefon, lcFax, lcValues, lcResponse, loEx
|
|
Local Array laMfin[100, 2]
|
|
Local loFormIntroducereCod
|
|
loFormIntroducereCod = Null
|
|
|
|
llPlatitorTVA = .F.
|
|
lcFirma = ''
|
|
lcAdresa = ''
|
|
lcEroare = ''
|
|
llVies = .F.
|
|
lcStare = ''
|
|
lcStrada = ''
|
|
lcNr = ''
|
|
lcLocalitate = ''
|
|
|
|
lcSelect = Select()
|
|
llMFINURL = This.lMFINURL
|
|
lcMfinanteURL = This.cMfinanteURL
|
|
lcMfinanteParams = This.cMfinanteParams
|
|
lcMfinanteParams = Strtran(lcMfinanteParams, '|CIF|', tcCodFiscal, 1, 1, 1)
|
|
|
|
lcRomfastURL = This.cRomfastURL
|
|
lcRomfastURL = Strtran(lcRomfastURL, '|CIF|', tcCodFiscal, 1, 1, 1) && http://localhost/update/verificarecod.aspx/verificarecod/verificare/CIF/|CIF|/|TIP|
|
|
lcRomfastURL = Strtran(lcRomfastURL, '|TIP|', 'MFIN', 1, 1, 1)
|
|
|
|
loMFIN = This.GetEmptyMfinObj()
|
|
|
|
*!* if This.lOneSession
|
|
If Type("This.oHTTP") <> "O" && la prima apelare a verificarii MFIN
|
|
If This.lXMLHTTP
|
|
This.oHTTP = Createobject("winhttp.winhttprequest.5.1")
|
|
Else
|
|
This.oHTTP = Createobject("InternetExplorer.Application")
|
|
This.oHTTP.Visible = .F.
|
|
Endif
|
|
Endif
|
|
loHTTP = This.oHTTP
|
|
*!* ELSE
|
|
*!* IF This.lXMLHTTP
|
|
*!* loHTTP = Createobject("winhttp.winhttprequest.5.1")
|
|
*!* ELSE
|
|
*!* loHTTP = Createobject("InternetExplorer.Application")
|
|
*!* loHTTP.visible = .T.
|
|
*!* ENDIF
|
|
*!* endif
|
|
|
|
*** INTRODUCERE CAPTCHA DACA NU ESTE INTRODUS DEJA
|
|
*** Daca exista proprietatea VerificareCod.UserHostAddress, atunci clasa este instantiata din DISPATCHREQUEST de pe serverul ROMFAST
|
|
If This.lXMLHTTP And !Pemstatus(This, "UserHostAddress", 5) And Empty(This.cMfinCaptcha) And This.lCaptcha
|
|
lcCodFile = Addbs(Getenv("TEMP")) + "captcha_" + Sys(2015) + ".jpg"
|
|
loHTTP.Open('GET', "http://www.mfinante.ro/kaptcha.jpg", .F.)
|
|
loHTTP.Send()
|
|
|
|
= Strtofile(loHTTP.ResponseBody, m.lcCodFile)
|
|
This.cMfinCaptcha = ""
|
|
Clear Class "IntroducereCod"
|
|
loFormIntroducereCod = Createobject("IntroducereCod", m.lcCodFile)
|
|
loFormIntroducereCod.Show(1)
|
|
If File(m.lcCodFile)
|
|
Delete File (m.lcCodFile)
|
|
Endif
|
|
If Type('loFormIntroducereCod') = 'O' And Type('loFormIntroducereCod.cCod') = 'C'
|
|
This.cMfinCaptcha = loFormIntroducereCod.cCod
|
|
Release loFormIntroducereCod
|
|
Endif
|
|
Endif && !PEMSTATUS
|
|
|
|
|
|
Do Case
|
|
Case This.lMFINURL
|
|
Try
|
|
|
|
*!* loHttp.SetTimeouts(ResolveTimeout, ConnectTimeout, SendTimeout, ReceiveTimeout)
|
|
* loHttp.SetTimeouts(60000, 60000, 60000, 60000)
|
|
loHTTP.Open("GET", lcRomfastURL, .F.)
|
|
loHTTP.Send()
|
|
lnStatus = loHTTP.Status
|
|
If lnStatus = 200 && OK
|
|
lcXML = loHTTP.responseText
|
|
|
|
Xmltocursor(lcXML, 'cMFINTemp')
|
|
|
|
lcFirma = Alltrim(cMFINTemp.firma)
|
|
lcAdresa = Alltrim(cMFINTemp.adresa)
|
|
lcJudet = Alltrim(cMFINTemp.judet)
|
|
lcRegCom = Alltrim(cMFINTemp.regcom)
|
|
lcCodpostal = Alltrim(cMFINTemp.codpostal)
|
|
lcTelefon = Alltrim(cMFINTemp.telefon)
|
|
lcFax = Alltrim(cMFINTemp.fax)
|
|
lcEroare = Alltrim(cMFINTemp.eroare)
|
|
lcDataTVAMFIN = cMFINTemp.datatvamfin
|
|
llPlatitorTVAMFIN = cMFINTemp.platitortvamfin
|
|
lcStare = cMFINTemp.stare
|
|
lcStrada = Alltrim(cMFINTemp.strada)
|
|
lcNr = Alltrim(cMFINTemp.nr)
|
|
lcLocalitate = Alltrim(cMFINTemp.localitate)
|
|
|
|
Use In (Select('cMFINTemp'))
|
|
Else
|
|
lcEroare = 'VERIFICARE_CIF MFIN - ' + Alltrim(Transform(lcRomfastURL)) + ' eroare ' + Alltrim(Str(lnStatus))
|
|
Endif && lnStatus
|
|
Catch To loEx
|
|
lcEroare = 'VERIFICARE_CIF MFIN ' + CRLF + loEx.Message + " " + loEx.LineContents + " " + Transform(loEx.Lineno)
|
|
This.Log(m.lcEroare)
|
|
Endtry
|
|
Otherwise
|
|
Try
|
|
If !Empty(This.cMfinCaptcha)
|
|
lcMfinanteParams = Strtran(lcMfinanteParams, '|CAPTCHA|', This.cMfinCaptcha, 1, 1, 1)
|
|
Else
|
|
&& daca nu introduc CAPTCHA prima oara, nu il mai cer ulterior. sa vad daca merge ???
|
|
lcMfinanteParams = Strtran(lcMfinanteParams, '&captcha=|CAPTCHA|', '', 1, 1, 1)
|
|
This.lCaptcha = .F.
|
|
Endif
|
|
|
|
Do Case
|
|
Case .F.
|
|
loHTTP.Open("POST", lcMfinanteURL, .F.)
|
|
loHTTP.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
|
|
lcValues = lcMfinanteParams
|
|
loHTTP.Send(lcValues)
|
|
lnStatus = loHTTP.Status
|
|
Case This.lXMLHTTP
|
|
lcValues = lcMfinanteParams
|
|
loHTTP.Open("GET", m.lcMfinanteURL + '?' + m.lcValues, .F.)
|
|
loHTTP.setRequestHeader ("Content-Type", "multipart/form-data; ")
|
|
loHTTP.setRequestHeader ("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)")
|
|
loHTTP.Send(Null)
|
|
lnStatus = loHTTP.Status
|
|
Otherwise
|
|
* Internet.Application din cauza ca nu mai merge interogarea cu xmlhttp
|
|
lcValues = lcMfinanteParams
|
|
loHTTP.Navigate(m.lcMfinanteURL + '?' + m.lcValues)
|
|
* Astept maxim 10 secunde sa se incarce documentul si verific daca exista tag-ul <table>
|
|
lnSeconds = Seconds()
|
|
lnStatus = -200
|
|
Do While .T.
|
|
Inkey(1)
|
|
lnSecondsPassed = Seconds() - lnSeconds
|
|
Wait Window 'Astept incarcarea paginii mfinante.ro ' + Alltrim(Str(m.lnSecondsPassed)) + '/20 sec.' Nowait
|
|
|
|
If (loHTTP.ReadyState = 4 And !loHTTP.Busy) Or m.lnSecondsPassed > 20
|
|
If This.cMfinAnchorString $ Upper(loHTTP.Document.body.innerhtml) Or This.cMfinNuExistaString $ Upper(loHTTP.Document.body.innerhtml)
|
|
lnStatus = 200
|
|
Exit
|
|
Else
|
|
If m.lnSecondsPassed > 20
|
|
Exit
|
|
Endif
|
|
Endif
|
|
Endif
|
|
Enddo
|
|
Endcase
|
|
|
|
If lnStatus = 200 && OK
|
|
If This.lXMLHTTP
|
|
lcResponse = Upper(loHTTP.responseText)
|
|
Else
|
|
lcResponse = loHTTP.Document.body.innerhtml
|
|
Endif
|
|
*STRTOFILE(m.lcResponse, "c:\info_" + m.tcCodFiscal + ".html")
|
|
This.InfoMfin2Array(m.lcResponse, @laMfin)
|
|
|
|
lcFirma = This.RemoveCharacters(laMfin(1, 2), .T.) && Strtran(Strtran(Upper(Alltrim(Nvl(aMfin(1, 2), ''))), Chr(170), 'S'), Chr(222), 'T')
|
|
lcAdresa = This.RemoveCharacters(laMfin(2, 2), .T., .F., .T.) && Strtran(Strtran(Upper(Alltrim(Nvl(laMfin(2, 2), ''))), Chr(170), 'S'), Chr(222), 'T')
|
|
lcJudet = This.RemoveCharacters(laMfin(3, 2), .T.) && Strtran(Strtran(Upper(Alltrim(Nvl(laMfin(3, 2), ''))), Chr(170), 'S'), Chr(222), 'T')
|
|
lcRegCom = This.RemoveCharacters(laMfin(4, 2), .T., .T., .T.) && Strtran(Strtran(Upper(Alltrim(Nvl(STRTRAN(laMfin(4, 2), ' ',''), ''))), Chr(170), 'S'), Chr(222), 'T')
|
|
lcCodpostal = This.RemoveCharacters(laMfin(6, 2), .T., .T., .T.) && laMfin(6, 2)
|
|
lcTelefon = This.RemoveCharacters(laMfin(7, 2), .T., .T., .T.) && laMfin(7, 2)
|
|
lcFax = This.RemoveCharacters(laMfin(8, 2), .T., .T., .T.) && laMfin(8, 2)
|
|
lcStare = This.RemoveCharacters(laMfin(9, 2), .T., .F., .T.) && Strtran(Strtran(Upper(Alltrim(Nvl(laMfin(9, 2), ''))), Chr(170), 'S'), Chr(222), 'T')
|
|
lcDataTVAMFIN = Nvl(laMfin(16, 2), '')
|
|
llPlatitorTVAMFIN = !(Empty(m.lcDataTVAMFIN) Or Isalpha(m.lcDataTVAMFIN))
|
|
|
|
loAdresa = This.ParseAdresaMFin(m.lcAdresa)
|
|
lcStrada = loAdresa.strada
|
|
lcNr = loAdresa.nr
|
|
lcLocalitate = loAdresa.localitate
|
|
Else
|
|
lcEroare = 'VERIFICARE_CIF MFIN - ' + Alltrim(Transform(lcMfinanteURL)) + ' eroare ' + Alltrim(Str(lnStatus))
|
|
Endif
|
|
Catch To loEx
|
|
lcEroare = 'VERIFICARE_CIF MFIN ' + CRLF + loEx.Message + " " + loEx.LineContents + " " + Transform(loEx.Lineno)
|
|
This.Log(m.lcEroare)
|
|
Endtry
|
|
Endcase
|
|
|
|
loMFIN.firma = m.lcFirma
|
|
loMFIN.adresa = m.lcAdresa
|
|
loMFIN.judet = m.lcJudet
|
|
loMFIN.regcom = m.lcRegCom
|
|
loMFIN.codpostal = m.lcCodpostal
|
|
loMFIN.telefon = m.lcTelefon
|
|
loMFIN.fax = m.lcFax
|
|
loMFIN.eroare = m.lcEroare
|
|
loMFIN.datatvamfin = m.lcDataTVAMFIN
|
|
loMFIN.platitortvamfin = m.llPlatitorTVAMFIN
|
|
loMFIN.stare = m.lcStare
|
|
loMFIN.strada = m.lcStrada
|
|
loMFIN.nr = m.lcNr
|
|
loMFIN.localitate = m.lcLocalitate
|
|
|
|
Select (lcSelect)
|
|
Return loMFIN
|
|
|
|
Endproc && MFIN
|
|
|
|
*==================================================
|
|
*!* VERIFICARE CALITATE PLATITOR TVA
|
|
*!* DIRECT PE VIES CU DLL DOTNET SAU PE URL ROMFAST
|
|
Procedure VIES
|
|
Lparameters tcCodFiscal, tcCodTara
|
|
|
|
Local ws, loVIES, llVIESURL, lcRomfastURL, lcSelect, loHTTP
|
|
Local llPlatitorTVA, lcFirma, lcAdresa, lcEroare, llVies, lcCodTara
|
|
Local lnStatus, lcXML, loEx, lcViesURL
|
|
|
|
llPlatitorTVA = .F.
|
|
lcFirma = ''
|
|
lcAdresa = ''
|
|
lcEroare = ''
|
|
llVies = .F.
|
|
|
|
lcSelect = Select()
|
|
*!* 12.04.2011
|
|
lcCodTara = Iif(!Empty(m.tcCodTara), Alltrim(Upper(Transform(m.tcCodTara))), 'RO')
|
|
*!* 12.04.2011 ^
|
|
|
|
llVIESURL = This.lVIESURL
|
|
lcRomfastURL = This.cRomfastURL
|
|
*!* 12.04.2011
|
|
lcRomfastURL = Strtran(lcRomfastURL, '|CIF|', m.lcCodTara + m.tcCodFiscal, 1, 1, 1) && http://localhost/update/verificarecod.aspx/verificarecod/verificare/CIF/|CIF|/|TIP|
|
|
*!* 12.04.2011 ^
|
|
lcRomfastURL = Strtran(lcRomfastURL, '|TIP|', 'VIES', 1, 1, 1)
|
|
|
|
loVIES = Createobject("empty")
|
|
AddProperty(loVIES, "Vies", .F.)
|
|
AddProperty(loVIES, "Eroare", '')
|
|
AddProperty(loVIES, "Cod", tcCodFiscal)
|
|
AddProperty(loVIES, "PlatitorTVA", .F.)
|
|
AddProperty(loVIES, "Firma", "")
|
|
AddProperty(loVIES, "Adresa", "")
|
|
|
|
If This.lVIESURL
|
|
Try
|
|
*!* loHTTP = Createobject("MSXML2.ServerXMLHTTP")
|
|
loHTTP = Createobject("winhttp.winhttprequest.5.1")
|
|
loHTTP.Open("GET", lcRomfastURL, .F.)
|
|
loHTTP.Send()
|
|
lnStatus = loHTTP.Status
|
|
If lnStatus = 200 && OK
|
|
lcXML = loHTTP.responseText
|
|
|
|
Xmltocursor(lcXML, 'cVIESTemp')
|
|
llPlatitorTVA = cVIESTemp.PlatitorTVA
|
|
lcFirma = Alltrim(cVIESTemp.firma)
|
|
lcAdresa = Alltrim(cVIESTemp.adresa)
|
|
lcEroare = Alltrim(cVIESTemp.eroare)
|
|
llVies = cVIESTemp.VIES
|
|
Use In (Select('cVIESTemp'))
|
|
Else
|
|
lcEroare = 'VERIFICARE_CIF VIES - ' + Alltrim(Transform(lcRomfastURL)) + ' eroare ' + Alltrim(Str(lnStatus))
|
|
Endif && lnStatus
|
|
Catch To loEx
|
|
lcEroare = 'VERIFICARE_CIF VIES ' + CRLF + loEx.Message + " " + loEx.LineContents + " " + Transform(loEx.Lineno)
|
|
This.Log(m.lcEroare)
|
|
Endtry
|
|
Else
|
|
If .F.
|
|
Try
|
|
llVies = .F.
|
|
ws = Createobject('DotNetCom.VerificareCIF')
|
|
llPlatitorTVA = ws.VerifCIF(tcCodFiscal) &&returneza .T. sau .F., in functie de existenta CIF in baza de date EU
|
|
lcFirma = ws.firma
|
|
lcAdresa = Strtran(Strtran(ws.adresa, Chr(13), ''), Chr(10), '')
|
|
llVies = .T.
|
|
Catch To loEx
|
|
lcEroare = 'VERIFICARE_CIF VIES ' + CRLF + loEx.Message + " " + loEx.LineContents + " " + Transform(loEx.Lineno)
|
|
This.Log(m.lcEroare)
|
|
Endtry
|
|
ELSE
|
|
|
|
*!* 15.03.2010
|
|
IF .F.
|
|
Try
|
|
*!* loHTTP = Createobject("MSXML2.ServerXMLHTTP") && ("Microsoft.XMLHTTP")
|
|
loHTTP = Createobject("winhttp.winhttprequest.5.1")
|
|
*!* 12.04.2011
|
|
lcViesURL = "http://ec.europa.eu/taxation_customs/vies/viesquer.do?ms=" + m.lcCodTara + "&iso=" + m.lcCodTara + "&vat=" + m.tcCodFiscal
|
|
*!* 12.04.2011 ^
|
|
loHTTP.Open("GET", m.lcViesURL, .F.)
|
|
loHTTP.Send()
|
|
lnStatus = loHTTP.Status
|
|
If lnStatus = 200 && OK
|
|
lcXML = loHTTP.responseText
|
|
llPlatitorTVA = 'YES, VALID VAT NUMBER' $ Upper(lcXML)
|
|
lcFirma = ''
|
|
lcAdresa = ''
|
|
llVies = .T.
|
|
Else
|
|
lcEroare = 'VERIFICARE_CIF VIES - ' + m.lcViesURL + ' eroare ' + Alltrim(Str(lnStatus))
|
|
Endif && lnStatus
|
|
Catch To loEx
|
|
lcEroare = 'VERIFICARE_CIF VIES ' + CRLF + loEx.Message + " " + loEx.LineContents + " " + Transform(loEx.Lineno)
|
|
This.Log(m.lcEroare)
|
|
Endtry
|
|
*!* 15.03.2010 ^
|
|
ENDIF && .F.
|
|
Try
|
|
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')
|
|
|
|
TEXT TO lcValues NOSHOW TEXTMERGE
|
|
<s:Envelope xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'>
|
|
<s:Body>
|
|
<checkVat xmlns='urn:ec.europa.eu:taxud:vies:services:checkVat:types'>
|
|
<countryCode><<m.lcCodTara>></countryCode>
|
|
<vatNumber><<m.tcCodFiscal>></vatNumber>
|
|
</checkVat>
|
|
</s:Body>
|
|
</s:Envelope>
|
|
ENDTEXT
|
|
|
|
loHTTP.Send(lcValues)
|
|
lnStatus = loHTTP.Status
|
|
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)
|
|
lcAdresa = Strtran(m.lcAdresa, Chr(13) + CHR(10), ' ')
|
|
llVies = .T.
|
|
Else
|
|
lcEroare = 'VERIFICARE_CIF VIES - ' + m.lcViesURL + ' eroare ' + Alltrim(Str(lnStatus))
|
|
Endif && lnStatus
|
|
Catch To loEx
|
|
lcEroare = 'VERIFICARE_CIF VIES ' + CRLF + loEx.Message + " " + loEx.LineContents + " " + Transform(loEx.Lineno)
|
|
This.Log(m.lcEroare)
|
|
Endtry
|
|
Endif
|
|
Endif
|
|
loVIES.PlatitorTVA = llPlatitorTVA
|
|
loVIES.firma = lcFirma
|
|
loVIES.adresa = lcAdresa
|
|
loVIES.eroare = lcEroare
|
|
loVIES.VIES = llVies
|
|
|
|
Select (lcSelect)
|
|
Return loVIES
|
|
|
|
Endproc && VIES
|
|
|
|
*=================================
|
|
Function validare
|
|
Lparameters tcTip, tcCod
|
|
Local lcTip, llReturn
|
|
|
|
llReturn = .F.
|
|
|
|
lcTip = Iif(Type('tcTip') = 'C' And !Empty(tcTip), Upper(tcTip), 'CIF')
|
|
|
|
Do Case
|
|
Case lcTip = 'CNP'
|
|
llReturn = This.VALIDARE_CNP(tcCod)
|
|
Case lcTip = 'CIF'
|
|
llReturn = This.VALIDARE_CIF(tcCod)
|
|
Otherwise
|
|
llReturn = .F.
|
|
Endcase
|
|
|
|
Return llReturn
|
|
Endfunc && VALIDARE
|
|
|
|
*=================================
|
|
*!* VALIDEAZA CIF
|
|
*!* RETURN .T. / .F.
|
|
Function VALIDARE_CIF
|
|
Lparameters tcCIF
|
|
|
|
Local lcCIFinv, I
|
|
Local llCorect, lcCif, cheieinv, lnSuma, lnRest, lnCifraVerificare, lcCifraControl, lnCifraControl
|
|
|
|
If Type('tcCIF') <> 'C'
|
|
tcCIF = ''
|
|
Endif
|
|
|
|
*!* 12.04.2011
|
|
lcCif = Alltrim(Nvl(tcCIF, ''))
|
|
lcCodTara = This.GetCodTara(m.lcCif)
|
|
*!* daca primele 2 caractere sunt coduri de tara le elimin
|
|
If !Substr(M.lcCif, 1, 1) $ '0123456789'
|
|
m.lcCif = Alltrim(Substr(m.lcCif, 2))
|
|
Endif
|
|
If !Substr(M.lcCif, 1, 1) $ '0123456789'
|
|
m.lcCif = Alltrim(Substr(m.lcCif, 2))
|
|
Endif
|
|
llCorect = .T.
|
|
|
|
If !(Empty(m.lcCodTara) Or m.lcCodTara = 'RO')
|
|
Return m.llCorect
|
|
Endif
|
|
*!* 12.04.2011 ^
|
|
|
|
*!* lcCIF = '7320118'
|
|
*!* Pas preliminar: Se testeaza daca codul respecta formatul unui cod CIF. Adica lungimea maxima sa fie de 10 cifre si sa contina doar caractere numerice.
|
|
If Len(m.lcCif) > 10 Or Empty(m.lcCif)
|
|
llCorect = .F.
|
|
Else
|
|
For I = 1 To Len(m.lcCif)
|
|
If !Substr(m.lcCif, I, 1) $ '0123456789'
|
|
llCorect = .F.
|
|
Endif
|
|
Endfor
|
|
Endif
|
|
|
|
*!* Pas 1: Se foloseste cheia de testare "753217532". Se inverseaza ordinea cifrelor codului CIF precum si a cheii de testare.
|
|
*!* Pas 2: Se ignora prima cifra din codul CIF inversat (aceasta este cifra de control) si se inmulteste fiecare cifra cu cifra corespunzatoare din cheia de testare inversata.
|
|
*!* Pas 3: Se aduna toate produsele obtinute. Suma rezultata se inmulteste cu 10 si produsul este impartit la 11. Cifra obtinuta, in urma operatiei MODULO 11 reprezita cifra de verificare. Daca in urma impartirii s-a obtinut restul 10 atunci cifra de verificare va fi 0.
|
|
*!* Pas 4: Pentru un CIF valid cifra de verificare va trebui sa corespunda cu cifra de control a codului CIF initial.
|
|
cheieinv = '235712357'
|
|
If llCorect
|
|
lcCIFinv = ''
|
|
lnSuma = 0
|
|
For I = Len(m.lcCif) - 1 To 1 Step - 1
|
|
lcCIFinv = m.lcCIFinv + Substr(m.lcCif, I, 1)
|
|
Endfor
|
|
|
|
For I = 1 To Len(m.lcCIFinv)
|
|
lnSuma = lnSuma + Val(Substr(m.lcCIFinv, I, 1)) * Val(Substr(m.cheieinv, I, 1))
|
|
Endfor
|
|
lnRest = Mod(m.lnSuma * 10, 11)
|
|
lnCifraVerificare = Iif(m.lnRest = 10, 0, lnRest)
|
|
lcCifraControl = Substr(m.lcCif, Len(m.lcCif), 1)
|
|
lnCifraControl = Val(lcCifraControl)
|
|
|
|
If m.lnCifraVerificare <> m.lnCifraControl
|
|
llCorect = .F.
|
|
Endif
|
|
Endif
|
|
*!* ?IIF(llCorect, 'CORECT', 'INCORECT')
|
|
Return llCorect
|
|
|
|
Endfunc && VALIDARE_CIF
|
|
|
|
*=================================
|
|
*!* VALIDEAZA CNP
|
|
*!* RETURN .T. / .F.
|
|
Function VALIDARE_CNP
|
|
Lparameters cCnp
|
|
Local cCod
|
|
cCod = Alltrim(cCnp)
|
|
If Len(cCod)!= 13
|
|
Return .F.
|
|
Endif
|
|
Local _X(13), _rest, j
|
|
For j = 1 To 13
|
|
_X(j) = Val(Substr(cCod, j, 1))
|
|
Endfor
|
|
_rest = (_X(1) * 2 + _X(2) * 7 + _X(3) * 9 + _X(4) * 1 + _X(5) * 4 + _X(6) * 6 + _X(7) * 3 + _X(8) * 5 + _X(9) * 8 + _X(10) * 2 + _X(11) * 7 + _X(12) * 9) % 11
|
|
Return Iif((_rest < 10 And _rest = _X(13))Or(_rest = 10 And _X(13) = 1), .T., .F.)
|
|
Endfunc && VALIDARE_CNP
|
|
|
|
*=================================
|
|
Function GetError
|
|
Local lcReturn, lnLines
|
|
Local Array laEroare(1)
|
|
|
|
lcReturn = ""
|
|
|
|
lnLines = Aerror(laEroare)
|
|
If lnLines = 7
|
|
lcReturn = Alltrim(Transform(laEroare(1))) + ' ' + Alltrim(Transform(laEroare(2))) &&+ ALLTRIM(TRANSFORM(laEroare(3)))
|
|
Endif
|
|
Return lcReturn
|
|
Endfunc
|
|
|
|
*============================
|
|
Procedure Log
|
|
Lparameters tcText
|
|
If Type('goLog') = 'O'
|
|
goLog.Log(tcText)
|
|
Else
|
|
Local lcText
|
|
lcText = Transform(Datetime()) + " " + Iif(Empty(tcText), "", tcText) + Chr(13) + Chr(10)
|
|
|
|
Strtofile(m.lcText, "log.txt", .T.)
|
|
Endif
|
|
|
|
Endproc && Log
|
|
|
|
Function GetInfoMfin(lcResponse, lnRand)
|
|
Local cAnchorString, cTable, lcRand, lcReturn
|
|
|
|
m.cAnchorString = "AGENTUL ECONOMIC CU CODUL UNIC"
|
|
m.cTable = Upper(Strextract( Substr(lcResponse, Atc( m.cAnchorString, lcResponse)), '<TABLE', '</TABLE>'))
|
|
|
|
lcRand = Strextract( cTable, "<TR", "</TR>", lnRand )
|
|
lcReturn = Strextract( lcRand, [SIZE="2">], "</FONT>", 2)
|
|
Return lcReturn
|
|
Endfunc && GetInfoMfin
|
|
|
|
*** Parseaza html-ul de la mfinante.ro si transforma tabelul intr-un array cu 2 coloane (descriere, valoare)
|
|
Procedure InfoMfin2Array(lcResponse, laInfo)
|
|
Local lcList, lcTable, lnLinii, I
|
|
|
|
If Atc('NU ATI INTRODUS CODUL DE VALIDARE CORECT', m.lcResponse, 1) > 0
|
|
Dimension laInfo(100, 2)
|
|
laInfo = ""
|
|
laInfo(2, 2) = "Nu ati introdus codul de validare corect!"
|
|
Else
|
|
lcString = This.cMfinAnchorString && "AGENTUL ECONOMIC CU CODUL UNIC"
|
|
lcTable = Strextract(Substr(m.lcResponse, Atc(m.lcString, m.lcResponse)), '<TABLE', '</TABLE>', 1, 1)
|
|
|
|
If Empty(m.lcTable)
|
|
Dimension laInfo(100, 2)
|
|
laInfo = ""
|
|
laInfo(2, 2) = "Nu s-a gasit tabelul!"
|
|
Else
|
|
* Elimin CR LF TAB NBSP si "reglez" &
|
|
lcTable = Transform(m.lcTable)
|
|
lcTable = Strtran(m.lcTable, Chr(10), '', 1, 1000, 1)
|
|
* lcTable = Strtran(m.lcTable, Chr(9), '',1,1000,1)
|
|
lcTable = Strtran(m.lcTable, Chr(13), '', 1, 1000, 1)
|
|
lcTable = Strtran(m.lcTable, ' ', ' ', 1, 1000, 1)
|
|
lcTable = Strtran(m.lcTable, '&', '&', 1, 1000, 1)
|
|
|
|
*!* lcTable = STREXTRACT(m.lcResponse,'<table','table>',1,5)
|
|
*** functia parsetable transforma tabelul html intr-o lista fara tag-uri
|
|
lcList = This.ParseTable(m.lcTable)
|
|
*** se trece lista intr-un vector
|
|
lnLinii = Alines(laInfo, lcList, 1)
|
|
If lnLinii > 1
|
|
*** vectorul laInfo se redimensioneaza la 2 coloane. Prima coloana contine explicatia, a doua valoarea
|
|
Dimension laInfo (Ceiling(lnLinii / 2), 2)
|
|
For I = 1 To Alen(laInfo, 1)
|
|
laInfo(I, 1) = Alltrim(Strtran(Alltrim(Strtran(laInfo(I, 1), " ", "", 1, 1000, 1)), Chr(9), ""))
|
|
laInfo(I, 2) = Alltrim(Strtran(Alltrim(Strtran(laInfo(I, 2), " ", "", 1, 1000, 1)), Chr(9), ""))
|
|
Endfor
|
|
Else
|
|
Dimension laInfo(100, 2)
|
|
laInfo = ""
|
|
laInfo(2, 2) = "Tabelul are dimensiunea < 2!"
|
|
Endif && lnLinii > 1
|
|
Endif && EMPTY(m.lcTable)
|
|
Endif && NU ATI INTRODUS CODUL DE VALIDARE CORECT
|
|
Endproc && InfoMfin2Array
|
|
|
|
*** Parseaza html-ul de la vies si transforma tabelul intr-un array cu 2 coloane (descriere, valoare)
|
|
Procedure InfoVIES2Array(lcResponse, laInfo)
|
|
|
|
Local lcList, lcTable, lnLinii, I
|
|
|
|
lcTable = Strextract(m.lcResponse, '<table', 'table>', 5, 5)
|
|
*** functia parsetable transforma tabelul html intr-o lista fara tag-uri
|
|
lcList = This.ParseTable(m.lcTable)
|
|
*** se trece lista intr-un vector
|
|
lnLinii = Alines(laInfo, lcList, 1)
|
|
*** vectorul laInfo se redimensioneaza la 2 coloane. Prima coloana contine explicatia, a doua valoarea
|
|
Dimension laInfo (lnLinii / 2, 2)
|
|
For I = 1 To Alen(laInfo, 1)
|
|
laInfo(I, 1) = Alltrim(Strtran(Alltrim(Strtran(laInfo(I, 1), " ", "", 1, 10, 1)), Chr(9), ""))
|
|
laInfo(I, 2) = Alltrim(Strtran(Alltrim(Strtran(laInfo(I, 2), " ", "", 1, 10, 1)), Chr(9), ""))
|
|
Endfor
|
|
Endproc && InfoMfin2Array
|
|
|
|
*** creaza o lista caracter cu valorile dintr-un tabel html
|
|
*** rand 1: cell_1_1, rand 2: cell_1_2, rand 3: cell_2_1, rand 4: cell_2_2 etc.
|
|
Function ParseTable
|
|
Lparameters tcTable
|
|
|
|
Local lcList, lcCell, lcData, lnCell, lnTag
|
|
lcList = ''
|
|
For lnCell = 1 To Occurs('<td', Lower(tcTable))
|
|
lcCell = Strextract(tcTable, '<td', 'td>', lnCell, 3)
|
|
lcData = ''
|
|
For lnTag = 1 To Occurs('>', lcCell)
|
|
lcData = lcData + Strextract(lcCell, '>', '<', lnTag, 3)
|
|
Next lnTag
|
|
lcData = Alltrim(Chrtran(lcData, Chr(10) + Chr(13), Space(1)))
|
|
Do While At(Space(2), lcData) > 0
|
|
lcData = Strtran(lcData, Space(2), Space(1))
|
|
Enddo
|
|
lcList = lcList + lcData + CR
|
|
Endfor
|
|
Return lcList
|
|
Endfunc && ParseTable
|
|
|
|
*** Extrage codul de tara din codul fiscal (primele 2 caractere)
|
|
Function GetCodTara
|
|
Lparameters tcCodFiscal
|
|
|
|
Local lcCodTara, lcCodFiscal
|
|
Local lcChar1, lcChar2
|
|
lcCodTara = ""
|
|
lcCodFiscal = Alltrim(Strtran(Upper(Transform(tcCodFiscal)), ' ', ''))
|
|
lcChar1 = Substr(m.lcCodFiscal, 1, 1)
|
|
|
|
If Isalpha(m.lcChar1)
|
|
m.lcCodTara = m.lcCodTara + m.lcChar1
|
|
lcChar2 = Substr(m.lcCodFiscal, 2, 1)
|
|
If Isalpha(m.lcChar2)
|
|
m.lcCodTara = m.lcCodTara + m.lcChar2
|
|
Endif
|
|
Endif
|
|
|
|
If m.lcCodTara = 'R' Or Empty(m.lcCodTara)
|
|
m.lcCodTara = 'RO'
|
|
Endif
|
|
|
|
Return m.lcCodTara
|
|
Endfunc && GetCodTara
|
|
|
|
*** curata textul de diacritice, spatii, CR/LF
|
|
Function RemoveCharacters
|
|
Lparameters tcText, tlDiacritics, tlSpaces, tlCR
|
|
*** tcText: textul initial
|
|
*** tlDiacritics: inlocuieste diacriticele
|
|
*** tlSpaces: sterge spatiile
|
|
*** tlCR: sterge CR si LF
|
|
|
|
If Pcount() = 1
|
|
tlDiacritics = .T.
|
|
Endif
|
|
|
|
Local lcText
|
|
lcText = Nvl(m.tcText, '')
|
|
If m.tlDiacritics
|
|
lcText = STRTRAN(STRTRAN(Strtran(Nvl(m.lcText, ''), Chr(197) + CHR(162), 'T', 1,100,1), Chr(197) + CHR(63), 'S', 1,100,1), Chr(196) + CHR(63), 'A', 1,100,1)
|
|
lcText = Strtran(Nvl(m.lcText, ''), Chr(195) + CHR(63), 'I', 1,100,1)
|
|
lcText = Strtran(Strtran(Strtran(Strtran(Strtran(Nvl(m.lcText, ''), Chr(170), 'S', 1,100,1), Chr(222), 'T', 1,100,1), Chr(226), 'A', 1,100,1), Chr(227), 'A', 1,100,1), Chr(238), 'I', 1,100,1)
|
|
lcText = STRTRAN(Strtran(Strtran(Strtran(Nvl(m.lcText, ''), Chr(206), 'I', 1,100,1), Chr(194), 'A', 1,100,1), Chr(195), 'A', 1,100,1), Chr(196), 'A', 1,100,1)
|
|
lcText = STRTRAN(m.lcText, CHR(2), '',1,100,1) && caracter neprintabil
|
|
ENDIF
|
|
|
|
|
|
If m.tlSpaces
|
|
lcText = Strtran(m.lcText, ' ', '', 1, 100, 1)
|
|
Endif
|
|
If m.tlCR
|
|
lcText = Strtran(Strtran(m.lcText, Chr(13), ''), Chr(10), '')
|
|
Endif
|
|
|
|
Return m.lcText
|
|
Endfunc
|
|
|
|
******************************************************
|
|
*** Primeste o adresa de forma Strada NR LOCALITATE
|
|
*** Intoarce un obiect cu proprietatile: STRADA, NR, LOCALITATE
|
|
******************************************************
|
|
Procedure ParseAdresaMFin
|
|
Lparameters tcAdresa
|
|
* tcAdresa: Bld. Stefan cel Mare 14 Tirgu Neamt
|
|
Local lcAdresa, loAdresa
|
|
loAdresa = Createobject("empty")
|
|
AddProperty(loAdresa, "strada", "")
|
|
AddProperty(loAdresa, "nr", "")
|
|
AddProperty(loAdresa, "localitate", "")
|
|
|
|
lcAdresa = Iif(!Empty(m.tcAdresa) And Type('tcAdresa') = 'C', m.tcAdresa, '')
|
|
If !Empty(m.lcAdresa)
|
|
lcPatternNrLocalitate = "\d+[A-Za-z\s]+$" && 14 Tirgu Neamt
|
|
lcNrLocalitate = GetRegexp(m.lcAdresa, m.lcPatternNrLocalitate, 1) && 14 Tirgu Neamt
|
|
|
|
lcPatternLocalitate = "[A-Za-z\s]+$" && Tirgu Neamt
|
|
loAdresa.localitate = GetRegexp(m.lcAdresa, m.lcPatternLocalitate, 1) && Tirgu Neamt
|
|
|
|
loAdresa.nr = Alltrim(Strtran(m.lcNrLocalitate, loAdresa.localitate, '')) && 14
|
|
|
|
If !Empty(m.lcNrLocalitate)
|
|
loAdresa.strada = Alltrim(Strtran(m.lcAdresa, m.lcNrLocalitate, '')) && Bld. Stefan cel Mare
|
|
Endif
|
|
Endif && !EMPTY()
|
|
|
|
Return loAdresa
|
|
Endproc && ParseAdresaMfin
|
|
|
|
***************************************************************
|
|
*** Intoarce un obiect Mfin cu atribute goale, pentru uz intern
|
|
***************************************************************
|
|
Function GetEmptyMfinObj
|
|
Local loMFIN
|
|
|
|
loMFIN = Createobject("empty")
|
|
AddProperty(loMFIN, "Eroare", '')
|
|
AddProperty(loMFIN, "Cod", "")
|
|
AddProperty(loMFIN, "Firma", "")
|
|
AddProperty(loMFIN, "Adresa", "")
|
|
AddProperty(loMFIN, "Judet", "")
|
|
AddProperty(loMFIN, "Regcom", "")
|
|
AddProperty(loMFIN, "codpostal", "")
|
|
AddProperty(loMFIN, "telefon", "")
|
|
AddProperty(loMFIN, "fax", "")
|
|
AddProperty(loMFIN, "DataTVAMFIN", "")
|
|
AddProperty(loMFIN, "PlatitorTVAMFIN", .F.)
|
|
AddProperty(loMFIN, "Stare", "")
|
|
AddProperty(loMFIN, "Strada", "")
|
|
AddProperty(loMFIN, "Nr", "")
|
|
AddProperty(loMFIN, "Localitate", "")
|
|
AddProperty(loMFIN, "Bloc", "")
|
|
AddProperty(loMFIN, "Scara", "")
|
|
AddProperty(loMFIN, "Etaj", "")
|
|
AddProperty(loMFIN, "Apart", "")
|
|
AddProperty(loMFIN, "TvaIncasare", .F.)
|
|
AddProperty(loMFIN, "SplitTVA", .F.)
|
|
AddProperty(loMFIN, "Inactiv", .F.)
|
|
Return loMFIN
|
|
Endfunc && GetEmptyMfinObj
|
|
Enddefine
|
|
|
|
*********************************************
|
|
*** Verificare coduri fiscale folosind serviciul web ANAF, cate 500 de coduri per interogare
|
|
*********************************************
|
|
Define Class VerificareANAF As Custom
|
|
|
|
Procedure Init
|
|
If !'nfjsonread' $ Lower(Set("Procedure"))
|
|
Set Procedure To nfjsonread.prg Additive
|
|
Endif
|
|
If !'nfjsoncreate' $ Lower(Set("Procedure"))
|
|
Set Procedure To nfjsoncreate.prg Additive
|
|
Endif
|
|
Endproc && Init
|
|
|
|
*************************************
|
|
*** VerificaListaCIF("31103995,1879855", Date(), "crsANAF")
|
|
*** Verifica codurile fiscale din lista, la data
|
|
*** Intoarce un cursor crsANAF (cui N(13), Data d, denumire c(60), adresa c(244), tva L, data_sfarsit d, data_anul_imp d, mesaj c(100))
|
|
*************************************
|
|
Function VerificaListaCIF
|
|
Lparameters tcListaCIF, tdData, tcAlias
|
|
* tcListaCIF: lista coduri fiscale sau numele unui cursor cu coduri fiscale
|
|
|
|
Local llUsed, lcCursorListaCIF, lnRec, lnRecs, lcAlias
|
|
|
|
lcCursorListaCIF = ""
|
|
llUsed = .F.
|
|
lcAlias = ""
|
|
|
|
goLog.Log('tcListaCIF: ' + tcListaCIF, 'VerificaListaCIF')
|
|
If Used(tcListaCIF)
|
|
* cursor
|
|
lcCursorListaCIF = m.tcListaCIF
|
|
llUsed = .T.
|
|
Else
|
|
* lista
|
|
lcCursorListaCIF = "cListaCIFTemp"
|
|
lnRecs = Getwordcount(m.tcListaCIF, ',')
|
|
Create Cursor (lcCursorListaCIF) (cod_fiscal c(30) Null, data D null)
|
|
For lnRec = 1 To m.lnRecs
|
|
lcCodFiscal = Getwordnum(m.tcListaCIF, m.lnRec, ',')
|
|
Insert Into (lcCursorListaCIF) (cod_fiscal, data) Values (m.lcCodFiscal, m.tdData)
|
|
Endfor
|
|
Endif
|
|
|
|
lcAlias = This.ANAF_SincronWebService_PlatitorTva(m.lcCursorListaCIF, m.tdData, m.tcAlias)
|
|
If !m.llUsed
|
|
Use In (Select(lcCursorListaCIF))
|
|
Endif
|
|
|
|
Return m.lcAlias
|
|
Endfunc && AnafPlatitorTVA
|
|
|
|
*
|
|
Function ANAF_SincronWebService_PlatitorTva
|
|
Lparameters tcCursorListaCIF, tdData, tcAlias
|
|
|
|
Local loCol As "empty"
|
|
Local loHTTP As 'Microsoft.XMLHTTP'
|
|
Local laCoduri[1], lcAlias, lcData, lcDataFormatted, lcJsonString, lcListaCIF, lcSend, lcServer, lcCodFiscal, llDataCursor
|
|
Local ldData, lnRec, lnRecords, loJsonObject, lnIdx, lnRec1, lnRec2, lnGrup, lnGrupuri, loEx As Exception
|
|
Local loVerificareCod As "VerificareCod"
|
|
Local lcCodFiscalFRO, lcCodTara, lcMesaj, llRO, lnReqNo, lnWaitSeconds, laFound, lcCodJudet
|
|
|
|
lcJsonString = ""
|
|
|
|
lcAlias = Iif(!Empty(m.tcAlias) And Type('tcAlias') = "C", m.tcAlias, "crsANAF")
|
|
USE IN (SELECT(m.lcAlias))
|
|
|
|
ldData = Iif(!Empty(m.tdData) And Type('tdData') = "D", m.tdData, Date())
|
|
|
|
lcData = Dtos(m.ldData)
|
|
*lcDataFormatted = Left(m.lcData, 4) + "-" + Substr(m.lcData, 5, 2) + "-" + Substr(m.lcData, 7, 2)
|
|
lnRecords = Reccount(tcCursorListaCIF)
|
|
|
|
IF m.lnRecords = 0
|
|
Return m.lcAlias
|
|
ENDIF
|
|
|
|
llDataCursor = (TYPE(tcCursorListaCIF + '.data') = 'D') && daca exista coloana data in cursor, folosesc data din cursor, daca este completata
|
|
|
|
goLog.Log('lnRecords: ' + Transform(m.lnRecords), 'ANAF_SincronWebService_PlatitorTva')
|
|
Try
|
|
loHTTP = Createobject('winHTTP.winHTTPrequest.5.1')
|
|
Catch To loEx
|
|
ENDTRY
|
|
|
|
If Type('loHTTP') <> 'O'
|
|
Try
|
|
loHTTP = Createobject('Microsoft.XMLHTTP') && 04.07.2016
|
|
Catch To loEx
|
|
AMESSAGEBOX(loEx.Message, 0 + 16, _Screen.Caption)
|
|
Endtry
|
|
Endif
|
|
If Type('loHTTP') <> 'O'
|
|
goLog.Log("TYPE('loHTTP') <> 'O'", 'ANAF_SincronWebService_PlatitorTva')
|
|
Return m.lcAlias
|
|
Endif
|
|
|
|
* lcServer = 'https://webservicesp.anaf.ro:/PlatitorTvaRest/api/v1/ws/tva' && api v1
|
|
* lcServer = 'https://webservicesp.anaf.ro/PlatitorTvaRest/api/v3/ws/tva'
|
|
*!* lcServer = 'https://webservicesp.anaf.ro/PlatitorTvaRest/api/v5/ws/tva'
|
|
*!* lcServer = 'https://webservicesp.anaf.ro/PlatitorTvaRest/api/v6/ws/tva'
|
|
lcServer = 'https://webservicesp.anaf.ro/api/PlatitorTvaRest/v9/tva'
|
|
|
|
loVerificareCod = Createobject("VerificareCod")
|
|
lnReqNo = 100 && maxim 100 CUI-uri pe verificare
|
|
lnWaitSeconds = 1 && minim 1 secunda intre interogari
|
|
lnGrupuri = Max(CEILING(m.lnRecords / m.lnReqNo), 1) && grupuri de cate 500 de coduri maxim per interogare
|
|
For lnGrup = 1 To m.lnGrupuri
|
|
lnRec1 = m.lnReqNo * (m.lnGrup - 1) + 1
|
|
lnRec2 = Min(m.lnReqNo * m.lnGrup, m.lnRecords)
|
|
Wait Window 'Verific codurile fiscale ' + Alltrim(Str(m.lnRec1)) + '..' + Alltrim(Str(m.lnRec2)) + ' / ' + Alltrim(Str(m.lnRecords)) Nowait
|
|
|
|
Release laCoduri
|
|
Dimension laCoduri(m.lnRec2 - lnRec1 + 1)
|
|
lnIdx = 0
|
|
Select (m.tcCursorListaCIF)
|
|
Scan For Between(Recno(), lnRec1, lnRec2)
|
|
lcCodFiscal = Alltrim(cod_fiscal)
|
|
IF m.llDataCursor AND !EMPTY(data)
|
|
lcData = DTOS(data)
|
|
ELSE
|
|
lcData = DTOS(m.ldData)
|
|
ENDIF
|
|
lcDataFormatted = Left(m.lcData, 4) + "-" + Substr(m.lcData, 5, 2) + "-" + Substr(m.lcData, 7, 2)
|
|
|
|
lcCodTara = loVerificareCod.GetCodTara(m.lcCodFiscal)
|
|
llRO = (m.lcCodTara = 'RO')
|
|
|
|
lcCodFiscalFRO = Strtran(m.lcCodFiscal, m.lcCodTara, '')
|
|
lcCodFiscalFRO = Strtran(Strtran(Strtran(m.lcCodFiscalFRO, ' ', ''), 'RO', ''), 'R', '')
|
|
|
|
If m.llRO AND (Isdigit(m.lcCodFiscalFRO) and Len(m.lcCodFiscalFRO) <= 10)
|
|
loCol = Createobject("empty")
|
|
AddProperty(loCol, "cui", Int(Val(m.lcCodFiscalFRO)))
|
|
AddProperty(loCol, "data", m.lcDataFormatted)
|
|
lnIdx = lnIdx + 1
|
|
laCoduri[lnIdx] = loCol
|
|
ENDIF
|
|
Endscan && tcCursorListaCIF
|
|
IF m.lnIdx > 0
|
|
Dimension laCoduri(lnIdx)
|
|
ENDIF
|
|
|
|
lcSend = nfjsoncreate(@laCoduri)
|
|
goLog.Log('lcSend: ' + m.lcSend, 'ANAF_SincronWebService_PlatitorTva')
|
|
|
|
lcJsonString = ''
|
|
Try
|
|
loHTTP.Open('POST', lcServer, .F.) && !!! POST e blocat de furnizor
|
|
loHTTP.setRequestHeader("Content-Type", "application/json;")
|
|
loHTTP.Send(lcSend)
|
|
If loHTTP.Status = 200
|
|
lcJsonString = ALLTRIM(loHTTP.responseText)
|
|
IF LEFT(m.lcJsonString,1) <> '{'
|
|
IF 'mentenanta'$LOWER(m.lcJsonString)
|
|
AMESSAGEBOX('Serviciul web ANAF este in mentenanta!',0+48,_screen.Caption)
|
|
ELSE
|
|
AMESSAGEBOX('Serviciul web ANAF nu a intors un raspuns corespunzator.!' + CHR(13) + CHR(10) + m.lcJsonString,0+48,_screen.Caption)
|
|
ENDIF
|
|
lcJsonString = ''
|
|
ENDIF
|
|
ENDIF
|
|
Catch To loEx
|
|
AMESSAGEBOX(loEx.Message, 0 + 16, _Screen.Caption)
|
|
Endtry
|
|
*
|
|
goLog.Log('lcJsonString: ' + m.lcJsonString, 'ANAF_SincronWebService_PlatitorTva')
|
|
|
|
*
|
|
SET STEP ON
|
|
If Not Empty(m.lcJsonString)
|
|
TRY
|
|
loJsonObject = nfjsonread(m.lcJsonString) && nfJson from http://vfpx.codeplex.com/
|
|
lcCodJudet = ""
|
|
IF TYPE('loJsonObject.found_vfpsafe_[1].adresa_domiciliu_fiscal.dcod_judet') <> 'U'
|
|
lcCodJudet = loJsonObject.found_vfpsafe_[1].adresa_domiciliu_fiscal.dcod_judet
|
|
ENDIF
|
|
IF !EMPTY(m.lcCodJudet)
|
|
lcAlias = This.ParseJsonANAFv8(loJsonObject, m.tcAlias)
|
|
ELSE
|
|
lcMesaj = 'Serviciul web ANAF intors mesaj de eroare: ' + IIF(TYPE('loJsonObject.message') = 'C', loJsonObject.message, '')
|
|
AMESSAGEBOX(m.lcMesaj, 0+48, _screen.Caption)
|
|
ENDIF
|
|
CATCH TO loEx
|
|
AMESSAGEBOX(loEx.Message, 0 + 16, _Screen.Caption)
|
|
ENDTRY
|
|
Endif
|
|
If m.lnGrup < m.lnGrupuri
|
|
INKEY(m.lnWaitSeconds)&& astept o secunda intre interogari
|
|
ENDIF
|
|
Endfor && lnGrup
|
|
*
|
|
Return m.lcAlias
|
|
Endfunc && ANAF_SincronWebService_PlatitorTva
|
|
|
|
*************************************
|
|
*** Parseaza obiectul cu raspunsul de la ANAF si creeaza cursorul crsANAF
|
|
*** intoarce numele cursorului creat
|
|
*************************************
|
|
Procedure ParseJsonANAFv8
|
|
Lparameters toJsonObject, m.tcAlias
|
|
|
|
Local lcSave_SetDate, lnRec, loRec, loAdresa
|
|
Local lcAlias, lnCUI, lnRecords, loDate, loDateGenerale, loEx, loInregistrareRTVAI
|
|
Local loInregistrareSplitTVA, loInregistrareTVA, loJsonObject, loStareInactiv
|
|
|
|
loJsonObject = Iif(Type('toJsonObject') = "O" And Pemstatus(toJsonObject, "found_vfpsafe_", 5), toJsonObject, Null)
|
|
|
|
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), ;
|
|
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, ;
|
|
mesaj V(100), judet V(100), strada V(100), nr V(20), localitate V(100), Bloc V(20), scara V(20), etaj V(20), apart V(20))
|
|
Endif
|
|
|
|
If !Isnull(loJsonObject)
|
|
goLog.Log('JsonObject ' + Transform(Alen(loJsonObject.found_vfpsafe_, 1)) + ' found ' + Transform(Alen(loJsonObject.notfound, 1)) + ' not found', 'ParseJsonANAF')
|
|
|
|
lcSave_SetDate = Set("Date")
|
|
Set Date To YMD
|
|
*
|
|
lnRecords = Alen(loJsonObject.found_vfpsafe_, 1)
|
|
For lnRec = 1 To m.lnRecords
|
|
loRec = loJsonObject.found_vfpsafe_(m.lnRec)
|
|
If Type('loRec') <> 'O'
|
|
LOOP
|
|
ENDIF
|
|
SELECT (m.lcAlias)
|
|
SCATTER NAME loDate MEMO BLANK
|
|
|
|
IF TYPE('loRec.date_generale') = 'O'
|
|
loDateGenerale = loRec.date_generale
|
|
|
|
loDateGenerale.adresa = This.RemoveCharacters(loDateGenerale.adresa)
|
|
loAdresa = This.ParseAdresaAnaf(loDateGenerale.adresa)
|
|
|
|
loDate.cui = loDateGenerale.Cui
|
|
loDate.data = CTOD(loDateGenerale.data)
|
|
|
|
loDate.denumire = This.RemoveCharacters(loDateGenerale.denumire)
|
|
loDate.firma = loDateGenerale.denumire
|
|
|
|
loDate.adresa = loDateGenerale.adresa
|
|
loDate.judet = loAdresa.judet
|
|
loDate.strada = loAdresa.strada
|
|
loDate.nr = loAdresa.nr
|
|
loDate.localitate = loAdresa.localitate
|
|
loDate.bloc = loAdresa.Bloc
|
|
loDate.scara = loAdresa.scara
|
|
loDate.etaj = loAdresa.etaj
|
|
loDate.apart = loAdresa.apart
|
|
|
|
loDate.nrRegCom = IIF(TYPE('loDateGenerale.nrRegCom') <> 'U', loDateGenerale.nrRegCom, '')
|
|
ENDIF
|
|
|
|
IF TYPE('loRec.inregistrare_scop_tva') = 'O'
|
|
loInregistrareTVA = loRec.inregistrare_scop_tva
|
|
|
|
loDate.scpTVA = loInregistrareTVA.scpTVA
|
|
IF TYPE('loInregistrareTVA.perioade_tva',1) <> "U"
|
|
TRY
|
|
loDate.data_inceput_ScpTVA = CTOD(loInregistrareTVA.perioade_tva[1].data_inceput_ScpTVA)
|
|
loDate.data_sfarsit_ScpTVA = CTOD(loInregistrareTVA.perioade_tva[1].data_sfarsit_ScpTVA)
|
|
loDate.data_anul_imp_ScpTVA = CTOD(loInregistrareTVA.perioade_tva[1].data_anul_imp_ScpTVA)
|
|
loDate.mesaj_ScpTVA = loInregistrareTVA.perioade_tva[1].mesaj_ScpTVA
|
|
CATCH TO loEx
|
|
ENDTRY
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF TYPE('loRec.inregistrare_RTVAI') = 'O'
|
|
loInregistrareRTVAI = loRec.inregistrare_RTVAI
|
|
|
|
loDate.dataInceputTvaInc = CTOD(loInregistrareRTVAI.dataInceputTvaInc)
|
|
loDate.dataSfarsitTvaInc = CTOD(loInregistrareRTVAI.dataSfarsitTvaInc)
|
|
loDate.dataActualizareTvaInc = CTOD(loInregistrareRTVAI.dataActualizareTvaInc)
|
|
loDate.dataPublicareTvaInc = CTOD(loInregistrareRTVAI.dataPublicareTvaInc)
|
|
loDate.tipActTvaInc = loInregistrareRTVAI.tipActTvaInc
|
|
loDate.statusTvaIncasare = loInregistrareRTVAI.statusTvaIncasare
|
|
ENDIF
|
|
|
|
IF TYPE('loRec.stare_inactiv') = 'O'
|
|
loStareInactiv = loRec.stare_inactiv
|
|
|
|
loDate.dataInactivare = CTOD(loStareInactiv.dataInactivare)
|
|
loDate.dataReactivare = CTOD(loStareInactiv.dataReactivare)
|
|
loDate.dataPublicare = CTOD(loStareInactiv.dataPublicare)
|
|
loDate.dataRadiere = CTOD(loStareInactiv.dataRadiere)
|
|
loDate.statusInactivi = loStareInactiv.statusInactivi
|
|
ENDIF
|
|
|
|
IF TYPE('loRec.inregistrare_SplitTVA') = 'O'
|
|
loInregistrareSplitTVA = loRec.inregistrare_SplitTVA
|
|
|
|
loDate.dataInceputSplitTVA = CTOD(loInregistrareSplitTVA.dataInceputSplitTVA)
|
|
loDate.dataAnulareSplitTVA = CTOD(loInregistrareSplitTVA.dataAnulareSplitTVA)
|
|
loDate.statusSplitTVA = loInregistrareSplitTVA.statusSplitTVA
|
|
loDate.statusSplitTVA = loInregistrareSplitTVA.statusSplitTVA
|
|
ENDIF
|
|
|
|
loDate.tva = loDate.scpTVA
|
|
loDate.tvaincasare = loDate.statusTvaIncasare
|
|
loDate.splittva = loDate.statusSplitTVA
|
|
loDate.inactiv = loDate.statusInactivi
|
|
loDate.mesaj = loDate.mesaj_ScpTVA
|
|
|
|
IF !EMPTY(NVL(loDate.cui, 0))
|
|
Insert Into (m.lcAlias) FROM NAME loDate
|
|
ENDIF
|
|
Endfor
|
|
|
|
For lnRec = 1 To Alen(loJsonObject.notfound, 1)
|
|
lnCUI = loJsonObject.notfound(m.lnRec)
|
|
If Type('lnCUI') = 'N'
|
|
SELECT (m.lcAlias)
|
|
SCATTER NAME loDate MEMO BLANK
|
|
|
|
loDate.cui = m.lnCUI
|
|
|
|
IF !EMPTY(NVL(loDate.cui, 0))
|
|
Insert Into (m.lcAlias) FROM NAME loDate
|
|
ENDIF
|
|
Endif
|
|
Endfor
|
|
*
|
|
Set Date To &lcSave_SetDate
|
|
Else
|
|
goLog.Log('JsonObject is null', 'ParseJsonANAF')
|
|
Endif
|
|
Return m.lcAlias
|
|
ENDPROC
|
|
|
|
*************************************
|
|
*** Parseaza obiectul cu raspunsul de la ANAF si creeaza cursorul crsANAF
|
|
*** intoarce numele cursorului creat
|
|
*************************************
|
|
Procedure ParseJsonANAFv3
|
|
Lparameters toJsonObject, m.tcAlias
|
|
|
|
Local lcSave_SetDate, lnRec, loRec, loAdresa
|
|
loJsonObject = Iif(Type('toJsonObject') = "O" And Pemstatus(toJsonObject, "found_vfpsafe_", 5), toJsonObject, Null)
|
|
|
|
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), ;
|
|
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, ;
|
|
mesaj V(100), judet V(100), strada V(100), nr V(20), localitate V(100), Bloc V(20), scara V(20), etaj V(20), apart V(20))
|
|
Endif
|
|
|
|
If !Isnull(loJsonObject)
|
|
goLog.Log('JsonObject ' + Transform(Alen(loJsonObject.found_vfpsafe_, 1)) + ' found ' + Transform(Alen(loJsonObject.notfound, 1)) + ' not found', 'ParseJsonANAF')
|
|
|
|
lcSave_SetDate = Set("Date")
|
|
Set Date To YMD
|
|
*
|
|
For lnRec = 1 To Alen(loJsonObject.found_vfpsafe_, 1)
|
|
loRec = loJsonObject.found_vfpsafe_(m.lnRec)
|
|
If Type('loRec') = 'O'
|
|
loRec.adresa = This.RemoveCharacters(loRec.adresa)
|
|
loAdresa = This.ParseAdresaAnaf(loRec.adresa)
|
|
lcNrRegCom = IIF(TYPE('loRec.nrRegCom') <> 'U', loRec.nrRegCom, '')
|
|
|
|
Insert Into (m.lcAlias) (cui, data, denumire, firma, adresa, nrRegCom, ;
|
|
scpTVA, data_inceput_ScpTVA, data_sfarsit_ScpTVA, data_anul_imp_ScpTVA, mesaj_ScpTVA, ;
|
|
dataInceputTvaInc, dataSfarsitTvaInc, dataActualizareTvaInc, dataPublicareTvaInc, tipActTvaInc, statusTvaIncasare, ;
|
|
dataInactivare, dataReactivare, dataPublicare, dataRadiere, statusInactivi, ;
|
|
dataInceputSplitTVA, dataAnulareSplitTVA, statusSplitTVA, ;
|
|
tva, tvaincasare, splittva, inactiv, ;
|
|
mesaj, judet, strada, nr, localitate, Bloc, scara, etaj, apart) VALUES ;
|
|
(loRec.cui, CTOD(loRec.data), loRec.denumire, loRec.denumire, loRec.adresa, m.lcNrRegCom, ;
|
|
loRec.scpTVA, CTOD(loRec.data_inceput_ScpTVA), CTOD(loRec.data_sfarsit_ScpTVA), CTOD(loRec.data_anul_imp_ScpTVA), loRec.mesaj_ScpTVA, ;
|
|
CTOD(loRec.dataInceputTvaInc), CTOD(loRec.dataSfarsitTvaInc), CTOD(loRec.dataActualizareTvaInc), CTOD(loRec.dataPublicareTvaInc), loRec.tipActTvaInc, loRec.statusTvaIncasare, ;
|
|
CTOD(loRec.dataInactivare), CTOD(loRec.dataReactivare), CTOD(loRec.dataPublicare), CTOD(loRec.dataRadiere), loRec.statusInactivi, ;
|
|
CTOD(loRec.dataInceputSplitTVA), CTOD(loRec.dataAnulareSplitTVA), loRec.statusSplitTVA, ;
|
|
loRec.scpTVA, loRec.statusTvaIncasare, loRec.statusSplitTVA, loRec.statusInactivi, ;
|
|
loRec.mesaj_ScpTVA, loAdresa.judet, loAdresa.strada, loAdresa.nr, loAdresa.localitate, loAdresa.Bloc, loAdresa.scara, loAdresa.etaj, loAdresa.apart)
|
|
Endif
|
|
Endfor
|
|
|
|
For lnRec = 1 To Alen(loJsonObject.notfound, 1)
|
|
loRec = loJsonObject.notfound(m.lnRec)
|
|
If Type('loRec') = 'O'
|
|
loRec.adresa = This.RemoveCharacters(loRec.adresa)
|
|
loAdresa = This.ParseAdresaAnaf(loRec.adresa)
|
|
lcNrRegCom = IIF(TYPE('loRec.nrRegCom') <> 'U', loRec.nrRegCom, '')
|
|
|
|
Insert Into (m.lcAlias) (cui, data, denumire, firma, adresa, nrRegCom, ;
|
|
scpTVA, data_inceput_ScpTVA, data_sfarsit_ScpTVA, data_anul_imp_ScpTVA, mesaj_ScpTVA, ;
|
|
dataInceputTvaInc, dataSfarsitTvaInc, dataActualizareTvaInc, dataPublicareTvaInc, tipActTvaInc, statusTvaIncasare, ;
|
|
dataInactivare, dataReactivare, dataPublicare, dataRadiere, statusInactivi, ;
|
|
dataInceputSplitTVA, dataAnulareSplitTVA, statusSplitTVA, ;
|
|
tva, tvaincasare, splittva, inactiv, ;
|
|
mesaj, judet, strada, nr, localitate, Bloc, scara, etaj, apart) VALUES ;
|
|
(loRec.cui, CTOD(loRec.data), loRec.denumire, loRec.denumire, loRec.adresa, m.lcNrRegCom, ;
|
|
loRec.scpTVA, CTOD(loRec.data_inceput_ScpTVA), CTOD(loRec.data_sfarsit_ScpTVA), CTOD(loRec.data_anul_imp_ScpTVA), loRec.mesaj_ScpTVA, ;
|
|
CTOD(loRec.dataInceputTvaInc), CTOD(loRec.dataSfarsitTvaInc), CTOD(loRec.dataActualizareTvaInc), CTOD(loRec.dataPublicareTvaInc), loRec.tipActTvaInc, loRec.statusTvaIncasare, ;
|
|
CTOD(loRec.dataInactivare), CTOD(loRec.dataReactivare), CTOD(loRec.dataPublicare), CTOD(loRec.dataRadiere), loRec.statusInactivi, ;
|
|
CTOD(loRec.dataInceputSplitTVA), CTOD(loRec.dataAnulareSplitTVA), loRec.statusSplitTVA, ;
|
|
loRec.scpTVA, loRec.statusTvaIncasare, loRec.statusSplitTVA, loRec.statusInactivi, ;
|
|
loRec.mesaj_ScpTVA, loAdresa.judet, loAdresa.strada, loAdresa.nr, loAdresa.localitate, loAdresa.Bloc, loAdresa.scara, loAdresa.etaj, loAdresa.apart)
|
|
|
|
Endif
|
|
Endfor
|
|
*
|
|
Set Date To &lcSave_SetDate
|
|
Else
|
|
goLog.Log('JsonObject is null', 'ParseJsonANAF')
|
|
Endif
|
|
Return m.lcAlias
|
|
ENDPROC
|
|
|
|
*************************************
|
|
*** Parseaza obiectul cu raspunsul de la ANAF si creeaza cursorul crsANAF
|
|
*** intoarce numele cursorului creat
|
|
*************************************
|
|
Procedure ParseJsonANAFv1
|
|
Lparameters toJsonObject, m.tcAlias
|
|
|
|
Local lcSave_SetDate, lnRec, loRec, loAdresa
|
|
loJsonObject = Iif(Type('toJsonObject') = "O" And Pemstatus(toJsonObject, "found_vfpsafe_", 5), toJsonObject, Null)
|
|
|
|
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 V(244), tva L, data_sfarsit D, data_anul_imp D, mesaj V(100), judet V(100), strada V(100), nr V(20), localitate V(100), Bloc V(20), scara V(20), etaj V(20), apart V(20))
|
|
Endif
|
|
|
|
If !Isnull(loJsonObject)
|
|
goLog.Log('JsonObject ' + Transform(Alen(loJsonObject.found_vfpsafe_, 1)) + ' found ' + Transform(Alen(loJsonObject.notfound, 1)) + ' not found', 'ParseJsonANAF')
|
|
|
|
lcSave_SetDate = Set("Date")
|
|
Set Date To YMD
|
|
*
|
|
For lnRec = 1 To Alen(loJsonObject.found_vfpsafe_, 1)
|
|
loRec = loJsonObject.found_vfpsafe_(m.lnRec)
|
|
If Type('loRec') = 'O'
|
|
loRec.adresa = This.RemoveCharacters(loRec.adresa)
|
|
loAdresa = This.ParseAdresaAnaf(loRec.adresa)
|
|
Insert Into (m.lcAlias) (cui, Data, denumire, firma, adresa, tva, data_sfarsit, data_anul_imp, mesaj, judet, strada, nr, localitate, Bloc, scara, etaj, apart) Values;
|
|
(loRec.cui, Ctod(loRec.Data), loRec.denumire, loRec.denumire, loRec.adresa, loRec.tva, Ctod(loRec.data_sfarsit), Ctod(loRec.data_anul_imp), loRec.mesaj, loAdresa.judet, loAdresa.strada, loAdresa.nr, loAdresa.localitate, loAdresa.Bloc, loAdresa.scara, loAdresa.etaj, loAdresa.apart)
|
|
Endif
|
|
Endfor
|
|
|
|
For lnRec = 1 To Alen(loJsonObject.notfound, 1)
|
|
loRec = loJsonObject.notfound(m.lnRec)
|
|
If Type('loRec') = 'O'
|
|
loRec.adresa = This.RemoveCharacters(loRec.adresa)
|
|
loAdresa = This.ParseAdresaAnaf(loRec.adresa)
|
|
Insert Into (m.lcAlias) (cui, Data, denumire, firma, adresa, tva, data_sfarsit, data_anul_imp, mesaj, judet, strada, nr, localitate, Bloc, scara, etaj, apart) Values;
|
|
(loRec.cui, Ctod(loRec.Data), loRec.denumire, loRec.denumire, loRec.adresa, loRec.tva, Ctod(loRec.data_sfarsit), Ctod(loRec.data_anul_imp), loRec.mesaj, loAdresa.judet, loAdresa.strada, loAdresa.nr, loAdresa.localitate, loAdresa.Bloc, loAdresa.scara, loAdresa.etaj, loAdresa.apart)
|
|
Endif
|
|
Endfor
|
|
*
|
|
Set Date To &lcSave_SetDate
|
|
Else
|
|
goLog.Log('JsonObject is null', 'ParseJsonANAF')
|
|
Endif
|
|
Return m.lcAlias
|
|
Endproc
|
|
|
|
*** curata textul de diacritice, spatii, CR/LF
|
|
Function RemoveCharacters
|
|
Lparameters tcText, tlDiacritics, tlSpaces, tlCR
|
|
*** tcText: textul initial
|
|
*** tlDiacritics: inlocuieste diacriticele
|
|
*** tlSpaces: sterge spatiile
|
|
*** tlCR: sterge CR si LF
|
|
|
|
If Pcount() = 1
|
|
tlDiacritics = .T.
|
|
Endif
|
|
|
|
Local lcText
|
|
lcText = Nvl(m.tcText, '')
|
|
If m.tlDiacritics
|
|
lcText = STRTRAN(STRTRAN(Strtran(Nvl(m.lcText, ''), Chr(197) + CHR(162), 'T', 1,100,1), Chr(197) + CHR(63), 'S', 1,100,1), Chr(196) + CHR(63), 'A', 1,100,1)
|
|
lcText = Strtran(Nvl(m.lcText, ''), Chr(195) + CHR(63), 'I', 1,100,1)
|
|
lcText = Strtran(Strtran(Strtran(Strtran(Strtran(Nvl(m.lcText, ''), Chr(170), 'S', 1,100,1), Chr(222), 'T', 1,100,1), Chr(226), 'A', 1,100,1), Chr(227), 'A', 1,100,1), Chr(238), 'I', 1,100,1)
|
|
lcText = STRTRAN(Strtran(Strtran(Strtran(Nvl(m.lcText, ''), Chr(206), 'I', 1,100,1), Chr(194), 'A', 1,100,1), Chr(195), 'A', 1,100,1), Chr(196), 'A', 1,100,1)
|
|
Endif
|
|
|
|
If m.tlSpaces
|
|
lcText = Strtran(m.lcText, ' ', '', 1, 100, 1)
|
|
Endif
|
|
If m.tlCR
|
|
lcText = Strtran(Strtran(m.lcText, Chr(13), ''), Chr(10), '')
|
|
Endif
|
|
|
|
Return m.lcText
|
|
ENDFUNC
|
|
|
|
******************************************************
|
|
*** Primeste o adresa de forma * JUD. CONSTANTA, MUN. CONSTANTA, ALEEA CRIZANTEMELOR, NR.6, CAMERA 2, BL.H1, SC.F, ET.2, AP.109
|
|
*** Intoarce un obiect cu proprietatile: STRADA, NR, LOCALITATE
|
|
******************************************************
|
|
Procedure ParseAdresaAnaf
|
|
Lparameters tcAdresa
|
|
* JUD. CONSTANTA, MUN. CONSTANTA, ALEEA CRIZANTEMELOR, NR.6, CAMERA 2, BL.H1, SC.F, ET.2, AP.109
|
|
Local lcAdresa, loAdresa, lcCamera, lcItem, lnItem, lnItems, lcPrefix
|
|
lcAdresa = Iif(!Empty(m.tcAdresa) And Type('tcAdresa') = 'C', Alltrim(m.tcAdresa), "")
|
|
|
|
lcCamera = ""
|
|
loAdresa = Createobject("empty")
|
|
AddProperty(loAdresa, "judet", "")
|
|
AddProperty(loAdresa, "strada", "")
|
|
AddProperty(loAdresa, "nr", "")
|
|
AddProperty(loAdresa, "localitate", "")
|
|
AddProperty(loAdresa, "bloc", "")
|
|
AddProperty(loAdresa, "scara", "")
|
|
AddProperty(loAdresa, "etaj", "")
|
|
AddProperty(loAdresa, "apart", "")
|
|
|
|
If !Empty(m.lcAdresa)
|
|
lnItems = Getwordcount(m.lcAdresa)
|
|
For lnItem = 1 To m.lnItems
|
|
lcItem = Alltrim(Getwordnum(m.lcAdresa, m.lnItem, ','))
|
|
Do Case
|
|
Case m.lnItem = 1 && 'JUD.'$UPPER(lcItem)
|
|
*!* lcJudet = ALLTRIM(STRTRAN(m.lcItem, 'JUD.', '',1,1,1))
|
|
loAdresa.judet = Getwordnum(m.lcItem, 2, ' ') && CONSTANTA
|
|
Case m.lnItem = 2 && 'MUN.'$UPPER(lcItem)
|
|
*!* lcLocalitate = ALLTRIM(STRTRAN(m.lcItem, 'MUN.', '',1,1,1))
|
|
IF LEFT(m.lcItem, 7) = "SECTOR "
|
|
loAdresa.localitate = STRTRAN(m.lcItem, "SECTOR ", "BUCURESTI SECTORUL ")
|
|
ELSE
|
|
loAdresa.localitate = Getwordnum(m.lcItem, 2, ' ') && CONSTANTA
|
|
ENDIF
|
|
Case m.lnItem = 3
|
|
lcPrefix = Getwordnum(m.lcItem, 1, ' ') && STR. / BD.
|
|
loAdresa.strada = ALLTRIM(STRTRAN(m.lcItem, m.lcPrefix, '',1,1,1)) && Getwordnum(m.lcItem, 2, ' ') && CRIZANTEMELOR
|
|
Case m.lnItem = 4
|
|
loAdresa.nr = Alltrim(Strtran(m.lcItem, 'NR.', '', 1, 1, 1)) && 6
|
|
ENDCASE
|
|
IF Left(Upper(m.lcItem), 3) = 'BL.'
|
|
loAdresa.Bloc = Alltrim(Strtran(m.lcItem, 'BL.', '', 1, 1, 1)) && H1
|
|
ENDIF
|
|
IF Left(Upper(m.lcItem), 3) = 'SC.'
|
|
loAdresa.scara = Alltrim(Strtran(m.lcItem, 'SC.', '', 1, 1, 1)) && F
|
|
ENDIF
|
|
IF Left(Upper(m.lcItem), 3) = 'ET.'
|
|
loAdresa.etaj = Alltrim(Strtran(m.lcItem, 'ET.', '', 1, 1, 1)) && 2
|
|
ENDIF
|
|
IF Left(Upper(m.lcItem), 3) = 'AP.'
|
|
loAdresa.apart = Alltrim(Strtran(m.lcItem, 'AP.', '', 1, 1, 1)) && 109
|
|
ENDIF
|
|
IF Left(Upper(m.lcItem), 6) = 'CAMERA'
|
|
lcCamera = Alltrim(Strtran(m.lcItem, 'CAMERA', '', 1, 1, 1)) && 2
|
|
ENDIF
|
|
ENDFOR
|
|
If !Empty(m.lcCamera) And !Empty(loAdresa.apart)
|
|
loAdresa.apart = loAdresa.apart + ' C. ' + m.lcCamera
|
|
Endif
|
|
Endif && !empty
|
|
|
|
Return loAdresa
|
|
Endproc
|
|
|
|
|
|
Enddefine && VerificareANAF
|
|
|
|
*** WEBSITE ALTERNATIV PENTRU VERIFICARE PLATITOR TVA VIES
|
|
Procedure VIES_VAT
|
|
Lparameters tara, vat_id
|
|
|
|
Local lResult
|
|
lResult = .F.
|
|
|
|
#Define HTTPSTATUS_OK 200
|
|
#Define HTTPSTATUS_CREATED 201
|
|
#Define HTTPSTATUS_ACCEPTED 202
|
|
#Define HTTPSTATUS_MULTISTATUS 207
|
|
#Define HTTPSTATUS_BADREQUEST 400
|
|
#Define HTTPSTATUS_UNAUTHORIZED 401
|
|
#Define HTTPSTATUS_FORBIDDEN 403
|
|
#Define HTTPSTATUS_NOTFOUND 404
|
|
#Define HTTPSTATUS_INTERNALSERVERERROR 500
|
|
Local oHTTP As "Microsoft.XMLHTTP", cURL
|
|
oHTTP = Createobject("Microsoft.XMLHTTP")
|
|
cURL = 'http://isvat.appspot.com/' + Upper(Trim(tara)) + '/' + Upper(Trim(vat_id)) + '/'
|
|
Try
|
|
oHTTP.Open("GET", cURL, .F.)
|
|
oHTTP.Send()
|
|
If oHTTP.Status = HTTPSTATUS_OK
|
|
lResult = Iif(oHTTP.responseText = 'true', .T., .F.)
|
|
Endif
|
|
Catch
|
|
lResult = .F.
|
|
* error handling code here.
|
|
Endtry
|
|
|
|
Return lResult
|
|
Endproc && VIES_VAT
|
|
|
|
Procedure ONRC
|
|
cCui = '1879855'
|
|
|
|
oHTTP = Createobject('winhttp.winhttprequest.5.1')
|
|
oHTTP.Open('POST', 'http://recom1-ssl.onrc.ro/cgi-bin/intguest.cgi', .F.)
|
|
oHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
|
|
oHTTP.setRequestHeader("Referrer", "http://recom1-ssl.onrc.ro/cgi-bin/recom.cgi?o7=1&l=R")
|
|
oHTTP.setRequestHeader("Authorization", "Basic Z3Vlc3Q6Z3Vlc3Q")
|
|
oHTTP.setRequestHeader("credentials", "guest:guest")
|
|
oHTTP.Send("l=R&o=7&jud=99&cfiscalf=" + cCui + "&cauta=Selectie")
|
|
|
|
cTable = Strextract(oHTTP.responseText, '<table', 'table>', 5, 4)
|
|
Messagebox(cTable)
|
|
Endproc && ONRC
|
|
|
|
|
|
*** FORMULAR INTRODUCERE COD KAPTCH MFINANTE
|
|
Define Class IntroducereCod As Form
|
|
Height = 140
|
|
Width = 393
|
|
DoCreate = .T.
|
|
AutoCenter = .T.
|
|
Caption = "Cod Siguranta Ministerul de Finante"
|
|
WindowType = 1
|
|
cCod = ""
|
|
_MemberData = [<VFPData><memberdata name="ccod" display="cCod"/><memberdata name="ccodfile" display="cCodFile"/></VFPData>]
|
|
ccodfile = ""
|
|
Name = "Form1"
|
|
ControlBox = .F.
|
|
|
|
|
|
Add Object label1 As Label With ;
|
|
BackStyle = 0, ;
|
|
Caption = "Introduceti codul din imaginea de mai sus" + CRLF + "si apasati ENTER", ;
|
|
Height = 40, ;
|
|
Left = 39, ;
|
|
Top = 84, ;
|
|
Width = 234, ;
|
|
Name = "Label1"
|
|
|
|
|
|
Add Object text1 As TextBox With ;
|
|
FontBold = .T., ;
|
|
FontSize = 12, ;
|
|
Height = 30, ;
|
|
Left = 283, ;
|
|
Top = 76, ;
|
|
Width = 54, ;
|
|
Name = "Text1"
|
|
|
|
|
|
Add Object imagine As Image With ;
|
|
Height = 53, ;
|
|
Left = 83, ;
|
|
Top = 12, ;
|
|
Width = 200, ;
|
|
Name = "Imagine"
|
|
|
|
|
|
Procedure Init
|
|
Lparameters tcCodFile
|
|
This.ccodfile = m.tcCodFile
|
|
Thisform.imagine.Picture = m.tcCodFile
|
|
This.Icon = _Screen.Icon
|
|
Endproc
|
|
|
|
|
|
Procedure Unload
|
|
Return This.cCod
|
|
Endproc
|
|
|
|
|
|
Procedure text1.Valid
|
|
Thisform.cCod = Alltrim(This.Value)
|
|
Thisform.Hide()
|
|
Endproc
|
|
|
|
|
|
Enddefine && IntroducereCod
|
|
|