diff --git a/CLAUDE.md b/CLAUDE.md index 1c419c0..cca28b6 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -170,6 +170,10 @@ ROACONT - X.Y.Z --> ``` +Regula de continut: changelog-ul e pentru utilizatori — se scrie **doar ce vede utilizatorul**, +scurt si compact. Erorile introduse si reparate in aceeasi versiune nelivrata **nu se trec** +(clientul nu le-a vazut niciodata); intrarea versiunii curente se rescrie, nu se acumuleaza. + Tags in use: `:nou:` (new feature), `:modificare:` (change/fix to existing behavior), `:eroare:` (bug fix), `:adaugare:` (addition). Version numbers increment per entry (current series is `2.11.x`). When asked to log a change, follow this exact format/tag set rather than @@ -215,6 +219,29 @@ Preferintele lui Marius pentru sesiunile pe acest proiect: (`.vcx`/`.scx`), diff-ul lizibil se face pe forma text `.vc2`/`.sc2` regenerata cu `git_sync.ps1`, inainte de write-back cu `txt2vcx.ps1`. +## Stil de raspuns: scurt si concret + +Marius vrea raspunsuri **clare, concise, fara vorbarie**. Regula, nu preferinta. + +- **Starea si ce urmeaza, nu povestea.** Ce e gata, ce e stricat, ce trebuie decis, ce urmeaza — + in liste scurte, cu fisier si linie. Fara reconstituirea drumului pana la rezultat. +- **Fara naratiune de proces**: ce a raportat fiecare agent, cine ce a corectat, cum au fost + coordonate benzile. Intra in `docs/`, nu in raspuns. +- **Fara laude si fara reluari.** Nu repeta ce s-a spus deja in conversatie. +- Detaliile tehnice lungi (dovezi, iesiri de test, metodologie) se scriu in fisier si se + **trimite la el**, nu se copiaza in raspuns. +- Cand e ceva de decis: enunta decizia si optiunile in cateva randuri, cu recomandarea ta. + +**Formatul obligatoriu al raspunsului**, in aceasta ordine, maxim cateva randuri fiecare: + +1. **Am facut:** ce e gata (fisier:linie). +2. **Urmeaza:** ce fac mai departe. +3. **De la tine:** intrebarea, clar si simpla, cu recomandarea mea. + +Explicatiile, dovezile si descoperirile colaterale merg in `docs/`, cu un link. Nu se reia in +raspuns rationamentul, nu se explica de ce a fost greu, nu se justifica alegerile decat daca +sunt cerute. + ## Skill routing When the user's request matches an available skill, invoke it via the Skill tool. When in doubt, invoke the skill. diff --git a/Programe/orapoarte.prg b/Programe/orapoarte.prg index b9df626..3be494f 100644 --- a/Programe/orapoarte.prg +++ b/Programe/orapoarte.prg @@ -1991,9 +1991,10 @@ select * Use In (Select('cIncasariBanca2')) *** Verific pe ANAF starea split tva la data curenta + *!* 31.07.2026 marius.mutu: ordine explicita MASA (CACHE,ANAF) - corect pentru data trecuta pdDataI SELECT distinct cod_fiscal FROM cFacturiTVA INTO CURSOR cCodFiscalTemp loVerificareANAF = CREATEOBJECT("VerificareANAF") - loVerificareANAF.VerificaListaCIF("cCodFiscalTemp", m.pdDataI, "crsANAF") + loVerificareANAF.VerificaListaCIF("cCodFiscalTemp", m.pdDataI, "crsANAF", "MASA") USE IN (SELECT('cCodFiscalTemp')) IF USED("crsAnaf") *!* crsANAF (cui N(13), data D, denumire V(100), firma V(100), adresa C(244), scpTVA L, data_inceput_ScpTVA D, data_sfarsit_ScpTVA D, data_anul_imp_ScpTVA D, mesaj_ScpTVA C(244), ; @@ -2308,9 +2309,10 @@ select * Use In (Select('cIncasariBanca2')) *** Verific pe ANAF starea split tva la data curenta + *!* 31.07.2026 marius.mutu: ordine explicita UNIC (ANAF intai) - starea de azi, cache-ul ramane plasa de siguranta SELECT distinct cod_fiscal FROM cFacturiTVA INTO CURSOR cCodFiscalTemp loVerificareANAF = CREATEOBJECT("VerificareANAF") - loVerificareANAF.VerificaListaCIF("cCodFiscalTemp", Date(), "crsANAF") + loVerificareANAF.VerificaListaCIF("cCodFiscalTemp", Date(), "crsANAF", "UNIC") USE IN (SELECT('cCodFiscalTemp')) IF USED("crsAnaf") *!* crsANAF (cui N(13), data D, denumire V(100), firma V(100), adresa C(244), scpTVA L, data_inceput_ScpTVA D, data_sfarsit_ScpTVA D, data_anul_imp_ScpTVA D, mesaj_ScpTVA C(244), ; diff --git a/TODOS.md b/TODOS.md index 7966546..645caa1 100644 --- a/TODOS.md +++ b/TODOS.md @@ -97,7 +97,8 @@ Sursa: `docs/design-alegere-partener-anaf.md`, REVIZIA 4 (implementata doar nive 4,00 s cu SetTimeouts(2000,2000,3000,3000); WinHTTP asincron `Send()` 0,009 s, `WaitForResponse(0)` 0 s. Ramane nemasurat comportamentul la rafale (de la al catelea 429). -## P4 — Contract 404 pe drumul batch ANAF (D406 si sincronizari) +## P4 — Contract 404 pe drumul batch ANAF (D406 si sincronizari) — PRELUAT +Preluat 31.07.2026, povestea S5 din transa `docs/contract-cache-anaf.md` (`docs/diff-S5-contract-404-batch.md`). - **Ce:** `validare.prg:1827` citeste corpul raspunsului doar pe `Status = 200`, la fel cum facea si wrapper-ul single-CUI. Pe loturi, un CUI inexistent si o cadere de serviciu ajung la utilizator ca acelasi lucru ("nu s-a putut verifica"). @@ -129,3 +130,98 @@ Sursa: `docs/design-alegere-partener-anaf.md`, REVIZIA 4 (implementata doar nive - **Conditie de intrare:** reclamatii pe parteneri externi marcati rosu, vizibile in logul de discordante (`anaf_verif_cautare`). - **Efort:** M. **Depinde de:** masuratoarea lantului scurt. + +## Amanari review /autoplan — cache ANAF pe ISTORIC_CODURI_FISCALE (29.07.2026) + +Sursa: `docs/design-cache-anaf-istoric-coduri-fiscale.md`, sectiunea GSTACK REVIEW REPORT. + +## P2 — Cascada de ferestre modale la verificarea in masa cu ANAF cazut +- **Ce:** `AMESSAGEBOX` este apelat in interiorul buclei pe grupuri din + `ANAF_SincronWebService_PlatitorTva` (`COMUN\programe\validare.prg:1968`, `:1970`, `:1976`, + `:1993`, `:1996`). La 3000 de parteneri = 30 de grupuri, deci pana la 30 de ferestre modale + de inchis manual la o singura rulare de D406. +- **De ce:** cu ANAF cazut, plasa de siguranta introdusa de proiectarea din 29.07 lucreaza in + spatele acestui zid de modale — castigul e invizibil pentru utilizator. Probabil mai valoros + decat cache-ul insusi. +- **Fix:** un singur mesaj la sfarsitul rularii (numar de grupuri esuate), nu unul per grup. +- **De ce nu acum:** atinge interpretarea raspunsului pe traseul in masa (acelasi cod ca P4 de + mai sus), deci cere runda proprie de teste pe declaratie. +- **Efort:** S-M. **Depinde de:** mock-ul pe calea batch (T1 din review). + +## P3 — Bucla O(n^2) la imperecherea rezultatului ANAF cu lista de parteneri +- **Ce:** `COMUN\clase\overificari.vc2:2722` face `LOCATE FOR ...` liniar in interiorul unui + `SCAN` peste cursorul de raspuns ANAF. Costul creste cu patratul numarului de parteneri. +- **De ce:** tranșa de cache adauga peste bucla un apel de procedura Oracle per cod, deci + ambele cresc pe acelasi traseu. +- **Conditie de intrare:** masuratoarea ceruta oricum la E4, pe un lot de ~500 de coduri. + Daca timpul e acceptabil, nu se atinge. +- **Efort:** M. **Depinde de:** masuratoarea de la E4. + +## P3 — Parsarea sarita cand primul rezultat nu are `dcod_judet` +- **Ce:** `COMUN\programe\validare.prg:1986-1994` — daca + `found_vfpsafe_[1].adresa_domiciliu_fiscal.dcod_judet` lipseste (cazul unui lot in care toate + codurile sunt `notFound`, deci `found` e gol), se afiseaza fereastra de eroare "Serviciul web + ANAF intors mesaj de eroare" si nu se parseaza nimic, desi raspunsul e valid. +- **De ce:** face ca un lot legitim de coduri inexistente sa arate ca o defectiune de serviciu. +- **Efort:** S. **Depinde de:** acelasi contract 404 pe calea batch (P4 de mai sus). + +## P3 — `DATATVAMFIN` ramane text +- **Ce:** `VARCHAR2(30)` din 2012, afisat direct la `COMUN\programe\oproceduri_comune.prg:4783`. + Noile coloane de interval il fac redundant. +- **De ce nu acum:** decizia explicita a proiectarii din 29.07 (Intrebarea deschisa 2). +- **Efort:** S. **Depinde de:** livrarea coloanelor de interval. + +## Amanari transa cache ANAF — completare (01.08.2026) + +Sursa: `docs/diff-TRANSA-cache-anaf.md`, `docs/handoff_cache_anaf.md`. + +## P1 — Rulare reala prin `PACK_UPDATE` pe TEST, inainte de prima livrare (decizie de EXECUTIE) +- **Ce s-a facut deja:** cele trei scripturi ale transei (`co_2026_07_30_02_RTVAI_PACK_ROARTVAI.sql`, + `co_2026_07_31_01_COMUN_ISTORIC_CF.sql`, `ff_2026_07_31_01_COMUN_ISTORIC_CF.sql`) figurau + "aplicate" in tabela `versiune` din rulari manuale sqlplus, desi coada reala `UPD_DATABASE` nu + avea niciun rand pentru ele. **Randurile s-au curatat** (`CONTAFIN_ORACLE` -9, `MARIUSM_AUTO` -7, + `ACN` -1, zero randuri ramase pentru cele trei scripturi) si **toate trei s-au dovedit + re-rulabile** (DDL gardat, inserturi `where not exists`, pachete `CREATE OR REPLACE`) — nu mai + e nicio decizie tehnica de luat. +- **Ce ramane:** doar **executia** propriu-zisa prin `PACK_UPDATE`, netrasa inca. + `SCRIPTURI_CLAR` mai contine scripturi straine de transa, neaplicate — daca motorul ia tot ce + gaseste pe disc, ar rula si munca in lucru a altcuiva pe un server de test partajat. Banda Oracle + stabileste pe sursa daca fluxul se poate limita la cele trei fisiere ale transei. +- **Efort:** S. **Depinde de:** decizia lui Marius de a executa `PACK_UPDATE` pe TEST (nimeni n-a + apasat butonul inca); detaliu complet `docs\audit-oracle-final.md`. + +## P3 — Export Excel din verificarea in masa (D406/D394) nu duce mai departe provenienta cache +- **Ce:** `Programe\orapoarte.prg` (`Copy To ... Type Xl5`) nu adauga `sursa`/`data_sursa` in + fisierul exportat — un fisier trimis mai departe nu arata ca o parte din verdicte vin din cache, + nu dintr-un raspuns proaspat ANAF. +- **De ce nu acum:** cursoarele exportate (`cFacturiTVA` si perechea de la a doua raportare) ar + cere o coloana noua, iar `ALTER TABLE ADD COLUMN` pica pe cursor liber cu nume de camp peste 10 + caractere (`platitortva` are 11) — ar cere rematerializarea cursorului in doua situri de + raportare, cu schimbarea formatului unui fisier care ajunge la client. Amanat explicit de + Marius, 01.08.2026. +- **Efort:** M. **Depinde de:** decizie separata daca merita rematerializarea cursoarelor. + +## P2 — Clarificare cu ANAF: marginea perioadelor scpTVA/splittva/inactiv +- **Ce:** cache-ul ANAF (`ISTORIC_CODURI_FISCALE`) foloseste conventie inclusiva la sfarsitul + intervalelor `SCPTVA`/`SPLITTVA`/`INACTIV` (spre deosebire de `TVAINCASARE`, aliniat 01.08.2026 + la conventia exclusiva a RTVAI). Nu exista ground truth local (registru echivalent + `rtvai_istoric`) pentru aceste trei campuri. +- **De ce:** risc de verdicte gresite cu o zi pe declaratii D394/D406 la marginea perioadelor, + acelasi tipar de defect confirmat pe `tvaincasare` (vezi `docs\handoff_cache_anaf.md`, + sectiunea A-ter). +- **Efort:** S (o intrebare catre ANAF) -> M (aplicarea raspunsului in cod, daca schimba + conventia). **Depinde de:** raspunsul ANAF. + +## P3 — Test UI pe gridul de verificare parteneri (coloana de provenienta cache) +- **Ce:** confirmare vizuala (paint real, nu doar `EVALUATE` pe `ControlSource`) ca noua coloana + de provenienta (`sursa`/`data_sursa`, S8) se afiseaza corect in gridul de verificare. +- **De ce nu acum:** cere write-back `.vc2` pe `overificari.vc2`, deci dupa aprobarea lui Marius + pe diff. +- **Efort:** S. **Depinde de:** aprobarea write-back-ului `.vc2` al transei cache ANAF. + +## Curatenie mediu — randuri orfane in tabela `versiune` (MARIUSM_AUTO) +- **Ce:** doua randuri `co_2026_07_30_01_COMUN_ISTORIC_CF.sql` in `MARIUSM_AUTO.versiune`, din + testarea manuala a lui S1 dinainte de redenumirea in `ff_`. +- **De ce nu acum:** fara efect (motorul `PACK_UPDATE` dispecerizeaza dupa numele fisierului de pe + disc, nu dupa stringul din `versiune`) — curatenie de mediu de test, nu de productie. +- **Efort:** S. **Depinde de:** nimic, se poate face oricand. diff --git a/changelog_roacont.txt b/changelog_roacont.txt index bbce242..f98faec 100644 --- a/changelog_roacont.txt +++ b/changelog_roacont.txt @@ -1,3 +1,28 @@ + + + +