sync SVN r18238

This commit is contained in:
2026-09-30 22:26:09 +03:00
parent 828577b538
commit 089e7fd330
6 changed files with 333 additions and 0 deletions

View File

@@ -1,4 +1,14 @@
<!-- <!--
29/09/2026
ROAFACTURARE - 2.11.20
:nou:
Factura si avizul verifica automat clientul la ANAF. Codul fiscal apare verde cand este corect si rosu cand este invalid sau nu corespunde datelor ANAF.
:modificare:
Butonul de verificare foloseste data facturii.
-->
<!--
17/09/2026 17/09/2026
ROAFACTURARE - 2.11.19 ROAFACTURARE - 2.11.19

12
docs/erori_deschise.md Normal file
View File

@@ -0,0 +1,12 @@
# Erori deschise — formular facturare unificat
Erori observate la rulare, neinvestigate inca. Se sterge intrarea cand e reparata.
## 1. `Alias 'CRSGESTIUNE' is not found.` la parasirea combo-ului de gestiune
- **Unde:** `FRM_FACTURARE_ARTICOLE2.GRD_FACTURA.CGESTIUNE.CCBOGESTIUNE.LOSTFOCUS`, linia 5
- **Linia:** `REPLACE nume_gestiune WITH crsGestiune.nume_gestiune, id_gestiune WITH crsGestiune.id_gestiune IN crsFactura`
- **Mediu:** MARIUSM_AUTO, 09.09.2026
- **De verificat:** cine creeaza `crsGestiune` si pe ce cale de cod ajunge `LostFocus` sa ruleze
inainte (sau dupa inchiderea) cursorului — probabil combo-ul isi pierde focusul intr-un context
in care cursorul nu a fost creat sau a fost deja inchis.

View File

@@ -0,0 +1,65 @@
# HANDOFF - verificare automata ANAF pe factura
> 30.09 seara, la cererea lui Marius: STERSE din docs/ planul, progresul, autoplan_anaf/, investigatia, diagnosticul si toate rapoartele (raport_*.md) citate mai jos. Au ramas doar acest fisier si `prompt_integrare_13_anaf.md`. Starea reala = git log pe `anaf-factura` in COMUN (`ca8e7ca..558ccda`) + mesajele de commit. Singurul pas ramas: aducerea pe `main` prin SVN + roa_sync, FARA branch (Marius: "nu vreau niciun branch"). Lista si pasii: `docs/svn_commit_anaf.md`. Probele de test: Marius a decis stergerea - sterse de pe disc 30.09 (apar `D` in git pe branch, dispar cu el).
Actualizat 29.09.2026, la ~257k context in sesiunea orchestratoare (prag Regula zero). STARE, nu instructiune noua.
## Stare
- Plan APROBAT: `docs/plan_anaf_factura.md` - corectiile din fazele CEO/Design/Eng + "APROBAT" + "Rezultat proba D1" au prioritate fata de textul initial al stories.
- Progres: `docs/progres_anaf_factura.md` (sursa de stare pe stories). Probe: `docs/autoplan_anaf/3_test_plan.md`. Tabel stari/tooltip-uri: `docs/autoplan_anaf/2_design.md` (iconitele: vezi "Rezultat proba D1" din plan, care inlocuieste `exclamare_*.bmp`/`terminat_*` din tabelul Design).
- Branch `anaf-factura` in `D:\roa\ROAFACTURARE\COMUN`:
- `5e7b11d` S0 - filtru istoric la/dupa data ceruta + `ocautare.prg:224` transmite sursa. Raport `docs/raport_s0_anaf.md`.
- `6acd1ea` S1a - `ANAF_StarePartener(..., tlIstoricIntai)` (pozitia 8) + `lRadiatANAF`/`dRadiereANAF` doar live + `dataRadiere` in obiectul single-CUI. Raport `docs/raport_s1a_anaf.md` (11 PASS; partener_anaf UI nerulat).
- `65a063b` S1b - logica indicatorului in `oAntetFacturare` (+ `lVerificaLaActivare`, `CodFiscalClient` accepta id negativ). Raport `docs/raport_s1b_anaf.md` (82 PASS; T-S1-6 Oracle indisponibil nerulat).
- `5cf1010` S2 - declansatori (vc2 + write-back vcx/vct verificat prin reconversie). Raport `docs/raport_s2_anaf.md` (43 PASS). Copierea NU s-a atins: `cod_fiscal` se completeaza in `MarcheazaVerificareLaActivare` din Init. DE INTREBAT Marius: anularea dialogului de cautare client pe factura pune indicatorul pe NEUTRU desi clientul ramane afisat (ramura Else existenta goleste deja soldul).
- `08353ef` S3 - buton manual la data facturii + "alt client". Raport `docs/raport_s3_anaf.md` (32 PASS). DE CONFIRMAT Marius: filtrul pe CUI se pune doar cand exista >=2 parteneri cu acel CUI.
- Proba D1 facuta: `docs/raport_s1_d1.md`; .ico accepta transparenta, BMP opac.
- ROAFACTURARE radacina: pe `main`, nimic comis; `docs/` sunt documente de lucru (nu se comit pe main).
## Ce urmeaza
1. ~~S1b~~ GATA (`65a063b`). Text initial: in `COMUN\programe\ofacturare_antet.prg` (clasa `oAntetFacturare`): `VerificaANAFAutomat(toForm, tlIstoricIntai)`, `ClasificaRezultat` (separata, testabila fara UI), `AplicaIndicatorANAF` (tolerant la lipsa `But_verifica1`; seteaza `cpictureup`+`cpicturedown`+`Picture`+`BackColor`+`ToolTipText`+`StatusBarText`, taiere 255), `LaSchimbareData`, `CodFiscalClient`; proprietati pe `oAntet`: `lInVerificare`, `cCheieVerificata`, steag activare, cache local `negasit`, instanta `anaf_verif_cautare` pentru `TextAnaf`. Data goala -> NEUTRU; gestiune dupa `poDate.tip IN (23,25,41)`; `lEditare` -> NEUTRU; nivel ANAF 0 -> NEUTRU. Proba headless pe toate starile (mock `ANAF_VerificaCuiSingle` primul in SET PROCEDURE).
2. ~~S2~~ GATA (`5cf1010`). Text initial: declansatori, write-back pe `COMUN\clase\ofacturare.vc2` (skill `roa-vfp-text-edit`, `-ProjectRoot` explicit, un singur scriitor): `Activate` existent `:18235-18241` (dupa `aseaza_totaluri`), marcaj in `Init` `:21575-21582`, `Clb_dataact` `:21940` si `Clb_dataireg` `:21962` -> `oAntet.LaSchimbareData`; `do_cauta_client` factura (dupa `:217`), aviz-partener (`:150-152`, completeaza `cod_fiscal`), ramura client sters -> NEUTRU; copiere `ofacturare_comun.prg:440-441` completeaza `cod_fiscal`.
3. ~~S3~~ GATA (`08353ef`). Text initial: `do_verifica` (`ofacturare_antet.prg:746-760`) transmite `poDate.dataact`; indicator din rezultatul butonului (fallback `goCacheANAF_Sesiune.Remove` cu CUI normalizat); Da/Nu "Alegeti alt client?" implicit Nu, filtru `cFiltruOrig` pe CUI numeric, fara filtru daca nu exista partener.
4. **S4 GATA-PARTIAL** (`22aa977` probe; raport `docs/raport_s4_anaf.md`: UI 35/35 pe ambele formulare, partener_anaf 75/2 FAIL vechi). Changelog 2.11.20 in `changelog_roafacturare.txt` NECOMIS (radacina e pe main -> SVN la Marius). Datorii manuale: raport sect. 7; prioritar defect 1 (Activate ruleaza in Init via SetFocus -> HTTP inainte de desenare). Prompt pentru #13: `docs/prompt_integrare_13_anaf.md`. Branch nepushat. Istoric: INTRERUPT la resume (fara raport; au ramas necomise probele `test_s4_indicator_ui.prg/.ps1`, `probe_s4_stack.*`, `mock_s4_stack.prg`; changelog neatins). Marius testeaza manual 29.09. Text initial: proba UI `vfp_ui_harness.ps1` (+ ROACONT/ROAGEST), captura designer, changelog; manual ramas = datorie deschisa.
## Decizie Marius 29.09 (dupa testul manual)
- Factura din tab-ul Comenzi deschide dialogul mic "FACTURARE" (probabil `frm_date_factura`), fara declansatori -> nimic vizibil. Se lucreaza S2b pe acest dialog (diagnostic: `docs/diag_anaf_indicator.md`).
- `frm_facturare_articole2` e lucrat de sesiunea planului #13 pe alt calculator: `svn revert` facut pe `ofacturare.vcx/.vct` (binarul NU mai contine S2). Textul S2 ramane comis in git pe `anaf-factura` (`5cf1010`). La final: prompt pentru sesiunea #13 ca sa integreze cele 10 linii S2 in `frm_facturare_articole2`.
- Marius: S2b se face DIRECT cu write-back pe `ofacturare.vcx` (ramane modificat); promptul final pentru #13 mentioneaza S2 + S2b.
- `79fb578` S2b - dialog vechi `frm_date_factura` (raport `docs/raport_s2b_anaf.md`, 20 PASS + regresie). Write-back facut: binarul contine acum S2 + S2b, text=binar. "View Parameter poDate.id_client" = bug de harness (PRIVATE), nu productie.
- Mesaj User-Agent (lipit de Marius) IGNORAT - Marius a confirmat ca era pentru sesiunea ROACONT.
- (depasit dupa S2b) ATENTIE: text `.vc2` (cu S2) != binar (fara S2) acum. NU rula `git_sync.ps1` pe ROAFACTURARE pe branch-ul `anaf-factura` - ar sterge S2 din text.
- `5f64bc7` decizii Marius 30.09: anularea cautarii pastreaza indicatorul (garda in ReseteazaIndicator, fara .vc2); filtrul CUI >=2 parteneri ramane. Regresie S1b 82, S2 44, S2b 21, S3 32 - toate PASS.
- `bc10cf6` + `d08adb2` (30.09, feedback Marius "urat"): fara BackColor, doar iconite din setul butonului (terminat_*_verde / exclamare_* / help_* 23x21 / original), text txtCodFiscal colorat (DisabledForeColor; OK RGB(0,110,0), ATENTIE RGB(192,64,0)). Raport `docs/raport_stil_indicator_anaf.md`. Toate probele PASS. Fara .vc2 -> promptul #13 ramane valabil (range pana la `d08adb2`).
- `1f70a0b` (30.09): iconita "!!" originala recolorata pe stare - `COMUN\grafice\verificare{1,2}_{verde,portocaliu,gri}.bmp` NOI (necesita `svn add`). Raport `docs/raport_iconite_anaf.md`. Regresia PASS. Promptul #13: range pana la `1f70a0b`.
- `7ff8450` (30.09): cod romanesc invalid (ANAF_ValidareCod, ocautare.prg:329) -> ATENTIE rosu; ATENTIE rosu peste tot (verificare_rosu.bmp nou); verde/gri refacute pentru contrast. Raport `docs/raport_cod_invalid_anaf.md`. Toate PASS.
- CONFIRMAT 30.09 (in lucru, agent schema-anaf, raport `docs/raport_schema_anaf.md`): schema de mai jos + CNP invalid rosu + iconite putin mai deschise (contrast ~10-11) + butonul NU mai pune nicio intrebare (intrebarea "alt client" din S3 eliminata; linia PuneFiltruCui din frm_date_factura.do_cauta_client .vc2 ramane no-op, de scos la integrare #13). Schema: TEXTUL = verdict (verde OK / rosu problema / normal), ICONITA = sursa (colorata ca textul cand ANAF a raspuns sau istoricul e valabil; GRI cand ANAF n-a putut fi interogat; albastru original = nimic de verificat). Istoric mai vechi decat factura + ANAF cazut: problema -> text rosu + iconita gri; OK -> text normal + iconita gri. Portocaliu nefolosit (fisierele pot fi sterse).
- `68c6f07` schema finala (text=verdict, iconita=sursa, CNP invalid rosu, contrast ~10.5) + `558ccda` butonul nu mai pune nicio intrebare. Regresie: S1b 104, S2 44, S2b 20, S3 30, S4 50+42 PASS. Changelog 2.11.20 rescris pe schema finala (necomis, radacina = SVN). Prompt #13 actualizat (range `..558ccda` + curatenie PuneFiltruCui/tcCui in frm_date_factura).
- RAMAS LA MARIUS: test manual schema; proba fereastra goala la deschidere (client fara istoric); push `anaf-factura`; SVN: ofacturare.vcx/.vct, changelog, 8 .bmp noi `COMUN\grafice\verificare{1,2}_{verde,rosu,gri,portocaliu}.bmp` (portocaliu nefolosit - poate fi sters).
- 30.09 seara: changelog 2.11.20 scurtat (necomis). Prompt #13 dat lui Marius (inline, fara diff; varianta cu diff in `docs/prompt_integrare_13_anaf.md`). Curatenie facuta: sterse logurile/FXP/screenshots/uisync din `COMUN\utile\Teste\anaf_factura`, probe_s4_stack*/mock_s4_stack, patch-urile, scripturile .py de iconite, handoff-urile intermediare, `ofacturare.vc2.pre_runda_s2.bak`. Pastrate: plan, progres, acest handoff, prompt #13, rapoartele, `iconite_anaf_marite.png`. Alte .bak/.FXP din COMUN (alte lucrari) NEATINSE.
- DECIZIE MARIUS 30.09: NU push pe `anaf-factura`; modificarile trebuie sa ajunga pe `main`. NEFACUT. Regula (skill `roa-git-svn-commit`): pe `main` din COMUN scrie DOAR `roa_sync`; drumul e svn commit tintit al fisierelor branch-ului (din COMUN, SVN = sursa de adevar) -> roa_sync aduce pe git main. De urmat skill-ul intr-o sesiune proaspata; lista fisierelor: `git -C COMUN diff --stat ca8e7ca 558ccda` + binarele ofacturare.vcx/.vct + .bmp noi (svn add). Promptul #13 trebuie ajustat: nu mai cere branch-ul, ci `main` dupa sync.
## Neterminat / de curatat
- `COMUN\utile\Teste\anaf_factura\sonda_d1_backcolor_buton.prg` necomis (+ log, .fxp, screenshots, uisync ignorate/necomise): decide la S4 daca scriptul intra in commit; `.fxp`/png/log nu.
- partener_anaf (teste UI) nerulate dupa S1a - de rulat in S4 (dialogul de cautare arata acum si radiatul).
- Nicio tranzactie deschisa, niciun proces vfp9 propriu viu, date de test Oracle curatate (CUI 8000596 si familia 80000xx dupa rapoarte).
## Stabilit, nu se reia
- Tot codul facturii e in COMUN (cross-project); commit-uri pe `anaf-factura` in `COMUN\`, niciodata pe `main` din COMUN. Mandat: executie continua, commit dupa fiecare story, fara push/SVN/merge.
- T1=A (activ peste tot), T3=B (radiat doar live), T2/T4-T10 recomandate; T8 inchis de D1 (EXCLAM.ICO).
- Subagenti: Sonnet, prompt cu interdictii la inceput, livrabil pe disc + "GATA". opencode (`opencode-go/deepseek-v4.1-flash`) doar pentru voci de revizie; crapa fara limite de grep.
## Interzis
- `git pull`/`git stash` in COMUN; push; svn commit; editare `.prg`/`.vc2` cu Edit/sed (cp1250) - script Python binar; doi scriitori pe acelasi fisier; proba vfp9 in paralel cu write-back.

View File

@@ -0,0 +1,195 @@
# Prompt de integrare pentru sesiunea planului #13 (frm_facturare_articole2)
Copiaza tot ce e sub linie in sesiunea #13.
---
Integreaza in lucrul tau modificarile facute de alta sesiune Claude (branch `anaf-factura` din COMUN, pe calculatorul lui Marius) pentru verificarea automata ANAF a clientului pe factura. Sunt aprobate si testate headless + UI de paritate; nu le reproiecta, doar integreaza-le peste versiunea ta.
## Ce atinge `COMUN\clase\ofacturare.vc2`
- `frm_facturare_articole2` (S2, commit `5cf1010`) - 10 linii, doar apeluri catre `oAntet`:
- `Activate`: dupa blocul `aseaza_totaluri`, daca `This.oAntet.lVerificaLaActivare` -> `This.oAntet.VerificaANAFAutomat(This, .T.)`.
- `Init`: in ramura cu `poDate.id_client <> 0` (dupa ToolTipText `'Id client: '`) -> `.oAntet.MarcheazaVerificareLaActivare()`.
- `Clb_dataact.TEXT_SIMPLU1.LostFocus` si `Clb_dataireg.Text_simplu1.LostFocus`: `Thisform.oAntet.LaSchimbareData(Thisform)` inainte de `Return` pe ramura aviz si la finalul metodei.
- `frm_date_factura` (dialogul vechi deschis din Comenzi; S2b, commit `79fb578`): proprietate `oantet`, `Activate` nou, `oAntet` creat in `Init`, `MarcheazaVerificareLaActivare`, `LaSchimbareData` pe LostFocus date, `do_cauta_client(tcCui)` cu filtru + verificare/reset, `do_verifica` delegat la `This.oAntet.do_verifica(This)`.
Diff-ul exact (text FoxBin2Prg) e mai jos. Daca metodele tale din `frm_facturare_articole2` s-au mutat sau rescris, pastreaza intentia: aceleasi apeluri, in aceleasi momente (dupa totaluri la Activate; dupa completarea clientului in Init; dupa recalcularea datelor la LostFocus).
**Curatenie la integrare (dupa `558ccda`):** butonul de verificare nu mai pune nicio intrebare, deci in `frm_date_factura.do_cauta_client` linia `This.oAntet.PuneFiltruCui(m.loHash, m.tcCui)` si `Lparameters tcCui` (adaugate de S2b, diff-ul de mai jos) sunt redundante - `tcCui` vine mereu gol. Scoate-le la integrare (si `PuneFiltruCui` din `ofacturare_antet.prg`, care ramane fara apelant). Diff-ul de mai jos e cel initial `6acd1ea..79fb578`; restul modificarilor de dupa sunt doar in `.prg` si `.bmp`.
## Dependente (fara ele apelurile dau eroare)
Toata logica e in `COMUN\programe\ofacturare_antet.prg` (clasa `oAntetFacturare`: `VerificaANAFAutomat`, `LaSchimbareData`, `MarcheazaVerificareLaActivare`, `ReseteazaIndicator`, `AplicaRezultatButon`, `PuneFiltruCui`, `lFormVechi`...) si in modificarile S0/S1a din fisierele ANAF (`ANAF_StarePartener` cu parametrul 8 `tlIstoricIntai`, `ocautare.prg`). Deci ai nevoie de TOT branch-ul `anaf-factura` (commit-uri `5e7b11d..558ccda` peste `ca8e7ca sync SVN r18221`), nu doar de `.vc2`. Branch-ul NU e pushat - cere-i lui Marius sa-l publice (push pe gitea romfast/comun) sau sa decida alta cale; nu reconstrui `ofacturare_antet.prg` din memorie.
Produsele care deschid aceste formulare trebuie sa aiba `SET PROCEDURE TO ofacturare_antet.prg ADDITIVE` (ROAFACTURARE si ROAACNPRO il au; daca #13 aduce formularele in alt produs, adauga-l acolo).
## Procedura
1. Merge / cherry-pick `anaf-factura` peste branch-ul tau; conflictele in `ofacturare.vc2` se rezolva manual pe text, pastrand ambele seturi.
2. Write-back o singura data, din textul unit (skill `roa-vfp-text-edit`, `-ProjectRoot` explicit), verificare prin reconversie.
3. Regresie: `COMUN\utile\Teste\anaf_factura\test_s2_declansatori.prg`, `test_s2b_dialog_vechi.prg`, `test_s3_buton_manual.prg` (headless), `test_s4_indicator_ui.ps1` si `test_s4_dialog_vechi_ui.ps1` (UI).
4. Observatie deschisa: `Init` face `SetFocus`, care declanseaza `Activate` inca din Init, deci primul HTTP ANAF poate rula inainte ca formularul sa fie desenat (vezi raportul S4, defect 1). Nu il repara fara decizia lui Marius.
## Diff `ofacturare.vc2` (`6acd1ea..79fb578`)
```diff
diff --git a/clase/ofacturare.vc2 b/clase/ofacturare.vc2
index 21d37aa..4540ef4 100644
--- a/clase/ofacturare.vc2
+++ b/clase/ofacturare.vc2
@@ -8689,6 +8689,7 @@ DEFINE CLASS frm_date_factura AS _frmbase OF "_frm_base.vcx"
*p: nsoldlei && Sold lei client
*p: nsoldvaluta && sold vauta client
*p: ntip
+ *p: oantet && Verificarea ANAF si cautarile de antet (oAntetFacturare, ofacturare_antet.prg).
*</DefinedPropArrayMethod>
*<PropValue>
@@ -9092,6 +9093,15 @@ DEFINE CLASS frm_date_factura AS _frmbase OF "_frm_base.vcx"
Width = 118
*< END OBJECT: ClassLib="_baza.vcx" BaseClass="textbox" />
+ PROCEDURE Activate
+ DoDefault()
+ If Vartype(This.oAntet) = "O"
+ If This.oAntet.lVerificaLaActivare
+ This.oAntet.VerificaANAFAutomat(This, .T.)
+ Endif
+ Endif
+ ENDPROC
+
PROCEDURE do_cauta_altele
Do Case
Case Thisform.nid_tip=2
@@ -9154,9 +9164,11 @@ DEFINE CLASS frm_date_factura AS _frmbase OF "_frm_base.vcx"
ENDPROC
PROCEDURE do_cauta_client
+ Lparameters tcCui
Local loCauta
loHash = GetHash([cTitlu=>Clienti??cCont=>4111??lAdaugCorespondente=>1??lVerificaANAF=>1])
loHash.SetValue('dDataDoc', Iif(Type('poDate.dataact') = 'D', poDate.dataact, {}))
+ This.oAntet.PuneFiltruCui(m.loHash, m.tcCui)
loCauta = CautPartenerContabilitate(loHash)
If !Empty(Nvl(loCauta.id_part,0)) And !Empty(loCauta.denumire)
If loCauta.id_part <> poDate.id_client
@@ -9196,6 +9208,7 @@ DEFINE CLASS frm_date_factura AS _frmbase OF "_frm_base.vcx"
This.ct_clb_lucrare.SetFocus()
This.ct_clb_nume_client.clb_TX_CAUTARE.text_SIMPLU1.ToolTipText = 'Id client: ' + TRANSFORM(poDate.id_client)
+ This.oAntet.VerificaANAFAutomat(This, .F.)
Else
poDate.listaid = []
poDate.descriere = []
@@ -9205,6 +9218,7 @@ DEFINE CLASS frm_date_factura AS _frmbase OF "_frm_base.vcx"
this.nSoldLei = 0
this.nSoldValuta = 0
+ This.oAntet.ReseteazaIndicator(This)
this.txtSoldLei.Refresh()
Endif
*!* modificare v 2.0.70
@@ -9593,18 +9607,7 @@ DEFINE CLASS frm_date_factura AS _frmbase OF "_frm_base.vcx"
ENDPROC
PROCEDURE do_verifica
- Local loDate As "empty"
- Local lnOptiune, lnRaspuns, loPartener
-
- lnOptiune = 1
- loPartener = Null
- loDate = Createobject("empty")
-
- AddProperty(loDate, "denumire", poDate.nume_client)
- AddProperty(loDate, "cod_fiscal", poDate.cod_fiscal)
- AddProperty(loDate, "tip_verificare", "ANAF_SERVICIU_WEB")
-
- lnRaspuns = VerificaCodFiscal(loDate, @lnOptiune, @loPartener)
+ Return This.oAntet.do_verifica(This)
ENDPROC
PROCEDURE inainte_de_do_termin
@@ -9741,6 +9744,8 @@ DEFINE CLASS frm_date_factura AS _frmbase OF "_frm_base.vcx"
This.lCopiere = (TYPE('toFactura') = 'O') && copiere factura
llCopiere = This.lCopiere
+ This.oAntet = Createobject('oAntetFacturare')
+ This.oAntet.lFormVechi = .T.
lnObiecte = 16 && ROACONTRACTE v 2.0.42 : 16
Dimension laPozitii(lnObiecte, 3)
@@ -9938,6 +9943,8 @@ DEFINE CLASS frm_date_factura AS _frmbase OF "_frm_base.vcx"
this.nSoldValuta = loSoldClient.sold_valuta
this.txtSoldLei.Refresh()
This.ct_clb_nume_client.clb_TX_CAUTARE.text_SIMPLU1.ToolTipText = 'Id client: ' + TRANSFORM(poDate.id_client)
+ This.oAntet.MarcheazaVerificareLaActivare()
+ This.txtCodFiscal.Refresh()
ENDIF
DO CASE
@@ -9965,6 +9972,7 @@ DEFINE CLASS frm_date_factura AS _frmbase OF "_frm_base.vcx"
Endif
*!* modificare v 2.0.56 ^
+ Thisform.oAntet.LaSchimbareData(Thisform)
ENDPROC
PROCEDURE Clb_dataireg.Text_simplu1.LostFocus
@@ -9983,6 +9991,7 @@ DEFINE CLASS frm_date_factura AS _frmbase OF "_frm_base.vcx"
*!* modificare v 2.0.56
Endif
*!* modificare v 2.0.56 ^
+ Thisform.oAntet.LaSchimbareData(Thisform)
ENDPROC
PROCEDURE Clb_nract.Text_simplu1.LostFocus
@@ -18238,6 +18247,11 @@ DEFINE CLASS frm_facturare_articole2 AS _frmbase OF "_frm_base.vcx"
This.ltotaluri_asezate = .T.
This.aseaza_totaluri()
Endif
+ If Vartype(This.oAntet) = "O"
+ If This.oAntet.lVerificaLaActivare
+ This.oAntet.VerificaANAFAutomat(This, .T.)
+ Endif
+ Endif
ENDPROC
PROCEDURE actualizeaza_tipincasare
@@ -21579,6 +21593,7 @@ DEFINE CLASS frm_facturare_articole2 AS _frmbase OF "_frm_base.vcx"
.nSoldValuta = loSoldClient.sold_valuta
.txtSoldLei.Refresh()
.ct_clb_nume_client.clb_tx_cautare.text_simplu1.ToolTipText = 'Id client: ' + Transform(poDate.id_client)
+ .oAntet.MarcheazaVerificareLaActivare()
Endif
Do Case
Case poDate.in_valuta = 1 And .ct_clb_valuta.Top < .clb_fdoc.Top And Empty(Nvl(poDate.nume_valuta, ''))
@@ -21941,6 +21956,7 @@ DEFINE CLASS frm_facturare_articole2 AS _frmbase OF "_frm_base.vcx"
If Thisform.oAntet.EsteAviz()
poDate.zi_curs = poDate.dataact
Thisform.clb_zi_curs.Refresh()
+ Thisform.oAntet.LaSchimbareData(Thisform)
Return
Endif
*!* modificare v 2.2.4 : daca scadenta nu e automata, atunci poate modifica data scadenta propusa
@@ -21957,6 +21973,7 @@ DEFINE CLASS frm_facturare_articole2 AS _frmbase OF "_frm_base.vcx"
Endif
*!* modificare v 2.0.56 ^
+ Thisform.oAntet.LaSchimbareData(Thisform)
ENDPROC
PROCEDURE Clb_dataireg.Text_simplu1.LostFocus
@@ -21965,6 +21982,7 @@ DEFINE CLASS frm_facturare_articole2 AS _frmbase OF "_frm_base.vcx"
Thisform.clb_dataact.Refresh()
poDate.zi_curs = poDate.dataact
Thisform.clb_zi_curs.Refresh()
+ Thisform.oAntet.LaSchimbareData(Thisform)
Return
Endif
poDate.dataact = poDate.dataireg
@@ -21982,6 +22000,7 @@ DEFINE CLASS frm_facturare_articole2 AS _frmbase OF "_frm_base.vcx"
*!* modificare v 2.0.56
Endif
*!* modificare v 2.0.56 ^
+ Thisform.oAntet.LaSchimbareData(Thisform)
ENDPROC
PROCEDURE clb_fdoc.cboFdoc.Init
```

43
docs/svn_commit_anaf.md Normal file
View File

@@ -0,0 +1,43 @@
# SVN commit - verificare automata ANAF pe factura (pe main, fara branch)
Verificat 30.09.2026 cu `svn status`. Working copy-ul are acum pe disc continutul branch-ului git `anaf-factura` (COMUN).
**NU face `git checkout main` in COMUN inainte de svn commit** - ar readuce fisierele la versiunea veche si commit-ul SVN ar pleca gol.
## 1. svn add (fisiere noi)
```
cd /d D:\roa\ROAFACTURARE
svn add COMUN\grafice\verificare1_verde.bmp COMUN\grafice\verificare2_verde.bmp COMUN\grafice\verificare1_rosu.bmp COMUN\grafice\verificare2_rosu.bmp COMUN\grafice\verificare1_gri.bmp COMUN\grafice\verificare2_gri.bmp
```
`verificare{1,2}_portocaliu.bmp` NU se folosesc - nu le adauga; le poti sterge de pe disc (sunt in git pe branch, dispar odata cu el).
## 2. svn commit tintit
```
svn commit -m "ROAFACTURARE 2.11.20 - verificare automata ANAF a clientului pe factura si aviz (cod fiscal verde/rosu, iconita gri cand ANAF nu raspunde)" ^
COMUN\programe\ofacturare_antet.prg ^
COMUN\programe\ocautare.prg ^
COMUN\programe\validare.prg ^
COMUN\clase\ofacturare.vcx ^
COMUN\clase\ofacturare.vct ^
COMUN\grafice\verificare1_verde.bmp COMUN\grafice\verificare2_verde.bmp ^
COMUN\grafice\verificare1_rosu.bmp COMUN\grafice\verificare2_rosu.bmp ^
COMUN\grafice\verificare1_gri.bmp COMUN\grafice\verificare2_gri.bmp ^
changelog_roafacturare.txt
```
`ofacturare.vc2` e ignorat de SVN (textul il regenereaza git_sync din binar). `.vcx`/`.vct` contin S2 + S2b (write-back verificat prin reconversie).
**ATENTIE `ofacturare.vcx`:** sesiunea planului #13 lucreaza pe acelasi binar (`frm_facturare_articole2`). Daca a comis-o deja in SVN, `svn update` inainte da conflict pe binar - atunci nu comite binarul, da-i sesiunii #13 promptul din `prompt_integrare_13_anaf.md`.
## 3. Dupa svn commit - git fara branch
In `D:\roa\ROAFACTURARE\COMUN` (skill `roa-git-svn-commit`, pasii lui au prioritate):
1. `git checkout main` apoi `roa_sync` -> aduce revizia SVN noua pe git main (inclusiv `.vc2` regenerat).
2. Verifica: `git diff 558ccda main -- programe clase/ofacturare.vc2 grafice` sa nu arate diferente de cod (doar ce a mai intrat din SVN intre timp).
3. `git branch -D anaf-factura`.
## INCHIS - probele de test (30.09): Marius a ales (c). Sterse de pe disc (`utile/Teste/anaf_factura/`, `utile/Teste/cache_anaf/test_s0_istoric_data_ceruta.prg`); in git apar ca `D` pe branch - ignora; fisierele nu exista pe main, deci `git checkout main` trece, iar ele dispar definitiv la `git branch -D anaf-factura`. Fara `git stash` in COMUN.
## (istoric) probele de test
`COMUN\utile\Teste` e **svn:ignore** -> cele 24 de probe din `utile/Teste/anaf_factura/` si `utile/Teste/cache_anaf/test_s0_istoric_data_ceruta.prg` NU ajung pe main prin roa_sync si se pierd la `git branch -D`. Alege: (a) le salvezi inainte (copie in afara repo-ului), sau (b) commit git direct pe main doar pentru `utile/Teste/**` dupa roa_sync (exceptie de la regula "pe main scrie doar roa_sync" - decizia ta), sau (c) renunti la ele.

View File

@@ -273,7 +273,15 @@ WITH loProject.FILES
.ADD('comun\grafice\urmator2.bmp') && *< FileMetadata: Type="x" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" /> .ADD('comun\grafice\urmator2.bmp') && *< FileMetadata: Type="x" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
.ADD('comun\grafice\urmator2_tot.bmp') && *< FileMetadata: Type="x" Cpid="0" Timestamp="0" ID="0" ObjRev="0" User="" /> .ADD('comun\grafice\urmator2_tot.bmp') && *< FileMetadata: Type="x" Cpid="0" Timestamp="0" ID="0" ObjRev="0" User="" />
.ADD('comun\grafice\verificare1.bmp') && *< FileMetadata: Type="x" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" /> .ADD('comun\grafice\verificare1.bmp') && *< FileMetadata: Type="x" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
.ADD('comun\grafice\verificare1_gri.bmp') && *< FileMetadata: Type="x" Cpid="0" Timestamp="0" ID="0" ObjRev="0" User="" />
.ADD('comun\grafice\verificare1_portocaliu.bmp') && *< FileMetadata: Type="x" Cpid="0" Timestamp="0" ID="0" ObjRev="0" User="" />
.ADD('comun\grafice\verificare1_rosu.bmp') && *< FileMetadata: Type="x" Cpid="0" Timestamp="0" ID="0" ObjRev="0" User="" />
.ADD('comun\grafice\verificare1_verde.bmp') && *< FileMetadata: Type="x" Cpid="0" Timestamp="0" ID="0" ObjRev="0" User="" />
.ADD('comun\grafice\verificare2.bmp') && *< FileMetadata: Type="x" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" /> .ADD('comun\grafice\verificare2.bmp') && *< FileMetadata: Type="x" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
.ADD('comun\grafice\verificare2_gri.bmp') && *< FileMetadata: Type="x" Cpid="0" Timestamp="0" ID="0" ObjRev="0" User="" />
.ADD('comun\grafice\verificare2_portocaliu.bmp') && *< FileMetadata: Type="x" Cpid="0" Timestamp="0" ID="0" ObjRev="0" User="" />
.ADD('comun\grafice\verificare2_rosu.bmp') && *< FileMetadata: Type="x" Cpid="0" Timestamp="0" ID="0" ObjRev="0" User="" />
.ADD('comun\grafice\verificare2_verde.bmp') && *< FileMetadata: Type="x" Cpid="0" Timestamp="0" ID="0" ObjRev="0" User="" />
.ADD('comun\include\security.h') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" /> .ADD('comun\include\security.h') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="0" ObjRev="0" User="" />
.ADD('comun\meniuri\editscurt.mnx') && *< FileMetadata: Type="M" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" User="" /> .ADD('comun\meniuri\editscurt.mnx') && *< FileMetadata: Type="M" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" User="" />
.ADD('comun\meniuri\rap_listfactav_centr.mnx') && *< FileMetadata: Type="M" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" User="" /> .ADD('comun\meniuri\rap_listfactav_centr.mnx') && *< FileMetadata: Type="M" Cpid="1252" Timestamp="0" ID="0" ObjRev="544" User="" />