diff --git a/docs/CLAUDE.md b/docs/CLAUDE.md index 230fd14..e65b710 100644 --- a/docs/CLAUDE.md +++ b/docs/CLAUDE.md @@ -1,20 +1,27 @@ # Mod de lucru Claude ↔ Marius pe ROAGEST -## Propuneri de modificare pentru cod VFP binar (.vcx/.scx) +## Modificare cod VFP binar (.vcx/.scx) — flux write-back pe text -Clasele/formele sunt binare și se editează doar în VFP IDE, deci fluxul e: +Din 07.2026 Claude aplică singur modificările pe `.vcx`/`.scx` prin fluxul text→bin +(`txt2vcx.ps1`, detalii în CLAUDE.md rădăcină și `docs/flux-editare-vfp-text.md`): -1. Claude investighează (pe cache-ul text `_textcache_roagest`) și scrie un fișier de propunere - `docs/propuneri_.md` cu **cod complet, gata de copiat** în IDE, cu referințe - `fișier:linie` din cache și pași de testare. -2. Marius aplică modificările în VFP IDE și rulează `vcx2txt.ps1` (comanda din CLAUDE.md rădăcină) - pentru refresh-ul cache-ului text. -3. Claude verifică pe cache-ul reîmprospătat ce s-a aplicat (diff față de propunere, cazuri ratate). -4. După implementare + changelog, fișierul de propunere se șterge sau se arhivează; insight-urile - durabile descoperite pe parcurs se mută în notițe `docs/flux-*.md` / `docs/pachet-*.md`. +1. Claude investighează pe cache-ul text (`D:\ROA\_vfp_textcache\roagest`), propune modificarea + și **așteaptă acordul lui Marius pe abordare** înainte să editeze. +2. Refresh cache (`vcx2txt.ps1`), editare `.vc2`/`.sc2` **byte-safe** (PowerShell, encoding 1252, + conținut nou doar ASCII — nu Edit tool pe .vc2), apoi write-back cu `txt2vcx.ps1` + (fidelity-check obligatoriu; țintele din `COMUN\` cer `-AllowComun` + aprobare explicită, + și VFP IDE / roagest.exe complet închise — procesele reziduale țin lock pe binar). +3. Diff lizibil pentru review: text vechi regenerat din HEAD git (`vcx2txt.ps1 -Source`) + vs. cache-ul editat, `git diff --no-index` → fișier `.patch`. **Commit doar după ce Marius + confirmă pe diff și testează în IDE.** Editările de volum se deleagă la subagenți Sonnet + în background; sesiunea principală orchestrează și verifică. +4. După implementare: changelog, ștergerea fișierului de propunere/patch-ului, iar insight-urile + durabile se mută în notițe `docs/flux-*.md` / `docs/pachet-*.md`. -Când Marius a început deja o implementare, Claude compară codul lui cu originalul și listează -explicit diferențele/cazurile netratate (nu rescrie orbește). +Excepții rămase pe VFP IDE: `.mnx` (GENMENU) și `.frx` (fragile la round-trip) — pentru ele +rămâne valabil fluxul vechi cu fișier de propunere `docs/propuneri_.md` aplicat de +Marius în IDE. Când Marius a început deja o implementare, Claude compară codul lui cu originalul +și listează explicit diferențele/cazurile netratate (nu rescrie orbește). ## Acces direct la baza de date Oracle diff --git a/docs/flux-achizitie-import.md b/docs/flux-achizitie-import.md index dc71e30..e7493b8 100644 --- a/docs/flux-achizitie-import.md +++ b/docs/flux-achizitie-import.md @@ -36,6 +36,15 @@ Lanțul complet (descoperit la sesizarea „achiziție import", 07.2026): **`PACK_CONTAFIN`** (`SCRIE_IN_ACT`, `SCRIE_IN_RUL`, `SCRIE_IN_STOC`, …). `SCRIE_IN_RUL` inserează în `RUL` **exact** conținutul `RUL_TEMP` (nu derivă din ACT) — orice filtrare de rulaje se face în clientul VFP. Sursa pachetului: `COMUN\docs\PACK_CONTAFIN.pck` (vezi `COMUN\docs\oracle_export.md`). +- **Articole negestionabile** (`nom_articole.in_stoc = 0`): modelul canonic e în clasa **`nir`** + (NIR-ul obișnuit, același `ointroduceri.vcx`), mecanism din 2009 — articolul intră normal în grilă + și participă la calcule, iar în `inainte_de_do_termin`, chiar înainte de scriere, se face + `Delete From rul_temp Where in_stoc = 0` (valoarea rămâne doar pe nota contabilă, nu ajunge în + `RUL`/`STOC`). Din v2.11.6 `import_nir` e aliniat la același model, cu un cursor temporar + (`crsNegest`) care readaugă rândurile șterse în grilă dacă `oscrie_in_fisiere` eșuează. + Cursorul `rul_temp` are coloana `in_stoc` pentru că e creat din view-ul `vrul` (`where 1=2`); + la `do_adauga` coloana se umple prin `GATHER NAME loArt` din cursorul catalogului, la + `do_modiparam` (XLS) explicit din selectul pe `nom_articole`. - **Explicație TVA**: dropdown istoric `Grid1.cExplicatieTva.Combo1` (RowSource `jtva_coloane2`); modelul alternativ cu formular de căutare = `frm_modific2024.do_modifica_explicatie_tva` (`omodificari.vcx`) → `caut_explicatie_tva()` (`ocautare.prg:1934`, view `vjtva_coloane`, diff --git a/roagest.PJT b/roagest.PJT index 84c458f..966de02 100644 Binary files a/roagest.PJT and b/roagest.PJT differ diff --git a/roagest.pjx b/roagest.pjx index 4bdfdd2..bd4a16f 100644 Binary files a/roagest.pjx and b/roagest.pjx differ