Curatenie ceruta dupa inchiderea lui #6. Folderul cercetare\ NU se putea sterge in bloc: plan_13 se sprijina pe el cu 85 de trimiteri, deci e baza de dovezi a planului aflat in lucru. Impartirea: - 14 cercetari trans-proiect trec in COMUN\docs\cercetare\ - valuta si curs, TVA/VANZARI, consumatorii VANZARI din toata suita, integrarile #10/#11/#12, watchdog VFP, proiectarea Oracle a lui S5, view-ul VVANZARI_ARTICOLE. Nu sunt ale ROAFACTURARE, iar #10/#11/#12 se reiau chiar din ele. - 20 de rapoarte de executie ale lui #6, nereferite de nimic viu, sterse. - 91 raman, neatinse. Trimiterile catre handoff-urile si diff-urile intermediare deja desfiintate au fost curatate peste tot (39 de fisiere): 50 catre handoff-uri, 37 catre diff-uri aplicate, plus caile celor mutate in COMUN. Zero trimiteri rupte ramase. progres.md preia rolul de predare: ce ramane din #6 (cele sase documente parazite, cele doua esecuri reale din S8 pe factura din aviz), cifrele de test citite din log, si cele doua capcane de mediu platite - .FXP vechi executat in locul .prg-ului, si GETFONT() care atarna un formular instantiat fara goApp. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SN8snvkk94KuhWwoXUUey3
3.8 KiB
Review: diff aplicat (sters) (omodificari.vc2, frm_modific2024)
Status: GATA. Review read-only, fara editari de cod. Nicio tranzactie/proces deschis.
Scop verificat
diff aplicat (sters) pe COMUN/clase/omodificari.vc2:
- insereaza coloana de grid
cPretAchizitieArt(legata detvd.pret_achizitie) intrecPretArt(Column6) si fostulcPretCuTvaArt(Column7), renumeroteaza Column7..14 -> 8..15; - adauga campul
id_vanzare_setin cursorultvd; - adauga validare noua in
inainte_de_do_termin(blocOFACTURARE_EDITARE); - adauga/modifica handlere
WhenpecCantitateArt.Text1,cPretArt.Text1,cPretAchizitieArt.Text1,cPretCuTvaArt._checkbox1.
Verificat si confirmat OK (fara regresie)
- Renumerotarea Column7->15: toate proprietatile (
ControlSource,Name,Format,InputMask,ReadOnly,Width,Sparse,DynamicForeColor) se pastreaza identic fata de valorile pre-diff, verificat linie cu linie in hunk-urile de laomodificari.vc2:12341-12450. - Nicio alta parte a fisierului nu refera coloanele
grdArticoleFacturape index numeric (grep confirmat - singurele hit-uriGrid1.ColumnNapartin altui grid, in alta sectiune a clasei), deci renumerotarea nu putea sparge tacut o referinta indexata. - Coloana noua
cPretAchizitieArtprimeste acelasi tratamentDynamicForeColorca surorile ei. - Garda de editare pentru
cPretAchizitieArt(blocheaza editarea candid_vanzare_det<>0) e consistenta cuCOMUN/programe/ofacturare_editare.prg(ScrieArticoleFacturaEditate): UPDATE-ul pentru liniile existente NU scriepret_achizitieinapoi, deci blocarea editarii exact pe acele randuri e corecta, nu o scapare.
Findings (3, niciunul cu severitate "blocker" cert, dar merita fix inainte de commit)
-
omodificari.vc2:14330 - blocul nou de validare (
IF "OFACTURARE_EDITARE" $ ...) faceSELECT tvd+SCAN ... RETURN .F.fara sa salveze/restaurezeRecno()pe tvd inainte de return; restaureaza doar workarea activa (SELECT (m.lnAreaTvd)). Toate celelalte metode din fisier care fac SCAN pe un workarea (15+ precedente gasite prin grep pelnRecno) salveazaRecno()inainte si facGOTO/GOinapoi. Scenariu: userul incearca sa salveze, o linie mai jos pica validarea -> pozitia curenta in tvd ramane unde s-a oprit SCAN-ul (nu randul pe care userul lucra), posibil sa sara vizual randul selectat in grid dupa esec. -
omodificari.vc2:14350 - avertismentul de
pret_achizitie=0la salvare exempteaza doarid_vanzare_det<>0, dar garda de editarecPretAchizitieArt.Text1.When(linia 16514) exempteaza siid_vanzare_set<>0. Un rand nou dintr-un set de articole (id_vanzare_set<>0,id_vanzare_det=0) cupret_achizitie0/null va primi nag-ul Da/Nu la fiecare salvare, fara ca userul sa poata edita campul ca sa-l corecteze (editarea e blocata de guard). -
omodificari.vc2:16513 -
cPretAchizitieArt.Text1areWhen(seteazaoldvalue) dar nu are unValidpereche, spre deosebire decCantitateArt.Text1(16499) sicPretArt.Text1(16520), care compara oldvalue/newvalue si apeleazaThisform.calculeaza_valori_articol()->REPLACE lmodificat WITH .T.. Editarea izolata apret_achizitienu marcheaza randullmodificat. Nu am gasit un consumator cert allmodificatcare sa depinda de asta pentru persistenta (INSERT-ul de linii noi inScrieArticoleFacturaEditatenu filtreaza dupalmodificat), deci impactul functional e incert, dar inconsistenta cu patternul stabilit ramane.
Ce NU s-a facut (in afara scopului acestui review)
- Nu s-a validat
ofacturare_editare.prg/ partea Oracle in detaliu (in grija altor agenti din sesiune: s5-helper, s5-oracle, s5-script, s5-view). - Nu s-a rulat harness-ul de teste headless.
- Niciun fix nu a fost aplicat - doar review, findings-urile de mai sus asteapta decizie inainte de commit.