Files
roafacturare/docs/handoff_r6_r7_sincronizare.md
2026-08-20 22:44:52 +03:00

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.vc2 si COMUN\programe\ofacturare_editare.prg erau, la scrierea acestui fisier, in lucru la subagentul r7-sincronizare. Verifica pe disc mtime + git status in COMUN inainte sa presupui ceva; nu porni un al doilea scriitor pe ele.
  • roafacturare.PJT / .PJX / .exe apar modificate in svn 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 in vjtva_coloane (MARIUSM_AUTO, 197 randuri cu id > 0): afisat = 0 sunt liniile de TVA, afisat = 1 bazele cu cota, afisat = 2 neimpozabilele. jv = 1 tine afara explicatiile de achizitie, care altfel treceau de garda FACT-029 (au aceeasi cota). Acelasi filtru pe care il foloseste emiterea (ofacturare.prg:170).
  • NU se preia si restrictia pe cote_tva de an/luna curenta din update_jtva_coloane: ar goli lista la editarea unei facturi vechi cu cota iesita din uz (24%).
  • neexigibil = .F. (parametru omis), la fel n50/n100. Nu e presupunere: emiterea foloseste GetTaxCode(gnAn, gnLuna, ldDataAct, lnIdJtva, .F.) cu ultimii trei impliciti (ofacturare.vc2:2529 si :3101), iar pe jurnal de vanzari GetTaxCodeIdPart degenereaza exact in acel apel.
  • crsDetalii nu are data_act/id_part; vin din randul curent din crsfacturi, care e chiar antetul liniei editate (ofacturare_comun.vc2:3621-3623).
  • Combo-ul nu are ControlSource — valoarea se preia in InteractiveChange, ca sa se poata distinge "userul a atins combo-ul" de "nu l-a atins" (al doilea caz trimite null si 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:

  1. Scoate din AplicaModificareTrul cele trei campuri de valoare din REPLACE si cele trei linii care le calculeaza (lnValoarecTVA, lnValoareTVA, lnValoareFtva), plus lnCantitate daca ramane nefolosit. Raman pretv, pretvtva, tvav. Verifica si LOCAL-urile declarate, si comentariul-antet al lui AplicaSincronizareArticole.
  2. Write-back pe omodificari.vc2 (txt2vcx.ps1 -TextFile ... -AllowComun), apoi dovada prin reconversie cu vcx2txt.ps1 intr-un cache temporar si diff - trebuie 0 linii.
  3. Ruleaza cele doua suite (vezi mai jos), o suita per apel, cu .fxp sters inainte.
  4. Raspunde la intrebarea de fapt ramasa deschisa (cine recalculeaza valoarev/valtvav/valoarevcTVA dupa sincronizare) - doar raspuns, fara reparatie.
  5. Adauga cele doua puncte in changelog, regenereaza docs\diff_r6_punct6.md si 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 pretv si tvav. Versiunea initiala a brief-ului cerea si valoarev/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/valoarevcTVA pe randul trul dupa 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, ramura pretvtva, :13566-13587. Doua precizii diferite: gnPPretV pentru preturi, gnPC pentru valori.
  • calculeaza_valori_rul nu se poate apela direct din sincronizare: isi alege cursorul din This.pgfArticole.ActivePage (:13532-13533) si nimereste trul doar cand pagina activa e 1; sincronizarea porneste de pe pagina 3, deci ar scrie in trul_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 + .vct
  • COMUN\clase\omodificari.vcx + .vct (dupa runda 7)
  • COMUN\programe\ofacturare_editare.prg (dupa runda 7)
  • changelog_roafacturare.txt
  • docs\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 <<EOF si python -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 .vc2 foloseste mod binar ('rb'/'wb'): e CRLF peste tot si cp1250 pe diacritice.
  • txt2vcx.ps1 are parametrul -TextFile, nu -Source (vcx2txt.ps1 are -Source). Ambele au nevoie de -ProjectRoot si -CacheRoot date explicit pentru acest proiect.
  • Write-back-ul esueaza cat timp ruleaza vfp9.exe — tine .vcx/.vct exclusiv. Se verifica cu Get-Process vfp9 inainte. Procesul e al lui Marius: nu se omoara, se cere inchiderea.
  • Un subagent poate raporta idle si apoi sa scrie in fisier. S-a intamplat; era sa produca doi scriitori pe aceeasi metoda. Verifica mtime/md5 pe disc inainte sa preiei un fisier, si spune-le explicit sa nu raporteze idle cu lucru in curs.
  • svn status cere --depth sau atentie la externals: COMUN apare ca X (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.

  1. Perimetrul M2 corectat — valoarev/valtvav/valoarevcTVA scoase din AplicaModificareTrul, impreuna cu lnValoarecTVA/lnValoareTVA/lnValoareFtva/lnCantitate si cu LOCAL-urile si comentariile-antet ale ambelor functii. Raman pretv, pretvtva, tvav.
  2. Write-back pe omodificari.vc2 FACUT 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: md5 d23691466b7017380fe36099943b3208, diff 0 linii.
  3. Ambele suite rulate: test_s4b_sincronizare 44/0, test_s4b_dialog 35/0. A fost nevoie de o corectie de fixture (gnPPretV, coloanele pretv/tvav in cursorul trul) plus un caz nou cu TVA 19% — detalii in docs\raport_r7_sincronizare.md.
  4. Intrebarea de fapt: raspunsa — nu le recalculeaza nimeni; VALOAREV/VALTVAV ajung invechite in Oracle, VALOAREVCTVA nu e coloana in RUL. Raportat ca defect, nereparat.
  5. Changelog completat (2 randuri in :modificare:, blocul 2.11.15) si diff regenerat ca docs\diff_r6_r7_pentru_commit.md (inventarul intregului commit; docs\diff_r6_punct6.md ramane ca rationament detaliat al punctului 6).

Nimic nu e intr-o stare periculoasa

  • Niciun fisier editat fara write-back. Nicio tranzactie deschisa. vfp9.exe nu ruleaza.
  • Nimic nu e comis — nici SVN, nici git, nici in COMUN. Se asteapta aprobarea pe docs\diff_r6_r7_pentru_commit.md, apoi svn commit tintit + roa_sync.bat.
  • roafacturare.PJT/.PJX/.exe raman modificate din sesiunea de VFP a lui Marius: nu se comit.