Files
roafacturare/docs/prompt_integrare_13_anaf.md
2026-09-30 22:26:09 +03:00

196 lines
9.3 KiB
Markdown

# 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
```