Files
comun/programe/pmenu.prg
Marius Mutu 940bb39701 Import eFactura in lot: borderou cu ce lipseste, coada de contabilizare, alegerea contului
Borderoul tine per factura ce mai are de completat si daca are articole de gestiune
(camp gest, coloana si filtru), coada contabilizeaza in serie facturile bifate si
incheie cu un rezumat, iar contul de furnizor/client se alege din planul de conturi.
Cheia normalizata de articol, rezolvarea automata a partenerului si anularea in bloc
intra tot aici. Pozitia in lista se pastreaza peste reaplicarea filtrului.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Aroafxp4z8bmM5oVECZRXY
2026-09-09 22:06:48 +03:00

1172 lines
43 KiB
Plaintext
Raw Blame History

*!* 27.03.2009
*!* Alex.lepadatu
*!* modificari pentru mutare xsets.... in baza de date
*!* 14.04.2009
*!* Alex.lepadatu
*!* dupa cererea de date din lans se apeleaza 'procedura_lans'; vezi setul 50505
*!* 29.05.2009
*!* marius.mutu
*!* id_set: 10600 - 10603 - banca valuta/lei > incasare/plata facturi in valuta
*!* poAct.suma_22 (banca in valuta > incasare/plata > suma in valuta de incasare)
*!* daca apare itemul 81 (suma_22), nu mai pun in xrequest itemul 11 (suma_2) si nu mai exista poAct.suma_2, deci trebuie sa adaug proprietatea
*!* poAct.suma_22a = suma in valuta incasata si convertita in valuta facturii
*!* poAct.suma_32 = curs valutei in care se incaseaza
*!* 18.02.2010
*!* marius.mutu
*!* + lans_generic - suport pentru note X = Y
*!* 14.01.2015
*!* marius.mutu
*!* LANS: se transmite poActAnterior, daca se alege continuarea cu aceeasi operatie. Se completeaza automat valorile din operatia precedenta.
*!* doar pentru contabilitate.
*!* La gestiune nu se copiaza numarul facturii si partenerul
*!* 16.01.2015
*!* marius.mutu
*!* LANS: se poate opta cu DA continuare operatie cu copiere date / NU continuare operatie fara copiere date / Renuntare
*!* nu se mai sare peste numar act, dataact, suma valuta
*!* 04.03.2015
*!* marius.mutu
*!* LANS: Completare informatii din documentul anterior
*!* Nu mai copiez partenerul, in afara de banca/casa (ex: 5311 = 4111, se retine doar casa, nu si clientul)
*!* Nu mai completez nract (nu se mai genera un numar nou la tipurilede documente cu serii, ex. chitante,facturi)
*!* 04.01.2015
*!* marius.mutu
*!* lans - oxset.id_jtax pentru documentele din 2015 introduse in 2016 - nu mai afisau explicatia de TVA initiala cu 24%
*!* 06.01.2015
*!* marius.mutu
*!* introducere_compacta
*!* In 2015 lucrez cu TVA 24%. Transform TVA din 20% in 24%
*!* 18.08.2017
*!* marius.mutu
*!* lans - corectie NIR/BON
*!* 22.08.2025
*!* marius.mutu
* introducere_compacta
* Am introdus Calendar.impozit_profit
* ID_SET = 10609 Platitorii impozit venit, pentru limitare deducere 50% nu le trebuie 2 note CHELTUIELI DEDUCTIBILE si NEDEDUCTIBILE
*!* 20.07.2026
*!* marius.mutu
*!* introducere_compacta
*!* Aduc explicatia, explicatia4 si explicatia5 in cursorul introdc, ca sa poata fi editate pe fiecare rand din grila
*--------------------------------------------
Function deschide_menu
Parameters tabela, cc1, cc2, mnrtata, stinga, sus, ONT
Public nt, no, m
nt = Alltrim(tabela) + '_' + Alltrim(Str(mnrtata))
If Upper(Left(tabela, 6)) = '_MENU1'
no = 'o' + nt
zz = 'SELECT ' + cc1 + ' AS C1, ' + cc2 + ' AS C2,nrnod,PROCEDURA,TATAFIU,ID_SET,LISTA_NOTE FROM ' + ;
tabela + ' WHERE NRTATA=' + Alltrim(Str(mnrtata)) + ' INTO CURSOR ' + nt
Else
no = 'o_' + nt
zz = 'SELECT ' + cc1 + ' AS C1, ' + cc2 + ' AS C2,nrnod,PROCEDURA,TATAFIU,ID_SET FROM ' + ;
tabela + ' WHERE NRTATA=' + Alltrim(Str(mnrtata)) + ' INTO CURSOR ' + nt
Endif
&zz
m = 0
Select &nt
Scan
mm = Len(Alltrim(c1))
m = Iif(m > mm, m, mm)
Endscan
ta = _Tally
If ta = 0
Return '0'
Endif
If Type("&no")!= 'O'
Public &no
zz = no + '=crea("menuclasic")'
&zz
With &no
wm = m * 7
.NUME = no
.ONUMETATA = ONT
.Left = stinga
.Top = sus
.tabela = tabela
.camp1 = cc1
.camp2 = cc2
.sursa = nt
.Width = wm + 2 * .margine
.NRFII = ta
.rh = .container1.cwm1.Height
.Height = (.rh + 1) * .NRFII + 2 * .margine + 2
*.show()
Endwith
Endif
Release nt, m
Return no
*------------------------------------------------------------------------------------------
Procedure deschide_menuuri
*!* If !Used('menu1')
*!* Use &DIRGEN\CONTAB\Date\menu1 In 0 Alias menu1 Order Tag 'nrnod'
*!* Endif
*!* If !Used('menu2')
*!* Use &DIRGEN\CONTAB\Date\menu2 In 0 Alias menu2 Order Tag 'nrnod'
*!* Endif
*!* If !Used('menu3')
*!* Use &DIRGEN\CONTAB\Date\menu3 In 0 Alias menu3 Order Tag 'nrnod'
*!* Endif
*!* If !Used('menu4')
*!* Use &DIRGEN\CONTAB\Date\menu4 In 0 Alias menu4 Order Tag 'nrnod'
*!* Endif
*!* If PRIMADATA
*!* Do CE_WINDOWS
*!* omenuvertical=Crea('menuvertical')
*!* omenuvertical.Show()
*!* Endif
*deschide_menu(tabela, cc1,cc2,mnrtata,stinga,sus,ONT
Return
*--------------------------------------
Procedure CE_WINDOWS
Local vermajor, verminor
Public TIP_MENU, COL_MENU, cewin
Store '' To cewin
Store 0 To vermajor, verminor, TIP_MENU
vermajor = Val(Os(3))
verminor = Val(Os(4))
Do Case
Case vermajor < 4
cewin = '95'
Case vermajor = 4
cewin = '98'
Case vermajor >= 5
Do Case
Case verminor = 0
cewin = '2000'
Case verminor = 1
cewin = 'XP'
Otherwise
cewin = 'MAINOU'
Endcase
Endcase
*IF INLIST(CEWIN,'95','98','2000')
TIP_MENU = 0&&'RAISED'
*ELSE
*TIP_MENU=2&&'FLAT'
*ENDIF
*!* Do Case
*!* Case Inlist(cewin,'95','98')
*!* COL_MENU=Rgb(192,192,192)&&GRI
*!* Case cewin='2000'
*!* COL_MENU=Rgb(212,208,200)&&NISIP GRI
*!* Case cewin='XP'
*!* COL_MENU=Rgb(236,233,216)&&NISIP BEJ
*!* Otherwise
COL_MENU = Rgb(255, 255, 255)&&ALB
*!* Endcase
Return
*!* 18.02.2010
*** LANSEAZA LANS CU UN ID_SET SI CONTURILE X (CN), Y (CNY)
Procedure lans_generic
Lparameters tnIds, tcContX, tcAcontX, tcContY, tcAcontY
*!* X = Y
*!* 4426 = Y
Private pcACN, CNY, pcACNY
pcACN = ""
CNY = ""
pcACNY = ""
If Type('tcContX') = 'C' And !Empty(tcContX)
*** CN E VARIABILA GLOBALA IN PROGRAMUL PRINCIPAL
CN = tcContX
Endif
If Type('tcAcontX') = 'C' And !Empty(tcAcontX)
pcACN = tcAcontX
Endif
If Type('tcContY') = 'C' And !Empty(tcContY)
CNY = tcContY
Endif
If Type('tcaContY') = 'C' And !Empty(tcAcontY)
pcACNY = tcContY
Endif
lans(tnIds)
Endproc
*!* 18.02.2010 ^
*--------------------------------------------------------
Function lans
Lparameters IDS, tlContinua, tlVerificaAcont, taValori, tnDeducere, poActAnterior
*!* modificare v 2.2.20 : tnDeducere
* poActAnterior: obiectul poAct completat la un LANS din operatia anterioara. Este completat daca se doreste acelasi tip de operatie
* parametrul poActAnterior poate sa aiba si valorile: "corectie,1234" = modificare NIR/BON din ROAGEST, codul 1234
Local lcACT, lcForm, lcMesaj, lcNOM_CONTRACTE, lcNOM_FDOC, lcNOM_GESTIUNI, lcNOM_LUCRARI
Local lcNOM_PARTENERI, lcNOM_RESPONSABILI, lcNOM_SECTII, lcNOM_SUCURSALE, lcNOM_VALUTE
Local lcNOM_VENIT_CHELTUIELI, lcProcedura, lcSql, lcTip, lcUTILIZATORI, lcValoareDefault
Local lcVariabila, llAfiseaza, llContinua, llCreareGeneratorNumere, llEnabled, llLunaInchisa
Local llSucces, llTabStop, llVerificaAcont, lnIndexVariabile, lnLengthVariabile, lnNumarParametri
Local lnRandVariabila, lnRaspuns, lnSucces
Local lcProprietateAnt, lcValoareAnt, lnProprietate, lnProprietati, llCorectie, lnCod
*:Global pcSirFacturi, taActAnterior[1]
*:Global ID_SET, OXSET, buton, i, oitem, pcSelect, poAct
Store .T. To llContinua, llVerificaAcont
llCorectie = .F.
lnCod = 0
IF TYPE('poActAnterior') = 'O'
llCorectie = IIF(PEMSTATUS(poActAnterior, 'lCorectie', 5), poActAnterior.lCorectie, .F.)
lnCod = IIF(m.llCorectie, poActAnterior.nCod, 0)
ENDIF
lnRaspuns = 6
*!* MODIFICAT 03.11.2005
*!* MARIUS.MUTU
llLunaInchisa = is_luna_blocata(gcS, gnId_Prg_Owner, gnAn, gnLuna)
If llLunaInchisa
aMESSAGEBOX("Aceasta luna este <20>nchisa!", 0 + 48, "Luna <20>nchisa")
Return 2
Endif
lnNumarParametri = Pcount() && modificare v 2.2.20
Do Case
Case lnNumarParametri = 2
llContinua = tlContinua
Case lnNumarParametri >= 3
llContinua = tlContinua
llVerificaAcont = tlVerificaAcont
Endcase
* gcS = variabila globala care imi tine minte schema (diferita in functie de firma)
lcNOM_FDOC = gcS + '.NOM_FDOC'
lcNOM_SUCURSALE = gcS + 'NOM_SUCURSALE'
lcNOM_PARTENERI = gcS + '.NOM_PARTENERI'
lcNOM_VENIT_CHELTUIELI = gcS + '.NOM_VENIT_CHELTUIELI'
lcNOM_RESPONSABILI = gcS + '.VNOM_RESPONSABILI'
lcUTILIZATORI = 'syn_UTILIZATORI'
lcNOM_SECTII = gcS + '.NOM_SECTII'
lcNOM_SUCURSALE = gcS + '.NOM_SUCURSALE'
lcNOM_LUCRARI = gcS + '.NOM_LUCRARI'
lcNOM_GESTIUNI = gcS + '.NOM_GESTIUNI'
lcNOM_VALUTE = gcS + '.NOM_VALUTE'
lcACT = gcS + '.ACT'
lcNOM_CONTRACTE = gcS + '.VCONTRACTE'
If gnAn >= Iif(Type('gnAnFormNou') = 'U', 2007, gnAnFormNou)
pcSelect = ["SELECT A.SERIE_ACT,A.ID_ACT,A.LUNA,A.AN,A.COD, A.DATAIREG as datairegt,A.NRACT,] + ;
[A.DATAACT as dataactt,A.suma, A.EXPLICATIA,A.SCD,A.ASCD,A.SCC,A.ASCC, A.PERECHED,A.PERECHEC,"+] + ;
["A.SUMA_VAL,A.EXPLICATIA4,A.EXPLICATIA5,A.CURS,A.DATASCAD as datascadt,A.NEIMPOZAB,A.NNIR,] + ;
[A.ID_UTIL,UTIL2.UTILIZATOR AS UTIL,A.DATAORA,A.ID_UTILS,UTIL1.UTILIZATOR AS UTILS,A.DATAORAS,"+] + ;
['A.ID_RESPONSABIL,RESP.NUME AS NRESP,A.ID_VENCHELT,VENCHELT.EXPLICATIE AS DST_CHLT,A.ID_LUCRARE,] + ;
[LUCR.NRORD,A.ID_CTR,CTR.CONTRACT,A.ID_SECTIE,SECTII.SECTIE,A.PROC_TVA,A.ID_SET,A.ID_FACT,] + ;
[ A.ID_FACTD, A.ID_FACTC,'+] + ;
['A.ID_PARTD,PART1.NUME AS PARTD,A.ID_PARTC,PART.NUME AS PARTC,A.ID_SUCURSALA,S.SUCURSALA,A.ID_FDOC,FDOC.FEL_DOCUMENT AS FDOC, ' +] + ;
["A.ID_GESTIN,A.ID_JTVA_COLOANA,G1.NUME_GESTIUNE AS GESTIN,A.ID_GESTOUT,G2.NUME_GESTIUNE AS GESTOUT,A.ID_VALUTA,V.NUME_VAL," + ] + ;
["0000000000 as id_pol, lpad(' ',30,' ') as nume_lista_preturi,0 as tva_incasare, "+] + ;
["cast(0 as Number(20)) as id_instiintare, cast(0 as Number(14)) as numar_instiintare, CAST(null as number(6)) as taxcode, CAST(null as varchar2(9)) as paymentcode, "+] + ;
["cast(null as varchar2(250)) as taxname, cast(null as varchar2(250)) as paymentname, cast(null as varchar2(250)) as explicatie_tva "+] + ;
['FROM &lcACT A '+] + ;
['LEFT JOIN &lcNOM_FDOC FDOC ON A.ID_FDOC=FDOC.ID_FDOC '+] + ;
['LEFT JOIN &lcNOM_SUCURSALE S ON A.ID_SUCURSALA = S.ID_SUCURSALA '+] + ;
['LEFT JOIN &lcNOM_PARTENERI PART ON A.ID_PARTC=PART.ID_PART '+] + ;
['LEFT JOIN &lcNOM_PARTENERI PART1 ON A.ID_PARTD=PART1.ID_PART '+] + ;
['LEFT JOIN &lcNOM_VENIT_CHELTUIELI VENCHELT ON A.ID_VENCHELT=VENCHELT.ID_VENCHELT '+] + ;
['LEFT JOIN &lcNOM_RESPONSABILI RESP ON A.ID_RESPONSABIL=RESP.ID_RESPONSABIL '+] + ;
['LEFT JOIN &lcUTILIZATORI UTIL1 ON A.ID_UTILS=UTIL1.ID_UTIL '+] + ;
['LEFT JOIN &lcUTILIZATORI UTIL2 ON A.ID_UTIL=UTIL2.ID_UTIL '+] + ;
['LEFT JOIN &lcNOM_LUCRARI LUCR ON A.ID_LUCRARE=LUCR.ID_LUCRARE '+] + ;
['LEFT JOIN &lcNOM_CONTRACTE CTR ON A.ID_CTR=CTR.ID_CTR '+] + ;
['LEFT JOIN &lcNOM_GESTIUNI G1 ON A.ID_GESTIN=G1.ID_GESTIUNE '+] + ;
['LEFT JOIN &lcNOM_GESTIUNI G2 ON A.ID_GESTOUT=G2.ID_GESTIUNE '+] + ;
['LEFT JOIN &lcNOM_VALUTE V ON A.ID_VALUTA=V.ID_VALUTA '+] + ;
['LEFT JOIN &lcNOM_SECTII SECTII ON A.ID_SECTIE=SECTII.ID_SECTIE where 1=2']
Else
pcSelect = ["SELECT A.SERIE_ACT,A.ID_ACT,A.LUNA,A.AN,A.COD, A.DATAIREG as datairegt,A.NRACT, ] + ;
[A.DATAACT as dataactt,A.suma, A.EXPLICATIA,A.SCD,A.ASCD,A.SCC,A.ASCC, A.PERECHED,A.PERECHEC,"+] + ;
["A.SUMA_VAL,A.EXPLICATIA4,A.EXPLICATIA5,A.CURS,A.DATASCAD as datascadt,A.NEIMPOZAB,A.NNIR,] + ;
[A.ID_UTIL,UTIL2.UTILIZATOR AS UTIL,A.DATAORA,A.ID_UTILS,UTIL1.UTILIZATOR AS UTILS,A.DATAORAS,"+] + ;
['A.ID_RESPONSABIL,RESP.NUME AS NRESP,A.ID_VENCHELT,VENCHELT.EXPLICATIE AS DST_CHLT,A.ID_LUCRARE,] + ;
[LUCR.NRORD,A.ID_CTR,CTR.CONTRACT,A.ID_SECTIE,SECTII.SECTIE,A.PROC_TVA,A.ID_SET,A.ID_FACT, A.ID_FACTD, A.ID_FACTC,'+] + ;
['A.ID_PARTD,PART1.NUME AS PARTD,A.ID_PARTC,PART.NUME AS PARTC,A.ID_SUCURSALA,S.SUCURSALA, ] + ;
[A.ID_FDOC,FDOC.FEL_DOCUMENT AS FDOC, ' +] + ;
["A.ID_GESTIN,G1.NUME_GESTIUNE AS GESTIN,A.ID_GESTOUT,G2.NUME_GESTIUNE AS GESTOUT,A.ID_VALUTA,V.NUME_VAL," +] + ;
["0000000000 as id_pol, lpad(' ',30,' ') as nume_lista_preturi,0 as tva_incasare, "+] + ;
["cast(0 as Number(20)) as id_instiintare, cast(0 as Number(14)) as nr_instiintare, CAST(null as number(6)) as taxcode, CAST(null as varchar2(9)) as paymentcode, "+] + ;
["cast(null as varchar2(250)) as taxname, cast(null as varchar2(250)) as paymentname, cast(null as varchar2(250)) as explicatie_tva "+] + ;
['FROM &lcACT A '+] + ;
['LEFT JOIN &lcNOM_FDOC FDOC ON A.ID_FDOC=FDOC.ID_FDOC '+] + ;
['LEFT JOIN &lcNOM_SUCURSALE S ON A.ID_SUCURSALA = S.ID_SUCURSALA '+] + ;
['LEFT JOIN &lcNOM_PARTENERI PART ON A.ID_PARTC=PART.ID_PART '+] + ;
['LEFT JOIN &lcNOM_PARTENERI PART1 ON A.ID_PARTD=PART1.ID_PART '+] + ;
['LEFT JOIN &lcNOM_VENIT_CHELTUIELI VENCHELT ON A.ID_VENCHELT=VENCHELT.ID_VENCHELT '+] + ;
['LEFT JOIN &lcNOM_RESPONSABILI RESP ON A.ID_RESPONSABIL=RESP.ID_RESPONSABIL '+] + ;
['LEFT JOIN &lcUTILIZATORI UTIL1 ON A.ID_UTILS=UTIL1.ID_UTIL '+] + ;
['LEFT JOIN &lcUTILIZATORI UTIL2 ON A.ID_UTIL=UTIL2.ID_UTIL '+] + ;
['LEFT JOIN &lcNOM_LUCRARI LUCR ON A.ID_LUCRARE=LUCR.ID_LUCRARE '+] + ;
['LEFT JOIN &lcNOM_CONTRACTE CTR ON A.ID_CTR=CTR.ID_CTR '+] + ;
['LEFT JOIN &lcNOM_GESTIUNI G1 ON A.ID_GESTIN=G1.ID_GESTIUNE '+] + ;
['LEFT JOIN &lcNOM_GESTIUNI G2 ON A.ID_GESTOUT=G2.ID_GESTIUNE '+] + ;
['LEFT JOIN &lcNOM_VALUTE V ON A.ID_VALUTA=V.ID_VALUTA '+] + ;
['LEFT JOIN &lcNOM_SECTII SECTII ON A.ID_SECTIE=SECTII.ID_SECTIE where 1=2']
Endif
*!* modificare serii numere - 10.2007
llCreareGeneratorNumere = .F.
If Type('poGeneratorNumere') = 'U'
Private poGeneratorNumere
poGeneratorNumere = Createobject('oGeneratorNumere')
llCreareGeneratorNumere = .T.
Endif
*!* modificare serii numere - 10.2007 ^
Private podateintrod
Store '' To podateintrod
llAfiseaza = .F.
lnSucces = gencursor('podateintrod', 'crsact', pcSelect, [1=2], [''], '', llAfiseaza)
podateintrod.ca_baza1.afisare()
If Used('actactan')
Use In actactan
Endif
Select 0000 As nr_nota, c.*, c.SUMA As TOTFTVA, c.SUMA As TOTTVA, Ttod(c.dataactt) As dataact, ;
Ttod(c.datairegt) As dataireg, Ttod(c.datascadt) As datascad, 0 As POZITIE_1, 0 As POZITIE_2 ;
From crsact c Into Cursor actactan Readwrite
Use In crsact
Release podateintrod
Select actactan
Scatter Name poAct
*!* 29.05.2009
*!* marius.mutu
*!* poAct.suma_22 (banca in valuta > incasare/plata > suma in valuta de incasare)
*!* daca apare itemul 81 (suma_22), nu mai pun in xrequest itemul 11 (suma_2) si nu mai exista poAct.suma_2, deci trebuie sa adaug proprietatea
*!* poAct.suma_22a = suma in valuta incasata si convertita in valuta facturii
*!* poAct.suma_32 = cursul valutei in care se incaseaza
AddProperty(poAct, "suma_2", 0.0000)
AddProperty(poAct, "suma_22", 0.0000)
AddProperty(poAct, "suma_22a", 0.0000)
AddProperty(poAct, "suma_32", 0.0000)
AddProperty(poAct, "nume_val2", "")
AddProperty(poAct, "id_valuta2", Cast(0 As I))
AddProperty(poAct, "deducere", 0) && modificare v 2.2.20
AddProperty(poAct, "id_gestiune", 0)
AddProperty(poAct, "cgest", "")
AddProperty(poAct, "nume_gestiune", "")
AddProperty(poAct, "nume_val3", "")
AddProperty(poAct, "id_valuta3", Cast(0 As I))
m.ID_SET = IDS
poAct.ID_SET = IDS
Select XSETS
Seek IDS && trebuie sa raman pozitionat in xsets pe setul curent pentru ca ma bazez in alte proceduri pe setul curent
If Found()
Scatter Name OXSET
*!* modificare JC/JV 2007
If gnNeplatitoare_tva = 1
OXSET.id_jtax = OXSET.id_jtaxn
OXSET.id_jnetax = OXSET.id_jtaxn
ELSE
DO CASE
CASE BETWEEN(m.gnAn*12+m.gnLuna, 2016*12+1, 2025*12+7)
* 08/2025: 19 > 21
DO case
CASE oxset.id_jtax = 208
oxset.id_jtax = 105
CASE oxset.id_jtax = 216
oxset.id_jtax = 141
CASE oxset.id_jtax = 220
oxset.id_jtax = 118
CASE oxset.id_jtax = 35
oxset.id_jtax = 1
ENDCASE
CASE gnAn <= 2015
* achizitiile si livrarile pe 2015 trebuie sa propuna TVA 24%.
* In xsets s-a modificat 20% de la 01.01.2016
DO case
CASE oxset.id_jtax = 176
oxset.id_jtax = 156
CASE oxset.id_jtax = 186
oxset.id_jtax = 162
CASE oxset.id_jtax = 180
oxset.id_jtax = 158
CASE oxset.id_jtax = 27
oxset.id_jtax = 15
ENDCASE
ENDCASE
ENDIF
Else
Scatter Name OXSET Blank
Endif
*!* modificare JC/JV 2007 ^
If gnAn >= Iif(Type('gnAnFormNou') = 'U', 2007, gnAnFormNou)
If Inlist(OXSET.ID_SET, 208, 209, 220, 221) && achizitie import/intern cu recalculare pret achizitie din ROAGEST
Do update_jtva_coloane With (OXSET.tipjurnal), [], 1
Else
Do update_jtva_coloane With (OXSET.tipjurnal)
Endif
lcForm = [actbaza2007]
Else
Do update_cote_TVA
lcForm = [actbaza]
Endif
*!* modificare JC/JV 2007 ^
oitem = Createobject(lcForm)
oitem.ID_SET = IDS
oitem.formgest = OXSET.formgest
oitem.lVerificaAcont = llVerificaAcont
oitem.pcobj = 'poAct'
IF TYPE('oitem.lCorectie') = 'L'
oitem.lCorectie = m.llCorectie && daca este corectie de NIR/BON din ROAGEST
oitem.nCod = m.lnCod && codul operatiei la care se face corectie, pentru a o putea-o sterge
ENDIF
lnIndexVariabile = 0
If Pcount() >= 4 And Type('taValori', 1) = 'A'
External Array taValori
With oitem
For I = 1 To Alen(taValori, 1)
.variabile[i, 1] = Upper(taValori[i, 1]) && numele variabilei : poAct.* sau poAct.id_v*
&& (ptr. campurile care ar fi trebuit completate din nomenclatoare)
&& exemplu: poAct.nume sau poAct.id_vnume
.variabile[i, 2] = taValori[i, 2] && valoarea variabilei
.variabile[i, 3] = taValori[i, 3] && .T. => tabstop = .F.
.variabile[i, 4] = Iif(Type("taValori[i,4]") = "L", taValori[i, 4], .F.) && .T. => enabled = .F.
lnIndexVariabile = I
Endfor
Endwith
Endif && pcount
*** VALORI DEFAULT XITEMS (ID_FDOC...)
Text To lcSql Noshow Textmerge
select r.valoare_default,
r.id_item,
i.camp_lista,
i.id_fisier,
CASE
WHEN i.id_fisier is not null then
pack_util.GetText(i.fis_lista,
i.id_fisier,
to_number(r.valoare_default),
replace(i.camp_lista, ',', ' || '' '' || '))
ELSE
r.valoare_default
end as valoare_default_text,
i.var_item
from xrequest r join xitems i on i.id_item = r.id_item
where r.id_set = <<m.IDS>> and r.valoare_default is not null
Endtext
llSucces = goExecutor.oExecuta(lcSql, [crsRequest])
If m.llSucces
*** VALORI DEFAULT XNOTE (ID_PART...)
Text To m.lcSql Noshow Textmerge
select n.cont, n.id_part, n.id_set, p.nume, n.tip
from (select n1.xscd as cont,
n1.id_partd as id_part,
n1.id_set,
'D' as tip
from xnote n1
where nvl(n1.id_partd, 0) <> 0
and n1.id_set = <<m.IDS>>
union
select n2.xscc as cont,
n2.id_partc as id_part,
n2.id_set,
'C' as tip
from xnote n2
where nvl(n2.id_partc, 0) <> 0
and n2.id_set = <<m.IDS>>) n
join nom_parteneri p
on n.id_part = p.id_part
Endtext
llSucces = goExecutor.oExecuta(lcSql, [crsNumePartener])
Endif
If !Used('crsNumePartener')
Create Cursor crsNumePartener (Cont c(4), id_part I, ID_SET I, NUME c(100), tip c(1))
Endif
If !Used('crsRequest')
Create Cursor crsRequest(valoare_default c(100), id_item I, camp_lista c(100), id_fisier c(100), valoare_default_text c(100), var_item c(100))
ENDIF
* Completare valori din documentul anterior
Create Cursor crsActAnterior (variabila c(100), valoare c(250), ltabstop L, lenabled L)
If Type('poActAnterior') = 'O'
lnProprietati = Amembers(taActAnterior, poActAnterior)
For lnProprietate = 1 To lnProprietati
lcProprietateAnt = Upper(taActAnterior[lnProprietate])
llLoop = !(lcProprietateAnt + ',' $ [FDOC,ID_FDOC,DATAIREG,DATAACT,DATASCAD,SERIE_ACT,DST_CHLT,ID_VENCHELT,NRESP,ID_RESPONSABIL,] + ;
[NRORD,ID_LUCRARE,SECTIE,ID_SECTIE,CONTRACT,ID_CONTRACT,NUME_VAL,ID_VALUTA,NUME_VAL2,ID_VALUTA2,NUME_LISTA_PRETURI,ID_POL,] + ;
[SUMA_3,SUMA_32,] Or Left(m.lcProprietateAnt, 1) = 'V' Or Left(m.lcProprietateAnt, 5) = 'ID_VV')
IF !m.llLoop
* Nu copiez partenerul, in afara de banca/casa (ex: 5311 = 4111, se retine doar casa, nu si clientul)
llLoop = (Left(m.lcProprietateAnt, 1) = 'V' Or Left(m.lcProprietateAnt, 5) = 'ID_VV') AND !(Left(m.lcProprietateAnt, 2) = 'V5' Or Left(m.lcProprietateAnt, 6) = 'ID_VV5')
ENDIF
IF !m.llLoop
* La gestiune nu se copiaza numarul facturii si partenerul
llLoop = Type('gcNumeProgram') = 'C' And m.gcNumeProgram = 'ROAGEST' And (lcProprietateAnt + ',' $ [NRACT,SERIE_ACT,] Or Left(m.lcProprietateAnt, 1) = 'V' Or Left(m.lcProprietateAnt, 5) = 'ID_VV')
ENDIF
* Copiez toate proprietatile daca este corectie de NIR/Bon
llLoop = m.llLoop and !m.llCorectie
IF m.llLoop
LOOP
ENDIF
lcValoareAnt = Transform(Evaluate('poActAnterior.' + m.lcProprietateAnt))
llTabStop = !lcProprietateAnt + ',' $ [DATAIREG,DATAACT,DATASCAD,NRACT,SERIE_ACT,SUMA_3,SUMA_32,] && sa nu fie tabstop = .t. la nract,...
llEnabled = .F.
Insert Into crsActAnterior (variabila, valoare, ltabstop, lenabled) Values ('poAct.' + m.lcProprietateAnt, m.lcValoareAnt, m.llTabStop, m.llEnabled)
Endfor
Endif
Create Cursor crsValori (variabila c(100), valoare c(250), ltabstop L, lenabled L)
Insert Into crsValori (variabila, valoare, ltabstop, lenabled) ;
Select "poact." + Upper(Alltrim(Nvl(crsRequest.id_fisier, []))) As variabila, ;
Allt(Nvl(crsRequest.valoare_default, [])) As valoare, ;
.T. As ltabstop, ;
.F. As lenabled ;
From crsRequest ;
Where !Empty(Nvl(crsRequest.id_fisier, [])) ;
Union All ;
Select "poAct." + Allt(Nvl(crsRequest.var_item, [])) As variabila, ;
Alltrim(Nvl(crsRequest.valoare_default_text, [])) As valoare, ;
.T. As ltabstop, ;
.F. As lenabled ;
From crsRequest ;
Union All ;
Select "poact.id_vv" + Alltrim(Nvl(crsNumePartener.Cont, [])) + Iif(Inlist(Left(Cont, 2), '51', '53'), Iif(tip = 'D', '0', '1'), '') As variabila, ;
Alltrim(Str(Nvl(crsNumePartener.id_part, 0))) As valoare, ;
.T. As ltabstop, ;
.F. As lenabled ;
From crsNumePartener ;
Union All ;
Select "poact.v" + Alltrim(crsNumePartener.Cont) + Iif(Inlist(Left(Cont, 2), '51', '53'), Iif(tip = 'D', '0', '1'), '') As variabila, ;
Alltrim(Nvl(crsNumePartener.NUME, [])) As valoare, ;
.T. As ltabstop, ;
.F. As lenabled ;
From crsNumePartener ;
Union All ;
Select variabila, valoare, ltabstop, lenabled ;
From crsActAnterior
Use In (Select('crsActAnterior'))
lnLengthVariabile = Alen(oitem.variabile, 1)
Select crsValori
Scan
lcVariabila = Alltrim(variabila)
lcValoareDefault = Alltrim(valoare)
llTabStop = ltabstop
llEnabled = lenabled
*** caut randul pe care se gaseste poact.id_fdoc Case Insensitive; Return row number; Exact ON
*** daca nu il gasesc il adaug in array
lnRandVariabila = Ascan(oitem.variabile, m.lcVariabila, 1, m.lnLengthVariabile, 1, 15)
If m.lnRandVariabila = 0
lnIndexVariabile = m.lnIndexVariabile + 1
oitem.variabile(m.lnIndexVariabile, 1) = m.lcVariabila
oitem.variabile(m.lnIndexVariabile, 2) = m.lcValoareDefault
oitem.variabile(m.lnIndexVariabile, 3) = m.llTabStop
oitem.variabile(m.lnIndexVariabile, 4) = m.llEnabled
Endif
Endscan
Use In (Select('crsValori'))
oitem.Show(1)
*!* adaugat 14.04.2009
*!* modificare v 2.2.20
If lnNumarParametri >= 5 And Type('tnDeducere') = 'N'
tnDeducere = poAct.deducere
Endif
*!* modificare v 2.2.20 ^
*!* alex.lepadatu
Release oitem
If pl_verificat
lcProcedura = Alltrim(Nvl(OXSET.procedura_lans, ""))
If !Empty(lcProcedura)
Do &lcProcedura
Endif
ENDIF
*!* 14.04.2009
If Type("OXSET.nu_sterg") = "N"
OXSET.nu_sterg = Iif(OXSET.nu_sterg = 1, .T., .F.)
Endif
If OXSET.nu_sterg = .F. And buton!= 2 And llContinua
lcTip = [Confirmare]
lcMesaj = [Doriti sa continuati cu operatii de acest fel?] + Chr(13) + Chr(10) + [DA=copiere date / NU=fara copiere date / Abandon]
lnRaspuns = aMESSAGEBOX(lcMesaj, 3 + 32, lcTip)
If Used('cote_tva')
Use In cote_tva
Endif
If Used('jtva_coloane')
Use In jtva_coloane
Endif
*!* modificare v 2.5.16 : ar trebui resetate toate variabilele initializate inainte de lans
If Type('pcSirFacturi') <> 'U'
Store [] To pcSirFacturi
Endif
*!* modificare v 2.5.16 ^
*!* If buton=1
If Inlist(lnRaspuns, 6, 7) && 6=DA=copiere date;7=NU=fara copiere date
If Type('poGeneratorNumere') <> 'U'
poGeneratorNumere.ResetAll()
Endif
If Type('taValori', 1) = 'A'
lans(m.IDS, m.llContinua, m.llVerificaAcont, @taValori)
Else
If lnRaspuns = 6 && DA cu copiere date
lans(m.IDS, m.llContinua, m.llVerificaAcont, .F., .F., m.poAct)
Else
lans(m.IDS, m.llContinua, m.llVerificaAcont)
Endif
Endif
Endif
Else
lnRaspuns = Iif(buton = 1, 6, 2)
Endif
Release OXSET
If Inlist(lnRaspuns, 6, 7) && DA
buton = 1
Else && NU
buton = 2
Endif
*!* modificare serii numere - 10.2007
If llCreareGeneratorNumere
Release poGeneratorNumere
Endif
*!* modificare serii numere - 10.2007 ^
Return buton
*----------------------------------------------
Procedure introducere_compacta
Parameters tcFis, tcscd, tcscc, tl_calcTVA, tl_plata, tctitlu, tctva, tn_idset, tl_acont, tnDeducere, tlCursorCreat, tnTotcTVA, tnTop
Local llVerificaAcont, llSucces, llN50, llN100, llNeexigibil, llCursorCreat
llCursorCreat = .F.
llVerificaAcont = .T.
*!* tcfis = fisierul din calefirma (achi_mat.dbf)
*!* tcscd = simbol cont debitor
*!* tcscc = simbol cont creditor
*!* tl_calctva = daca se calculeaza TVA-ul per total
*!* tl_plata = daca se achita factura respectiva
*!* tctitlu = titlul formularului frm_introd_compact
*!* tctva = contul de TVA (daca tl_calctva=.t.)
*!* tn_idset = parametrul functiei lans()
*!* tl_acont = daca se verifica analiticele
*!* tnDeducere = 0/1 - daca se scriu notele pentru cheltuieli deductibile 50%
*!* tlCursorCreat (optional) = .T. daca cursorul cnote_contabile este creat anterior (Ex: import din eFactura)
*!* tnTotcTVA (optional) = Valoarea cu TVA import eFactura
*!* tnTop (optional) = pozitia Top cat timp ruleaza lotul de import eFactura
If Pcount() >= 9
llVerificaAcont = tl_acont
ENDIF
If Pcount() >= 11
llCursorCreat = m.tlCursorCreat
ENDIF
Select actactan
Locate
Scatter Name poAct
AddProperty(poAct, "deducere", Iif(Empty(tnDeducere), 0, tnDeducere)) && modificare v 2.2.20
If Used('introdc')
Use In introdc
ENDIF
*!* modificare JC/JV 2007
If gnAn >= Iif(Type('gnAnFormNou') = 'U', 2007, gnAnFormNou)
*!* modificare ROACONT v 2.4.0
Select actactan
Calculate Max(tva_incasare) To lnTvaIncasare
*!* modificare ROACONT v 2.4.0 ^
IF !m.llCursorCreat
lcSql = [select id_note,explicatie,scd,ascd,scc,ascc,cu_tva,id_set,ordine,in_valuta,ptva,] + ;
Iif(lnTvaIncasare = 1, [nvl(id_jtva_coloana_neex,id_jtva_coloana)], [id_jtva_coloana]) + [ as id_jtax,] + ;
Iif(lnTvaIncasare = 1, [nvl(explicatie_tva_neex,explicatie_tva)], [explicatie_tva]) + [ as denumiretax,] + ;
[CAST(0 as Number(16,4)) as suma, CAST(0 as Number(16,4)) as suma_val, CAST(0 as Number(5)) as id_valuta, CAST(null as Varchar2(5)) as nume_val,] + ;
[CAST(0 as Number(16,4)) as curs, ] + ;
[tipjurnal, taxcode, paymentcode from vnote_contabile where id_set = ] + Alltrim(Str(tn_idset))
lcCursor = [cnote_contabile]
llSucces = goExecutor.oExecuta(lcSql, lcCursor)
If !m.llSucces
Return
ENDIF
* 22.08.2025
* Am introdus Calendar.impozit_profit
* Platitorii impozit venit, pentru limitare deducere 50% nu le trebuie 2 note CHELTUIELI DEDUCTIBILE si NEDEDUCTIBILE
IF m.tn_idset = 10609 AND EMPTY(NVL(goCalendar.impozit_profit,0)) AND RECCOUNT('cnote_contabile') = 2
* STERG LINIA 2
SELECT cnote_contabile
GO BOTTOM
DELETE
ENDIF
ELSE
IF !USED('cnote_contabile')
AMESSAGEBOX('Nu exista cursorul cnote_contabile!',48, _screen.Caption)
RETURN
ENDIF
ENDIF
DO CASE
CASE BETWEEN(m.gnAn*12+m.gnLuna,2018*12+1, 2025*12+7)
* achizitiile si livrarile inainte de 08/2025 trebuie sa propuna TVA 19%.
* In xsets s-a modificat 21% de la 01.08.2025
* Ach int 19%
IF m.lnTvaIncasare = 1
update cnote_contabile set ptva = 19, id_jtax = 188, denumiretax = 'ACH. INT. NEEX. 19%' where INLIST(id_jtax, 208, 210) && 21%
update cnote_contabile set ptva = 19, id_jtax = 189, denumiretax = 'TVA ACH. INT. NEEX. 19%' where INLIST(id_jtax, 209, 211) && 21%
ELSE
update cnote_contabile set ptva = 19, id_jtax = 105, denumiretax = 'ACH. INT. 19%' where INLIST(id_jtax, 208, 210) && 21%
update cnote_contabile set ptva = 19, id_jtax = 106, denumiretax = 'TVA ACH. INT. 19%' where INLIST(id_jtax, 209, 211) && 21%
ENDIF
* Ach. b. imp. 19%
update cnote_contabile set ptva = 19, id_jtax = 118, denumiretax = 'ACH. IMP. 19%' where id_jtax = 220
update cnote_contabile set ptva = 19, id_jtax = 119, denumiretax = 'TVA ACH. IMP. 19%' WHERE id_jtax = 221
* Ach b. CE 19%
update cnote_contabile set ptva = 19, id_jtax = 133, denumiretax = 'ACH. BUNURI CE. 19%' where id_jtax = 226
update cnote_contabile set ptva = 19, id_jtax = 134, denumiretax = 'TVA ACH. BUNURI CE. 19%' where id_jtax = 227
* Ach s. CE 19%
update cnote_contabile set ptva = 19, id_jtax = 190, denumiretax = 'ACH. SERVICII CE. 19%' where id_jtax = 222
update cnote_contabile set ptva = 19, id_jtax = 191, denumiretax = 'TVA ACH. SERVICII CE. 19%' where id_jtax = 223
* Ach Tx inversa 19%
update cnote_contabile set ptva = 19, id_jtax = 141, denumiretax = 'TX. INV. 19%' where id_jtax = 216
update cnote_contabile set ptva = 19, id_jtax = 142, denumiretax = 'TVA TX. INV. 19%' where id_jtax = 217
* LIV INT 19%
IF m.lnTvaIncasare = 1
update cnote_contabile set ptva = 19, id_jtax = 31, denumiretax = 'LIVR.INTERN NEEX. 19%' where INLIST(id_jtax, 35, 37)
update cnote_contabile set ptva = 19, id_jtax = 32, denumiretax = 'TVA LIVR.INTERN NEEX. 19%' where INLIST(id_jtax, 36, 38)
ELSE
update cnote_contabile set ptva = 19, id_jtax = 1, denumiretax = 'LIVR.INTERN 19%' where INLIST(id_jtax, 35, 37)
update cnote_contabile set ptva = 19, id_jtax = 2, denumiretax = 'TVA LIVR.INTERN 19%' where INLIST(id_jtax, 36, 38)
ENDIF
CASE BETWEEN(m.gnAn, 2016, 2017)
* achizitiile si livrarile pe 2016 trebuie sa propuna TVA 20%.
* In xsets s-a modificat 19% de la 01.01.2017
CASE m.gnAn = 2016
* In 2016 lucrez cu TVA 20%. Transform TVA din 19% in 20%
* Ach int 20%
IF m.lnTvaIncasare = 1
update cnote_contabile set ptva = 20, id_jtax = 178, denumiretax = 'ACH. INT. NEEX. 20%' where INLIST(id_jtax, 101, 103, 105, 188) && 19%
update cnote_contabile set ptva = 20, id_jtax = 179, denumiretax = 'TVA ACH. INT. NEEX. 20%' where INLIST(id_jtax, 102, 104, 106, 189) && 19%
ELSE
update cnote_contabile set ptva = 20, id_jtax = 176, denumiretax = 'ACH. INT. 20%' where INLIST(id_jtax, 101, 103, 105, 188) && 19%
update cnote_contabile set ptva = 20, id_jtax = 177, denumiretax = 'TVA ACH. INT. 20%' where INLIST(id_jtax, 102, 104, 106, 189) && 19%
ENDIF
* Ach. b. imp. 20%
update cnote_contabile set ptva = 20, id_jtax = 180, denumiretax = 'ACH. IMP. 20%' where INLIST(id_jtax, 114, 116, 118)
update cnote_contabile set ptva = 20, id_jtax = 181, denumiretax = 'TVA ACH. IMP. 20%' where INLIST(id_jtax, 115, 117, 119)
* Ach b. CE 20%
update cnote_contabile set ptva = 20, id_jtax = 182, denumiretax = 'ACH. BUNURI CE. 20%' where INLIST(id_jtax, 127, 129, 133)
update cnote_contabile set ptva = 20, id_jtax = 183, denumiretax = 'TVA ACH. BUNURI CE. 20%' where INLIST(id_jtax, 128, 130, 134)
* Ach Tx inversa 20%
update cnote_contabile set ptva = 20, id_jtax = 186, denumiretax = 'TX. INV. 20%' where INLIST(id_jtax, 137, 139, 141)
update cnote_contabile set ptva = 20, id_jtax = 187, denumiretax = 'TVA TX. INV. 20%' where INLIST(id_jtax, 138, 140, 142)
* LIV INT 20%
IF m.lnTvaIncasare = 1
update cnote_contabile set ptva = 20, id_jtax = 29, denumiretax = 'LIVR.INTERN NEEX. 20%' where INLIST(id_jtax, 1, 31)
update cnote_contabile set ptva = 20, id_jtax = 30, denumiretax = 'TVA LIVR.INTERN NEEX. 20%' where INLIST(id_jtax, 2, 32)
ELSE
update cnote_contabile set ptva = 20, id_jtax = 27, denumiretax = 'LIVR.INTERN 20%' where INLIST(id_jtax, 1, 31)
update cnote_contabile set ptva = 20, id_jtax = 28, denumiretax = 'TVA LIVR.INTERN 20%' where INLIST(id_jtax, 2, 32)
ENDIF
CASE gnAn <= 2015
* In 2015 lucrez cu TVA 24%. Transform TVA din 20% in 24%
IF m.lnTvaIncasare = 1
update cnote_contabile set ptva = 24, id_jtax = 170, denumiretax = 'ACH. INT. NEEX. 24%' where INLIST(id_jtax, 176, 178)
update cnote_contabile set ptva = 24, id_jtax = 171, denumiretax = 'TVA ACH. INT. NEEX. 24%' where INLIST(id_jtax, 177, 179)
ELSE
* Ach int 24% - 20%
update cnote_contabile set ptva = 24, id_jtax = 156, denumiretax = 'ACH. INT. 24%' where INLIST(id_jtax, 176, 178)
update cnote_contabile set ptva = 24, id_jtax = 157, denumiretax = 'TVA ACH. INT. 24%' where INLIST(id_jtax, 177, 179)
ENDIF
* Ach. b. imp. 24%
update cnote_contabile set ptva = 24, id_jtax = 158, denumiretax = 'ACH. IMP. 24%' where id_jtax = 180
update cnote_contabile set ptva = 24, id_jtax = 159, denumiretax = 'TVA ACH. IMP. 24%' where id_jtax = 181
* Ach b. CE 24%
update cnote_contabile set ptva = 24, id_jtax = 160, denumiretax = 'ACH. BUNURI CE. 24%' where id_jtax = 182
update cnote_contabile set ptva = 24, id_jtax = 161, denumiretax = 'TVA ACH. BUNURI CE. 24%' where id_jtax = 183
* Ach Tx inversa 24%
update cnote_contabile set ptva = 24, id_jtax = 162, denumiretax = 'TX. INV. 24%' where id_jtax = 186
update cnote_contabile set ptva = 24, id_jtax = 163, denumiretax = 'TVA TX. INV. 24%' where id_jtax = 187
* LIV INT 24%
IF m.lnTvaIncasare = 1
update cnote_contabile set ptva = 24, id_jtax = 21, denumiretax = 'LIVR.INTERN NEEX. 24%' where INLIST(id_jtax, 27, 29)
update cnote_contabile set ptva = 24, id_jtax = 22, denumiretax = 'TVA LIVR.INTERN NEEX. 24%' where INLIST(id_jtax, 28, 30)
ELSE
update cnote_contabile set ptva = 24, id_jtax = 15, denumiretax = 'LIVR.INTERN 24%' where INLIST(id_jtax, 27, 29)
update cnote_contabile set ptva = 24, id_jtax = 16, denumiretax = 'TVA LIVR.INTERN 24%' where INLIST(id_jtax, 28, 30)
ENDIF
ENDCASE && gnAn <= 2015
lcForm = [FRM_INTROD_COMPACT2007]
*!* modificare ROACONT v 2.4.0 : am adaugat lnTvaIncasare
Select N.*, A.id_responsabil, A.id_partd, A.id_partc, A.partd, A.partc, ;
A.nresp, A.id_sectie, A.sectie, A.id_venchelt, A.dst_chlt, N.id_jtax As id_jtva_coloana, ;
00000000000000 As id_factd, 00000000000000 As id_factc, 00000000000000 As pereched, 00000000000000 As perechec, ;
a.nrord, a.id_lucrare, ;
A.explicatia, A.explicatia4, A.explicatia5 ;
From cnote_contabile N Join actactan A On N.ID_SET = A.ID_SET ;
Where N.ID_SET = tn_idset ;
Into Cursor introdc Readwrite Order By ordine
If !Used('saft_taxtable')
update_saft_taxtable()
ENDIF
If !Used('saft_mecanisme_plati')
update_saft_mecanisme_plati()
ENDIF
* Actualizez taxcode SAFT in functie de furnizori RTVAI
IF m.gl406
* llN50/llN100 = .T. doar pentru linia cu Explicatie TVA = "Limitare deducere TVA"
llN50 = .F. && (tn_idset = 10609) or (poAct.deducere = 1) && deducere 50%
llN100 = .F. && (tn_idset = 10647) && deducere 100%
SELECT distinct id_jtva_coloana, NVL(id_partc, id_partd) as id_part, (LEFT(scd,3) = '418' OR LEFT(scc,3) = '408') as neexigibil ;
FROM introdc ;
WHERE INLIST(ALLTRIM(NVL(tipjurnal,'')), 'JC', 'JV') ;
INTO CURSOR cIntrodcTemp
SELECT cIntrodcTemp
SCAN
lnIdJtva = id_jtva_coloana
lnIdPart = id_part
llNeexigibil = neexigibil
lnTaxCode = GetTaxCodeIdPart(m.gnAn, m.gnLuna, poAct.DataAct, m.lnIdJtva, m.lnIdPart, m.llN50, m.llN100, m.llNeexigibil)
UPDATE introdc SET taxcode = m.lnTaxcode WHERE id_jtva_coloana = m.lnIdJtva AND NVL(id_partc, id_partd) = m.lnIdPart
ENDSCAN
ENDIF
Use In (SELECT('crsjtva'))
Use In (SELECT('crstemp'))
Select Distinct tipjurnal From cnote_contabile Where !Isnull(tipjurnal) Into Cursor crstemp
If Reccount('crstemp') = 1
Select crstemp
lcTipJurnal = Upper(Alltrim(tipjurnal)) + [ = 1]
*!* modificare ROACONT v 2.4.0
*!* Select denumire As denumiretax,id_jtva_coloana,cota_tva From jtva_coloane Where &lcTipJurnal Into Cursor crsjtva
If lnTvaIncasare = 0
Select denumire As denumiretax, id_jtva_coloana, cota_tva From jtva_coloane Where &lcTipJurnal And Isnull(id_jtva_ex) Into Cursor crsjtva
Else
Select denumire As denumiretax, id_jtva_coloana, cota_tva From jtva_coloane Where &lcTipJurnal And Isnull(id_jtva_neex) Into Cursor crsjtva
Endif
*!* modificare ROACONT v 2.4.0 ^
Else
*!* modificare ROACONT v 2.4.0
*!* Select denumire As denumiretax,id_jtva_coloana,cota_tva From jtva_coloane Into Cursor crsjtva
If lnTvaIncasare = 0
Select denumire As denumiretax, id_jtva_coloana, cota_tva From jtva_coloane Where Isnull(id_jtva_ex) Into Cursor crsjtva
Else
Select denumire As denumiretax, id_jtva_coloana, cota_tva From jtva_coloane Where Isnull(id_jtva_neex) Into Cursor crsjtva
Endif
*!* modificare ROACONT v 2.4.0 ^
Endif
If Used('crstemp')
Use In crstemp
Endif
Else
lcSql = [select * from ] + gcS + [.note_contabile where id_set = ] + Alltrim(Str(tn_idset))
lcCursor = [cnote_contabile]
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
If lnSucces < 0
Return
Endif
lcForm = [FRM_INTROD_COMPACT]
Select N.*, 00000000000000.0000 As SUMA, A.id_responsabil, A.id_partd, A.id_partc, A.partd, A.partc, ;
A.nresp, A.id_sectie, A.sectie, A.id_venchelt, A.dst_chlt, ;
00000000000000 As id_factd, 00000000000000 As id_factc, 00000000000000 As pereched, 00000000000000 As perechec ;
From cnote_contabile N Join actactan A On N.ID_SET = A.ID_SET ;
Where N.ID_SET = tn_idset ;
Into Cursor introdc Readwrite Order By ordine
lcSql = [SELECT descriere as tva, procent as ptva FROM ] + gcS + [.cote_tva where sters = 0 and an = ] + pcAn + [ and luna = ] + pcNl
lcCursor = [ttva]
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
If lnSucces < 0
Return
Endif
Select ttva
Replace All tva With Alltrim(Str(ptva)) + ' %'
Endif
*!* modificare JC/JV 2007 ^
Use In cnote_contabile
Select introdc
If Flock()
If !Empty(tcscd)
Replace All SCD With tcscd For Empty(SCD) Or Upper(SCD) = 'X'
Endif
If !Empty(tcscc)
Replace All SCC With tcscc For Empty(SCC) Or Upper(SCC) = 'X'
Endif
*!* If m.ctva-1 = 0
*!* Replace All ptva With 0
*!* Endif
Replace All id_partd With 0, partd With '' FOR EMPTY(NVL(id_partd,0))
Replace All id_partc With 0, partc With '' FOR EMPTY(NVL(id_partc,0))
Replace All ascd With '' For Isnull(ascd)
Replace All ascc With '' For Isnull(ascc)
If Used('xcont')
Select Xcont
Scan
pcContPart = contPart
lnIdPart = idpart
lcNumePart = numePart
Select introdc
Scan For SCD = pcContPart
Replace id_partd With lnIdPart
Replace partd With lcNumePart
Endscan
Scan For SCC = pcContPart
Replace id_partc With lnIdPart
Replace partc With lcNumePart
Endscan
Select Xcont
Endscan
Endif
Endif
Unlock
Select actactan
Zap
*Create Table &gcTempPath\ttva (tva c(11), ptva N(3))
lcExceptii_scc = '0'
lcExceptii_scd = '0'
If !Empty(tcscd)
lcSql = [select * from ] + gcS + [.exceptii_ireg where invers = 1 and debit = 1 and cont = ] + tcscd
lcCursor = [ex_debit]
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
If lnSucces < 0
Return
Endif
Select ex_debit
Scan
lcExceptii_scd = lcExceptii_scd + ',' + Alltrim(cont_c)
Endscan
Use In ex_debit
Endif
If !Empty(tcscc)
lcSql = [select * from ] + gcS + [.exceptii_ireg where invers = 1 and debit = 0 and cont = ] + tcscc
lcCursor = [ex_credit]
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
If lnSucces < 0
Return
Endif
Select ex_credit
Scan
lcExceptii_scc = lcExceptii_scc + ',' + Alltrim(cont_c)
Endscan
Use In ex_credit
Endif
Select introdc
Go Top
obj = Createobject(lcForm)
obj.cSCD = tcscd
obj.cSCC = tcscc
obj.gridb1.column3.BackColor = Rgb(255, 255, 255)
obj.gridb1.column4.BackColor = Rgb(255, 255, 255)
obj.pcobj = 'poAct'
obj.pcExceptii_scd = lcExceptii_scd
obj.pcExceptii_scc = lcExceptii_scc
obj.lVerificaAcont = llVerificaAcont
obj.titlufrumos1.Caption = tctitlu
obj.Show(1, tnTop)
USE IN (SELECT('crsTaxTable'))
USE IN (SELECT('crsjtva'))
If buton = 2
Do deschid_actc
Return
Endif
*!* IF tn_idset=10455 && rate leasing
*!* lans(10411)
*!* ENDIF
Select actactan
Replace All ID_SET With tn_idset
Select actactan
Do oscrie_in_fisiere.prg
Do deschid_actc
Endproc &&introducere_compacta
*---------------------------------------------------------------------------------------
Procedure deschid_actc
If Used('actactan')
Use In actactan
Endif
If Used('xcont')
Use In 'xcont'
Endif
If Used('introdc')
Use In 'introdc'
Endif
If Used('ttva')
Use In ttva
Endif
Endproc && deschid_actc
*____________________________________________________
Procedure inchid_actcv
If Used('actcv')
Use In actcv
Endif
If Used('ACTcv1')
Use In 'ACTcv1'
Endif
Endproc && inchid_actcv
*_____________________________________________________________________________________________________________________
*--------------------------------------------------------------------
Procedure umple_log
Parameters textul, textmare
Local datatext
datatext = ""
*----------------FACE INREGISTRARI IN LOG_TEXT.
datatext = CALEFIRMA + "\logs\contab\log_" + Alltrim(Str(Day(Date()))) + "_" + Alltrim(Str(Month(Date()))) + "_" + Alltrim(Str(Year(Date()))) + ".txt"
Cd &CALEFIRMA
If !Directory("LOGS")
Md logs
Endif
Cd &CALEFIRMA\logs
If !Directory("contab")
Md contab
Endif
Set Textmerge On
Set Textmerge Noshow
Set Textmerge To &datatext Additive
\\<<Datetime()>>,<<Alltrim(utilizator)>>,<<textul>>,<<textmare>>
\
Set Textmerge To
Cd &dirgen
Return &&-------UMPLE_LOG
*!* *______________________________________________________
Procedure introducere_monetar
Endproc