*!* 08.08.2011 *!* marius.mutu *!* note_fara_predefinire *!* se restaureaza nota fara predefinire neterminata anterior (fatal error) la intrarea in nota fara predefinire *!* 20.10.2011 *!* marius.mutu *!* note_fara_predefinire *!* prima linie adaugata in cursor se completeaza si campul id_sucursala *!* intr-o sucursala nu se putea modifica prima linie din cauza ca tact.id_sucursala (0) era diferit de gnIdSucursala (1) *!* 22.08.2013 *!* marius.mutu *!* repunere_venchelt_avans *!* repunere automata pentru cheltuielile/veniturile in avans cu rate definite *!* 11.08.2014 *!* marius.mutu *!* note_fara_predefinire *!* #4039 tratare eroare explicatie_tva de 2 ori in tact (explicatie_tva_a si explicatie_tva_b) *!* 24.10.2014 *!* marius.mutu *!* oxSet.SAVE: recreez xml note fara schema inline. pack_seturi.modifica_set dadea eroare cu schema inline *!* 20.03.2015 *!* marius.mutu *!* repunere_venchelt_avans: se tine cont de ratele si lista_mf sterse, provenite din modificari *!* 08.03.2018 *!* marius.mutu *!* import_extras_mt940 corectare *!* 09.03.2017 *!* repunere_venchelt_avans *!* corectare nume partener debit *!* 09.05.2018 *!* marius.mutu *!* Inchidere_salarii - import din Contafin *!* 25.09.2018 *!* marius.mutu *!* stornare_plinc - se da un id_fact distinct pentru notele de stornare incasare/plata 413 = 4111/401=403 astfel incat sa nu apara doua inregistrari 413/403 cu acelasi id_fact +/- care nu se pot inchide *!* 02.07.2019 *!* marius.mutu *!* repunere_venchelt_avans - cont 4754 SUBVENTII *!* 14.04.2020 *!* marius.mutu *!* repunere_venchelt_avans - ireg_parteneri join imob_nom_mf.acont *!* 27.01.2021 *!* repunere_venchelt_avans - am limitat selectia intre luna de inceput si luna de expirare a ratelor imobilizarii *!* punea rate la nesfarsit *!* 06.05.2021 *!* note_fara_predefinire *!* nu se reincarca nota salvata anterior pentru 90023 import extras bancar *!* 25.06.2025 *!* cheltprofit1_ana - completare taxcode pentru impozit venit/profit *!* 29.07.2025 *!* cheltprofit1_ana, cheltprofit2_ana - corectie taxcode pentru impozit venit/profit *!* 29.05.2026 *!* repunere_venchelt_avans *!* se foloseste cu prioritate explicatia4 si explicatia5 din imob_nom_mf *!* asa cum sunt initializate in ireg_parteneri > editare rate in avans ****************************************************************************************************** *** INCEPUT PROCEDURA SELECT_CONT Procedure SELECT_CONT Private pcselect, pcfiltru, pcschema, pcorder, poplcont, poplcontana, llAfisare Private lcCont && contul ales din planul de conturi o sa-l returnez de forma "411 .CLI1" SAU "411 " Store .F. To m.llAfisare Store "" To m.poplcont, m.poplcontana, m.lcCont If Used("plcont") Use In plcont Endif If Used("plcontana") Use In plcontana Endif pcschema = ['ID_PLCONT N(5),ACONT C(4),EXPLICATIE C(100),EXPLICATIES C(30),CONT C(4),TIP_SOLD C(1),AN N(4),TIP_CONT N(1),INACTIV N(1),NEFOLOSIT N(1)'] pcselect = ['select id_plcont,acont,explicatie,explicaties,cont,tip_sold,an,tip_cont,inactiv,nefolosit from ] + gcs + [.vplcont_sintetic where 2=2'] pcfiltru = [an=] + Alltrim(Str(gnAn)) + [ and SUBSTR(explicatie,1,3)!=' '] pcorder = [cont] gencursor("poplcont", "plcont", m.pcselect, m.pcfiltru, m.pcschema, m.pcorder, m.llAfisare) m.poplcont.ca_baza1.afisare() pcschema = ['ID_PLCONT N(5),ACONT C(4),EXPLICATIE C(100),EXPLICATIES C(30),CONT C(4),TIP_SOLD C(1),AN N(4),TIP_CONT N(1),INACTIV N(1),NEFOLOSIT N(1)'] pcselect = ['select id_plcont,acont,explicatie,explicaties,cont,tip_sold,an,tip_cont,inactiv,nefolosit from ] + gcs + [.vplcont_analitic where 1=2'] pcfiltru = [1=2] pcorder = [] gencursor("poplcontana", "plcontana", m.pcselect, m.pcfiltru, m.pcschema, m.pcorder, m.llAfisare) m.poplcontana.ca_baza1.afisare() Clear Class "frm_contnou" ofrmcontnou = Createobject("frm_contnou", 'lcCont') m.ofrmcontnou.Show(1) *!* Do Form frm_contnou With "lcCont" If Used("plcont") Use In plcont Endif If Used("plcontana") Use In plcontana Endif Release m.poplcont, m.poplcontana, m.ofrmcontnou Return m.lcCont Endproc *** SFARSIT PROCEDURA SELECT_CONT ******************************************************************************************************************** *** CREEAZA TBALANTA DIN BAL+BALANA+TOTALURI *!* PROCEDURE make_tbalanta *!* IF USED('TBALANTA') *!* USE IN tbalanta *!* ENDIF *!* LNPRECEDENT=0 *!* PRIVATE pcselect1,pcfiltru1,pcschema1,potbal1,tbal1,pcselect2,pcfiltru2,pcschema2,potbal2,tbal2 *!* STORE "" TO potbal1,potbal2 *!* pcselect1 = ["select rpad(SUBSTR(cont,1,1),4,' ') as g1, rpad(SUBSTR(cont,1,2),4,' ') as g2, rpad(SUBSTR(cont,1,3),4,' ') as g3,"+]+; *!* ["cont as g4, cont,rpad(' ',4,' ') acont, id_bal, denumire, precdeb, preccred, ruldeb, rulcred, "+]+; *!* ['totdeb, totcred, solddeb, soldcred, precdeb1, preccred1, 4 as bnivel, difana '+]+; *!* ['from ] + gcs + [.Vbal where 1=2'] *!* pcfiltru1 = [AN = ] +ALLTRIM(STR(gnAn)) + [ AND LUNA = ] + ALLTRIM(STR(gnluna)) *!* pcorder1 = [''] *!* pcschema1 = [''] *!* llAfisare = .F. *!* gencursor('potbal1','tbal1',pcselect1,pcfiltru1,pcschema1,pcorder1,llAfisare) *!* potbal1.ca_baza1.afisare() *!* pcselect2 = ['select rpad(SUBSTR(cont,1,1), 4, CHR(32)) as g1, rpad(SUBSTR(cont,1,2), 4, CHR(32)) as g2, rpad(SUBSTR(cont,1,3),4,CHR(32)) as g3,'+]+; *!* ['cont as g4, cont, acont, id_balana as id_bal, denumire, precdeb, preccred, ruldeb, rulcred, '+]+; *!* ['totdeb, totcred, solddeb, soldcred, precdeb1, preccred1, 5 as bnivel, 0 as difana '+]+; *!* ['from ] + gcs + [.Vbalana where 1=2'] *!* pcfiltru2 = [AN = ] +ALLTRIM(STR(gnAn)) + [ AND LUNA = ] + ALLTRIM(STR(gnluna)) *!* pcorder2 = [''] *!* pcschema2 = [''] *!* llAfisare = .F. *!* gencursor('potbal2','tbal2',pcselect2,pcfiltru2,pcschema2,pcorder2,llAfisare) *!* potbal2.ca_baza1.afisare() *!* SELE G1, SPACE(4) AS G2, SPACE(4) AS G3, SPACE(4) AS G4,; *!* SPACE(4) AS CONT, SPACE(4) AS ACONT, 0000000000000 AS id_bal, PADR("TOTAL "+ALLTRIM(G1),30," ") AS DENUMIRE, ; *!* SUM(precdeb) AS precdeb, SUM(preccred) AS preccred,; *!* SUM(ruldeb) AS ruldeb, SUM(rulcred) AS rulcred, SUM(totdeb) AS totdeb, SUM(totcred) AS totcred,; *!* SUM(solddeb) AS solddeb, SUM(soldcred)AS soldcred, ; *!* SUM(precdeb1) AS precdeb1, SUM(preccred1) AS preccred1,; *!* 1 AS bnivel, 0 AS difana; *!* FROM tbal1 ; *!* GROUP BY G1 ; *!* INTO CURSOR TG1 *!* SELE G1, G2, SPACE(4) AS G3, SPACE(4) AS G4, ; *!* SPACE(4) AS CONT, SPACE(4) AS ACONT, 0000000000000 AS id_bal, PADR("TOTAL "+ALLTRIM(G2),30," ")AS DENUMIRE, ; *!* SUM(precdeb) AS precdeb, SUM(preccred) AS preccred, ; *!* SUM(ruldeb) AS ruldeb, SUM(rulcred) AS rulcred, SUM(totdeb) AS totdeb, SUM(totcred) AS totcred,; *!* SUM(solddeb) AS solddeb, SUM(soldcred) AS soldcred, ; *!* SUM(precdeb1) AS precdeb1, SUM(preccred1) AS preccred1, ; *!* 2 AS bnivel, 0 AS difana; *!* FROM tbal1 ; *!* GROUP BY G1, G2 ; *!* INTO CURSOR TG2 *!* SELE G1, G2, G3, SPACE(4) AS G4,; *!* SPACE(4) AS CONT, SPACE(4) AS ACONT, 0000000000000 AS id_bal, PADR("TOTAL "+ALLTRIM(G3),30," ") AS DENUMIRE, ; *!* SUM(precdeb) AS precdeb, SUM(preccred) AS preccred,; *!* SUM(ruldeb) AS ruldeb, SUM(rulcred) AS rulcred, SUM(totdeb) AS totdeb, SUM(totcred) AS totcred,; *!* SUM(solddeb) AS solddeb, SUM(soldcred) AS soldcred, ; *!* SUM(precdeb1) AS precdeb1, SUM(preccred1) AS preccred1,; *!* 3 AS bnivel, 0 AS difana; *!* FROM tbal1 ; *!* GROUP BY G1, G2, G3 ; *!* INTO CURSOR TG3 *!* SELECT * FROM tbal1 ; *!* UNION ; *!* SELECT * FROM TG1 ; *!* UNION ; *!* SELECT * FROM TG2 ; *!* UNION ; *!* SELECT * FROM TG3 ; *!* UNION ; *!* SELECT * FROM tbal2 ; *!* INTO CURSOR tbalanta READWRITE; *!* ORDER BY 1,2,3,4 *!* USE IN tbal1 *!* USE IN tbal2 *!* USE IN TG1 *!* USE IN TG2 *!* USE IN TG3 *!* SELECT tbalanta *!* ALTER TABLE tbalanta ADD COLUMN bifa l *!* ALTER TABLE tbalanta ADD COLUMN g5 c(8) *!* REPLACE ALL g5 WITH LEFT(G1,1)+SUBSTR(G2,2,1)+SUBSTR(G3,3,1) *!* REPLACE ALL g5 WITH ALLT(g5)+IIF(bnivel<4,'z',SUBSTR(G4,4,1)) *!* REPLACE ALL g5 WITH LEFT(ALLTRIM(g5)+'xxxx',4)+ACONT *!* REPLACE ALL g5 WITH LEFT(ALLTRIM(g5)+'zzzzzzzz',8) *!* lcIndex = ADDBS(gcTempPath) + 'tbalanta.cdx' *!* INDEX ON g5 TAG g5 OF (lcIndex) *!* SET ORDER TO g5 *!* RETURN "TBALANTA" *!* ENDPROC && MAKE_TBALANTA *--------------------------------------------------------------------- Proc cheltprofit1_ana lnBut = lans(10506) If m.lnBut = 1 Select actactan Replace All nrACT With 10, explicatia With 'INCHID.IMPOZIT PE PROFIT', proc_tva With 0, id_set With 90001 UPDATE actactan SET taxcode = 103000 WHERE LEFT(scc,1) = '4' AND EMPTY(NVL(taxcode,0)) Locate lVerificAnalitic = .F. lCompletareParteneri = .T. Do Form verificare With m.lVerificAnalitic, m.lCompletareParteneri If gnButon = 1 Select actactan lnSucces = OSCRIE_IN_FISIERE(0) If m.lnSucces > 1 Do mesaj With 'Cheltuiala profit.', 'Inchiderea s-a efectuat.' Endif Endif If Used('actactan') Use In actactan Endif Endif Return &&cheltprofit1 *---------------------------------------- Proc cheltprofit2_ana lnBut = lans(10505) If m.lnBut = 1 Select actactan Replace All nrACT With 10, explicatia With 'INCHID.IMPOZIT PE VENIT', proc_tva With 0, id_set With 90002 UPDATE actactan SET taxcode = 121000 WHERE LEFT(scc,1) = '4' AND EMPTY(NVL(taxcode,0)) Locate lVerificAnalitic = .F. lCompletareParteneri = .T. Do Form verificare With m.lVerificAnalitic, m.lCompletareParteneri If gnButon = 1 Select actactan lnSucces = OSCRIE_IN_FISIERE(0) If m.lnSucces > 1 Do mesaj With 'Cheltuiala profit.', 'Inchiderea s-a efectuat.' Endif Endif Endif If Used('actactan') Use In actactan Endif Return &&cheltprofit2 *--------------------------------------------------------------------- Procedure plati_impozite Parameters tn_idset If !Used('actactan') Return Endif If Used('plimp') Use In plimp Endif lcSql = [select id_note, explicatie, scd, ascd, scc, ascc, in_valuta, cu_tva, id_set, ordine,] + ; [ptva, id_jtva_coloana, id_jtva_nepl, taxcode, paymentcode from note_contabile where id_set = ] + Alltrim(Str(m.tn_idset)) lcCursor = [cnote_contabile] lnSucces = goExecutor.oExecute(m.lcSql, m.lcCursor) If m.lnSucces < 0 amessagebox('Note contabile ' + Chr(13) + goExecutor.cEroare, 0 + 16, "Eroare") Return Endif *!* modificare v 2.5.32 : am pus a.id_factd, a.id_factc, a.pereched, a.perechec in loc de 000000000000000000 Select N.*, 00000000000000.0000 As suma, 00000000000000 As nrACT, a.id_responsabil, ; Iif(Alltrim(N.scd) = Alltrim(a.scd), a.id_partd, 000000000000000000) As id_partd, ; Iif(Alltrim(N.scc) = Alltrim(a.scc), a.id_partc, 000000000000000000) As id_partc, ; Iif(N.scd = a.scd, a.partd, Space(100)) As partd, ; Iif(N.scc = a.scc, a.partc, Space(100)) As partc, ; a.nresp, a.id_sectie, a.sectie, a.id_venchelt, a.dst_chlt, ; Cast(a.id_factd As N(18)) As id_factd, Cast(a.id_factc As N(18)) As id_factc, Cast(a.pereched As N(18)) As pereched, ; Cast(a.perechec As N(18)) As perechec, Padr(explicatie, 100, ' ') As explicatia ; From cnote_contabile N Left Join actactan a On N.id_set = a.id_set ; Where N.id_set = m.tn_idset ; Into Cursor plimp Readwrite Order By ordine *--------------------------- If Used("crsBal") Use In crsBal Endif If Used("crsBalana") Use In crsBalana Endif lcSql = "select cont,acont,explicaties as DENUMIRE from plcont where inactiv = 0 and an = ?gnAn " + ; " and cont in (select scd from note_contabile where id_set = " + Alltrim(Str(m.tn_idset)) + ; " union " + ; " select scc from note_contabile where id_set = " + Alltrim(Str(m.tn_idset)) + ")" lcCursorBal = "crsPlcont" lnSucces = goExecutor.oExecute(m.lcSql, m.lcCursorBal) If m.lnSucces < 0 amessagebox(goExecutor.cEroare, 0 + 16, "Eroare") Return Endif Select Distinct Cont, denumire From crsPlcont Where Empty(Nvl(ACONT, '')) Into Cursor crsBal Select Distinct Cont, ACONT, denumire From crsPlcont Where !Empty(Nvl(ACONT, '')) Into Cursor crsBalana Use In (Select('crsPlcont')) Select a.Id_note, a.scd, b.ACONT As ascd, a.scc, a.ascc, a.In_valuta, a.Cu_tva, ; a.id_set, a.ordine, a.Ptva, a.suma, a.nrACT, 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, a.id_factd, a.id_factc, ; a.pereched, a.perechec, Padr(Nvl(b.denumire, a.explicatia), 100, ' ') As explicatia, ; a.taxcode, a.paymentcode ; From plimp a Join crsBalana b On a.scd = b.Cont ; Into Cursor plimptmp1 Select a.Id_note, a.scd, a.ascd, a.scc, a.ascc, a.In_valuta, a.Cu_tva, ; a.id_set, a.ordine, a.Ptva, a.suma, a.nrACT, 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, a.id_factd, a.id_factc, ; a.pereched, a.perechec, Padr(Nvl(b.denumire, a.explicatia), 100, ' ') As explicatia, ; a.taxcode, a.paymentcode ; From plimp a Join crsBal b On a.scd = b.Cont ; Where a.scd Not In (Select scd From plimptmp1) ; Into Cursor plimptmp2 If Used("crsBal") Use In crsBal Endif If Used("crsBalana") Use In crsBalana Endif If Used("plimp") Use In plimp Endif Select * From plimptmp1 ; Union ; Select * From plimptmp2 ; Into Cursor plimp Readwrite If Used("plimptmp1") Use In plimptmp1 Endif If Used("plimptmp2") Use In plimptmp2 Endif *=========================================== Use In (SELECT('cnote_contabile')) Select actactan Locate Scatter Name m.poVar Zap Select plimp Replace All ascd With '' For Isnull(ascd) Replace All ascc With '' For Isnull(ascc) Replace All explicatia With Alltrim(explicatia) + Iif(!Empty(m.poVar.explicatia), ' ' + Alltrim(m.poVar.explicatia), '') Go Top SELECT plimp SCAN SCATTER NAME oplimp SELECT actactan APPEND BLANK GATHER NAME poVar GATHER NAME oplimp SELECT plimp ENDSCAN USE IN (SELECT('plimp')) 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 UPDATE tact SET id_sucursala = m.gnIdSucursala Use In (Select('crsExplicatiiTVATemp')) Select tact Go Top llNotaNoua = .T. llMaximize = .T. loForm = Createobject([frm_modific2007], m.tn_idset, m.llNotaNoua) loForm.lb_titlu_alb_b121.Caption = 'Plati impozite' 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 WHERE suma <> 0 Into Cursor actactan Readwrite Select actactan Replace All id_util With gnIdUtil, id_set With m.tn_idset lnSucces = OSCRIE_IN_FISIERE(0) Endif && gnButon = 1 *!* Clear Class "FRM_plati_impozite" *!* obj = Createobject('FRM_plati_impozite') *!* obj.oact = m.poVar *!* m.obj.Show() *!* If gnButon = 2 *!* Do deschid_actc *!* Return *!* Else *!* Select actactan *!* Do OSCRIE_IN_FISIERE.prg *!* Endif Endproc &&plati_impozite ******************************************* * PROCEDURE Inchidere_salarii( ) * Date : 08/07/2005, 08:58:55 * author : marius.mutu * description: ******************************************* Procedure Inchidere_salarii Local lcCursor, llVerificAnalitic, llCompletareParteneri Local lcAct, lcCSectie, lcDirContafin, lcFile, lcScc, lcScd, lcSql, llStergeNotaPrecedenta, llSucces Local lnCod, lnIdLucrare, lnIdSectie, lnIdVenchelt, lnId_Set, lnSucces lcCursor = [] If gnNotaSal = 0 && fara program de salarii lcCursor = ImportTable() Endif If gnNotaSal = 1 &¬a de inchidere simpla lcSql = [begin PACK_SALARII.calcul_nota('] + gcs + [',] + Alltrim(Str(gnAn)) + [,] + Alltrim(Str(gnluna)) + [,' '); end;]&&[select * from ] + gcS + [.calendar] lcCursor = [crsRezultate] lnSucces = goExecutor.oExecute(m.lcSql) If m.lnSucces < 0 amessagebox(goExecutor.cEroare, 0 + 16, "Eroare") Endif lcSql = [select * from ] + gcs + [.sal_vtmp_nota order by ordine ] lcCursor = [crsRezultate] lnSucces = goExecutor.oExecute(m.lcSql, m.lcCursor) If m.lnSucces < 0 amessagebox(goExecutor.cEroare, 0 + 16, "Eroare") Endif *!* Select crsRezultate *!* BROWSE Select nume_camp As explicatia, scd, scc, ascd, ascc, suma From crsRezultate Into Cursor crsNota Readwrite && Where suma <> 0 Use In crsRezultate lcCursor = [crsNota] Select &lcCursor Endif If gnNotaSal = 2 &¬a de inchidere pe sectii lcSql = [begin PACK_SALARII.calcul_nota_sectii('] + gcs + [',] + Alltrim(Str(gnAn)) + [,] + Alltrim(Str(gnluna)) + [); end;]&&[select * from ] + gcS + [.calendar] lcCursor = [crsRezultate] lnSucces = goExecutor.oExecute(m.lcSql) If m.lnSucces < 0 amessagebox(goExecutor.cEroare, 0 + 16, "Eroare") Endif lcSql = [select * from ] + gcs + [.sal_vtmp_nota_sect order by ordine ] lcCursor = [crsRezultate] lnSucces = goExecutor.oExecute(m.lcSql, m.lcCursor) If m.lnSucces < 0 amessagebox(goExecutor.cEroare, 0 + 16, "Eroare") Endif Select crsRezultate Select nume_camp As explicatia, scd, scc, ascd, ascc, suma, id_sectie From crsRezultate Where suma <> 0 Into Cursor crsNota Readwrite Use In crsRezultate lcCursor = [crsNota] Select &lcCursor Endif If gnNotaSal = 3 &¬a de inchidere pe analitice lcSql = [begin PACK_SALARII.calcul_nota_analit('] + gcs + [',] + Alltrim(Str(gnAn)) + [,] + Alltrim(Str(gnluna)) + [); end;]&&[select * from ] + gcS + [.calendar] lcCursor = [crsRezultate] lnSucces = goExecutor.oExecute(m.lcSql) If m.lnSucces < 0 amessagebox(goExecutor.cEroare, 0 + 16, "Eroare") Endif lcSql = [select * from ] + gcs + [.sal_vtmp_nota_sect order by scd ] lcCursor = [crsRezultate] lnSucces = goExecutor.oExecute(m.lcSql, m.lcCursor) If m.lnSucces < 0 amessagebox(goExecutor.cEroare, 0 + 16, "Eroare") Endif Select crsRezultate Replace All ascd With '' For Left(scd, 1) = '4' Select nume_camp As explicatia, scd, scc, ascd, ascc, suma From crsRezultate Where suma <> 0 Into Cursor crsNota Readwrite Use In crsRezultate lcCursor = [crsNota] Select &lcCursor Endif If gnNotaSal = 4 &¬a de inchidere pe centre de profit (model fruvimed) lcSql = [begin PACK_SALARII.calcul_nota_chelt('] + gcs + [',] + Alltrim(Str(gnAn)) + [,] + Alltrim(Str(gnluna)) + [); end;]&&[select * from ] + gcS + [.calendar] lcCursor = [crsRezultate] lnSucces = goExecutor.oExecute(m.lcSql) If m.lnSucces < 0 amessagebox(goExecutor.cEroare, 0 + 16, "Eroare") Endif lcSql = [select * from ] + gcs + [.sal_vtmp_nota_chelt order by ordine ] lcCursor = [crsRezultate] lnSucces = goExecutor.oExecute(m.lcSql, m.lcCursor) Select crsRezultate If m.lnSucces < 0 amessagebox(goExecutor.cEroare, 0 + 16, "Eroare") Endif Select crsRezultate Select nume_camp As explicatia, scd, scc, ascd, ascc, suma, id_sectie, ; id_venchelt, id_lucrare, sectie, nrord, dst_chlt, Nvl(id_partd, 0000000000) As id_partd, Nvl(id_partc, 0000000000) As id_partc From crsRezultate Where suma <> 0 Into Cursor crsNota Readwrite Use In crsRezultate lcCursor = [crsNota] Select &lcCursor Endif If gnNotaSal = 5 &¬a de inchidere pe sucursale (model conpress group) lcSql = [begin PACK_SALARII.calcul_nota_sucursale('] + gcs + [',] + Alltrim(Str(gnAn)) + [,] + Alltrim(Str(gnluna)) + [); end;]&&[select * from ] + gcS + [.calendar] lcCursor = [crsRezultate] lnSucces = goExecutor.oExecute(m.lcSql) If m.lnSucces < 0 amessagebox(goExecutor.cEroare, 0 + 16, "Eroare") Endif lcSql = [select * from ] + gcs + [.sal_vtmp_nota_sucursale order by ordine ] lcCursor = [crsRezultate] lnSucces = goExecutor.oExecute(m.lcSql, m.lcCursor) Select crsRezultate If m.lnSucces < 0 amessagebox(goExecutor.cEroare, 0 + 16, "Eroare") Endif Select crsRezultate Select nume_camp As explicatia, scd, scc, ascd, ascc, suma, id_sectie, id_sucursala, ; sectie, sucursala, Nvl(id_partd, 0000000000) As id_partd, Nvl(id_partc, 0000000000) As id_partc From crsRezultate Where suma <> 0 Into Cursor crsNota Readwrite Use In crsRezultate lcCursor = [crsNota] Select &lcCursor Endif If m.gnNotaSal = 7 && nota de inchidere import Contafin lcDirContafin = Getdir('', 'Directorul firmei Contafin', 'Directorul firmei Contafin', 64) 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) Use (m.lcAct) In 0 Shared Alias c_act_temp Select explicatia, scd, scc, ascd, ascc, sectie, nrord, dst_chlt, suma From c_act_temp Where id_set = 90008 Into Cursor cActTemp Use In (Select('c_act_temp')) If Reccount('cActTemp') = 0 amessagebox('Nu exista nici o nota cu tipul de operatie 90008 in Registrul jurnal din Contafin!', 0 + 48, _Screen.Caption) Else lcSql = [select * from sal_vtmp_nota_chelt where 1=2 order by ordine ] lcCursor = [crsRezultate] lnSucces = goExecutor.oExecute(m.lcSql, m.lcCursor) Select crsRezultate If m.lnSucces < 0 amessagebox(goExecutor.cEroare, 0 + 16, "Eroare") Endif Select crsRezultate Select nume_camp As explicatia, scd, scc, ascd, ascc, suma, id_sectie, ; id_venchelt, id_lucrare, sectie, nrord, dst_chlt, Nvl(id_partd, 0000000000) As id_partd, Nvl(id_partc, 0000000000) As id_partc From crsRezultate Where suma <> 0 Into Cursor crsNota Readwrite Use In crsRezultate lcCursor = [crsNota] Select &lcCursor Select crsNota Append From Dbf('cActTemp') Use In (Select('cActTemp')) Select crsNota Scan lnIdSectie = GetIdSectie(crsNota.sectie) lnIdLucrare = GetIdLucrare(crsNota.nrord) lnIdVenchelt = GetIdVenchelt(crsNota.dst_chlt) Select crsNota Replace id_sectie With m.lnIdSectie, id_lucrare With m.lnIdLucrare, id_venchelt With m.lnIdVenchelt Endscan Endif && RECCOUNT Else amessagebox('Nu exista fisierul ' + m.lcAct, 0 + 48, _Screen.Caption) Return Endif && FILE(m.lcAct) Endif && gnNotaSal = 7 If m.gnNotaSal = 8 && nota de inchidere import xlsx Smartbill sau Saga lcSql = [select * from sal_vtmp_nota_chelt where 1=2 order by ordine ] lcCursor = [crsRezultate] llSucces = goExecutor.oExecuta(m.lcSql, m.lcCursor) Select nume_camp As explicatia, scd, scc, ascd, ascc, suma, id_sectie, ; id_venchelt, id_lucrare, sectie, nrord, dst_chlt, Nvl(id_partd, 0000000000) As id_partd, Nvl(id_partc, 0000000000) As id_partc, ; CAST(null as N(6)) as taxcode, CAST(null as C(250)) as taxname, CAST(null as C(9)) as paymentcode, CAST(null as C(250)) as paymentname ; From crsRezultate ; Where suma <> 0 ; Into Cursor crsNota Readwrite lcCursor = [crsNota] Use In (SELECT('crsRezultate')) lcFile = GETFILE('xlsx','Fisier','Deschide',0, 'Fisierul note contabile SmartBill/Saga/ROA (xlsx)') If File(m.lcFile) CREATE CURSOR cXLSXTemp (c1 v(250), c2 v(250), c3 v(250), c4 v(250), c5 v(250), c6 v(250), c7 v(250), c8 v(250), c9 v(250), c10 v(250), c11 v(250), c12 v(250), c13 v(250), c14 v(250), c15 v(250) ) *!* llSucces = appendfromxlsx(m.lcFile, 'cXLSXTemp') llSucces = appendfromxlsx(m.lcFile, 'cXLSXTemp', '', 1, '' , .T.) IF m.llSucces AND USED('cXLSXTemp') SELECT cXLSXTemp GO TOP DO CASE CASE ALLTRIM(LOWER(c2)) = 'ndp' && SAGA SELECT c3 as explicatia, c4 as scd, c5 as scc, VAL(c6) as suma, c10 as csectie, CAST(0 as N(10)) as id_sectie, SPACE(100) as sectie FROM cXLSXTemp WHERE VAL(c6) <> 0 INTO CURSOR cActTemp READWRITE IF RECCOUNT('cActTemp') = 0 amessagebox('Nu exista valori in fisier pe coloana 6 (suma)!', 0 + 48, _Screen.Caption) ELSE SELECT distinct UPPER(csectie) as csectie FROM cActTemp WHERE !EMPTY(NVL(cActTemp.cSectie,'')) INTO CURSOR cSectiiTemp SELECT cSectiiTemp SCAN lcCSectie = ALLTRIM(csectie) loSectie = GetSectieByCsectie(m.lcCSectie) UPDATE cActTemp SET id_sectie = loSectie.id_sectie, sectie = loSectie.sectie WHERE ALLTRIM(csectie) == m.lcCSectie AND !EMPTY(NVL(loSectie.id_sectie, 0)) ENDSCAN USE IN (SELECT('cSectiiTemp')) * Completez scd, scc pentru notele cu x = % sau % = x SELECT cActTemp GO TOP lcScd = ALLTRIM(scd) lcScc = ALLTRIM(scc) SCAN IF EMPTY(NVL(scd, '')) REPLACE scd WITH m.lcScd ELSE lcScd = ALLTRIM(scd) ENDIF IF EMPTY(NVL(scc, '')) REPLACE scc WITH m.lcScc ELSE lcScc = ALLTRIM(scc) ENDIF ENDSCAN DELETE FROM cActTemp WHERE ALLTRIM(scd) = '%' OR ALLTRIM(scc) = '%' ENDIF CASE ALLTRIM(LOWER(c2)) = 'roa' && ROA - asemanator cu Saga + ascd, ascc, lucrare, sectie, dst_chlt * DATA NDP EXPLICATIE CONT_D ACONT_D CONT_C ACONT_C SUMA COD_VALUTA CURS SUMA_VAL CATEGORIE SECTIE LUCRARE DST_CHLT SELECT c3 as explicatia, c4 as scd, c5 as ascd, c6 as scc, c7 as ascc, VAL(c8) as suma, ; c12 as csectie, c13 as sectie, CAST(0 as N(10)) as id_sectie, c14 as nrord, CAST(0 as N(10)) as id_lucrare, ; c15 as dst_chlt, CAST(0 as N(10)) as id_venchelt ; FROM cXLSXTemp ; WHERE VAL(c8) <> 0 ; INTO CURSOR cActTemp READWRITE IF RECCOUNT('cActTemp') = 0 amessagebox('Nu exista valori in fisier pe coloana 8 (suma)!', 0 + 48, _Screen.Caption) ELSE SELECT distinct UPPER(csectie) as csectie FROM cActTemp WHERE !EMPTY(NVL(cActTemp.cSectie,'')) INTO CURSOR cSectiiTemp SELECT cSectiiTemp SCAN lcCSectie = ALLTRIM(csectie) loSectie = GetSectieByCsectie(m.lcCSectie) UPDATE cActTemp SET id_sectie = loSectie.id_sectie, sectie = loSectie.sectie WHERE ALLTRIM(csectie) == m.lcCSectie AND !EMPTY(NVL(loSectie.id_sectie, 0)) ENDSCAN USE IN (SELECT('cSectiiTemp')) ENDIF OTHERWISE && SMARTBILL SELECT c3 as explicatia, c7 as scd, c8 as scc, VAL(c9) as suma, SPACE(10) as csectie, CAST(0 as N(10)) as id_sectie, SPACE(100) as sectie FROM cXLSXTemp WHERE VAL(c9) <> 0 AND !EMPTY(NVL(c7,'')) and !EMPTY(NVL(c8,'')) INTO CURSOR cActTemp READWRITE IF RECCOUNT('cActTemp') = 0 amessagebox('Nu exista valori in fisier pe coloanele G (scd), H (scc) si I (suma) !', 0 + 48, _Screen.Caption) ENDIF ENDCASE ENDIF USE IN (SELECT('cXLSXTemp')) Endif && File(m.lcFile) * Note goale If !USED('cActTemp') OR Reccount('cActTemp') = 0 lcSql = [select nume_camp as explicatia, scd, ascd, scc, ascc from sal_nota_campuri t where ] + ALLTRIM(STR(m.gnAn*12+m.gnLuna)) + [ between nvl(lunaaninc, 1900*12+1) and nvl(lunaansf, 2099*12+12) order by ordine] llSucces = goExecutor.oExecuta(m.lcSql, 'cActTemp') ENDIF Select crsNota Append From Dbf('cActTemp') Use In (Select('cActTemp')) UPDATE crsNota SET id_sectie = GetIdSectie(crsNota.sectie) WHERE !EMPTY(NVL(crsNota.sectie,'')) AND EMPTY(NVL(crsNota.id_sectie,0)) UPDATE crsNota SET id_lucrare = GetIdLucrare(crsNota.nrord) WHERE !EMPTY(NVL(crsNota.nrord,'')) AND EMPTY(NVL(crsNota.id_lucrare,0)) UPDATE crsNota SET id_venchelt = GetIdVenchelt(crsNota.dst_chlt) WHERE !EMPTY(NVL(crsNota.dst_chlt,'')) AND EMPTY(NVL(crsNota.id_venchelt,0)) IF m.gl406 UPDATE crsNota SET taxcode = 412000, taxname = 'Contributia individuala de asigurari sociale retinuta de la asigurati' WHERE scc = '4315' UPDATE crsNota SET taxcode = 432000, taxname = 'Contributia pentru asigurari de sanatate retinuta de la asigurati' WHERE scc = '4316' UPDATE crsNota SET taxcode = 480000, taxname = 'Contributie asiguratorie pentru munca' WHERE scc = '436' UPDATE crsNota SET taxcode = 602000, taxname = 'Impozit pe veniturile din salarii si asimilate salariilor' WHERE scc = '444' ENDIF Endif && gnNotaSal = 8 If !Used(m.lcCursor) Or Empty(m.lcCursor) Return Endif llStergeNotaPrecedenta = .T. lnId_Set = 90008 lnCod = 0 llVerificAnalitic = .T. llCompletareParteneri = .T. If m.llStergeNotaPrecedenta lnSucces = sterge_nota(m.lnCod, m.lnId_Set) Endif If m.lnSucces > 0 Select (m.lcCursor) lnSucces = scrie_nota_import(m.lnId_Set, m.llVerificAnalitic, m.llCompletareParteneri, m.lcCursor) Endif If Used(m.lcCursor) Use In (m.lcCursor) Endif Endproc *----------------------------------sfarsit procedura Inchidere_salarii ---------------------------------- Procedure viz_plcont Private poHelp Store '' To m.poHelp Local lcSchema1, lcSelect1, lcOrder1, lcFiltru1, lcFiltruOriginal, llAfiseaza, lnAn, lcSelectAnMax lcSchema1 = [] ******* modificare v 2.0.92 lcSelectAnMax = [select max(help_an) as help_an from syn_helpcont] goExecutor.oExecute(m.lcSelectAnMax, 'cHelpContAn') lnAn = cHelpContAn.help_an lcSelect1 = [select * from syn_helpcont] lcOrder1 = [cont] lcGroup = [] lcFiltru1 = [] *!* lcFiltruOriginal = [help_an=]+Alltrim(Str(gnAn)) ******* modificare v 2.0.92 ^ lcFiltruOriginal = [help_an=] + Alltrim(Str(m.lnAn)) llModParam = .T. llAfiseaza = .F. gencursor('poHelp', 'cHelpCont', m.lcSelect1, m.lcFiltru1, m.lcSchema1, m.lcOrder1, m.llAfiseaza, m.lcGroup, m.llModParam, m.lcFiltruOriginal) m.poHelp.ca_baza1.afisare() Select cHelpCont *lcIndex1 = ADDBS(gcTempPath) + 'helpcont_'+ALLTRIM(SYS(2))+'.cdx' lcIndex1 = Addbs(gcTempPath) + 'helpcont.cdx' Index On Cont Tag Cont Of (m.lcIndex1) Set Order To Cont lcIndex2 = Addbs(gcTempPath) + 'helpcont.cdx' Index On nrnod Tag nrnod Of (m.lcIndex2) Set Order To nrnod Select * From cHelpCont Into Cursor test_helpcont Select cHelpCont ohelpcont = Createobj('help_pltree') m.ohelpcont.Show(1) Endproc ************************************ ** Lansare import extras cont MT940 ************************************ Procedure lans_import_extras LPARAMETERS tcClassType, tcFileExt, tcFileType, tcContBanca * tcClassType: RAIFFEISEN / CREDITEUROPE * tcFileExt: TXT / XML * tcFileType: MT940 (optional) * tcContBanca: 5121/5124/5125 (optional) Local lcHashParam, lnIdSet, loAct lcHashParam = '' lcHashParam = IIF(!EMPTY(m.tcClassType), [cClassType=>] + m.tcClassType + [??], []) lcHashParam = m.lcHashParam + IIF(!EMPTY(m.tcFileExt), [cFileExt=>] + m.tcFileExt + [??], []) lcHashParam = m.lcHashParam + IIF(!EMPTY(m.tcFileType), [cFileType=>] + m.tcFileType + [??], []) lcHashParam = m.lcHashParam + IIF(!EMPTY(m.tcContBanca), [cContBanca=>] + m.tcContBanca, []) lnIdSet = 90023 loAct = Null Do note_fara_predefinire With m.lnIdSet, , m.loAct, m.lcHashParam In ocont2003.prg Endproc && ************************************ ** Import extras bancar in tAct (note fara predefinire) ************************************ Procedure import_extras Lparameters tcAct, tcHashParam * extras cont Local loImport As "ImportNote" Local lcClass, lcClassType, lcCont, lcContBanca, lcFile, lcFileExt, lcFileType, lcHashParam, lcParam Local ldDataIreg, llSucces, loHash lcHashParam = Iif(!Empty(m.tcHashParam), m.tcHashParam, '') loHash = GetHash(m.lcHashParam) lcClass = "ExtrasBanca" lcFile = m.loHash.GetValue('cFile') && fisierul de import (optional) lcClassType = m.loHash.GetValue('cClassType') && RAIFFEISEN lcFileExt = m.loHash.GetValue('cFileExt') lcFileType = m.loHash.GetValue('cFileType') lcContBanca = m.loHash.GetValue('cContBanca') lcParam = Iif(!Empty(m.lcContBanca), "cContBanca=>" + m.lcContBanca, "") loImport = Createobject("ImportNote", m.lcFile, m.lcClass, m.lcClassType, m.lcFileType, m.lcFileExt, m.lcParam) && oproceduri_import.prg llSucces = m.loImport.Import() IF m.llSucces ldDataIreg = Gomonth(Date(m.gnAn, m.gnluna, 1), 1) - 1 * cursor cActTemp (denumire, iban, nr, data, suma, explicatie, scd, scc, id_partd, id_partc, partd, partc, id_fdoc, fdoc) If Used('cActTemp') * sterg partenerii si documentele pereche de pe conturile care nu au parteneri, documente llSucces = goExecutor.oExecuta('SELECT distinct cont, cu_inregistrari FROM vconfig_cont_ireg order by cont', 'cConturiPartTemp') IF m.llSucces SELECT a.cont, IIF(!ISNULL(b.cont), 1, 0) as epart, NVL(b.cu_inregistrari, 0) as cu_inregistrari ; FROM (SELECT scd as cont FROM cActTemp ; UNION ; SELECT scc as cont FROM cActTemp) a left join cConturiPartTemp b on a.cont = b.cont ; INTO CURSOR cConturiTemp SELECT cConturiTemp SCAN FOR epart = 0 lcCont = ALLTRIM(cont) IF epart = 0 UPDATE cActTemp SET id_partd = 0, partd = '', id_factd = 0, pereched = 0 WHERE ALLTRIM(scd) = m.lcCont UPDATE cActTemp SET id_partc = 0, partc = '', id_factc = 0, perechec = 0 WHERE ALLTRIM(scc) = m.lcCont ELSE IF cu_inregistrari = 0 UPDATE cActTemp SET id_factd = 0, pereched = 0 WHERE ALLTRIM(scd) = m.lcCont UPDATE cActTemp SET id_factc = 0, perechec = 0 WHERE ALLTRIM(scc) = m.lcCont ENDIF ENDIF ENDSCAN USE IN (SELECT('cConturiTemp')) USE IN (SELECT('cConturiPartTemp')) ENDIF && llSucces Select nr As nrACT, Data As dataact, Iif(Year(Data) * 12 + Month(Data) = m.gnAn * 12 + m.gnluna, Data, m.ldDataIreg) As dataireg, suma, ; Cast(Upper(Alltrim(explicatie) + Iif(!Empty(Nvl(denumire, '')), ' ' + Alltrim(denumire), '') + ; Iif(!Empty(Nvl(cod_fiscal, '')), ' ' + Alltrim(cod_fiscal), '')) As C(100)) As explicatia, ; scd, scc, ascd, ascc, id_partd, id_partc, partd, partc, ; id_factd, id_factc, pereched, perechec, ; id_fdoc, fdoc, ; Cast(gnIdSucursala As N(5) Null) As id_sucursala ; From cActTemp ; Into Cursor cActTemp2 If _Tally > 0 Select (m.tcAct) Delete All Append From Dbf('cActTemp2') Else amessagebox('Nu s-a importat nici o inregistrare!', 0 + 64, _Screen.Caption) Endif Use In (Select('cActTemp2')) Select (m.tcAct) Go Top ENDIF && used ENDIF && llSucces Release m.loImport RETURN m.llSucces Endproc && import_extras Procedure note_fara_predefinire Lparameters tnIdSet, toSet, toAct, tcHashParam *** tnIdSet = 99999, 99998 (note fara predefinire * = nu se fac verificari de conturi, analitice, parteneri, documente pereche) *** tnIdSet <> 99999, 99998 - note definite de utilizator *** toSet (default .F./NULL): Obiect cand este modul de editare nota definita de utilizator din frm_config_tabele.scx *** toAct (default .F./NULL): este completat cu date din formularul de introducere date lans() pentru notele definite de utilizator si apelate din meniul de introducere *** tcHashParam (optional): se transmite la import_extras *** drepturi pe butonul de stergere Local loBackupXML As "backupxml" Local lcCursor, lcSql, lcTitlu, lcXMLFile, lcXMLFileName, llEditare, llImportExtras, llMaximize Local llNotaFaraPredefinire, llNotaNoua, llRestoredBackupSet, llSucces, llVizualizare, lnIdSet Local lnSucces, loForm, llRul llRestoredBackupSet = .F. llVizualizare = .F. llRul = .T. && se salveaza si rulajele llNotaFaraPredefinire = Inlist(m.tnIdSet, 99999, 99998, 90023) && 99999 NOTE FARA PREDEFINIRE, 99998 NOTE FARA PREDEFINIRE*, 90023 IMPORT EXTRAS MT940 llImportExtras = (m.tnIdSet = 90023) *:Global gcAcces gcAcces = [4;] + gcAcces *** drepturi pe butonul de stergere ^ lcXMLFile = "" lnSucces = 0 lnIdSet = Iif(Empty(m.tnIdSet), 99999, m.tnIdSet) llMaximize = .T. llNotaNoua = .T. llEditare = (Type('toSet.lEditare') = 'L' and toSet.lEditare) && din meniul Initializare > Configurare note > Note definite de utilizator - nu exista actactan din lans() sau modificare registru jurnal lcTitlu = "Nota fara predefinire" *** nu se pot face introduceri in luna inchisa sau in firma mama If m.glLunaInchisa Or m.glEMama Return Endif *** REINCARCARE NOTA FARA PREDEFINIRE SALVATA ANTERIOR IN FORMAT XML SI NETERMINATA (FATAL ERROR) If !m.llEditare IF !m.llImportExtras * Nu incarc nota daca import extras lcXMLFileName = 'nota_' + Alltrim(Str(m.tnIdSet)) && Iif(m.tnIdSet = 99998, 'notafarapredefinire2', Iif(m.tnIdSet = 99999, 'notafarapredefinire', 'nota')) lcXMLFile = ExistsXML(m.lcXMLFileName) loBackupXML = Createobject("backupxml", m.lcXMLFileName) && oproceduri_comune.prg If m.loBackupXML.ExistsBackupSet() And amessagebox('Exista o nota nefinalizata.' + Chr(13) + Chr(10) + 'Doriti sa o reincarcati?', 4 + 32, _Screen.Caption) = 6 llRestoredBackupSet = m.loBackupXML.RestoreBackupSet() ENDIF ENDIF && llImportExtras Endif && llEditare update_jtva_coloane("", "crsJtvaTemp", 1) If !m.llRestoredBackupSet * 1. toSet = 'O' modificare set definit de utilizator * 2. m.llNotaFaraPredefinire = .T. nota fara predefinire * 3. nota definita de utilizator, lans() creaza actactan (posibil din vact, fara coloanele sters, validat) If m.llEditare Or m.llNotaFaraPredefinire OR !EMPTY(NVL(m.tnIdSet,0)) llSucces = .T. IF m.llEditare Or m.llNotaFaraPredefinire llSucces = goExecutor.oExecuta([select * from vact_tot where 1=2], [v_act]) If m.llSucces Select * From v_act Into Cursor actactan Readwrite Use In (Select('v_act')) ENDIF ENDIF IF m.llSucces * Creez cursoare trul, trul_obinv lcSql = [select * from vrul_tot where 1=2] lcCursor = [v_rul] llSucces = goExecutor.oExecuta(lcSql,lcCursor) If m.llSucces Select *, ; valoare + valtva As valoarectva, ; valoarev + valtvav As valoarevctva ; From v_rul ; Into Cursor trul READWRITE Use In (SELECT('v_rul')) lcSql = [select * from vrul_obinv_tot where 1=2] lcCursor = [v_rul_obinv] llSucces = goExecutor.oExecuta(lcSql,lcCursor) Endif If m.llSucces Select *, ; valoare + valtva As valoarectva, ; valoarev + valtvav As valoarevctva ; From v_rul_obinv ; Into Cursor trul_obinv READWRITE Use In (SELECT('v_rul_obinv')) Endif ENDIF && llSucces IF !m.llSucces USE IN (SELECT('tact')) USE IN (SELECT('trul')) USE IN (SELECT('trul_obinv')) Use In (Select('crsJtvaTemp')) RETURN ENDIF ENDIF && toSet If Type('actactan.sters') = 'U' Select a.*, 0 As sters, Cast(0 As N(5)) As id_utils, {//:} As dataoras From actactan a Into Cursor actactanTemp Readwrite Use In (Select('actactan')) Select * From actactanTemp Into Cursor actactan Readwrite Use In (Select('actactanTemp')) Endif If Type('actactan.validat') = 'U' Select a.*, 0 As Validat, Cast(0 As N(5)) As id_utilv, {//:} As dataorav From actactan a Into Cursor actactanTemp Readwrite Use In (Select('actactan')) Select * From actactanTemp Into Cursor actactan Readwrite Use In (Select('actactanTemp')) Endif If Type('actactan.explicatie_tva') = 'U' Select a.*, jtva.denumire As explicatie_tva ; From actactan a Left Join crsJtvaTemp jtva On a.id_jtva_coloana = jtva.id_jtva_coloana ; Into Cursor actactanTemp Readwrite Use In (Select('actactan')) Select * From actactanTemp Into Cursor actactan Readwrite Use In (Select('actactanTemp')) Endif Select .F. As ales, Iif(Empty(Nvl(a.id_jtva_coloana, 0)), 0, 1) As Cu_tva, Cast(0 As N(2)) As tipnota, a.* ; From actactan a ; Into Cursor tact Readwrite *!* modificare v 2.5.40 lcSql = "SELECT nume_set FROM xsets WHERE id_set = " + Alltrim(Str(m.lnIdSet)) lnSucces = goExecutor.oSelect2Value(m.lcSql, @m.lcTitlu) If m.lnSucces < 0 amessagebox(goExecutor.cEroare, 0 + 16, "Eroare") Endif If !Used('saft_taxtable') update_saft_taxtable() ENDIF *!* If !m.llNotaFaraPredefinire && And Type('toSet') = 'O' If m.llEditare && modificare note * Nu sunt linii in actactan/tAct din modificare Registru Jurnal * le adaug din xnote pentru editare Text To m.lcSql Textmerge Noshow SELECT decode(NVL(a.id_jtva_coloana, 0), 0, 0, 1) As Cu_tva, Cast(0 As Number(2)) As tipnota, cast(0 as number(20)) as id_act, cast(0 as number(2)) as luna, cast(0 as number(4)) as an, cast(0 as number(20)) as cod, a.dataireg, a.serie_act, a.nract, a.dataact, a.explicatia, a.xscd as scd, a.xascd as ascd, a.xscc as scc, a.xascc as ascc, a.suma, a.pereched, a.perechec, a.suma_val, a.id_valuta, v.nume_val, a.curs, a.datascad, 0 AS neimpozab, a.nnir, cast(0 as number(5)) as id_util, '' AS util, sysdate as dataora, cast(0 as number(5)) as id_utils, '' AS utils, sysdate as dataoras, a.id_responsabil, resp.denumire AS nresp, a.id_venchelt, venchelt.explicatie AS dst_chlt, a.id_lucrare, lucr.nrord, a.id_ctr, (case when ctr.numar is not null then ctr.numar || '/' else '' end) || TO_CHAR(ctr.data,'DD.MM.YYYY') as contract, a.id_sectie, sectii.sectie, a.proc_tva, a.id_set, NVL(a.id_fact, 0) as id_fact, a.id_partd, part1.denumire AS partd, a.id_partc, part.denumire AS partc, cast(0 as number(5)) as id_sucursala, '' as sucursala, a.id_fdoc, fdoc.fel_document AS fdoc, a.explicatia4, a.explicatia5, cast(0 as number(5)) as id_gestin, '' AS gestin, cast(0 as number(5)) as id_gestout, '' AS gestout, NVL(a.id_factd, 0) as id_factd, NVL(a.id_factc, 0) as id_factc, a.id_jtva_coloana, jtva.denumire as explicatie_tva, cast(0 AS NUMBER(1)) AS validat, cast(0 as number(5)) as id_utilv, '' as utilv, SYSDATE AS dataorav, NVL(doc.tva_incasare,0) as tva_incasare, a.taxcode, a.paymentcode from xnote a LEFT JOIN nom_fdoc fdoc ON a.id_fdoc = fdoc.id_fdoc LEFT JOIN nom_parteneri part ON a.id_partc = part.id_part LEFT JOIN nom_parteneri part1 ON a.id_partd = part1.id_part LEFT JOIN vnom_venchel venchelt ON a.id_venchelt = venchelt.id_venchelt LEFT JOIN nom_parteneri resp ON a.id_responsabil = resp.id_part LEFT JOIN nom_sectii sectii ON a.id_sectie = sectii.id_sectie LEFT JOIN vnom_lucrari lucr ON a.id_lucrare = lucr.id_lucrare LEFT JOIN nom_valute v ON a.id_valuta = v.id_valuta LEFT JOIN contracte ctr ON ctr.id_ctr = a.id_ctr LEFT JOIN jtva_coloane jtva ON a.id_jtva_coloana = jtva.id_jtva_coloana LEFT JOIN documente doc on a.id_fact = doc.id_doc where a.id_set = <> order by a.nr_nota Endtext llSucces = goExecutor.oExecuta(m.lcSql, 'tactTemp') If !m.llSucces Return Else Select tact Append From Dbf('tactTemp') Use In (Select('tactTemp')) Endif Endif ENDIF && !m.llRestoredBackupSet *!* modificare v 2.5.41 If !m.llEditare Update tact Set id_sucursala = Nvl(gnIdSucursala, 0) Update trul Set id_sucursala = Nvl(gnIdSucursala, 0) Update trul_obinv Set id_sucursala = Nvl(gnIdSucursala, 0) Endif *!* modificare v 2.5.41 ^ *** REINCARCARE NOTA FARA PREDEFINIRE SALVATA ANTERIOR IN FORMAT XML SI NETERMINATA (FATAL ERROR) ^ lcTitlu = Alltrim(m.lcTitlu) lcTitlu = Iif(m.llEditare, "EDITARE ", "") + m.lcTitlu + " " + Alltrim(Str(m.lnIdSet)) If Reccount('tact') = 0 Select tact Append Blank Replace dataireg With GetDataIreg() && oproceduri_comune.prg Replace dataact With dataireg, datascad With Gomonth(dataact, 1) *!* 20.10.2011 Replace id_sucursala With Nvl(gnIdSucursala, 0) *!* 20.10.2011 ^ Endif Select tact Go Top *!* lansez procedura de import MT940 llSucces = .T. If m.llImportExtras llSucces = import_extras('tAct', m.tcHashParam) Endif IF m.llSucces loForm = Createobject([frm_modific2024], m.lnIdSet, m.llNotaNoua, m.loBackupXML, m.toSet, m.llVizualizare) *DO FORM frm_modific_2007 NAME loForm LINKED WITH m.lnIdSet, m.llNotaNoua, m.loBackupXML, m.toSet, m.llVizualizare NOSHOW loForm.lb_titlu_alb_b121.Caption = m.lcTitlu Select tact loForm.Show(1, m.llMaximize) *** SALVEZ NOTELE FARA PREDEFINIRE INAINTE DE SCRIEREA IN BAZA DE DATE If m.llNotaFaraPredefinire And Type('loBackupXML') = 'O' And Used('tact') m.loBackupXML.SaveBackupSet("tact") m.loBackupXML.SaveBackupSet("trul") m.loBackupXML.SaveBackupSet("trul_obinv") ENDIF If buton = 1 Use In (Select('actactan')) Replace id_jtva_coloana With Null, proc_tva With 0 For cu_tva = 0 In tact Select * From tact Into Cursor actactan Readwrite Select * From trul Into Cursor rul_temp Readwrite Select * From trul_obinv Into Cursor rul_temp_obinv Readwrite Replace All id_util With gnIdUtil, sters With 0 In actactan Replace All id_util With gnIdUtil, sters With 0 In rul_temp Replace All id_util With gnIdUtil, sters With 0 In rul_temp_obinv lnSucces = oscrie_in_fisiere(0, .F., m.llRul) llSucces = (m.lnSucces > 0) If m.llSucces *** STERG NOTELE FARA PREDEFINIRE SALVATE DACA OPERATIA S-A INCHEIAT CU SUCCES If m.llNotaFaraPredefinire And Type('loBackupXML') = 'O' m.loBackupXML.DeleteBackupSet() Endif Endif ENDIF && buton ENDIF && llSucces Use In (Select('actactan')) Use In (Select('tact')) Use In (Select('trul')) Use In (Select('trul_obinv')) Use In (Select('rul_temp')) Use In (Select('crsJtvaTemp')) Endproc && note_fara_predefinire *----------------------------------------------------------- Procedure inchidere_DIURNE Local lcCursorInchidere, lcSql, lcCursor, lnSucces lcCursorInchidere = "" Private pnIdSet *!* llStergeNotaPrecedenta = .T. *!* lnIdSet = 90008 *!* lnCod = 0 *!* llVerificAnalitic = .T. *!* llCompletareParteneri = .T. pnIdSet = 90020 *!* pnIdSet = 90008 lcSql = [select * from ] + gcs + [.vact where id_set = ?pnIdSet and an = ?gnAn and luna = ?gnLuna] + ; gcCondSucursala lcCursor = [actactan] lnSucces = goExecutor.oExecute(m.lcSql, m.lcCursor) goExecutor.oReset() If m.lnSucces < 0 amessagebox('Cautare Nota Inchidere Diurne:' + Chr(13) + goExecutor.cEroare, 0 + 16, "Eroare") Return Endif Select actactan If Reccount() > 0 Clear Class "verificare" overif = Createobject('verificare') m.overif.Show(1) If buton = 2 If Used('actactan') Use In actactan Endif Release m.overif Return Else Do OSCRIE_IN_FISIERE.prg With 2, .F. Endif Endif lnBut = lans(m.pnIdSet) If m.lnBut = 1 pnSectie = 0 *!* lcCursorInchidere = GET_CURSOR_INCHIDERE_AMORTIZARI(pnTip, pnSectie, gnAn, gnluna, "crs_inchidere") && oproceduri_comune_imob.prg lcSql = [select * from sal_vdiurne_sume ] lcCursorInchidere = [crs_inchidere] lnSucces = goExecutor.oExecute(m.lcSql, m.lcCursorInchidere) If m.lnSucces < 0 amessagebox(goExecutor.cEroare, 0 + 16, "Eroare") Endif If !Used(m.lcCursorInchidere) lnBut = 2 && RENUNT Endif Endif If m.lnBut = 1 Select actactan Scatter Name m.oact Zap Select crs_inchidere *!* 09.05.2007 *!* marius.mutu Insert Into actactan (scd, ascd, scc, suma, explicatia, id_sectie, sectie, id_partc, partc, id_sucursala, sucursala) ; Select scd, ascd, scc, suma - acordat, explicatia, id_sectie, sectie, id_partc, partc, id_sucursala, sucursala From crs_inchidere Where suma <> 0 Select actactan Scan Gather Name m.oact Fields Except scd, ascd, scc, ascc, suma, id_sectie, sectie, id_partc, partc, id_sucursala, sucursala Endscan *!* 09.05.2007 ^ Select actactan Locate lVerificAnalitic = .T. lCompletareParteneri = .T. Do Form verificare With m.lVerificAnalitic, m.lCompletareParteneri If gnButon = 1 Select actactan lnSucces = OSCRIE_IN_FISIERE(0) Endif Endif If Used('crs_inchidere') Use In crs_inchidere Endif If Used('actactan') Use In actactan Endif Endproc && inchidere_amortizari *_________________________________ ************************************************** *** verifica analitice si parteneri din cursorul din act_temp *** se foloseste pentru scrieri direct pe server (vezi inchidere_tva) ************************************************** Procedure verificare_completare_act(tcCursorVerificare, tlVerificAnalitic, tlAlegPartener, tcSirDifAcont, tcSirDifPart) Local lcCursorFinal, llSucces, lcSelect, llExit *:Global gnButon tcSirDifAcont = "" tcSirDifPart = "" gnButon = 1 llSucces = .F. lcCursorFinal = [actactan] lcSelect = Select() Select a.*, a.suma As totftva, a.suma As tottva, Ttod(a.dataactt) As dataact, ; Ttod(a.datairegt) As dataireg, Ttod(a.datascadt) As datascad, ; 0 As pozitie_1, 0 As pozitie_2 ; From (m.tcCursorVerificare) a ; Into Cursor (m.lcCursorFinal) Readwrite Select (m.lcCursorFinal) Do Form verificare With m.tlVerificAnalitic, m.tlAlegPartener If m.gnButon = 1 llExit = .F. Select (m.lcCursorFinal) Scan For (m.tlVerificAnalitic And (Nvl(ascd, '') <> Nvl(ascd1, '') Or Nvl(ascc, '') <> Nvl(ascc1, ''))) Or ; (m.tlAlegPartener And (Nvl(id_partd, 0) <> Nvl(id_partd1, 0) Or Nvl(id_partc, 0) <> Nvl(id_partc1, 0))) If m.tlVerificAnalitic And (Nvl(ascd, '') <> Nvl(ascd1, '') Or Nvl(ascc, '') <> Nvl(ascc1, '')) tcSirDifAcont = m.tcSirDifAcont + Alltrim(Str(id_act)) + [|] + Alltrim(Nvl(ascd, '')) + [|] + Alltrim(Nvl(ascc, '')) + [;] Endif If m.tlAlegPartener And (Nvl(id_partd, 0) <> Nvl(id_partd1, 0) Or Nvl(id_partc, 0) <> Nvl(id_partc1, 0)) If (Like([41*], scd) And Nvl(id_partd, 0) <> Nvl(id_partd1, 0)) ; Or (Like([41*], scc) And Nvl(id_partc, 0) <> Nvl(id_partc1, 0)) amessagebox("Nu puteti modifica clientul!", 48, "Atentie") llExit = .T. Exit Else tcSirDifPart = m.tcSirDifPart + Alltrim(Str(id_act)) + [|] + Alltrim(Str(Nvl(id_partd, 0))) + [|] + Alltrim(Str(Nvl(id_partc, 0))) + [;] Endif Endif && nvl Endscan llSucces = !m.llExit Endif && gnButon = 1 Use In (Select(m.lcCursorFinal)) Select(m.lcSelect) Return m.llSucces Endproc *********************** Procedure repunere_venchelt_avans Lparameters tcCont *** tcCont: 471;472 Local loForm As [frm_modific2007] Local lcSql, lcCrsCheltuieli, lcSel, llNotaNoua, llSucces, lnButon, lnIdSet, lnSucces Private pcCond, pdDataF, pdDataI, pnFiscala, loAct, pnIdTipImobilizare, pcCont, pnIdSet pcCont = Iif(Empty(m.tcCont), '471', m.tcCont) pnIdTipImobilizare = Iif(m.pcCont = '471', 4, Iif(m.pcCont = '472', 5, 6)) && 4 = cheltuieli in avans / 5 = venituri in avans / 6 = subventii 4754 pnIdSet = Iif(m.pcCont = '471', 10611, 10612) Use In (Select('actactan')) *** STERGERE NOTA ANTERIOARA lcSql = [select * from vact where id_set = ?pnIdSet and an = ?gnAn and luna = ?gnLuna ] + m.gcCondSucursala If m.pnIdSet = 10612 && 10612 este comun la 472 = 7xx si 475x = 7xx lcSql = [select * from vact where id_set = ?pnIdSet and an = ?gnAn and luna = ?gnLuna and scd = ?pcCont ] + m.gcCondSucursala Endif lcCursor = [actactan] llSucces = goExecutor.oExecuta(m.lcSql, m.lcCursor) If !m.llSucces Return Endif Select actactan If Reccount() > 0 Clear Class "verificare" overif = Createobject('verificare') m.overif.Show(1) If buton = 2 Use In (Select('actactan')) Release m.overif Return Endif Do OSCRIE_IN_FISIERE.prg With 2, .F. Endif *** STERGERE NOTA ANTERIOARA ^ llNotaNoua = .T. lnButon = lans(m.pnIdSet) If m.lnButon = 2 Return Endif *** Selectie din imobilizari Text To m.lcSql Textmerge Noshow SELECT I.ID_FACT, I.ID_PART, I.NRACT, I.EXPLICATIA, NVL(MF.DENUMIRE, I.EXPLICATIA4) AS EXPLICATIA4, NVL(MF.EXPLICATIA, I.EXPLICATIA5) AS EXPLICATIA5, I.ID_RESPONSABIL, I.ID_LUCRARE, I.ID_CTR, P.DENUMIRE AS NUME, P.COD_FISCAL, R.DENUMIRE AS NRESP, I.ID_VENCHELT, VC.EXPLICATIE AS VENCHELT, L.NRORD, (case when c.numar is not null then c.numar || '/' else '' end) || TO_CHAR(c.data, 'DD.MM.YYYY') as contract, I.ID_SUCURSALA, NF.SUCURSALA, I.CONT, I.ACONT, MF.CONTVC, MF.ACONTVC, MF.ID_SECTIE, S.SECTIE, MF.AN, MF.LUNA, MF.AN_EXP, MF.LUNA_EXP, MF.ID_MF, MF.DENUMIRE AS DENUMIRE_IMOB, MF.CONTVC, MF.ACONTVC, MF.DATA_OPERATIE, MF.DPRIMA_RATA, MF.DULTIMA_RATA, (CASE when v.moneda_nationala = 1 OR NVL(i.id_valuta,0)= 0 then (CASE WHEN I.AN = MF.AN_EXP AND I.LUNA = MF.LUNA_EXP THEN MF.ULTIMA_RATA ELSE MF.RATA END) else 0.00 end) AS SUMA, (case when v.moneda_nationala = 0 then (CASE WHEN I.AN = MF.AN_EXP AND I.LUNA = MF.LUNA_EXP THEN MF.ULTIMA_RATA ELSE MF.RATA END) else 0.00 end) AS SUMA_VAL, i.id_valuta, v.nume_val, i.curs FROM IREG_PARTENERI I LEFT JOIN NOM_PARTENERI P ON I.ID_PART = P.ID_PART LEFT JOIN VNOM_VENCHEL VC ON I.ID_VENCHELT = VC.ID_VENCHELT LEFT JOIN CONTRACTE C ON I.ID_CTR = C.ID_CTR LEFT JOIN VNOM_SUCURSALE NF ON I.ID_SUCURSALA = NF.ID_SUCURSALA left join vnom_valute v on i.id_valuta = v.id_valuta JOIN (SELECT NMF.ID_FACT, NMF.ID_MF, NMF.DENUMIRE, NMF.EXPLICATIA, LMF.CONT, LMF.ACONT, NMF.CONT AS CONTVC, NMF.ACONT AS ACONTVC, OMF.DATA_OPERATIE, CASE WHEN RMF.LUNA IS NOT NULL THEN ADD_MONTHS(TO_DATE(RMF.AN || RMF.LUNA, 'YYYYMM'), 1) - 1 ELSE CAST(NULL AS DATE) END AS DPRIMA_RATA, CASE WHEN RMF.LUNA_EXP IS NOT NULL THEN ADD_MONTHS(TO_DATE(RMF.AN_EXP || RMF.LUNA_EXP, 'YYYYMM'), 1) - 1 ELSE CAST(NULL AS DATE) END AS DULTIMA_RATA, RMF.AN, RMF.LUNA, RMF.AN_EXP, RMF.LUNA_EXP, RMF.RATA, RMF.ULTIMA_RATA, LMF.ID_LUCRARE, LMF.ID_SECTIE, LMF.ID_RESPONSABIL FROM IMOB_NOM_MF NMF JOIN IMOB_LISTA_MF LMF ON NMF.ID_MF = LMF.ID_MF AND NMF.STERS = 0 JOIN (SELECT MF1.ID_MF, MAX(MF1.ID_LISTA_MF) ID_LISTA_MF FROM IMOB_LISTA_MF MF1 JOIN IMOB_NOM_MF MF2 ON MF1.ID_MF = MF2.ID_MF WHERE MF2.ID_TIP_IMOBILIZARE IN (4, 5, 6) GROUP BY MF1.ID_MF) LMF2 ON LMF.ID_LISTA_MF = LMF2.ID_LISTA_MF JOIN IMOB_OPERATII_MF OMF ON NMF.ID_MF = OMF.ID_MF AND OMF.STERS = 0 JOIN IMOB_CALCUL_RATE RMF ON NMF.ID_MF = RMF.ID_MF AND RMF.STERS = 0 WHERE NMF.ID_TIP_IMOBILIZARE IN (4, 5, 6)) MF ON I.ID_FACT = MF.ID_FACT AND I.AN*12+I.LUNA BETWEEN MF.AN*12+MF.LUNA AND MF.AN_EXP*12+MF.LUNA_EXP AND NVL(MF.CONT, 'x') = NVL(I.CONT, 'x') and NVL(MF.ACONT, 'x') = NVL(I.ACONT, 'x') LEFT JOIN VNOM_LUCRARI L ON MF.ID_LUCRARE = L.ID_LUCRARE LEFT JOIN NOM_SECTII S ON MF.ID_SECTIE = S.ID_SECTIE LEFT JOIN NOM_PARTENERI R ON MF.ID_RESPONSABIL = R.ID_PART WHERE I.AN = ?m.gnAn AND I.LUNA = ?m.gnLuna AND I.CONT = ?m.pcCont <> Endtext llSucces = goExecutor.oExecuta(m.lcSql, 'crsVenChelt') If !m.llSucces Return Endif * Calculez suma in lei pentru ratele in valuta UPDATE crsVenChelt SET suma = ROUND(suma_val * curs, m.gnPC) WHERE suma_val <> 0 *** Completare ACT Select actactan Go Top Scatter Name m.loAct Zap If m.pcCont = '471' * 6xx = 471 Insert Into actactan (scd, ascd, scc, ascc, id_partc, partc, id_sectie, sectie, id_lucrare, nrord, id_responsabil, nresp, ; id_ctr, contract, suma, suma_val, id_valuta, nume_val, curs, id_factc, perechec, explicatia, explicatia4, explicatia5, id_sucursala) ; Select contvc As scd, acontvc As ascd, ; Cont As scc, ACONT As ascc, ; id_part As id_partc, nume As partc, ; Nvl(id_sectie, Cast(0 As I)) As id_sectie, Nvl(sectie, Space(50)) As sectie, ; Nvl(id_lucrare, Cast(0 As I)) As id_lucrare, Nvl(nrord, Space(50)) As nrord, ; Nvl(id_responsabil, Cast(0 As I)) As id_responsabil, Nvl(nresp, Space(50)) As nresp, ; Nvl(id_ctr, Cast(0 As I)) As id_ctr, Nvl(contract, Space(50)) As contract, suma, suma_val, id_valuta, nume_val, curs, ; id_fact As id_factc, nrACT As perechec, ; explicatia, ; 'Rata ' + Alltrim(Str(((m.gnAn * 12 + m.gnluna) - (an * 12 + luna) + 1))) + '/' + Alltrim(Str(((an_exp * 12 + luna_exp) - (an * 12 + luna) + 1))) + ' ' + Alltrim(Nvl(explicatia4, '')) As explicatia4, ; explicatia5, ; id_sucursala ; From crsVenChelt ; Where !Empty(Nvl(suma, 0)) OR !Empty(Nvl(suma_val, 0)) Else * 472 = 7xx Insert Into actactan (scd, ascd, scc, ascc, id_partd, partd, id_sectie, sectie, id_lucrare, nrord, id_responsabil, nresp, ; id_ctr, contract, suma, suma_val, id_valuta, nume_val, curs, id_factd, pereched, explicatia, explicatia4, explicatia5, id_sucursala) ; Select Cont As scd, ACONT As ascd, ; contvc As scc, acontvc As ascc, ; id_part As id_partd, nume As partd, ; Nvl(id_sectie, Cast(0 As I)) As id_sectie, Nvl(sectie, Space(50)) As sectie, ; Nvl(id_lucrare, Cast(0 As I)) As id_lucrare, Nvl(nrord, Space(50)) As nrord, ; Nvl(id_responsabil, Cast(0 As I)) As id_responsabil, Nvl(nresp, Space(50)) As nresp, ; Nvl(id_ctr, Cast(0 As I)) As id_ctr, Nvl(contract, Space(50)) As contract, suma, suma_val, id_valuta, nume_val, curs, ; id_fact As id_factd, nrACT As pereched, ; explicatia, ; 'Rata ' + Alltrim(Str(((m.gnAn * 12 + m.gnluna) - (an * 12 + luna) + 1))) + '/' + Alltrim(Str(((an_exp * 12 + luna_exp) - (an * 12 + luna) + 1))) + ' ' + Alltrim(Nvl(explicatia4, '')) As explicatia4, ; explicatia5, ; id_sucursala ; From crsVenChelt ; Where !Empty(Nvl(suma, 0)) Endif Use In (Select('crsVenChelt')) Select actactan Scan Gather Name m.loAct Fields Except scd, ascd, scc, ascc, id_partc, partc, id_partd, partd, id_sectie, sectie, id_lucrare, nrord, id_responsabil, nresp, ; id_ctr, contract, suma, suma_val, id_valuta, nume_val, curs, id_factc, perechec, id_factd, pereched, explicatia, explicatia4, explicatia5, id_sucursala Endscan If !Empty(Nvl(m.loAct.explicatia, '')) Update actactan Set explicatia = m.loAct.explicatia Endif Select .F. As ales, 0 As Cu_tva, Cast(0 As N(2)) As tipnota, T.* From actactan T Into Cursor tact Readwrite Use In (Select('actactan')) *** Verificare note contabile Select tact Go Top loForm = Createobject([frm_modific2007], m.pnIdSet, m.llNotaNoua) loForm.lb_titlu_alb_b121.Caption = Iif(m.pcCont = '471', 'Repunere cheltuieli in avans', Iif(m.pcCont = '472', 'Repunere venituri in avans', 'Subventii')) Select tact m.loForm.Show(1) If gnButon = 1 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 Select actactan lnSucces = OSCRIE_IN_FISIERE(0) Endif Use In (Select('tact')) Use In (Select('actactan')) Endproc && repunere_cheltuieli_avans ******************************************** *** Editare set note definite de utilizator ******************************************** Define Class oxSet As Custom nIdSet = 0 cXmlSets = '' cXmlRequest = '' cXmlNote = '' nIdSetNou = 99997 && Nota definita de utilizator Procedure Init Lparameters tnIdSet, tlNoLoad *** tlNoLoad: .T. nu se incarca xsets, xrequest, xnote (ex. la stergerea unui set nu este nevoie de incarcarea datelor) If Type('tnIdSet') = 'N' If !Empty(m.tnIdSet) This.nIdSet = m.tnIdSet Else This.nIdSet = This.nIdSetNou Endif Else This.nIdSet = This.nIdSetNou Endif *** Completez cXmlSets, cXmlRequest, cXmlNote If !m.tlNoLoad This.Load() Endif Endproc && Init *** schimb id_set in id_set_nou, astfel incat sa creez un set nou, in loc sa il actualizez pe cel vechi *** la salvarea unui set nou dintr-un set existent Procedure New This.nIdSet = This.nIdSetNou Endproc && New Procedure Delete Local llSucces Private pnIdSet pnIdSet = This.nIdSet lcSql = [begin pack_seturi.sterge_set(?pnIdSet); end;] llSucces = goExecutor.oExecuta(m.lcSql) Return m.llSucces Endproc Procedure Edit Local loFrmEditareSet As "frm_editare_set" Local llSucces, lcSql Private pnIdSet pnIdSet = This.nIdSet lcSql = [select label_item, id_item, id_fisier, fis_lista, camp_lista from xitems] llSucces = goExecutor.oExecuta(m.lcSql, [crsItems]) If !m.llSucces Return m.llSucces Endif lcSql = [select categorie, id_categorie from xSetsCategorii where sters = 0 order by ordine] llSucces = goExecutor.oExecuta(m.lcSql, [crsCategorii]) If !m.llSucces Return m.llSucces Endif This.Property2Cursor('cXmlRequest', 'crsRequest') This.Property2Cursor('cXmlSets', 'crsSet') If This.nIdSet = This.nIdSetNou Update crsSet Set nume_set = "Set nou " + Ttoc(Datetime()), id_set = 0, id_categorie = 0, categorie = "" Endif Select crsRequest loFrmEditareSet = Createobject("frm_editare_set", This) m.loFrmEditareSet.Show(1) llSucces = (m.gnButon = 1) Use In (Select('crsItems')) Use In (Select('crsCategorii')) Use In (Select('crsRequest')) Use In (Select('crsSet')) Return m.llSucces Endproc && Edit *************************************** * Converteste un cursor in proprietate (ex: tact -> this.cXmlNote la salvarea unui model nou in nota fara predefinire) *************************************** Procedure Cursor2Property Lparameters tcCursorName, tcProperty, tlNoSchema * tcCursorName: numele cursorului pentru conversia in xml * tcProperty: numele proprietatii: cxmlnote/cxmlsets/cxmlrequest; in functie de proprietate schimb numele nodului cursorului din xml in ceva fix, cunoscut in procedura din baza de date * tlNoSchema: daca xml-ul are nevoie de schema; in Oracle a dat eroare la parsarea xml cu schema; apelez fara schema in This.Save pentru salvarea xnote in baza de date Local lcCursorProp, lcCursorname, lcProperty, lcXML lcXML = "" lcCursorname = m.tcCursorName lcProperty = Alltrim(Lower(m.tcProperty)) Do Case Case m.lcProperty = 'cxmlnote' lcCursorProp = "crsnote" Case m.lcProperty = 'cxmlsets' lcCursorProp = "crsset" Case m.lcProperty = 'cxmlrequest' lcCursorProp = "crsrequest" Endcase Cursortoxml(m.tcCursorName, 'lcXml', 1, 0 + 2 + 8, 0, Iif(m.tlNoSchema, "", "1")) If m.lcCursorname <> m.lcCursorProp lcXML = Strtran(m.lcXML, m.lcCursorname, m.lcCursorProp, 1, 10000, 1) && tact -> crsnote Endif This.&lcProperty = m.lcXML Endproc && Cursor2Property Procedure Property2Cursor Lparameters tcProperty, tcCursorName Local lcCursorname, lcProperty, lcXML lcCursorname = m.tcCursorName lcProperty = Alltrim(Lower(m.tcProperty)) lcXML = This.&lcProperty Xmltocursor(m.lcXML, m.lcCursorname) Endproc && Property2Cursor *************************************** * Citeste din baza de date informatiile despre xsets, xrequest, xnote si completeaza proprietatile clasei *************************************** Procedure Load Private pnIdSet Local lcSql, llSucces pnIdSet = Iif(This.nIdSet <> 0, This.nIdSet, This.nIdSetNou) Text To m.lcSql Textmerge Noshow select s.id_set, s.nr_set, s.nume_set, s.fix, s.lista_note, s.explicatia, s.model, s.formgest, s.nu_sterg, s.param1, s.listare, s.param2, s.frm_date, s.discount, s.adaos, s.factura, s.id_selst, s.id_seldr, s.tip_doc, s.tip_ctr, s.expl_fixa, s.aleg_cont, s.frm_plata, s.valuta, s.compens, s.id_tip_rul, s.id_jnetax, s.id_jtax, s.tipjurnal, s.id_jtaxn, s.productie, s.formproduc, s.cursval, s.id_categorie, s.procedura_lans, s.id_sucursala, c.categorie from xsets s left join xSetsCategorii c on s.id_categorie = c.id_categorie where s.id_set = ?pnIdSet Endtext llSucces = goExecutor.oExecuta(m.lcSql, [crsSet]) If !m.llSucces Return m.llSucces Endif This.Cursor2Property("crsSet", "cXmlSets") Use In (Select('crsSet')) If This.nIdSet = 0 Update crsSet Set nume_set = "Set nou " + Ttoc(Datetime()), id_set = 0, id_categorie = 0, categorie = "" Endif * Selectez din xrequest & xitems toate inregistrarile de pe id_set-ul curent, fara campurile de sume * Sumele se completeaza in xnote, nu in cererea de date Text To m.lcSql Textmerge Noshow select i.label_item, s.nume_set, r.valoare_default, r.nr_item, r.id_item, r.id_set, i.fis_lista, i.id_fisier, i.camp_lista, i.x_init_val, rpad(case when i.fis_lista 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, 100, ' ') as valoare_default_text from xrequest r join xsets s on s.id_set = r.id_set join xitems i on i.id_item = r.id_item where r.id_set = ?pnIdSet and not ((lower(nvl(i.xinputmask, 'x')) like '%gnpa%' or lower(nvl(i.xinputmask, 'x')) like '%gnpcurs%' or lower(nvl(i.xinputmask, 'x')) like '%gnpval%') and i.id_item not in (21,22,23)) order by i.prioritate, r.nr_item Endtext llSucces = goExecutor.oExecuta(m.lcSql, [crsRequest]) If !m.llSucces Return m.llSucces Endif This.Cursor2Property("crsRequest", "cXmlRequest") Use In (Select('crsRequest')) *** verific daca a fost deja completata This.cXmlNote pe INIT Text To m.lcSql Textmerge Noshow SELECT decode(NVL(a.id_jtva_coloana, 0), 0, 0, 1) As Cu_tva, Cast(0 As Number(2)) As tipnota, cast(0 as number(20)) as id_act, cast(0 as number(2)) as luna, cast(0 as number(4)) as an, cast(0 as number(20)) as cod, a.dataireg, a.serie_act, a.nract, a.dataact, a.explicatia, a.xscd as scd, a.xascd as ascd, a.xscc as scc, a.xascc as ascc, a.suma, a.pereched, a.perechec, a.suma_val, a.id_valuta, v.nume_val, a.curs, a.datascad, 0 AS neimpozab, a.nnir, cast(0 as number(5)) as id_util, '' AS util, sysdate as dataora, cast(0 as number(5)) as id_utils, '' AS utils, sysdate as dataoras, a.id_responsabil, resp.denumire AS nresp, a.id_venchelt, venchelt.explicatie AS dst_chlt, a.id_lucrare, lucr.nrord, a.id_ctr, (case when ctr.numar is not null then ctr.numar || '/' else '' end) || TO_CHAR(ctr.data,'DD.MM.YYYY') as contract, a.id_sectie, sectii.sectie, a.proc_tva, a.id_set, NVL(a.id_fact, 0) as id_fact, a.id_partd, part1.denumire AS partd, a.id_partc, part.denumire AS partc, cast(0 as number(5)) as id_sucursala, '' as sucursala, a.id_fdoc, fdoc.fel_document AS fdoc, a.explicatia4, a.explicatia5, cast(0 as number(5)) as id_gestin, '' AS gestin, cast(0 as number(5)) as id_gestout, '' AS gestout, NVL(a.id_factd, 0) as id_factd, NVL(a.id_factc, 0) as id_factc, a.id_jtva_coloana, jtva.denumire as explicatie_tva, cast(0 AS NUMBER(1)) AS validat, cast(0 as number(5)) as id_utilv, '' as utilv, SYSDATE AS dataorav, NVL(doc.tva_incasare,0) as tva_incasare from xnote a LEFT JOIN nom_fdoc fdoc ON a.id_fdoc = fdoc.id_fdoc LEFT JOIN nom_parteneri part ON a.id_partc = part.id_part LEFT JOIN nom_parteneri part1 ON a.id_partd = part1.id_part LEFT JOIN vnom_venchel venchelt ON a.id_venchelt = venchelt.id_venchelt LEFT JOIN nom_parteneri resp ON a.id_responsabil = resp.id_part LEFT JOIN nom_sectii sectii ON a.id_sectie = sectii.id_sectie LEFT JOIN vnom_lucrari lucr ON a.id_lucrare = lucr.id_lucrare LEFT JOIN nom_valute v ON a.id_valuta = v.id_valuta LEFT JOIN contracte ctr ON ctr.id_ctr = a.id_ctr LEFT JOIN jtva_coloane jtva ON a.id_jtva_coloana = jtva.id_jtva_coloana LEFT JOIN documente doc on a.id_fact = doc.id_doc where a.id_set = ?pnIdSet order by nr_nota Endtext llSucces = goExecutor.oExecuta(m.lcSql, 'crsNote') If !m.llSucces Return m.llSucces Endif This.Cursor2Property("crsNote", "cXmlNote") Use In (Select('crsNote')) Return m.llSucces Endproc && Load Procedure Save Local lcSql, llSucces, lcXmlNote Private pcXmlNote, pcXmlRequest, pcXmlSets, pnIdSet pcXmlSets = This.cXmlSets pcXmlRequest = This.cXmlRequest pcXmlNote = "" * recreez xml note fara schema inline. pack_seturi.modifica_set dadea eroare cu schema inline Xmltocursor(This.cXmlNote, "cxmlnotetemp") Cursortoxml("cxmlnotetemp", 'pcXmlNote', 1, 0 + 2 + 8, 0, "") Use In (Select("cxmlnotetemp")) pcXmlNote = Strtran(m.pcXmlNote, "cxmlnotetemp", "crsnote", 1, 10000, 1) && crsnotetemp -> crsnote pnIdSet = Iif(This.nIdSet <> 0, This.nIdSet, This.nIdSetNou) && variabila privata declarata in oxSet.EditareSet() lcSql = [begin pack_seturi.modifica_set(?@m.pnIdSet, ?m.pcXmlSets, ?m.pcXmlNote, ?m.pcXmlRequest, ?gnIdUtil); end;] llSucces = goExecutor.oExecuta(m.lcSql) *** Pentru seturile noi se salveaza noul ID_SET in proprietatile clasei If m.llSucces This.nIdSet = m.pnIdSet Endif Return m.llSucces Endproc && Save Enddefine && oSet ******************************************************************* Procedure stornare_plinc Local loStornarePlInc, ldData, lnIdSet, lcCursorAct, lcCursorActan, lnSucces Private poRec, pnIdFact lnSucces = 1 pnIdFact = 0 lnIdSet = 10616 ldData = Ttod(get_ora()) If Month(m.ldData) <> gnluna Or Year(m.ldData) <> gnAn ldData = Gomonth(Date(gnAn, gnluna, 1), 1) - 1 Endif poRec = Createobject('custom') With m.poRec .AddProperty('dataireg', m.ldData) .AddProperty('id_fdoc', 0) .AddProperty('fdoc', '') .AddProperty('nract', 0) .AddProperty('dataact', m.ldData) .AddProperty('cont', '') .AddProperty('tip_sold', '') .AddProperty('id_part', 0) .AddProperty('denumire', '') .AddProperty('datai', Date(gnAn, gnluna, 1)) .AddProperty('dataf', m.ldData) .AddProperty('cod', 0) .AddProperty('cursor', '') Endwith Do Form frm_stornare_plinc Noshow Name m.loStornarePlInc Linked m.loStornarePlInc.Show(1) If gnButon = 1 Select (m.poRec.Cursor) poRec.cod = cod Local loForm As [frm_modific2007] lcSql = [select a.*,a.suma as suma_orig,a.suma_val as suma_val_orig,0 as tipnota,decode(Nvl(id_jtva_coloana,0),0,0,1) as cu_tva ] + ; [from vact_tot a where a.cod = ] + Alltrim(Str(m.poRec.cod)) + [ order by a.id_act] lcCursor = Sys(2015) lcCursorModificare = [tact] lcCursorScriere = [actactan] If goExecutor.oExecuta(m.lcSql, m.lcCursor) Select .F. As ales, a.* From (m.lcCursor) a Into Cursor (m.lcCursorModificare) Readwrite Use In (Select(m.lcCursor)) Update (m.lcCursorModificare) Set ; id_set = m.lnIdSet, ; id_util = gnIdUtil, ; dataireg = m.poRec.dataireg, ; dataact = m.poRec.dataact, ; serie_act = '', ; nrACT = m.poRec.nrACT, ; id_fdoc = m.poRec.id_fdoc, ; fdoc = m.poRec.fdoc, ; suma = (-1) * suma, ; suma_val = (-1) * suma_val * la notele de stornare 413 = 4111/401 = 403/ 404 = 405 nu trebuie sa am acelasi ID_FACT pe incasare/plata pentru ca apar in 413/403 doua inregistrari cu acelasi ID_FACT (+/-) si nu se pot inchide * generez alte ID_FACT Select (m.lcCursorModificare) Scan For scd = '413' Or Inlist(scc, '403', '405') pnIdFact = Nvl(id_fact, 0) If !Empty(m.pnIdFact) lnSucces = goExecutor.oSelect2Value("select seq_idfact.nextval from dual", @m.pnIdFact) If m.lnSucces > 0 Replace id_fact With m.pnIdFact In (m.lcCursorModificare) Else amessagebox(goExecutor.cEroare, 0 + 48, _Screen.Caption) Exit Endif Endif Endscan Select (m.lcCursorModificare) Go Top loForm = Createobject([frm_modific2007], m.lnIdSet) loForm.lb_titlu_alb_b121.Caption = [Stornare plata / încasare] m.loForm.Show(1) If gnButon = 1 Select * From (m.lcCursorModificare) Where suma <> 0 Into Cursor (m.lcCursorScriere) Readwrite Select (m.lcCursorScriere) OSCRIE_IN_FISIERE(0) Use In (m.lcCursorScriere) Endif Use In (m.lcCursorModificare) Endif Use In (m.poRec.Cursor) Endif Endproc