Verificare ANAF la alegerea partenerului: opt-in pe introducerea de documente
Cablarea din ROACONT pentru verificarea ANAF implementata in COMUN (ocautare.prg): - ointroduceri_cont.vc2: 6 apeluri de cautare partener trec lVerificaANAF=1 (frm_introd_compact, frm_introd_compact2007, frm_note, frm_note2007), plus frm_plati_impozite prin caut_parteneri. Raman fara verificare cautarile de responsabili, achizitor, casa si creditor. - cont2000.mn2: punct de meniu Initializari > Optiuni utilizator > "Verificare ANAF la alegerea partenerului" (DO ANAF_ComutaVerificare IN ocautare.prg). - roacont.prg: incarcarea procedurilor necesare verificarii. - oproceduri_import.prg: la importul cu cod fiscal discordant se cere confirmare in loc sa se aleaga tacit. - changelog 2.11.65 si documentul de design al functionalitatii. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019H3r66sVojGhgaKq5niu1u
This commit is contained in:
@@ -47,6 +47,10 @@
|
||||
*!* 09.06.2026
|
||||
*!* Import csvBT - elimin CRLF din interiorul descrierii care rupe linia de tranzactie pe 2 linii
|
||||
|
||||
*!* 25.07.2026
|
||||
*!* marius.mutu
|
||||
*!* CreeazaNote/CompleteazaParteneriROA - la CUI-uri duplicate aleg partenerul cu facturi in perioada curenta, nu ultimul creat
|
||||
|
||||
*************************************
|
||||
* Clasa ImportNote este fabrica de clase tip Export
|
||||
*************************************
|
||||
@@ -316,6 +320,7 @@ Define Class ExtrasBanca As Custom
|
||||
Local lcRecc, lcRecno, lnRecno
|
||||
Local lcComanda, lcDenumire2, lcPartenerCasa, lcTip2, lnVariante, llExcludeOriginal
|
||||
Local lnDenumire, lnDocument, lnIdPartenerCasa, lnVariante, loPartener
|
||||
Local lcGrupIdLista, lcSqlGrup, lnIdPartAlternativ, lcPartAlternativ
|
||||
|
||||
PRIVATE pcContBanca, pnIdPartBanca
|
||||
|
||||
@@ -426,6 +431,7 @@ Define Class ExtrasBanca As Custom
|
||||
Append From Dbf('C_IMPORT_TEMP')
|
||||
|
||||
* Caut/creez parteneri
|
||||
Create Cursor cGrupParteneriCui (id_part_ales N(9), id_part N(9), denumire C(100))
|
||||
SELECT distinct cod_fiscal, denumire, iban FROM cActTemp INTO CURSOR cParteneriTemp READWRITE
|
||||
SELECT cParteneriTemp
|
||||
lcRecc = Transform(Reccount())
|
||||
@@ -450,6 +456,34 @@ Define Class ExtrasBanca As Custom
|
||||
If !Isnull(loPartener)
|
||||
lnIdPartener = Nvl(loPartener.id_part, 0)
|
||||
lcPartener = Alltrim(Nvl(loPartener.denumire, ""))
|
||||
If GetParteneriByCuiNormalizat(m.lcCodFiscal, "cGrupCuiTemp") And Reccount("cGrupCuiTemp") > 1
|
||||
lcGrupIdLista = ""
|
||||
Select cGrupCuiTemp
|
||||
Scan
|
||||
lcGrupIdLista = m.lcGrupIdLista + Iif(Empty(m.lcGrupIdLista), "", ",") + Transform(id_part)
|
||||
Endscan
|
||||
lcSqlGrup = [select id_part, count(*) as nr, sum(precdeb + debit - preccred - credit) as sold from ireg_parteneri ] + ;
|
||||
[where an = ?gnAn and luna = ?gnLuna and id_part in (] + m.lcGrupIdLista + [) group by id_part ] + ;
|
||||
[order by count(*) desc, abs(sum(precdeb + debit - preccred - credit)) desc]
|
||||
If goExecutor.oExecuta(m.lcSqlGrup, "cGrupCuiDoc") And Reccount("cGrupCuiDoc") > 0
|
||||
Select cGrupCuiTemp
|
||||
Locate For id_part = cGrupCuiDoc.id_part
|
||||
If Found()
|
||||
lnIdPartener = cGrupCuiTemp.id_part
|
||||
lcPartener = Alltrim(Nvl(cGrupCuiTemp.denumire, ""))
|
||||
Endif
|
||||
Endif
|
||||
If Used("cGrupCuiDoc")
|
||||
Use In (Select("cGrupCuiDoc"))
|
||||
Endif
|
||||
Select cGrupCuiTemp
|
||||
Scan
|
||||
Insert Into cGrupParteneriCui (id_part_ales, id_part, denumire) Values (m.lnIdPartener, cGrupCuiTemp.id_part, Alltrim(Nvl(cGrupCuiTemp.denumire, "")))
|
||||
Endscan
|
||||
Endif
|
||||
If Used("cGrupCuiTemp")
|
||||
Use In (Select("cGrupCuiTemp"))
|
||||
Endif
|
||||
Endif
|
||||
Endif
|
||||
* Caut partener dupa denumire
|
||||
@@ -699,7 +733,31 @@ Define Class ExtrasBanca As Custom
|
||||
Endif
|
||||
ENDIF
|
||||
* Daca am gasit un document, ies din bucla
|
||||
EXIT
|
||||
EXIT
|
||||
Else
|
||||
lnIdPartAlternativ = 0
|
||||
If Used("cGrupParteneriCui")
|
||||
Select cGrupParteneriCui
|
||||
Scan For id_part_ales = m.lnIdPartener And id_part <> m.lnIdPartener
|
||||
lcPartAlternativ = Alltrim(denumire)
|
||||
loAct = GetDocumentByContPartenerAct(m.lcContPartener, id_part, m.lnNrAct, .F.)
|
||||
If !Empty(m.loAct.id_fact) And ((m.lcTip = "D" And m.lnSuma <= - m.loAct.solddeb) Or (m.lcTip = "C" And m.lnSuma <= m.loAct.solddeb))
|
||||
lnIdPartAlternativ = id_part
|
||||
Exit
|
||||
Endif
|
||||
Select cGrupParteneriCui
|
||||
Endscan
|
||||
Endif
|
||||
Select cActTemp
|
||||
If !Empty(m.lnIdPartAlternativ)
|
||||
Select cActTemp
|
||||
If m.lcTip = "D"
|
||||
Replace id_factd With m.loAct.id_fact, pereched With m.loAct.nract, scd With m.loAct.Cont, ascd With m.loAct.acont, id_partd With m.lnIdPartAlternativ, partd With m.lcPartAlternativ
|
||||
Else
|
||||
Replace id_factc With m.loAct.id_fact, perechec With m.loAct.nract, scc With m.loAct.Cont, ascc With m.loAct.acont, id_partc With m.lnIdPartAlternativ, partc With m.lcPartAlternativ
|
||||
Endif
|
||||
EXIT
|
||||
Endif
|
||||
ENDIF && !Empty(m.loAct.id_fact)
|
||||
ENDFOR && lnDocument
|
||||
ENDIF && !Empty(m.lnIdPartener) And m.lnDocumente > 0
|
||||
@@ -728,7 +786,31 @@ Define Class ExtrasBanca As Custom
|
||||
Endif
|
||||
ENDIF
|
||||
* Daca am gasit un document, ies din bucla
|
||||
EXIT
|
||||
EXIT
|
||||
Else
|
||||
lnIdPartAlternativ = 0
|
||||
If Used("cGrupParteneriCui")
|
||||
Select cGrupParteneriCui
|
||||
Scan For id_part_ales = m.lnIdPartener And id_part <> m.lnIdPartener
|
||||
lcPartAlternativ = Alltrim(denumire)
|
||||
loAct = GetDocumentByContPartenerAct(m.lcContPartener, id_part, m.lcComanda, .T.)
|
||||
If !Empty(m.loAct.id_fact) And ((m.lcTip = "D" And m.lnSuma <= - m.loAct.solddeb) Or (m.lcTip = "C" And m.lnSuma <= m.loAct.solddeb))
|
||||
lnIdPartAlternativ = id_part
|
||||
Exit
|
||||
Endif
|
||||
Select cGrupParteneriCui
|
||||
Endscan
|
||||
Endif
|
||||
Select cActTemp
|
||||
If !Empty(m.lnIdPartAlternativ)
|
||||
Select cActTemp
|
||||
If m.lcTip = "D"
|
||||
Replace id_factd With m.loAct.id_fact, pereched With m.loAct.nract, scd With m.loAct.Cont, ascd With m.loAct.acont, id_partd With m.lnIdPartAlternativ, partd With m.lcPartAlternativ
|
||||
Else
|
||||
Replace id_factc With m.loAct.id_fact, perechec With m.loAct.nract, scc With m.loAct.Cont, ascc With m.loAct.acont, id_partc With m.lnIdPartAlternativ, partc With m.lcPartAlternativ
|
||||
Endif
|
||||
EXIT
|
||||
Endif
|
||||
ENDIF && !Empty(m.loAct.id_fact)
|
||||
ENDFOR && lnDocument
|
||||
ENDIF && !Empty(m.lnIdPartener) And m.lnDocumente > 0
|
||||
@@ -836,6 +918,10 @@ Define Class ExtrasBanca As Custom
|
||||
Select (m.lcSelect)
|
||||
ENDIF && llSucces
|
||||
|
||||
If Used("cGrupParteneriCui")
|
||||
Use In (Select("cGrupParteneriCui"))
|
||||
Endif
|
||||
|
||||
Return m.llSucces
|
||||
Endproc && CreeazaNote
|
||||
|
||||
@@ -4423,6 +4509,22 @@ Function GetRegExpAllNumbers
|
||||
Return lnResults
|
||||
Endfunc
|
||||
|
||||
* --------------------------------------------------------------------
|
||||
* Deschide tcCursor cu id_part, denumire, cod_fiscal pentru toti parteneri cu acelasi CUI normalizat
|
||||
* --------------------------------------------------------------------
|
||||
Function GetParteneriByCuiNormalizat
|
||||
Lparameters tcCodFiscal, tcCursor
|
||||
Private pcCui
|
||||
Local lcSql, llSucces
|
||||
|
||||
pcCui = Alltrim(Strtran(Strtran(Upper(Alltrim(m.tcCodFiscal)), ' ', ''), 'RO', ''))
|
||||
|
||||
lcSql = [select id_part, denumire, cod_fiscal from nom_parteneri where sters = 0 and inactiv = 0 ] + ;
|
||||
[and replace(replace(upper(cod_fiscal),' ',''),'RO','') = ?pcCui order by id_part]
|
||||
llSucces = goExecutor.oExecuta(m.lcSql, m.tcCursor)
|
||||
Return m.llSucces
|
||||
Endfunc
|
||||
|
||||
* --------------------------------------------------------------------
|
||||
* Creeaza/Actualizeaza Parteneri in ROA pentru fiecare cod_fiscal din tcCursorParteneri
|
||||
* Verific dupa cod_fiscal, apoi dupa denumire
|
||||
@@ -4444,6 +4546,7 @@ Procedure CompleteazaParteneriROA
|
||||
Local lcSqlInsert, lcSqlPart, lcStrada, lcSufix, lcTara, lcTelefon1, lcTelefon2, lcTip_persoana
|
||||
Local lcWeb, lcinactiv, llCallBack, llSucces, lnIdJudet, lnIdJudetBucuresti, lnIdLocalitateBucuresti
|
||||
Local lnIdTaraRO, lnItem, lnItems, lnSucces
|
||||
Local lcCuiNorm
|
||||
Private pnIdAdresa, pcCodFiscal, pcDenumire, pnIdPart, pnNrAdrese, pnIdJudet
|
||||
|
||||
llCallBack = Type('toCallBackForm') = 'O' And Pemstatus(m.toCallBackForm, 'trace', 5)
|
||||
@@ -4463,6 +4566,9 @@ Procedure CompleteazaParteneriROA
|
||||
Return m.llSucces
|
||||
Endif
|
||||
|
||||
Select id_part, cod_fiscal, denumire, NormalizeazaCUI(cod_fiscal) As cui_norm From cParteneriROA Into Cursor cParteneriROA Readwrite
|
||||
Index On cui_norm Tag cuinorm
|
||||
|
||||
lcAdreseParteneri = [select id_adresa, id_part, localitate, id_loc, judet, id_judet, tara, id_tara from vadrese_parteneri]
|
||||
llSucces = goExecutor.oExecuta(m.lcAdreseParteneri, 'cAdreseROA')
|
||||
|
||||
@@ -4494,6 +4600,12 @@ Procedure CompleteazaParteneriROA
|
||||
If !Empty(m.pcCodFiscal)
|
||||
Locate For Alltrim(Strtran(cod_fiscal, ' ', '')) = m.pcCodFiscal
|
||||
*!* lnSucces = goExecutor.oSelect2Value(m.lcSqlCod, @pnIdPart)
|
||||
If !Found()
|
||||
lcCuiNorm = NormalizeazaCUI(m.pcCodFiscal)
|
||||
If !Empty(m.lcCuiNorm)
|
||||
Seek m.lcCuiNorm Order cuinorm
|
||||
Endif
|
||||
Endif
|
||||
Else
|
||||
Locate For Alltrim(Upper(denumire)) = m.pcDenumire
|
||||
*!* lnSucces = goExecutor.oSelect2Value(m.lcSqlDenumire, @pnIdPart)
|
||||
|
||||
@@ -576,6 +576,10 @@ If Type('laparametri',1)="A"
|
||||
Endif
|
||||
Endif
|
||||
|
||||
If Type('goCacheANAF_Sesiune') = 'O'
|
||||
Release goCacheANAF_Sesiune
|
||||
Endif
|
||||
|
||||
Private gcCopyRight
|
||||
gcCopyRight = '<27> ROA Romfast SRL'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user