13 KiB
Handoff — runda 6 (punctul 6) + runda 7 (sincronizare articole-rulaje)
Scris 20.08.2026, seara. Sesiunea principala a trecut de pragul de context. Numai stare, fara analize noi.
Stare periculoasa — citeste asta prima
- Nimic nu e comis. Nici SVN, nici git, nici in
COMUN. Marius a decis explicit: un singur commit, dupa ce sunt gata toate trei lucrarile (punctul 6 + cele doua cereri de runda 7). Punctul 6 e gata si probat, dar asteapta. COMUN\clase\omodificari.vc2siCOMUN\programe\ofacturare_editare.prgerau, la scrierea acestui fisier, in lucru la subagentulr7-sincronizare. Verifica pe discmtime+git statusinCOMUNinainte sa presupui ceva; nu porni un al doilea scriitor pe ele.roafacturare.PJT/.PJX/.exeapar modificate insvn status. Nu sunt ale noastre — vin din sesiunea de VFP a lui Marius. Decizia lui: se lasa asa, nu se comit, nu se reverteaza.
1. Punctul 6 — TERMINAT, verificat, necomis
Explicatia TVA in dialogul de modificare a articolului deschis din frm_facturi.
Cod, pe numerotarea finala (COMUN\clase\ofacturare_comun.vc2):
| ce | unde |
|---|---|
data_act + id_part puse pe poRec din antetul crsfacturi |
frm_facturi.do_modifica_explicatie, :4650-4651 |
layout: Height 370->431, randul cbo_saft coborat, obiecte noi _shape4 / lbExplTva / cbo_expl_tva / lbExplTvaInfo |
frm_modifica_articol_factura, :5140-5300 |
proprietatea nidjtvaales (+ intrarea *p:, obligatorie) |
:5147, :5158 |
| popularea combo-ului, filtrata | Init, :5328-5360 |
| filtrul SQL | :5340-5342 |
derivarea taxcode |
cbo_expl_tva.InteractiveChange |
al 5-lea parametru pozitional, literal null cand combo-ul n-a fost atins |
inainte_de_do_termin |
Destroy inchide crsExplTvaCbo + crsExplTvaArt |
in aceeasi clasa |
Write-back FACUT si dovedit (nu prin mtime): reconversie binar -> text intr-un cache temporar,
diff 0 linii, md5 identic. Binar la 19:59. Encoding: 13 octeti >0x7F, zero EF BF BD,
CRLF pe toate liniile; octetul diacritic din lbExplTva.Caption e 0xFE (cp1250), verificat
citind din binar.
Probat pe ecran de Marius, de doua ori (a doua oara dupa corectia de filtru). E OK.
Ce s-a stabilit — nu se redeschide
- Filtrul listei:
id_jtva_coloana > 0 AND afisat > 0 AND jv = 1 AND cota_tva = <cota liniei>. Verificat pe date invjtva_coloane(MARIUSM_AUTO, 197 randuri cuid > 0):afisat = 0sunt liniile de TVA,afisat = 1bazele cu cota,afisat = 2neimpozabilele.jv = 1tine afara explicatiile de achizitie, care altfel treceau de gardaFACT-029(au aceeasi cota). Acelasi filtru pe care il foloseste emiterea (ofacturare.prg:170). - NU se preia si restrictia pe
cote_tvade an/luna curenta dinupdate_jtva_coloane: ar goli lista la editarea unei facturi vechi cu cota iesita din uz (24%). neexigibil=.F.(parametru omis), la feln50/n100. Nu e presupunere: emiterea folosesteGetTaxCode(gnAn, gnLuna, ldDataAct, lnIdJtva, .F.)cu ultimii trei impliciti (ofacturare.vc2:2529si:3101), iar pe jurnal de vanzariGetTaxCodeIdPartdegenereaza exact in acel apel.crsDetaliinu aredata_act/id_part; vin din randul curent dincrsfacturi, care e chiar antetul liniei editate (ofacturare_comun.vc2:3621-3623).- Combo-ul nu are
ControlSource— valoarea se preia inInteractiveChange, ca sa se poata distinge "userul a atins combo-ul" de "nu l-a atins" (al doilea caz trimitenullsi lasa procedura PL/SQL pe ramura veche). - Ordinea de tab:
Ed_tx_simplu1=1,cbo_expl_tva=2,cbo_saft=3,BUT_TERMIN1=4,But_renunt1=5,Lb_titlu_alb_b121=6,lbSaft=7,lbExplTva=8.
Oracle — nimic de facut
ff_2026_08_20_02_COMUN_PACK_FACTURARE.sql era deja aplicat pe schema MARIUSM_AUTO de pe
ROA_CENTRAL, contrar notei "NERULAT" din rapoartele vechi. Dovezi: rand 20.08.2026 / seq 2 / COMUN_PACK_FACTURARE in VERSIUNE; PACKAGE + PACKAGE BODY VALID, last_ddl_time 13:56:38;
sursa vie din ALL_SOURCE identica cu fisierul de pe disc, 0 linii diferenta pe 16 407.
Nu se re-aplica ff_2026_08_20_01 — ar sterge punctul 6.
2bis. ACTUALIZARE 20.08.2026 20:40 - starea reala pe disc, dupa oprirea subagentului
Sesiunea subagentului r7-sincronizare a fost inchisa din greseala, inainte sa scrie raport.
docs\raport_r7_sincronizare.md nu exista. Starea de mai jos e citita direct de pe disc,
nu dintr-un raport.
STARE PERICULOASA: text editat FARA write-back
| fisier | text | binar | concluzie |
|---|---|---|---|
COMUN\clase\omodificari.vc2 |
20:35 | .vcx/.vct la 14:08 |
modificarea NU exista in binar, deci nu exista in aplicatie |
COMUN\programe\ofacturare_editare.prg |
20:33 | - | .prg, nu are nevoie de write-back |
COMUN\clase\ofacturare_comun.vc2 |
19:59 | 19:59, diff 0 linii | punctul 6, sincronizat si verificat |
vfp9.exe nu ruleaza - lock-ul e liber, write-back-ul se poate face oricand.
M1 - facut pe text, corect
Blocul "al doilea punct de declansare" a disparut din frm_modific2024.inainte_de_do_termin
(0 potriviri pe comentariu). AfiseazaDialogSincronizareArticole() mai are un singur
apelant, omodificari.vc2:16665, adica butonul. Corect. Ramane de facut write-back-ul.
M2 - facut pe text, dar DEPASESTE perimetrul aprobat
AplicaModificareTrul (ofacturare_editare.prg) calculeaza si scrie acum:
pretv, pretvtva, tvav (cerute) plus valoarev, valtvav, valoarevcTVA - pe care
Marius le-a respins explicit: sincronizarea e intre cantitate si preturi, nu valori.
Subagentul a apucat sa aplice varianta initiala a brief-ului; corectia de perimetru nu a mai
ajuns la el.
De facut in sesiunea urmatoare, in aceasta ordine:
- Scoate din
AplicaModificareTrulcele trei campuri de valoare dinREPLACEsi cele trei linii care le calculeaza (lnValoarecTVA,lnValoareTVA,lnValoareFtva), pluslnCantitatedaca ramane nefolosit. Ramanpretv,pretvtva,tvav. Verifica siLOCAL-urile declarate, si comentariul-antet al luiAplicaSincronizareArticole. - Write-back pe
omodificari.vc2(txt2vcx.ps1 -TextFile ... -AllowComun), apoi dovada prin reconversie cuvcx2txt.ps1intr-un cache temporar sidiff- trebuie 0 linii. - Ruleaza cele doua suite (vezi mai jos), o suita per apel, cu
.fxpsters inainte. - Raspunde la intrebarea de fapt ramasa deschisa (cine recalculeaza
valoarev/valtvav/valoarevcTVAdupa sincronizare) - doar raspuns, fara reparatie. - Adauga cele doua puncte in changelog, regenereaza
docs\diff_r6_punct6.mdsi cere aprobarea de commit.
Nimic nu a fost testat: cele doua suite nu au fost rulate.
2. Runda 7 — IN LUCRU la subagentul r7-sincronizare
Brief executabil, cu liniile si formula: docs\brief_r7_sincronizare.md.
Raportul lui va fi la docs\raport_r7_sincronizare.md.
M1 — sincronizarea articole-rulaje porneste doar din buton. Se sterge blocul "al doilea
punct de declansare" din frm_modific2024.inainte_de_do_termin, omodificari.vc2:14484-14494.
Butonul pgfArticole.PAGE3.cmdSincronizeazaArticole.Click (:16671) ramane singura cale.
Dupa stergere raman fara consumator metoda SemnaturaDivergenteSincronizare (:14840),
proprietatea cSemnaturaSincronizare si atribuirea de la :14956 — se semnaleaza, nu se sterg.
M2 — AplicaModificareTrul (ofacturare_editare.prg:924) scrie azi doar cant/cante si
pretvtva; trebuie sa scrie si pretv, si tvav.
- Perimetru corectat de Marius: DOAR
pretvsitvav. Versiunea initiala a brief-ului cerea sivaloarev/valtvav/valoarevcTVA— respinsa: sincronizarea e intre cantitate si preturi, nu valori. Nu o reintroduce. - Intrebare de fapt inca deschisa, ceruta subagentului, fara modificare de cod: cine recalculeaza
valoarev/valtvav/valoarevcTVApe randultruldupa sincronizare, inainte de scrierea in Oracle? Trei concluzii posibile — le recalculeaza cineva / le recalculeaza salvarea / nu le recalculeaza nimeni si ajung vechi in Oracle. In ultimul caz se raporteaza ca defect, nu se repara; decide Marius. - Formula canonica, de reutilizat, nu de reinventat:
omodificari.vc2,calculeaza_valori_rul, ramurapretvtva,:13566-13587. Doua precizii diferite:gnPPretVpentru preturi,gnPCpentru valori. calculeaza_valori_rulnu se poate apela direct din sincronizare: isi alege cursorul dinThis.pgfArticole.ActivePage(:13532-13533) si nimerestetruldoar cand pagina activa e 1; sincronizarea porneste de pe pagina 3, deci ar scrie intrul_obinv.
Teste obligatorii pentru runda 7
COMUN\utile\Teste\editare_factura\test_s4b_sincronizare.prg (42 cazuri, sectiunea C e chiar
directia ARTICOLE_SURSA) si test_s4b_dialog.prg (35 cazuri). Reguli: sterge .fxp-ul inainte de
fiecare rulare; o singura suita per apel de comanda; cifra se ia numarand PASS/FAIL din log,
iar dovada ca rularea a ajuns la capat e linia de REZULTAT (care contine ea insasi cuvintele
PASS si FAIL — un Select-String naiv raporteaza cu unu mai mult din fiecare).
3. Changelog
changelog_roafacturare.txt — intrarea rundei 6 e scrisa, in blocul existent 2.11.15, data
mutata la 20/08/2026. Versiunea nu se bifurca cat timp #6 nu e in productie (decizia lui Marius,
commit 09f9d47).
Ramas de adaugat, dupa ce runda 7 e gata: sincronizarea porneste doar din buton, si copierea
pretv/tvav in rulaj.
4. Ce se comite, cand vine aprobarea
SVN (sursa de adevar), tintit — pe binare, niciodata pe .vc2/.sc2:
COMUN\clase\ofacturare_comun.vcx+.vctCOMUN\clase\omodificari.vcx+.vct(dupa runda 7)COMUN\programe\ofacturare_editare.prg(dupa runda 7)changelog_roafacturare.txtdocs\progres.md
Nu: roafacturare.PJT / .PJX / .exe. Imediat dupa svn commit -> roa_sync.bat, si se
raporteaza revizia SVN si ce a intrat pe main. Fisierele noi din docs\ sunt doar in git.
Diff-ul pentru aprobare, deja generat pentru punctul 6: docs\diff_r6_punct6.md (contine si
rationamentul filtrului, cu cifrele pe date). Trebuie regenerat dupa ce intra runda 7.
5. Capcane de mediu platite in aceasta sesiune
python <<EOFsipython -c "..."nu executa nimic prin tool-ul Bash de pe masina asta — exit 0, zero efect, fara eroare. Scrie scriptul intr-un fisier si ruleaza-l pe cale absoluta. Pentru.vc2foloseste mod binar ('rb'/'wb'): e CRLF peste tot si cp1250 pe diacritice.txt2vcx.ps1are parametrul-TextFile, nu-Source(vcx2txt.ps1are-Source). Ambele au nevoie de-ProjectRootsi-CacheRootdate explicit pentru acest proiect.- Write-back-ul esueaza cat timp ruleaza
vfp9.exe— tine.vcx/.vctexclusiv. Se verifica cuGet-Process vfp9inainte. Procesul e al lui Marius: nu se omoara, se cere inchiderea. - Un subagent poate raporta
idlesi apoi sa scrie in fisier. S-a intamplat; era sa produca doi scriitori pe aceeasi metoda. Verificamtime/md5 pe disc inainte sa preiei un fisier, si spune-le explicit sa nu raporteze idle cu lucru in curs. svn statuscere--depthsau atentie la externals:COMUNapare caX(external), iar starea lui se vede separat.
ACTUALIZARE FINALA 20.08.2026 22:40 — toate cele trei lucrari sunt gata
Pasii 1-5 din lista de mai sus sunt executati. Handoff-ul de mai sus ramane ca istoric; starea curenta e cea de aici.
- Perimetrul M2 corectat —
valoarev/valtvav/valoarevcTVAscoase dinAplicaModificareTrul, impreuna culnValoarecTVA/lnValoareTVA/lnValoareFtva/lnCantitatesi cuLOCAL-urile si comentariile-antet ale ambelor functii. Ramanpretv,pretvtva,tvav. - Write-back pe
omodificari.vc2FACUT si dovedit — nu mai exista fisier editat fara binar. Prima incercare a picat la fidelity check: subagentul lasase linia 14485 goala in loc de\t\t. Restaurata. Dovada pe binarul din proiect: md5d23691466b7017380fe36099943b3208, diff 0 linii. - Ambele suite rulate:
test_s4b_sincronizare44/0,test_s4b_dialog35/0. A fost nevoie de o corectie de fixture (gnPPretV, coloanelepretv/tvavin cursorultrul) plus un caz nou cu TVA 19% — detalii indocs\raport_r7_sincronizare.md. - Intrebarea de fapt: raspunsa — nu le recalculeaza nimeni;
VALOAREV/VALTVAVajung invechite in Oracle,VALOAREVCTVAnu e coloana inRUL. Raportat ca defect, nereparat. - Changelog completat (2 randuri in
:modificare:, blocul 2.11.15) si diff regenerat cadocs\diff_r6_r7_pentru_commit.md(inventarul intregului commit;docs\diff_r6_punct6.mdramane ca rationament detaliat al punctului 6).
Nimic nu e intr-o stare periculoasa
- Niciun fisier editat fara write-back. Nicio tranzactie deschisa.
vfp9.exenu ruleaza. - Nimic nu e comis — nici SVN, nici git, nici in
COMUN. Se asteapta aprobarea pedocs\diff_r6_r7_pentru_commit.md, apoisvn committintit +roa_sync.bat. roafacturare.PJT/.PJX/.exeraman modificate din sesiunea de VFP a lui Marius: nu se comit.