*!* 23.09.2013 *!* marius.mutu *!* inchidere_tva *!* fac notele de exigibilizare TVA 90 zile pentru toate firmele, nu numai pentru cele din sistemul TVA Incasare *!* ex: sunt inregistrate facturi din greseala cu TVA Incasare sau firma a fost cu TVA Incasare *!* 04.02.2014 *!* marius.mutu *!* inchidere_tva: nu se mai fac notele de exigibilizare TVA 90 zile de la 01/2014 (COD FISCAL) *!* 18.05.2014 *!* marius.mutu *!* inchidere_venituri_cheltuieli mutate in pack_inchideri 609, 709 tratate corect *!* 25.06.2014 *!* marius.mutu *!* inchidere_tva_sold - se completeaza si id_sucursala in note, altfel nu se poate modifica nota *!* 25.08.2014 *!* marius.mutu *!* inchidere_tva_sold: apelez defalca_tva_incasare pentru fiecare cota, daca soldul neexigibil total este 0 *!* 21.01.2015 *!* marius.mutu *!* inchidere_tva_sold: Daca din diferite motive nu se poate calcula TVA exigibil, pun o linie cu ID_FACT-ul facturii originale, sa se poata completa manual *!* 16.12.2015 *!* marius.mutu *!* inchidere_tva_sold: cota tva 20% *!* 24.03.2020 *!* marius.mutu: inchidere_venchelt - completare analitic 121 din optiuni *!* 21.07.2020 *!* marius.mutu *!* inchidere_amortizari_completare_conturi - tratare id_sectie = 0 *!* 23.01.2024 *!* inchidere_amortizari: defalcare inchidere pe lucrari *** ===================================================================== Procedure popriri If gnNOTASAL = 5 Local lcCursor, llVerificAnalitic, llCompletareParteneri lcSel = [select a.sumapop,a.id_poprire,a.id_stat,] + ; [(select id_part from sal_personal where id_salariat in ] + ; [ (select id_persoana from sal_stat where id_stat = a.id_stat)) as id_part, ] + ; [ c.scd,c.ascd,c.scc,c.ascc,c.nume_popr, ] + ; [ (select denumire from nom_parteneri where id_part in ] + ; [ (select id_part from sal_personal where id_salariat in (select id_persoana from sal_stat where id_stat = a.id_stat))) as denumire, ] + ; [ e.id_sectie,e.SECTIE,f.sucursala,f.id_sucursala,0000000000 as id_factc,0000000000 as perechec ] + ; [ from sal_popriri a ] + ; [ left join sal_nom_popriri c on a.id_poprire = c.id_popriri ] + ; [ left join sal_stat d on a.id_stat = d.id_stat ] + ; [ left join sal_vnom_formatii e on e.id_formatia = d.id_formatie ] + ; [ left join vnom_sectii f on e.id_sectie = f.id_sectie ] + ; [ where a.sters = 0 and a.id_stat in (select b.id_stat from sal_stat b ] + ; [ where b.an = pack_sesiune.getan() and b.luna = pack_sesiune.getluna()) ] *!* + ; *!* [ and c.scc not in (select cont from config_cont_ireg where cu_inregistrari = 1)] If !Isnull(gnIdSucursala) lcSel = m.lcSel + [ and f.id_sucursala = ?gnIdSucursala ] Endif lcCursor = 'crs_popr' lnSucces = goExecutor.oExecute(m.lcSel, m.lcCursor) If m.lnSucces < 0 AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare") Endif *!* lcSel = [select * from config_cont_ireg a where a.cont in (select b.scc from sal_nom_popriri b ]+; *!* [ where b.id_popriri in (select c.id_poprire from sal_popriri c where c.sumapop > 0 and ]+; *!* [ id_stat in (select id_stat from sal_stat where an = pack_sesiune.getan() and luna = pack_sesiune.getluna()))) and cu_inregistrari = 1 ] *!* *!* lcCursor = 'crs_conturi' *!* lnSucces = goExecutor.oExecute(lcSel,lcCursor) *!* IF lnSucces < 0 *!* AMESSAGEBOX(goExecutor.cEroare,0+16,"Eroare") *!* EndIf *!* *!* Local lcFiltru *!* Store '' to lcFiltru *!* Select crs_conturi *!* If Reccount() > 0 *!* Select crs_conturi *!* Scan *!* lcFiltru = lcFiltru +[,] +[']+Alltrim(crs_conturi.cont)+['] *!* EndScan *!* lcFiltru = Substr(lcfiltru,2) *!* SELECT crs_popr *!* lcFiltru = [Set Filter To InList(Alltrim(scc),]+lcFiltru+[)] *!* &lcFiltru *!* ofrmpereche = CreateObject('frm_alege_pereche') *!* ofrmpereche.show(1) *!* If gnbuton = 2 *!* Return *!* EndIf *!* EndIf *!* Use in crs_conturi Select crs_popr *!* Browse Set Filter To Select crs_popr Select nume_popr As explicatia, id_part As id_partc, denumire As partc, scd, scc, Nvl(ascd, '') As ascd, Nvl(ascc, ''); As ascc, sumapop As suma, id_sectie, sectie, id_sucursala, sucursala, id_factc, perechec From crs_popr Where sumapop <> 0 Into Cursor crsNota *!* SELECT id_part as id_partd ,scd,sumapop as suma,id_sectie FROM crs_popr WHERE sumapop <> 0 INTO CURSOR crsNota READWRITE Else Local lcCursor, llVerificAnalitic, llCompletareParteneri lcSel = [select sum(a.suma) as sumapop,a.id_poprire,a.id_sectie,d.id_part,] + ; [c.scd,c.ascd,c.scc,c.ascc,c.nume_popr,] + ; [ (select denumire from nom_parteneri where id_part =d.id_part) as denumire ] + ; [ from ( select sum(a.sumapop) as suma,a.id_poprire,c.id_sectie from sal_vpopriri a ] + ; [ left join sal_stat b on a.id_stat = b.id_stat ] + ; [ left join sal_nom_formatii c on b.id_formatie = c.id_formatia ] + ; [ group by a.id_poprire,c.id_sectie ) a ] + ; [ left join sal_nom_popriri c on a.id_poprire = c.id_popriri ] + ; [ left join sal_part_popriri_sectii d on d.id_poprire = a.id_poprire and d.id_sectie = a.id_sectie ] + ; [ where c.scc <> '542'] + ; [ group by a.id_poprire,a.id_sectie,d.id_part,c.scd,c.ascd,c.scc,c.ascc,c.nume_popr] lcCursor = 'crs_popr' lnSucces = goExecutor.oExecute(m.lcSel, m.lcCursor) If m.lnSucces < 0 AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare") Endif Select crs_popr lcCursor = 'crs_popr' lnSucces = goExecutor.oExecute(m.lcSel, m.lcCursor) If m.lnSucces < 0 AMESSAGEBOX('Call pack_salarii.nota_popriri ' + Chr(13) + goExecutor.cEroare, 0 + 16, "Eroare") Endif Select crs_popr Select nume_popr As explicatia, id_part As id_partc, scd, scc, Nvl(ascd, '') As ascd, Nvl(ascc, '') As ascc, sumapop As suma, id_sectie From crs_popr Where sumapop <> 0 Into Cursor crsNota *!* SELECT id_part as id_partd ,scd,sumapop as suma,id_sectie FROM crs_popr WHERE sumapop <> 0 INTO CURSOR crsNota READWRITE Endif Use In crs_popr lcCursor = [crsNota] Select &lcCursor If !Used(m.lcCursor) Or Empty(m.lcCursor) Return Endif llStergeNotaPrecedenta = .T. lnId_Set = 90014 lnCod = 0 llVerificAnalitic = .T. llCompletareParteneri = .T. If m.llStergeNotaPrecedenta lnSucces = sterge_nota(m.lnCod, m.lnId_Set) Endif If m.lnSucces > 0 lnSucces = scrie_nota_import(m.lnId_Set, m.llVerificAnalitic, m.llCompletareParteneri, m.lcCursor) Endif If Used(m.lcCursor) Use In (m.lcCursor) Endif Endproc && popriri *** ===================================================================== Procedure Achitare_drepturi_neridicate_Lichidare Dimension laValori[2, 3] laValori[1, 1] = "poAct.id_vv426" laValori[1, 2] = Alltrim(Str(gnID_PARTDRNERIDLIC)) laValori[1, 3] = !Empty(gnID_PARTDRNERIDLIC) lcSel = [select denumire from nom_parteneri where id_part = ] + Alltrim(Str(gnID_PARTDRNERIDLIC)) lnSucces = goExecutor.oExecute(m.lcSel, [crsnumepart]) If m.lnSucces < 0 AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare") Endif laValori[2, 1] = "poAct.v426" laValori[2, 2] = Alltrim(crsnumepart.denumire) laValori[2, 3] = !Empty(gnID_PARTDRNERIDLIC) Use In crsnumepart lans(90011, .F., .T., @laValori) *!* MESSAGEBOX(buton) If gnButon = 1 If Used('crsStatDePastrat') Select crsStatDePastrat Scan For bifa > 0 Scatter Name ost lcSel = [update sal_stat set ACHITLICNERID = 1 where id_stat = ] + Alltrim(Str(ost.id_stat)) lnSucces = goExecutor.oExecute(m.lcSel) If m.lnSucces < 0 AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare") Endif Release ost Endscan Use In crsStatDePastrat Endif Endif Endproc && Achitare_drepturi_neridicate_Lichidare *** ===================================================================== Procedure Achitare_drepturi_neridicate_Avans Dimension laValori[2, 3] laValori[1, 1] = "poAct.id_vv426" laValori[1, 2] = Alltrim(Str(gnID_PARTDRNERIDAV)) laValori[1, 3] = !Empty(gnID_PARTDRNERIDAV) lcSel = [select denumire from nom_parteneri where id_part = ] + Alltrim(Str(gnID_PARTDRNERIDAV)) lnSucces = goExecutor.oExecute(m.lcSel, [crsnumepart]) If m.lnSucces < 0 AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare") Endif laValori[2, 1] = "poAct.v426" laValori[2, 2] = Alltrim(crsnumepart.denumire) laValori[2, 3] = !Empty(gnID_PARTDRNERIDAV) Use In crsnumepart lans(90013, .F., .T., @laValori) *!* MESSAGEBOX(buton) If gnButon = 1 If Used('crsStatDePastrat') Select crsStatDePastrat Scan For bifa > 0 Scatter Name ost lcSel = [update sal_stat set ACHITAVNERID = 1 where id_stat = ] + Alltrim(Str(ost.id_stat)) lnSucces = goExecutor.oExecute(m.lcSel) If m.lnSucces < 0 AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare") Endif Release ost Endscan Use In crsStatDePastrat Endif Endif Endproc && Achitare_drepturi_neridicate_Avans ***------------------------------------------------------------------------------------------------------------------- Procedure drepturi_nerid_sal Private postat Store [] To postat &&selectie din state si bifarea sumelor pentru care se face trecerea pcschema = ['id_stat i,an n(4),luna n(2),NUME C(50),PRENUME C(50),SECTIE C(30),FORMATIE C(64),MARCA n(10),lichidare n(16), bifa n(1),SUMALICNERID n(16)'] pcselect = [select a.id_stat,a.an,a.luna,a.nume,a.prenume,a.sectie,a.formatia,a.marca,a.lichidare,ROUND(a.BIFALICNERID,0) as bifa,a.SUMALICNERID from sal_vstattot a where 1=2] pcfiltru = [ 1=2] pcorder = [a.sectie,a.nume,A.PRENUME] llAfiseaza = .F. gencursor('postat', 'crsState', pcselect, pcfiltru, pcschema, pcorder, llAfiseaza) postat.ca_baza1.afisare() Select crsState ofrmSelect = Createobject('frm_alege_neridicati') ofrmSelect.Show(1) If buton = 2 Return Endif Select crsState Set Filter To Locate Select Sum(Nvl(SUMALICNERID, 0)) As suma From crsState Where bifa > 0 Into Cursor crsSuma Select crsSuma && / selectie din state si bifarea sumelor pentru care se face trecerea && nota contabila Select xsets llStergeNotaPrecedenta = .F. lnId_Set = 90010 lnCod = 0 llVerificAnalitic = .T. llCompletareParteneri = .T. If m.llStergeNotaPrecedenta lnSucces = sterge_nota(m.lnCod, m.lnId_Set) Endif Select suma From crsSuma Into Cursor crsNota Use In crsSuma *!* DEBUG *!* SUSPEND lcCursor = [crsNota] Select &lcCursor If !Used(m.lcCursor) Or Empty(m.lcCursor) Return Endif *!* scrie_nota_import( tnId_Set, tlVerificAnalitic, tlCompletareParteneri, tcCursorImport,taValori ) Dimension laValori[2, 3] laValori[1, 1] = "poAct.id_vv426" laValori[1, 2] = Alltrim(Str(gnID_PARTDRNERIDLIC)) laValori[1, 3] = !Empty(gnID_PARTDRNERIDLIC) lcSel = [select denumire from nom_parteneri where id_part = ] + Alltrim(Str(gnID_PARTDRNERIDLIC)) lnSucces = goExecutor.oExecute(m.lcSel, [crsnumepart]) If m.lnSucces < 0 AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare") Endif laValori[2, 1] = "poAct.v426" laValori[2, 2] = Alltrim(crsnumepart.denumire) laValori[2, 3] = !Empty(gnID_PARTDRNERIDLIC) Use In crsnumepart Select crsNota lcCursor = [crsNota] lnSucces = scrie_nota_import(m.lnId_Set, m.llVerificAnalitic, m.llCompletareParteneri, m.lcCursor, @laValori) If Used(m.lcCursor) Use In (m.lcCursor) Endif && -- scriu in statele din luna respectiva ca au fost trecute pe drepturi neridicate If buton = 2 Return Endif If m.lnSucces > 0 Select crsState Scan For bifa > 0 Scatter Name ost Private pnIdfact Store 0 To pnIdfact lcSel = [select pack_contafin.GET_IDFACT() as id_fact from dual ] lnSucces = goExecutor.oExecute(m.lcSel, [crsIdFact]) If m.lnSucces < 0 AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare") Endif Select crsIdFact Scatter Name oidfact lcSel = [update sal_stat set BIFALICNERID = 1, SUMALICNERID = ] + Alltrim(Str(ost.SUMALICNERID)) + [,id_fact_lic = ] + Alltrim(Str(oidfact.id_fact)) + [ where id_stat = ] + Alltrim(Str(ost.id_stat)) lnSucces = goExecutor.oExecute(m.lcSel) If m.lnSucces < 0 AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare") Endif Use In crsIdFact Release oidfact Endscan Endif Use In crsState Release ofrmSelect Endproc ***--------------------------------------------------------------------------------------------------------------------- Procedure aleg_salnerid_de_achit Parameters tcAlias Private pcselect, pcfiltru, pcschema, pcorder, postat Local lcTip, llTest, lnSuma Store 0 To lnSuma Store .F. To llTest Store "" To postat *Thisform.blocbuton1.terminat1.Enabled=.F. *!* lunanan=gnLuna+gnAn*12 *!* Select actcv Private oireg Select (tcAlias) Scatter Name oireg Do Case Case poAct.id_set = 90011 &&selectie din state si bifarea sumelor pentru care se face trecerea pcschema = ['id_stat i,an n(4),luna n(2),NUME C(50),PRENUME C(50),SECTIE C(30),FORMATIE C(64),MARCA n(10),lichidare n(16), bifa n(1),SUMALICNERID n(16)'] pcselect = [select a.id_stat,a.an,a.luna,a.nume,a.prenume,a.sectie,a.formatia,a.marca,a.lichidare,ROUND(a.ACHITLICNERID,0) as bifa,a.SUMALICNERID from sal_vstattot a where 1=2] pcfiltru = [ id_fact_lic = ] + Alltrim(Str(oireg.id_fact)) + [ and ACHITLICNERID = 0] Case poAct.id_set = 90013 &&selectie din state si bifarea sumelor pentru care se face trecerea pcschema = ['id_stat i,an n(4),luna n(2),NUME C(50),PRENUME C(50),SECTIE C(30),FORMATIE C(64),MARCA n(10),lichidare n(16), bifa n(1),SUMALICNERID n(16)'] pcselect = [select a.id_stat,a.an,a.luna,a.nume,a.prenume,a.sectie,a.formatia,a.marca,a.avans as lichidare,ROUND(a.ACHITAVNERID,0) as bifa,a.SUMAAVNERID as SUMALICNERID from sal_vstattot a where 1=2] pcfiltru = [ id_fact_av = ] + Alltrim(Str(oireg.id_fact)) + [ and ACHITAVNERID = 0] Endcase pcorder = [a.sectie,a.nume,A.PRENUME] llAfiseaza = .F. gencursor('postat', 'crsState', pcselect, pcfiltru, pcschema, pcorder, llAfiseaza) postat.ca_baza1.afisare() If !Used('crsStatDePastrat') Select * From crsState Where 1 = 2 Into Cursor crsStatDePastrat Readwrite Endif Select crsState ofrmSelect = Createobject('frm_alege_neridicati') If poAct.id_set = 90011 ofrmSelect.noptiune = 2&& pentru achitarea lichidarii neridicate Else ofrmSelect.noptiune = 5&& pentru achitarea avansului neridicat Endif ofrmSelect.Show(1) If buton = 2 Return Endif Select crsStatDePastrat Insert Into crsStatDePastrat Select * From crsState Where bifa = 1 Use In crsState Select (tcAlias) Replace sumaachi With pnSumaBifata Release ofrmSelect Endproc ***------------------------------------------------------------------------------------------------------------------- Procedure drepturi_nerid_av Private postat Store [] To postat &&selectie din state si bifarea sumelor pentru care se face trecerea pcschema = ['id_stat i,an n(4),luna n(2),NUME C(50),PRENUME C(50),SECTIE C(30),FORMATIE C(64),MARCA n(10),lichidare n(16), bifa n(1),SUMALICNERID n(16)'] pcselect = [select a.id_stat,a.an,a.luna,a.nume,a.prenume,a.sectie,a.formatia,a.marca,a.avans as lichidare,ROUND(a.BIFAAVNERID,0) as bifa,a.SUMAAVNERID as SUMALICNERID from sal_vstattot a where 1=2] pcfiltru = [ 1=2] pcorder = [a.sectie,a.nume,A.PRENUME] llAfiseaza = .F. gencursor('postat', 'crsState', pcselect, pcfiltru, pcschema, pcorder, llAfiseaza) postat.ca_baza1.afisare() Select crsState ofrmSelect = Createobject('frm_alege_neridicati') ofrmSelect.noptiune = 3&& trecerea avansului in drepturi neridicare ofrmSelect.Show(1) If buton = 2 Return Endif Select crsState Set Filter To Locate Select Sum(Nvl(SUMALICNERID, 0)) As suma From crsState Where bifa > 0 Into Cursor crsSuma Select crsSuma && / selectie din state si bifarea sumelor pentru care se face trecerea && nota contabila Select xsets llStergeNotaPrecedenta = .F. lnId_Set = 90012 lnCod = 0 llVerificAnalitic = .T. llCompletareParteneri = .T. If m.llStergeNotaPrecedenta lnSucces = sterge_nota(m.lnCod, m.lnId_Set) Endif Select suma From crsSuma Into Cursor crsNota Use In crsSuma *!* DEBUG *!* SUSPEND lcCursor = [crsNota] Select &lcCursor If !Used(m.lcCursor) Or Empty(m.lcCursor) Return Endif *!* scrie_nota_import( tnId_Set, tlVerificAnalitic, tlCompletareParteneri, tcCursorImport,taValori ) Dimension laValori[2, 3] laValori[1, 1] = "poAct.id_vv426" laValori[1, 2] = Alltrim(Str(gnID_PARTDRNERIDAV)) laValori[1, 3] = !Empty(gnID_PARTDRNERIDAV) lcSel = [select denumire from nom_parteneri where id_part = ] + Alltrim(Str(gnID_PARTDRNERIDAV)) lnSucces = goExecutor.oExecute(m.lcSel, [crsnumepart]) If m.lnSucces < 0 AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare") Endif laValori[2, 1] = "poAct.v426" laValori[2, 2] = Alltrim(crsnumepart.denumire) laValori[2, 3] = !Empty(gnID_PARTDRNERIDAV) Use In crsnumepart Select crsNota lcCursor = [crsNota] lnSucces = scrie_nota_import(m.lnId_Set, m.llVerificAnalitic, m.llCompletareParteneri, m.lcCursor, @laValori) If Used(m.lcCursor) Use In (m.lcCursor) Endif && -- scriu in statele din luna respectiva ca au fost trecute pe drepturi neridicate If buton = 2 Return Endif If m.lnSucces > 0 Select crsState Scan For bifa > 0 Scatter Name ost Private pnIdfact Store 0 To pnIdfact lcSel = [select pack_contafin.GET_IDFACT() as id_fact from dual ] lnSucces = goExecutor.oExecute(m.lcSel, [crsIdFact]) If m.lnSucces < 0 AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare") Endif Select crsIdFact Scatter Name oidfact lcSel = [update sal_stat set BIFAAVNERID = 1, SUMAAVNERID = ] + Alltrim(Str(ost.SUMALICNERID)) + [,id_fact_av = ] + Alltrim(Str(oidfact.id_fact)) + [ where id_stat = ] + Alltrim(Str(ost.id_stat)) lnSucces = goExecutor.oExecute(m.lcSel) If m.lnSucces < 0 AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare") Endif Use In crsIdFact Release oidfact Endscan Endif Use In crsState Release ofrmSelect Endproc ***--------------------------------------------------------------------------------------------------------------------- Procedure inchidere_tva Lparameters tnTip *** tnTip: 1 = inchidere TVA (inclusiv TVA 4427 exigibil la 90 zile); 2 = TVA 4427 exigibil la 90 zile Local overif As 'verificare' Local lCompletareParteneri, lVerificAnalitic, lcCursor, lcCursorVerificare, lcSel Local lcSql, llSucces, lnBut, lnButon, lnSucces, loAct, lnIdSet *:Global gnButon Private pcSirDifAcont, pcSirDifPart, pnCod, pcExplicatia, pdDataIreg, pdDataAct, pnIdFdoc, pnNrAct, pnScrieDirect lnIdSet = 90004 pnCod = 0 llSucces = .T. lcCursorVerificare = [crsact] pnScrieDirect = 0 && nu mai scriu direct notele in ACT, ci las utilizatorul sa le modifice *** STERGERE NOTA INCHIDERE TVA 90004 lcSql = [select * from vact where id_set = 90004 and an = ?gnAn and luna = ?gnLuna] + m.gcCondSucursala lcCursor = [actactan] lnSucces = goExecutor.oExecute(lcSql, m.lcCursor) goExecutor.oReset() If m.lnSucces < 0 AMESSAGEBOX('Cautare Nota Inchidere TVA:' + Chr(13) + goExecutor.cEroare, 0 + 16, "Eroare") Return Endif Select actactan If Reccount() > 0 Clear Class "verificare" overif = Createobject('verificare') overif.Show(1) If buton = 2 Use In (Select('actactan')) Release overif Return m.llSucces Endif lnSucces = OSCRIE_IN_FISIERE(2, .F.) llSucces = (m.lnSucces > 0) Endif If m.llSucces lnButon = lans(m.lnIdSet) If m.lnButon = 2 Return m.llSucces Endif Else Return m.llSucces Endif Select actactan Go Top Scatter Name loAct pnIdFdoc = loAct.id_fdoc pnNrAct = loAct.nract pdDataAct = loAct.dataact pdDataIreg = loAct.dataireg pcExplicatia = Alltrim(loAct.explicatia) pcSirDifAcont = "" pcSirDifPart = "" *** SCRIERE TVA EXIGIBIL 90 ZILE *** Valabila pana la 12/2013 If m.llSucces And (m.gnAn * 12 + m.gnLuna <= 2013 * 12 + 12) && And (goCalendar.tva_incasare = 1) *** Am pus tranzactie manuala pentru ca dadea o eroare cand se deschideau cursoare bazate pe tabele temporara act_temp llSucces = goConn.BeginManualTransaction() Do While m.llSucces *** da frecvent fatal error cand transmit parametri cu ? in loc de valori - probabil bug in driverul de odbc *!* lcSql = [{call pack_inchideri.note_inchidere_tva_90(?gnAn, ?gnLuna, ?gnIdSucursala, ?pnIdFdoc, ?gnIdUtil, ?pdDataIreg, ?pnNrAct, ?pcExplicatia, ?pcSirDifAcont, ?pcSirDifPart, ?@pnCod)}] TEXT To lcSql Noshow Textmerge {call pack_inchideri.note_inchidere_tva_90(<>, <>, <>, <>, <>, TO_DATE('<>', 'YYYYMMDD'), <>, '<>', '<>', '<>', ?@pnCod)} ENDTEXT llSucces = goExecutor.oExecuta(m.lcSql, m.lcCursorVerificare) If !m.llSucces && eroare Exit Endif If Reccount(m.lcCursorVerificare) = 0 && nu mai este nimic de completat Exit Endif *** Trebuie completate analitice, parteneri pcSirDifAcont = "" pcSirDifPart = "" llSucces = verificare_completare_act(m.lcCursorVerificare, .T., .T., @pcSirDifAcont, @pcSirDifPart) Use In (Select(m.lcCursorVerificare)) Enddo && .T. llSucces = goConn.EndManualTransaction(Iif(m.llSucces, 'COMMIT', 'ROLLBACK')) Endif && goCalendar.tva_incasare = 1 *** SCRIERE INCHIDERE TVA If m.llSucces And m.tnTip = 1 pcSirDifAcont = "" pcSirDifPart = "" llSucces = goConn.BeginManualTransaction() Do While m.llSucces *** da frecvent fatal error cand transmit parametri cu ? in loc de valori - probabil bug in driverul de odbc *!* lcSql = [{call pack_inchideri.note_inchidere_tva(?gnAn, ?gnLuna, ?gnIdSucursala, ?pnIdFdoc, ?gnIdUtil, ?pdDataIreg, ?pdDataAct, ?pnNrAct, ?pcExplicatia, ?pcSirDifAcont, ?pcSirDifPart, ?@pnCod)}] TEXT To lcSql Noshow Textmerge {call pack_inchideri.note_inchidere_tva(<>, <>, <>, <>, <>, TO_DATE('<>', 'YYYYMMDD'), TO_DATE('<>', 'YYYYMMDD'), <>, '<>', '<>', '<>', ?@pnCod, ?pnScrieDirect)} ENDTEXT llSucces = goExecutor.oExecuta(m.lcSql, m.lcCursorVerificare) If !m.llSucces && eroare Exit Endif If pnScrieDirect = 1 If Reccount(m.lcCursorVerificare) = 0 && nu mai este nimic de completat Exit Endif *** Trebuie completate analitice, parteneri pcSirDifAcont = "" pcSirDifPart = "" llSucces = verificare_completare_act(m.lcCursorVerificare, .T., .T., @pcSirDifAcont, @pcSirDifPart) Else Select actactan Go Top Scatter Name loAct Zap Insert Into actactan (scc, ascc, scd, ascd, suma) ; Select scc, ascc, scd, ascd, suma From (lcCursorVerificare) Select actactan Scan Gather Name loAct Fields Except scc, ascc, scd, ascd, suma Endscan IF m.gl406 UPDATE actactan SET taxcode = 301000 WHERE INLIST(scd, '4423', '4424') OR INLIST(scc, '4423', '4424') UPDATE actactan SET taxcode = 380200 WHERE !(INLIST(scd, '4423', '4424') OR INLIST(scc, '4423', '4424')) ENDIF Select .F. As ales, 0 As Cu_tva, Cast(0 As N(2)) As tipnota, a.*, Space(100) As explicatie_tva ; From actactan a ; Into Cursor tact Readwrite Use In (Select('crsExplicatiiTVATemp')) Select tact Go Top llNotaNoua = .T. llMaximize = .T. loForm = Createobject([frm_modific2007], m.lnIdSet, m.llNotaNoua) loForm.lb_titlu_alb_b121.Caption = 'Nota inchidere TVA' Select tact loForm.Show(1, m.llMaximize) If m.gnButon = 1 Use In (Select('actactan')) Select tact Replace id_jtva_coloana With Null, PROC_TVA With 0 For Cu_tva = 0 Select * From tact Into Cursor actactan Readwrite Select actactan Replace All id_util With m.gnIdUtil, id_set With m.lnIdSet lnSucces = OSCRIE_IN_FISIERE(0) llSucces = (lnSucces > 0) IF m.llSucces AMESSAGEBOX('S-a inregistrat Nota de inchidere TVA!', 0 + 64, _Screen.Caption) ENDIF Endif && gnButon = 1 Exit Endif && pnScrieDirect Use In (Select(m.lcCursorVerificare)) Enddo && .T. llSucces = goConn.EndManualTransaction(Iif(m.llSucces, 'COMMIT', 'ROLLBACK')) Endif && llSucces Use In (Select('actactan')) IF m.pnScrieDirect = 1 If Nvl(m.pnCod, 0) <> 0 AMESSAGEBOX('S-a inregistrat Nota de inchidere TVA!', 0 + 64, _Screen.Caption) Else AMESSAGEBOX('Nu exista inregistrari pentru Nota de inchidere TVA!', 0 + 64, _Screen.Caption) ENDIF ENDIF Endproc && inchidere_tva ************************************ *** note inchidere TVA Incasare pentru facturi cu sold 0 si neexigibilizate la timp *** se apeleaza din Registrul de Cumparari/Vanzari ************************************ Procedure inchidere_tva_sold Parameters tcJurnal, tcXMLFacturi Local loForm As [frm_modific2007] Local lcCursorDefTVA, lcJurnal, lcSCC, lcSCD, lcSql, llMaximize, llNotaNoua, lnBut, lnIdFact Local lnIdSet, lnNrAct, lnProcTVA, lnRecords, lnSucces, lnSuma, loAct Local lnCota, lnCotaTVA, lnSuma24, lnSuma5, lnSuma9, lnSumaT Local lnSuma24T, lnSuma5T, lnSuma9T, lnSumaNT, lcMesaj Local lnSuma11, lnSuma19, lnSuma20, lnSuma21, lnSuma11T, lnSuma19T, lnSuma20T, lnSuma21T lcJurnal = Upper(Alltrim(m.tcJurnal)) && JC/JV If m.lcJurnal = 'JC' && Jurnal Cumparari lcSCD = '4426' lcSCC = '4428' Else lcSCD = '4428' lcSCC = '4427' Endif lnRecords = Xmltocursor(m.tcXMLFacturi, "crsTVAIncasareTemp") If lnRecords = 0 Use In (Select("crsTVAIncasareTemp")) Return Endif lcMesaj = '' lnIdSet = 99999 && nota fara predefinire lnBut = lans(m.lnIdSet) If m.lnBut = 1 Select actactan Scatter Name loAct Zap Select crsTVAIncasareTemp Scan lnNrAct = crsTVAIncasareTemp.nract lnIdFact = crsTVAIncasareTemp.id_fact lnSumaT = soldn lnSuma21 = 0 lnSuma11 = 0 lnSuma21T = 0 lnSuma11T = 0 If Type('crsTVAIncasareTemp.soldn21') = 'N' lnSuma21 = crsTVAIncasareTemp.soldn21 lnSuma11 = crsTVAIncasareTemp.soldn11 Endif If Type('crsTVAIncasareTemp.ro21nt') = 'N' lnSuma21T = crsTVAIncasareTemp.ro21nt lnSuma11T = crsTVAIncasareTemp.ro11nt Endif lnSuma24 = soldn24 lnSuma20 = soldn20 lnSuma19 = soldn19 lnSuma9 = soldn9 lnSuma5 = soldn5 If m.lcJurnal = 'JC' && Jurnal Cumparari lnSuma24T = ro24nt lnSuma20T = ro20nt lnSuma19T = ro19nt lnSuma9T = ro09nt lnSuma5T = ro05nt ELSE lnSuma24T = ro24nt lnSuma20T = ro20nt lnSuma19T = ro19nt lnSuma9T = ro9nt lnSuma5T = ro5nt Endif For lnCota = 1 To 7 lnSuma = m.lnSumaT lnCotaTVA = 0.00 If m.lnSumaT = 0 lnSuma = Iif(m.lnCota = 1, m.lnSuma24, Iif(m.lnCota = 2, m.lnSuma20, Iif(m.lnCota = 3, m.lnSuma19, Iif(m.lnCota = 4, m.lnSuma9, Iif(m.lnCota = 5, m.lnSuma5, Iif(m.lnCota = 6, m.lnSuma21, m.lnSuma11)))))) lnCotaTVA = Iif(m.lnCota = 1, 1.24, Iif(m.lnCota = 2, 1.20, Iif(m.lnCota = 3, 1.19, Iif(m.lnCota = 4, 1.09, Iif(m.lnCota = 5, 1.05, Iif(m.lnCota = 6, 1.21, 1.11)))))) Endif lnSumaNT = Iif(m.lnCota = 1, m.lnSuma24T, Iif(m.lnCota = 2, m.lnSuma20T, Iif(m.lnCota = 3, m.lnSuma19T, Iif(m.lnCota = 4, m.lnSuma9T, Iif(m.lnCota = 5, m.lnSuma5T, Iif(m.lnCota = 6, m.lnSuma21T, m.lnSuma11T)))))) lcSql = [{call pack_contab.defalca_tva_incasare(] + Alltrim(Str(m.lnIdFact)) + [,] + ; Alltrim(Str(m.lnSuma, 16, m.gnPC)) + [, ] + Alltrim(Str(m.lnCotaTVA, 5, 2)) + [, 1, ?gnLuna, ?gnAn)}] lcCursorDefTVA = [crsdeftvainc] If goExecutor.oExecuta(m.lcSql, m.lcCursorDefTVA) * Daca din diferite motive nu se poate calcula TVA exigibil, pun o linie cu ID_FACT-ul facturii originale, sa se poata completa manual If Reccount(lcCursorDefTVA) = 0 And m.lnSumaNT <> 0 Insert Into (lcCursorDefTVA) (suma, PROC_TVA, id_fact) ; Values (m.lnSumaNT, Iif(m.lnCota = 1, 1.24, Iif(m.lnCota = 2, 1.20, Iif(m.lnCota = 3, 1.19, Iif(m.lnCota = 4, 1.09, Iif(m.lnCota = 5, 1.05, Iif(m.lnCota = 6, 1.21, 1.11)))))), m.lnIdFact) lcMesaj = lcMesaj + 'Factura ' + Alltrim(Str(m.lnNrAct)) + Chr(13) + Chr(10) Endif Insert Into actactan(nract, dataact, dataireg, id_fdoc, fdoc, nr_nota, luna, an, scd, scc, suma, PROC_TVA, id_jtva_coloana, id_set, id_fact, perechec, pereched, explicatia) ; Select loAct.nract, loAct.dataact, loAct.dataireg, loAct.id_fdoc, loAct.fdoc, Reccount('actactan') + Recno() As nr_nota, m.gnLuna As luna, m.gnAn As an, m.lcSCD As scd, m.lcSCC As scc, ; a.suma, a.PROC_TVA, a.id_jtva_coloana, m.lnIdSet As id_set, m.lnIdFact As id_fact, ; Iif(m.lcJurnal = 'JV', m.lnNrAct, 0) As perechec, Iif(m.lcJurnal = 'JC', m.lnNrAct, 0) As pereched, ; 'Exigibilizare TVA Incasare' As explicatia ; From (lcCursorDefTVA) a Use In (Select(m.lcCursorDefTVA)) Endif * apelez defalca_tva_incasare pentru fiecare cota, doar daca soldul neexigibil total este 0 * NU MAI STIU DE CE FAC ASTA???? Am pus lnSumaT > 0 in loc de <> 0, pentru ca aveam un caz special < 0 si nu stiu de ce ieste din bucla If m.lnSumaT > 0 Exit Endif Endfor && lnCota = 1 TO 3 Endscan && crsTVAIncasareTemp Select actactan Scan Gather Name loAct Fields Except nr_nota, luna, an, scd, scc, suma, PROC_TVA, id_jtva_coloana, id_set, id_fact, perechec, pereched If !Empty(Nvl(loAct.explicatia, '')) Replace explicatia With loAct.explicatia Endif Replace id_sucursala With m.gnIdSucursala Endscan update_jtva_coloane(m.lcJurnal, 'crsExplicatiiTVATemp', 1) Select .F. As ales, 1 As Cu_tva, Cast(0 As N(2)) As tipnota, a.*, b.denumire As explicatie_tva_2 ; From actactan a Left Join crsExplicatiiTVATemp b On a.id_jtva_coloana = b.id_jtva_coloana ; Into Cursor tact Readwrite Update tact Set explicatie_tva = explicatie_tva_2 Use In (Select('crsExplicatiiTVATemp')) If !Empty(m.lcMesaj) lcMesaj = [ATENTIE! Nu s-au gasit toate informatiile necesare!] + Chr(13) + Chr(10) + ; [Completati campul "Explicatia TVA" exigibila pentru inregistrarile:] + Chr(13) + Chr(10) + m.lcMesaj AMESSAGEBOX(m.lcMesaj, 0 + 48, _Screen.Caption) Endif Select tact Go Top llNotaNoua = .T. llMaximize = .T. loForm = Createobject([frm_modific2007], m.lnIdSet, m.llNotaNoua) loForm.lb_titlu_alb_b121.Caption = 'Exigibilizare TVA Incasare' Select tact loForm.Show(1, m.llMaximize) If buton = 1 Use In (Select('actactan')) Select tact Replace id_jtva_coloana With Null, PROC_TVA With 0 For Cu_tva = 0 Select * From tact Into Cursor actactan Readwrite Select actactan Replace All id_util With gnIdUtil, id_set With m.lnIdSet lnSucces = OSCRIE_IN_FISIERE(0) Endif && buton = 1 Endif && m.lnBut = 1 Use In (Select('actactan')) Use In (Select('tact')) Endproc && inchidere_tva_sold *_________________________________ Procedure inchidere_venituri_cheltuieli Lparameters tnTip * tnTip: 7 = Venituri, 6 = Cheltuieli Local overif As 'verificare' Local lCompletareParteneri, lVerificAnalitic, lcCursor, lcSel, lcSql, llSucces, lnBut, lnIdSet Local lnSucces, lnTip, loAct, lcAcont121, llNotaNoua, llMaximize lnTip = Iif(Empty(m.tnTip), 7, m.tnTip) lnIdSet = Iif(m.lnTip = 7, 90005, 90006) * Stergere inchidere anterioara Use In (Select('actactan')) lcSql = [select * from vact where id_set = ] + Alltrim(Str(m.lnIdSet)) + [ and an = ?gnAn and luna = ?gnLuna] + m.gcCondSucursala lcCursor = [actactan] llSucces = goExecutor.oExecuta(lcSql, m.lcCursor) If !m.llSucces Return Endif Select actactan If Reccount() > 0 Clear Class "verificare" overif = Createobject('verificare') overif.Show(1) If buton = 2 Use In (Select('actactan')) Release overif Return Endif Do OSCRIE_IN_FISIERE.prg With 2, .F. Endif * Nota inchidere curenta lnBut = lans(m.lnIdSet) llSucces = (m.lnBut = 1) If m.llSucces lcSel = '{call pack_inchideri.inchidere_' + Iif(m.lnTip = 7, 'venituri', 'cheltuieli') + '(?gnAn,?gnLuna,?gnIdSucursala)}' lcCursor = 'crs_inchidere' llSucces = goExecutor.oExecuta(m.lcSel, m.lcCursor) Endif If m.llSucces Select actactan Go Top Scatter Name loAct Zap lcAcont121 = '' If m.lnTip = 7 && venituri lcAcont121 = Iif(Type('gcRC_ACONT121_INCHIDERE_V') = 'C' And !Empty(Nvl(m.gcRC_ACONT121_INCHIDERE_V, '')), m.gcRC_ACONT121_INCHIDERE_V, Space(4)) Insert Into actactan (scd, ascd, scc, ascc, suma, id_sectie, sectie) ; Select Cont As scd, ACONT As ascd, '121 ' As scc, lcAcont121 As ascc, suma, ; Iif(Type('id_sectie') = 'U', loAct.id_sectie, id_sectie) As id_sectie, ; Iif(Type('sectie') = 'U', loAct.sectie, sectie) As sectie From crs_inchidere Else lcAcont121 = Iif(Type('gcRC_ACONT121_INCHIDERE_C') = 'C' And !Empty(Nvl(m.gcRC_ACONT121_INCHIDERE_C, '')), m.gcRC_ACONT121_INCHIDERE_C, Space(4)) Insert Into actactan (scc, ascc, scd, ascd, suma, id_sectie, sectie) ; Select Cont As scc, ACONT As ascc, '121 ' As scd, lcAcont121 As ascd, suma, ; Iif(Type('id_sectie') = 'U', loAct.id_sectie, id_sectie) As id_sectie, ; Iif(Type('sectie') = 'U', loAct.sectie, sectie) As sectie From crs_inchidere Endif Select actactan Scan Gather Name loAct Fields Except scc, ascc, scd, ascd, suma, id_sectie, sectie Endscan Select .F. As ales, 0 As Cu_tva, Cast(0 As N(2)) As tipnota, a.*, Space(100) As explicatie_tva ; From actactan a ; Into Cursor tact Readwrite Use In (Select('crsExplicatiiTVATemp')) Select tact Go Top llNotaNoua = .T. llMaximize = .T. loForm = Createobject([frm_modific2007], m.lnIdSet, m.llNotaNoua) loForm.lb_titlu_alb_b121.Caption = 'Nota inchidere ' + Iif(m.lnTip = 7, 'venituri', 'cheltuieli') Select tact loForm.Show(1, m.llMaximize) If m.gnButon = 1 Use In (Select('actactan')) Select tact Replace id_jtva_coloana With Null, PROC_TVA With 0 For Cu_tva = 0 Select * From tact Into Cursor actactan Readwrite Select actactan Replace All id_util With m.gnIdUtil, id_set With m.lnIdSet lnSucces = OSCRIE_IN_FISIERE(0) Endif && gnButon = 1 Endif && llSucces Use In (Select('crs_inchidere')) Use In (Select('actactan')) Endproc && inchidere_venituri_cheltuieli ************************************** *** Genereaza note 461 = 542 pe baza sold inregistrari 542 la 30.06.aa, 31.12.aa *** folositor pentru aflarea soldul 542 la sfarsitul perioadei in F30 bilant *** ID_SET: 90021 ************************************** Procedure inchidere_sold_542 Private pnIdSet, pnCod Local overif As 'verificare' Local lcCursor, lcCursorVerificare, lcSql, llSucces, lnButon, lnSucces, loAct Private pcSirDifAcont, pcSirDifPart, pdDataIreg pnIdSet = 90021 pnCod = 0 llSucces = .T. lcCursorVerificare = [crsact] *** STERGERE NOTA INCHIDERE SOLD 542 90021 lcSql = [select * from vact where id_set = ?pnIdSet and an = ?gnAn and luna = ?gnLuna] + m.gcCondSucursala lcCursor = [actactan] llSucces = goExecutor.oExecuta(lcSql, m.lcCursor) If !m.llSucces Return m.llSucces Endif Select actactan If Reccount() > 0 Clear Class "verificare" overif = Createobject('verificare') overif.Show(1) If buton = 2 Use In (Select('actactan')) Release overif Return m.llSucces Endif lnSucces = OSCRIE_IN_FISIERE(2, .F.) llSucces = (m.lnSucces > 0) Endif If !m.llSucces Return m.llSucces Endif *** Cerere date (nu imi trebuie informatii gen nract, dataact, dar trebuie sa se creeze actactan) lnButon = lans(m.pnIdSet) If m.lnButon = 2 llSucces = .F. Return m.llSucces Endif Select actactan Go Top Scatter Name loAct pdDataIreg = loAct.dataireg pcSirDifAcont = "" pcSirDifPart = "" *** SCRIERE NOTA INCHIDERE SOLD 542 90021 If m.llSucces pcSirDifAcont = "" pcSirDifPart = "" llSucces = goConn.BeginManualTransaction() Do While m.llSucces *** da frecvent fatal error cand transmit parametri cu ? in loc de valori - probabil bug in driverul de odbc *!* lcSql = [{call pack_inchideri.note_inchidere_tva(?gnAn, ?gnLuna, ?gnIdSucursala, ?pnIdFdoc, ?gnIdUtil, ?pdDataIreg, ?pdDataAct, ?pnNrAct, ?pcExplicatia, ?pcSirDifAcont, ?pcSirDifPart, ?@pnCod)}] TEXT To lcSql Noshow Textmerge {call pack_inchideri.note_inchidere_542(<>, <>, <>, <>, TO_DATE('<>', 'YYYYMMDD'), '<>', '<>', ?@pnCod)} ENDTEXT llSucces = goExecutor.oExecuta(m.lcSql, m.lcCursorVerificare) If !m.llSucces && eroare Exit Endif If Reccount(m.lcCursorVerificare) = 0 && nu mai este nimic de completat Exit Endif *** Trebuie completate analitice, parteneri pcSirDifAcont = "" pcSirDifPart = "" llSucces = verificare_completare_act(m.lcCursorVerificare, .T., .T., @pcSirDifAcont, @pcSirDifPart) Use In (Select(m.lcCursorVerificare)) Enddo && .T. llSucces = goConn.EndManualTransaction(Iif(m.llSucces, 'COMMIT', 'ROLLBACK')) Endif && llSucces Use In (Select('actactan')) If Nvl(m.pnCod, 0) <> 0 AMESSAGEBOX('S-a inregistrat Nota de inchidere sold 542!', 0 + 64, _Screen.Caption) Else AMESSAGEBOX('Nu exista inregistrari pentru Nota de inchidere sold 542!', 0 + 64, _Screen.Caption) Endif Endproc && inchidere_sold_542 ************************************** *** Genereaza note inverse 542 = 461 pe baza notei de inchidere din registrul jurnal din luna anterioara (la 07/aa 01/aa) *** ID_SET: 90022 ************************************** Procedure repunere_sold_542 Private pnIdSet, pnCod Local overif As 'verificare' Local lcCursor, lcCursorVerificare, lcSql, llSucces, lnButon, lnSucces, loAct Private pcSirDifAcont, pcSirDifPart, pdDataIreg pnIdSet = 90022 pnCod = 0 llSucces = .T. lcCursorVerificare = [crsact] *** STERGERE NOTA REPUNERE SOLD 542 90022 lcSql = [select * from vact where id_set = ?pnIdSet and an = ?gnAn and luna = ?gnLuna] + m.gcCondSucursala lcCursor = [actactan] llSucces = goExecutor.oExecuta(lcSql, m.lcCursor) If !m.llSucces Return m.llSucces Endif Select actactan If Reccount() > 0 Clear Class "verificare" overif = Createobject('verificare') overif.Show(1) If buton = 2 Use In (Select('actactan')) Release overif Return m.llSucces Endif lnSucces = OSCRIE_IN_FISIERE(2, .F.) llSucces = (m.lnSucces > 0) Endif If !m.llSucces Return m.llSucces Endif *** Cerere date (nu imi trebuie informatii gen nract, dataact, dar trebuie sa se creeze actactan) lnButon = lans(m.pnIdSet) If m.lnButon = 2 llSucces = .F. Return m.llSucces Endif Select actactan Go Top Scatter Name loAct pdDataIreg = loAct.dataireg pcSirDifAcont = "" pcSirDifPart = "" *** SCRIERE NOTA REPUNERE SOLD 542 90022 If m.llSucces pcSirDifAcont = "" pcSirDifPart = "" llSucces = goConn.BeginManualTransaction() Do While m.llSucces *** da frecvent fatal error cand transmit parametri cu ? in loc de valori - probabil bug in driverul de odbc *!* lcSql = [{call pack_inchideri.note_inchidere_tva(?gnAn, ?gnLuna, ?gnIdSucursala, ?pnIdFdoc, ?gnIdUtil, ?pdDataIreg, ?pdDataAct, ?pnNrAct, ?pcExplicatia, ?pcSirDifAcont, ?pcSirDifPart, ?@pnCod)}] TEXT To lcSql Noshow Textmerge {call pack_inchideri.note_repunere_542(<>, <>, <>, <>, TO_DATE('<>', 'YYYYMMDD'), '<>', '<>', ?@pnCod)} ENDTEXT llSucces = goExecutor.oExecuta(m.lcSql, m.lcCursorVerificare) If !m.llSucces && eroare Exit Endif If Reccount(m.lcCursorVerificare) = 0 && nu mai este nimic de completat Exit Endif *** Trebuie completate analitice, parteneri pcSirDifAcont = "" pcSirDifPart = "" llSucces = verificare_completare_act(m.lcCursorVerificare, .T., .T., @pcSirDifAcont, @pcSirDifPart) Use In (Select(m.lcCursorVerificare)) Enddo && .T. llSucces = goConn.EndManualTransaction(Iif(m.llSucces, 'COMMIT', 'ROLLBACK')) Endif && llSucces Use In (Select('actactan')) If Nvl(m.pnCod, 0) <> 0 AMESSAGEBOX('S-a inregistrat Nota de repunere sold 542!', 0 + 64, _Screen.Caption) Else AMESSAGEBOX('Nu exista inregistrari pentru Nota de repunere sold 542!', 0 + 64, _Screen.Caption) Endif Endproc && repunere_sold_542 ************************************************* *** completare configurare conturi pentru inchiderea de amortizari *** completeaza conturile de cheltuiala si amortizare pe sectii cu conturile de la inregistrarile fara sectii, daca este cazul *** id_sectie a fost adaugat in 09.07.2020 si erau configurari doar pe cont, acont, nu si pe sectie ************************************************* Procedure inchidere_amortizari_completare_conturi Local lcLunaAn, lcSelect, lcSql lcSelect = Select() lcLunaAn = Padl(Int(m.gnLuna), 2, '0') + Alltrim(Str(Int(m.gnAn))) TEXT TO lcSql TEXTMERGE NOSHOW BEGIN pack_imob.setlunacurenta(to_date('<>','mmyyyy')); insert into imob_inchidere (id_sectie, cont, acont, scd, ascd, scc, ascc) select a.id_sectie, a.cont, a.acont, nvl(a.scd, b.cont_cheltuiala) as scd, ascd, nvl(a.scc, b.cont_amortizare) as scc, a.ascc from (Select Distinct DECODE(s.id_sectie, 0, NULL, s.id_sectie) as id_sectie, trim(s.Cont) as cont, trim(s.acont) as acont, nvl(i1.scd, i2.scd) as scd, nvl(i1.ascd, i2.ascd) as ascd, nvl(i1.scc, i2.scc) as scc, nvl(i1.ascc, i2.ascc) as ascc FROM imob_vsituatie_lunara s left join imob_inchidere i1 on nvl(s.id_sectie, 0) = nvl(i1.id_sectie, 0) and trim(s.cont) = trim(i1.cont) and trim(nvl(s.acont, 'x')) = trim(nvl(i1.acont, 'x')) left join (select cont, acont, scd, ascd, scc, ascc from imob_inchidere where id_sectie is null) i2 on trim(s.cont) = trim(i2.cont) and trim(nvl(s.acont, 'x')) = trim(nvl(i2.acont, 'x')) WHERE s.iesit_din_gest = 0 and s.id_tip_imobilizare in (1, 2) and rpad(nvl(s.id_sectie,0), 10, '0') || rpad(trim(s.cont),4, 'x') || rpad(trim(s.acont), 4, 'x') not in (select rpad(nvl(id_sectie,0), 10, '0') || rpad(trim(cont),4, 'x') || rpad(trim(acont), 4, 'x') from imob_inchidere)) a left join imob_conturi b on trim(a.cont) = trim(b.cont); END; ENDTEXT llSucces = goExecutor.oExecuta(m.lcSql) Select (m.lcSelect) Return m.llSucces Endproc && inchidere_amortizari_completare_conturi Procedure viz_inchidere_amortizari_conturi Local loFrm, llBlank, llSucces, llBlank inchidere_amortizari_completare_conturi() llBlank = .T. = ccsectii(m.llBlank) && vnom_sectii Select vnom_sectii Index On id_sectie Tag id_sectie llSucces = goExecutor.oExecuta("select id, id_sectie, sectie, cont, acont, scd, ascd, scc, ascc from vimob_inchidere order by sectie, cont, acont", "imob_conturi") If m.llSucces Select imob_conturi Go Top loFrm = Newobject("imob_conturi", "oconfigcont.vcx") loFrm.Show(1) Use In (Select('imob_conturi')) Endif = close_ccsectii() Endproc && viz_inchidere_amortizari_conturi *________________________________ Procedure inchidere_amortizari Parameters tnTip Local lcCursorInchidere, lcSql, lcCursor, lnSucces Local loForm As [frm_modific2007] Local overif As 'verificare' Local lcAct, lcDirContafin, llMaximize, llNotaNoua, llSucces, lnBut, lnIdSectie, loAct Private pnIdSet, pnSectie, pnTip, pnLucrare pnTip = Iif(Empty(tnTip) Or Type('tnTip') # 'N', 1, tnTip) If pnTip = 1 pnIdSet = 90003 Endif If pnTip = 2 pnIdSet = 90009 Endif * Completare conturi inchidere_amortizari_completare_conturi() lcCursorInchidere = "" lcSql = [select * from vact where id_set = ?pnIdSet and an = ?gnAn and luna = ?gnLuna] + m.gcCondSucursala lcCursor = [actactan] lnSucces = goExecutor.oExecute(lcSql, lcCursor) goExecutor.oReset() If lnSucces < 0 AMESSAGEBOX('Cautare Nota Inchidere Amortizari:' + Chr(13) + goExecutor.cEroare, 0 + 16, "Eroare") Return Endif Select actactan If Reccount() > 0 Clear Class "verificare" overif = Createobject('verificare') overif.Show(1) If buton = 2 If Used('actactan') Use In actactan Endif Release overif Return Else Do OSCRIE_IN_FISIERE.prg With 2, .F. Endif Endif lnBut = lans(pnIdSet) If m.lnBut = 1 If m.gnNotaImob = 3 * Import nota Contafin lcDirContafin = goApp.ReadIni([inchidere], "director_contafin") If Empty(m.lcDirContafin) Or !Directory(m.lcDirContafin) lcDirContafin = Getdir('', 'Directorul firmei Contafin', 'Directorul firmei Contafin', 64) goApp.WriteIni([inchidere], "director_contafin", m.lcDirContafin) Endif lcAct = Addbs(m.lcDirContafin) + 'AN' + Alltrim(Str(m.gnAn)) + '\DATE' + Padl(Alltrim(Str(m.gnLuna, 2, 0)), 2, '0') + '\ACT.DBF' If File(m.lcAct) llSucces = goExecutor.oExecuta('SELECT scd, ascd, scc, ascc, suma, explicatia4 as explicatie, id_sectie, sectie FROM vact WHERE 1=2', 'crs_inchidere') Use (m.lcAct) In 0 Shared Alias c_act_temp Select explicatia, scd, scc, ascd, ascc, sectie, nume_2 As explicatie, suma From c_act_temp Where id_set = m.pnIdSet Into Cursor cActTemp Use In (Select('c_act_temp')) If Reccount('cActTemp') = 0 AMESSAGEBOX('Nu exista nici o nota cu tipul de operatie ' + Alltrim(Str(m.pnIdSet)) + ' in Registrul jurnal din Contafin!', 0 + 48, _Screen.Caption) Create Cursor crs_inchidere(scd C(4), ascd C(4), scc C(4), ascc C(4), suma N(18, 4), explicatie C(100), id_sectie I, sectie C(100)) Endif && RECCOUNT Select crs_inchidere Append From Dbf('cActTemp') Use In (Select('cActTemp')) Select crs_inchidere Scan lnIdSectie = GetIdSectie(crs_inchidere.sectie) Replace id_sectie With m.lnIdSectie In crs_inchidere Endscan Else AMESSAGEBOX('Nu exista fisierul ' + m.lcAct, 0 + 48, _Screen.Caption) Create Cursor crs_inchidere(scd C(4), ascd C(4), scc C(4), ascc C(4), suma N(18, 4), explicatie C(100), id_sectie I, sectie C(100)) Endif && FILE(m.lcAct) Else pnSectie = 0 DO CASE CASE m.gnNotaImob = 2 pnSectie = 1 CASE m.gnCampSectie = 1 AND AMESSAGEBOX("Inchiderea se face dupa campul 'Sectie'?", 4 + 32, "Inchidere amortizari") = 6 pnSectie = 1 ENDCASE pnLucrare = 0 IF m.gnCampLucrare = 1 AND AMESSAGEBOX("Inchiderea se face dupa campul 'Lucrare'?", 4 + 32, "Inchidere amortizari") = 6 pnLucrare = 1 ENDIF lcCursorInchidere = GET_CURSOR_INCHIDERE_AMORTIZARI(m.pnTip, m.pnSectie, m.pnLucrare, m.gnAn, m.gnLuna, "crs_inchidere") && oproceduri_comune_imob.prg If !Used(lcCursorInchidere) lnBut = 2 && RENUNT Endif Endif && m.gnNotaImob = 3 Endif && m.lnBut = 1 If m.lnBut = 1 Select actactan Scatter Name loAct Zap Insert Into actactan (scd, ascd, scc, ascc, suma, explicatia4, id_sectie, sectie, id_lucrare, nrord) ; SELECT scd, ascd, scc, ascc, suma, explicatie, id_sectie, sectie, id_lucrare, nrord From crs_inchidere Where suma <> 0 Select actactan Scan Gather Name loAct Fields Except scd, ascd, scc, ascc, suma, explicatia4, id_sectie, sectie, id_lucrare, nrord Endscan Select .F. As ales, 0 As Cu_tva, Cast(0 As N(2)) As tipnota, a.*, Space(100) As explicatie_tva ; From actactan a ; Into Cursor tact Readwrite Use In (Select('crsExplicatiiTVATemp')) Select tact Go Top llNotaNoua = .T. llMaximize = .T. loForm = Createobject([frm_modific2007], m.pnIdSet, m.llNotaNoua) loForm.lb_titlu_alb_b121.Caption = 'Nota inchidere amortizare ' + Iif(m.pnTip = 1, 'imobilizari corporale', 'imobilizari necorporale') Select tact loForm.Show(1, m.llMaximize) If m.gnButon = 1 Use In (Select('actactan')) Select tact Replace id_jtva_coloana With Null, PROC_TVA With 0 For Cu_tva = 0 Select * From tact Into Cursor actactan Readwrite Select actactan Replace All id_util With gnIdUtil, id_set With m.pnIdSet lnSucces = OSCRIE_IN_FISIERE(0) Endif && gnButon = 1 Endif && lnBut = 1 Use In (Select('crs_inchidere')) Use In (Select('actactan')) Endproc && inchidere_amortizari