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

9.3 KiB

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