From fa7bbcf2f6c9289d7b95d6203999dd57a0d398cd Mon Sep 17 00:00:00 2001 From: Marius Mutu Date: Thu, 24 Sep 2026 23:07:56 +0300 Subject: [PATCH] sync SVN r18202 --- AGENTS.md | 3 + CLAUDE.md | 3 + Clase/oimobilizari.vc2 | 11 +- Programe/oproceduri_listari.prg | 79 ++- Rapoarte/pvcasare_mf.fr2 | 1000 +++++++++++++++++++++++++++++++ changelog_roaimob.txt | 24 +- roaimob.pj2 | 1 + 7 files changed, 1108 insertions(+), 13 deletions(-) create mode 100644 Rapoarte/pvcasare_mf.fr2 diff --git a/AGENTS.md b/AGENTS.md index 31a1f1c..a31e944 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -8,6 +8,7 @@ procedura si criteriile care blocheaza "gata"); docurile sunt doar referinta con skill-ului. - editezi `.vc2`/`.sc2`/`.prg` cu diacritice, cauti in `.vcx`/`.scx`, adaugi membri de clasa -> skill `roa-vfp-text-edit` +- creezi sau editezi un raport `.frx`/`.frt` (layout, band-uri, grupare, totaluri, preview) -> skill `roa-vfp-frx-report` - rulezi sau depanezi teste headless ori UI -> skill `roa-vfp-headless-test` - commit / `svn update` / `roa_sync` in COMUN -> skill `roa-git-svn-commit` - scrii sau publici scripturi de migrare Oracle, reexporti un pachet -> skill `roa-oracle-migration` @@ -17,6 +18,8 @@ skill-ului. - `GO` pe un `Recno()` capturat sau primit ca parametru -> skill `roa-vfp-go-recno` - procedura PL/SQL cu `SELECT ... INTO` apelata din VFP (randuri pierdute tacut) -> skill `roa-oracle-sqlexec-no-data` - inrolezi un calculator nou sau un proiect nou in fluxul git-text / expui skill-urile pe masina / aplici backstop-ul de rutare -> skill `roa-onboarding` +- investighezi facturare / articole / preturi / comenzi / politici de pret / note contabile / id_set / crm_note_vanzari, sau nu stii unde sta un obiect/coloana/pachet DB -> skill `roa-domeniu-rutare` +- final de sesiune sau de lucrare / "salveaza ce ai invatat" / actualizezi documentatia sau fluxurile -> skill `roa-actualizare-doc` ## Stil de interactiune si lucru diff --git a/CLAUDE.md b/CLAUDE.md index 0d41e55..3b6b481 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -86,6 +86,7 @@ procedura si criteriile care blocheaza "gata"); docurile sunt doar referinta con skill-ului. - editezi `.vc2`/`.sc2`/`.prg` cu diacritice, cauti in `.vcx`/`.scx`, adaugi membri de clasa -> skill `roa-vfp-text-edit` +- creezi sau editezi un raport `.frx`/`.frt` (layout, band-uri, grupare, totaluri, preview) -> skill `roa-vfp-frx-report` - rulezi sau depanezi teste headless ori UI -> skill `roa-vfp-headless-test` - commit / `svn update` / `roa_sync` in COMUN -> skill `roa-git-svn-commit` - scrii sau publici scripturi de migrare Oracle, reexporti un pachet -> skill `roa-oracle-migration` @@ -95,4 +96,6 @@ skill-ului. - `GO` pe un `Recno()` capturat sau primit ca parametru -> skill `roa-vfp-go-recno` - procedura PL/SQL cu `SELECT ... INTO` apelata din VFP (randuri pierdute tacut) -> skill `roa-oracle-sqlexec-no-data` - inrolezi un calculator nou sau un proiect nou in fluxul git-text / expui skill-urile pe masina / aplici backstop-ul de rutare -> skill `roa-onboarding` +- investighezi facturare / articole / preturi / comenzi / politici de pret / note contabile / id_set / crm_note_vanzari, sau nu stii unde sta un obiect/coloana/pachet DB -> skill `roa-domeniu-rutare` +- final de sesiune sau de lucrare / "salveaza ce ai invatat" / actualizezi documentatia sau fluxurile -> skill `roa-actualizare-doc` diff --git a/Clase/oimobilizari.vc2 b/Clase/oimobilizari.vc2 index fc3488d..7bdd3ca 100644 --- a/Clase/oimobilizari.vc2 +++ b/Clase/oimobilizari.vc2 @@ -4421,7 +4421,7 @@ DEFINE CLASS frm_jurnal AS _frmbase OF "..\comun\clase\_frm_base.vcx" lcFiltru = m.lcFiltru + [ AND ID_SUCURSALA = ] + Alltrim(Str(m.gnIdSucursala)) Endif - If Len(Thisform.filtru_pretty) > 0 + If Len(Thisform.filtru_pretty) > 0 And !(Thisform.filtru_pretty == "none") lcFiltru = m.lcFiltru + " and (" + Alltrim(Thisform.filtru_pretty) + ")" Endif @@ -7501,7 +7501,7 @@ DEFINE CLASS frm_lista AS _frmbase OF "..\comun\clase\_frm_base.vcx" Endif - If Len(Thisform.filtru_pretty) > 0 + If Len(Thisform.filtru_pretty) > 0 And !(Thisform.filtru_pretty == "none") lcFiltru = m.lcFiltru + " and (" + Alltrim(Thisform.filtru_pretty) + ")" Endif @@ -7856,7 +7856,7 @@ DEFINE CLASS frm_lista AS _frmbase OF "..\comun\clase\_frm_base.vcx" IIF(This.nfiscal = 1, "", ";\-;Situatia reevaluarilor - imobilizarile selectate;Situatia reevaluarilor - imobilizarile " + ; IIF(nc = 1, "corporale","necorporale") + ";\-;Situatia majorarilor - imobilizarile selectate;Situatia majorarilor - imobilizarile " + ; IIF(nc = 1, "corporale","necorporale") + ";\-;Situatia modificarilor - imobilizarile selectate;Situatia modificarilor - imobilizarile " + ; - IIF(nc = 1, "corporale","necorporale"))) + IIF(nc = 1, "corporale","necorporale")) + ";\-;Proces-verbal de casare") If Empty(m.lnOptiune) Return @@ -7874,6 +7874,9 @@ DEFINE CLASS frm_lista AS _frmbase OF "..\comun\clase\_frm_base.vcx" Do Case + CASE m.lnOptiune = IIF(This.nfiscal = 1, 9, 18) + do listare_pvcasare_mf with m.lcfiltru in oproceduri_listari.prg + Case m.lnOptiune = 1 lnSucces = update_calendar() @@ -9268,7 +9271,7 @@ DEFINE CLASS frm_lista_curs AS _frmbase OF "..\comun\clase\_frm_base.vcx" lcFiltru = "(1=1)" ENDIF - If Len(Thisform.filtru_pretty) > 0 + If Len(Thisform.filtru_pretty) > 0 And !(Thisform.filtru_pretty == "none") lcFiltru = lcFiltru + ' and ' + Alltrim(Thisform.filtru_pretty) Endif diff --git a/Programe/oproceduri_listari.prg b/Programe/oproceduri_listari.prg index 19430e3..cad3474 100644 --- a/Programe/oproceduri_listari.prg +++ b/Programe/oproceduri_listari.prg @@ -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 \ No newline at end of file +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 diff --git a/Rapoarte/pvcasare_mf.fr2 b/Rapoarte/pvcasare_mf.fr2 new file mode 100644 index 0000000..ec9a00b --- /dev/null +++ b/Rapoarte/pvcasare_mf.fr2 @@ -0,0 +1,1000 @@ +*-------------------------------------------------------------------------------------------------------------------------------------------------------- +* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!! +*-------------------------------------------------------------------------------------------------------------------------------------------------------- +*< FOXBIN2PRG: Version="1.21" SourceFile="pvcasare_mf.frx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) +* + + + + +