# 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). * * @@ -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 ```