sync SVN r18202

This commit is contained in:
2026-09-24 23:07:56 +03:00
parent e8def3771f
commit fa7bbcf2f6
7 changed files with 1108 additions and 13 deletions

View File

@@ -8,6 +8,10 @@
*!* marius.mutu
*!* list_inchid_amortizari - corectie apel inchidere amortizari - defalcare dupa lucrari
*!* 23.09.2026
*!* marius.mutu
*!* listare_pvcasare_mf - Proces-verbal de casare, un PV per document (nrdoc+datadoc)
*--------------------------------------------------------------------------------------------------------------
Procedure _old_listare_amortizari_lunare()
Parameters Tip
@@ -1323,4 +1327,77 @@ Procedure list_situatie_modificari
Use In (Select('cSituatieModificari'))
SELECT (m.lcSelect)
Endproc && list_situatie_modificari
Endproc && list_situatie_modificari
********************************
Procedure listare_pvcasare_mf
LPARAMETERS tcFiltru
* crslista e deja filtrat pe server; tcFiltru (sintaxa Oracle) nu se reaplica local
Local lcFiltruGrid
lcFiltruGrid = Iif(Empty(Filter('crslista')), '.T.', Filter('crslista'))
* Proces-verbal de casare: un PV per document (nrdoc+datadoc), fiecare pe pagina noua.
Local lcSelect, lcSql, llSucces, lcIn, lcChunk, lnChunk
lcSelect = SELECT()
If Used('crsOpCasare')
Use In crsOpCasare
Endif
If Used('crspvcasare')
Use In crspvcasare
Endif
If Used('crsCasare')
Use In crsCasare
Endif
Select id_mf, denumire, nr_inventar From crslista ;
Where &lcFiltruGrid And Upper(Alltrim(Nvl(tip_iesire, ''))) = 'CASARE' ;
Into Cursor crsCasare Readwrite
If Reccount('crsCasare') = 0
aMessagebox('Nu exista imobilizari casate pentru listare!', 48, 'Atentie')
Use In crsCasare
Select (m.lcSelect)
Return
Endif
* ultima operatie de iesire (tip 4, id_tip_iesire 2) a fiecarui MF; ORA-01795: max 1000 id-uri per IN
lcIn = ''
lcChunk = ''
lnChunk = 0
Select crsCasare
Scan
lcChunk = m.lcChunk + Iif(Empty(m.lcChunk), '', ',') + Alltrim(Str(id_mf))
lnChunk = m.lnChunk + 1
If m.lnChunk = 1000
lcIn = m.lcIn + Iif(Empty(m.lcIn), '', ' or ') + 'id_mf in (' + m.lcChunk + ')'
lcChunk = ''
lnChunk = 0
Endif
Endscan
If !Empty(m.lcChunk)
lcIn = m.lcIn + Iif(Empty(m.lcIn), '', ' or ') + 'id_mf in (' + m.lcChunk + ')'
Endif
lcSql = [select id_mf, nrdoc, datadoc, valoare, valoare_ramasa from (] + ;
[select id_mf, nrdoc, datadoc, valoare, valoare_ramasa, ] + ;
[row_number() over (partition by id_mf order by data_operatie desc, id_operatie_mf desc) rn ] + ;
[from imob_voperatii_mf where id_tip_operatie = 4 and id_tip_iesire = 2 and (] + m.lcIn + [)) ] + ;
[where rn = 1]
llSucces = goExecutor.oExecuta(m.lcSql, 'crsOpCasare')
If !m.llSucces
Use In crsCasare
Select (m.lcSelect)
Return
Endif
Index On id_mf Tag id_mf
Select c.id_mf, c.denumire, c.nr_inventar, ;
Iif(Isnull(o.nrdoc), '', Alltrim(Str(o.nrdoc, 20))) As nrdoc, Nvl(o.datadoc, {}) As datadoc, ;
'buc' As um, 1 As cantitate, ;
Nvl(o.valoare, 0) As pret, Nvl(o.valoare, 0) As valoare, ;
Nvl(o.valoare, 0) - Nvl(o.valoare_ramasa, 0) As amortizare ;
From crsCasare c Left Join crsOpCasare o On c.id_mf = o.id_mf ;
Into Cursor crspvcasare Readwrite
Index On Alltrim(nrdoc) + '|' + Dtos(datadoc) + denumire Tag ord
Set Order To ord
* nr. crt. si totalurile PV sunt variabile de raport (reset pe grupul nrdoc+datadoc)
Select crspvcasare
goExport.export2frx([crspvcasare], 'pvcasare_mf', , , , , , .T.)
Use In crsOpCasare
Use In crspvcasare
Use In crsCasare
Select (m.lcSelect)
Endproc && listare_pvcasare_mf