*!* oproceduri_comune_imob *!* 12.07.2006 *!* marius.mutu *!* 27.03.2013 *!* marius.mutu *!* GET_CURSOR_INCHIDERE_AMORTIZARI *!* DEFALCARE SUME CHELTUIELI IN DEDUCTIBILE, NEDEDUCTIBILE IN FUNCTIE DE AMORT_MAX_DEDUCTIBL *!* 09.04.2013 *!* marius.mutu *!* GET_CURSOR_INCHIDERE_AMORTIZARI *!* s-au tratat imobilizarile fara cont *!* 24.06.2020 *!* Inchiderea de amortizari se face folosind modul experimental, din view *!* In ROACONT nu am mod experimental, asa ca implicit este .T. *!* 23.01.2024 *!* GET_CURSOR_INCHIDERE_AMORTIZARI : defalcare pe lucrari *** tcCursor = GET_CURSOR_AMORTIZARI (tnFiscala, tnAn, tnLuna) *** tcCursor = GET_CURSOR_INCHIDERE_AMORTIZARI (tnTip, tnSectie, tnAn, tnLuna, tcCursor) *---------------------------------------------------- Procedure GET_CURSOR_AMORTIZARI Lparameters tnFiscala, tnAn, tnLuna, tnIdTipImobilizare, tnIdMf Local lnSucces, lcSel, lcCursor, llExperimental Local lcFiltru, llSucces Private pdDataI, pdDataF, pcCond, pnFiscala llExperimental = .T. IF TYPE('goApp.nExperimental') = 'N' llExperimental = .T. && 25.11.2021 llExperimental = (goApp.nExperimental = 1) ENDIF pdDataI = Date(tnAn, tnLuna, 1) pdDataF = pdDataI *pcCond = [id_tip_imobilizare = ] + ALLTRIM(STR(tnTip)) && merge fffff greu pcCond = [2=2] lcFiltru = IIF(!EMPTY(m.tnIdTipImobilizare), [id_tip_imobilizare = ] + Alltrim(Str(m.tnIdTipImobilizare)), [1=1]) + m.gcCondSucursala + IIF(!EMPTY(m.tnIdMf), [ and id_mf = ] + ALLTRIM(STR(m.tnIdMf)), []) && merge normal in mod experimental cu selectie din view imob_vsituatie_lunara If Empty(tnFiscala) pnFiscala = 0 Else pnFiscala = tnFiscala Endif lcCursor = 'crsAmortizareTemp' WAIT WINDOW 'Selectie amortizari ' + PADL(INT(m.tnLuna), 2, '0') + '/' + ALLTRIM(STR(INT(m.tnAn))) + ' ...' NOWAIT If m.llExperimental * EXPERIMENTAL SELECTIE DIN IMOB_VSITUATIE_LUNARA IN LOC DE PACK_IMOB.CALCUL_SITUATIE_LUNARA() * Setez luna pentru view llSucces = goExecutor.oExecuta('begin pack_imob.setlunacurenta(?pdDataI); end;') If m.llSucces lcSel = [SELECT * FROM ] + Iif(m.pnFiscala = 0, [imob_vsituatie_lunara], [imobf_vsituatie_lunara]) + [ WHERE ] + m.lcFiltru llSucces = goExecutor.oExecuta(m.lcSel, m.lcCursor) Endif Else lcSel = [{call pack_imob.CALCUL_SITUATIE_LUNARA(?pdDataI,?pdDataF,?pcCond,?pnFiscala,?gnIdSucursala)}] llSucces = goExecutor.oExecuta(lcSel, lcCursor) Endif If !m.llSucces lcCursor = '' Endif Return m.lcCursor Endproc && GET_CURSOR_AMORTIZARI *---------------------------------------------------- Procedure GET_CURSOR_INCHIDERE_AMORTIZARI Lparameters tnTip, tnSectie, tnLucrare, tnAn, tnLuna, tcCursor Local lnFiscal, lcCursor, lcSqlSectie, lnAnLuna, lnSucces Local lcCursorPlcont, lcCursorTemp, lcSql lnFiscal = 0 && amortizare contabila lcCursor = "" lcCursor = GET_CURSOR_AMORTIZARI(m.lnFiscal, m.tnAn, m.tnLuna, m.tnTip) If Empty(lcCursor) Return '' Endif && CORESPONDENTE CONTURI INCHIDERE && DACA NU SUNT COMPLETATE - SE FOLOSESC CONTURI DEFAULT *** ADAUG LINIILE PENTRU SUME DEDUCTIBILE (TIP = 1) Create Cursor crsConturi (TIP N(1), Id N(10), id_sectie I Null, Cont c(4), acont c(4) Null, scd c(4) Null, ascd c(4) Null, scc c(4) Null, ascc c(4) Null) lcSql = "select 1 as tip, id, id_sectie, cont, acont, scd, ascd, scc, ascc from imob_inchidere" llSucces = goExecutor.oExecuta(lcSql, "crsConturiTemp") If m.llSucces Insert Into crsConturi (tip, id, id_sectie, cont, acont, scd, ascd, scc, ascc) ; select tip, Id, id_sectie, cont, acont, scd, ascd, scc, ascc From crsConturiTemp Endif *!* *** COMPLETEZ CONTURILE CARE NU SUNT CONFIGURATE IN IMOB_INCHIDERE *!* Insert Into crsConturi (TIP, Cont, acont) ; *!* select Distinct 1 As TIP, Cont, acont ; *!* from (m.lcCursor) Where !Empty(Nvl(Cont, '')) And Padr(Nvl(Cont, ''), 4, ' ') + Padr(Nvl(acont, ''), 4, ' ') Not In ; *!* (Select Padr(Nvl(Cont, ''), 4, ' ') + Padr(Nvl(acont, ''), 4, ' ') From crsConturi) *!* && COMPLETEZ SCD, SCC DEFAULT *!* Update crsConturi Set scd = '6811' Where Empty(scd) *!* Update crsConturi Set scc = Iif(tnTip = 1, '281', '280') + Substr(Cont, 3, 1) Where Empty(scc) *** ADAUG LINIILE PENTRU SUME NEDEDUCTIBILE (TIP = 2) Insert Into crsConturi (tip, id_sectie, Cont, acont, scd, ascd, scc, ascc) ; select 2 As tip, id_sectie, Cont, acont, scd, ascd, scc, ascc ; from crsConturi lnAnLuna = tnAn * 12 + tnLuna; lcSql = [select cont, acont, explicatie from plcont where inactiv = 0 and an = ] + Transform(tnAn) lcCursorPlcont = [crsPlcontTemp] lnSucces = goExecutor.oExecute(lcSql, lcCursorPlcont) If lnSucces < 0 AMESSAGEBOX(goExecutor.cEroare, 0 + 16, 'Eroare') Endif If !Used("crsPlContTemp") Create Cursor crsPlContTemp (Cont c(4), acont c(4), explicatie c (30)) Endif *** CUMULARE PE SECTII sau pe lucrari m.lcCursorTemp = 'crsAmortizariTemp' Select Sum(Cast(Iif(c.TIP = 1, Iif(a.amort_max_deductibil > 0, Min(a.rata, a.amort_max_deductibil), a.rata), ; iif(a.amort_max_deductibil > 0 And a.rata > a.amort_max_deductibil, a.rata - a.amort_max_deductibil, 0)) As N(20, 4))) As suma, ; a.Cont, a.acont, Nvl(a.id_sectie, 00000) As id_sectie, Nvl(a.sectie, Space(50)) As sectie, ; CAST(Nvl(a.id_lucrare, 0) as I) As id_lucrare, CAST(Nvl(a.nrord, '') as C(100)) As nrord, ; IIF(!Empty(Nvl(c.Cont, "")), c.scd, Space(4)) As scd, ; IIF(!Empty(Nvl(c.Cont, "")), c.ascd, Space(4)) As ascd, ; IIF(!Empty(Nvl(c.Cont, "")), c.scc, Space(4)) As scc, ; IIF(!Empty(Nvl(c.Cont, "")), c.ascc, Space(4)) As ascc, ; padr(Alltrim(Nvl(a.Cont, '')) + Iif(!Empty(Nvl(a.acont, '')), '.' + Nvl(a.acont, ''), '') + ' ' + Alltrim(Nvl(p.explicatie, '')) + Iif(c.TIP = 1, ' - DEDUCTIBIL', ' - NEDEDUCTIBIL'), 200, ' ') As explicatie ; from (m.lcCursor) a ; left Join crsPlContTemp p On a.Cont = p.Cont And Nvl(a.acont, 'xxxx') = Nvl(p.acont, 'xxxx') ; left Join crsConturi c On a.Cont = c.Cont And Nvl(a.acont, 'xxxx') = Nvl(c.acont, 'xxxx') AND NVL(a.id_sectie, 0) = NVL(c.id_sectie,0) ; where id_tip_imobilizare = tnTip ; group By a.Cont, a.acont, a.id_sectie, a.sectie, a.id_lucrare, a.nrord, p.explicatie, c.Cont, c.scd, c.ascd, c.scc, c.ascc, c.TIP ; into Cursor crsAmortizariTemp Readwrite DO CASE *** CUMULARE SUME PE SECTII SI LUCRARI CASE tnSectie = 1 AND tnLucrare = 1 Select Cont, acont, scd, ascd, scc, ascc, explicatie, id_sectie, sectie, id_lucrare, nrord, Sum(suma) As suma ; from (m.lcCursorTemp) ; group By Cont, acont, scd, ascd, scc, ascc, explicatie, id_sectie, sectie, id_lucrare, nrord ; into Cursor (m.tcCursor) Readwrite *** CUMULARE SUME FARA SECTII, PE LUCRARI CASE tnSectie <> 1 AND tnLucrare = 1 && nu pe sectii Select Cont, acont, scd, ascd, scc, ascc, explicatie, 0 As id_sectie, '' As sectie, id_lucrare, nrord, Sum(suma) As suma ; from (m.lcCursorTemp) ; group By Cont, acont, scd, ascd, scc, ascc, explicatie, id_lucrare, nrord ; into Cursor (m.tcCursor) Readwrite *** CUMULARE SUME PE SECTI, FARA LUCRARI CASE tnSectie = 1 AND tnLucrare <> 1 && nu pe sectii Select Cont, acont, scd, ascd, scc, ascc, explicatie, id_sectie, sectie, 0 as id_lucrare, '' as nrord, Sum(suma) As suma ; from (m.lcCursorTemp) ; group By Cont, acont, scd, ascd, scc, ascc, explicatie, id_sectie, sectie ; into Cursor (m.tcCursor) Readwrite *** CUMULARE SUME FARA LUCRARI, FARA SECTI CASE tnSectie <> 1 AND tnLucrare <> 1 && nu pe sectii Select Cont, acont, scd, ascd, scc, ascc, explicatie, 0 AS id_sectie, '' AS sectie, 0 as id_lucrare, '' as nrord, Sum(suma) As suma ; from (m.lcCursorTemp) ; group By Cont, acont, scd, ascd, scc, ascc, explicatie ; into Cursor (m.tcCursor) Readwrite ENDCASE Use In (Select(m.lcCursorTemp)) && sterg sumele 0 Delete From (tcCursor) Where suma = 0 Use In (Select(m.lcCursor)) Use In (Select(m.lcCursorPlcont)) If Used(m.tcCursor) Return m.tcCursor Else Return '' Endif Endproc && GET_CURSOR_INCHIDERE_AMORTIZARI