*!* 21.08.2026 *!* marius.mutu *!* oAntetFacturare - logica de antet a formularului unificat frm_facturare_articole2, portata din frm_date_factura / *!* frm_date_aviz (ofacturare.vcx): cautarile (do_cauta_*), do_verifica, validarea antetului (valideaza_antet) si regulile *!* schimbarii felului de document (alege_tipdoc, schimba_tipdoc); formularul vine ca parametru toForm, ramura *!* factura/aviz se alege pe poDate.nIdTipDoc = poDate.nIdTipDocAvizExpeditie. *!* 28.08.2026 *!* marius.mutu *!* controalele grupului de contabilitate (Ct_clb_venchelt, Ct_clb_sectie, Ct_clb_lucrare, Ct_clb_responsabil, *!* Ct_clb_gestiune_init, Ed_tx_simplu1) au trecut in containerul ct_contabilitate al formularului, deci *!* referintele lor din acest fisier sunt prefixate cu containerul, inclusiv in expresiile Type(). *!* 29.09.2026 *!* marius.mutu *!* verificare automata ANAF a clientului de pe factura: VerificaANAFAutomat clasifica verdictul (ClasificaRezultat) si il arata pe *!* butonul But_verifica1 (AplicaIndicatorANAF: OK / ATENTIE / NECUNOSCUT / NEUTRU): textul casetei txtCodFiscal da verdictul (verde OK, rosu ATENTIE, original *!* altfel), iconita "!!" da sursa (verde/rosu = ANAF sau istoric valabil pentru data facturii, gri = ANAF indisponibil si verdict doar din istoric mai vechi sau fara istoric, *!* albastra originala = nimic de verificat); cod fiscal romanesc invalid (nenumeric, lungime in afara 2..10, cifra de control gresita) sau CNP invalid = ATENTIE fara apel ANAF; *!* istoric mai vechi decat factura cu discordanta = ATENTIE cu iconita gri; la deschidere *!* se citeste intai istoricul, la schimbarea clientului si a datei se interogheaza ANAF; butonul manual verifica la data *!* facturii si actualizeaza indicatorul din rezultatul lui, fara alte intrebari. *!* Acelasi indicator si aceiasi declansatori pe dialogul frm_date_factura (lFormVechi); *!* cautarea inchisa fara alegere pastreaza indicatorul cat timp clientul ramane afisat (NEUTRU doar fara client). Define Class oAntetFacturare As Custom lInVerificare = .F. lVerificaLaActivare = .F. cCheieVerificata = '' cStare = 'NEUTRU' cTooltip = 'Verificare' oNegasit = .Null. oTextAnaf = .Null. lFormVechi = .F. Function EsteAviz Return poDate.nIdTipDoc = poDate.nIdTipDocAvizExpeditie Endfunc Procedure do_cauta_altele Lparameters toForm Local llAviz llAviz = This.EsteAviz() If m.llAviz Do Case Case Inlist(toForm.nid_tip,23,41) toForm.do_cauta_gestiune_dest() Case Inlist(toForm.nid_tip,21,25,28,42,47) && modificare v 2.0.93 : am adaugat 47 toForm.do_cauta_comanda() Case toForm.nid_tip = 26 toForm.do_cauta_contract() Case toForm.nid_tip = 24 && aviz retur toForm.do_cauta_avize() Endcase Else Do Case Case toForm.nid_tip=2 toForm.do_cauta_contract() Case toForm.nid_tip=3 toForm.do_cauta_comanda() Case toForm.nid_tip=4 toForm.do_cauta_avize() *!* modificare v 2.0.46 Case toForm.nid_tip=7 toForm.do_cauta_factura() *!* modificare v 2.0.46 ^ *!* modificare v 2.0.56 Case Inlist(toForm.nid_tip,8,9) toForm.do_cauta_facturi() *!* modificare v 2.0.56 ^ *!* modificare v 2.0.87 Case toForm.nid_tip = 45 toForm.do_cauta_locatii() *!* modificare v 2.0.87 ^ Endcase Endif Endproc Procedure do_cauta_avize Lparameters toForm Local lcXMLAvize If Empty(Nvl(poDate.id_client,0)) amessagebox("Nu ati ales clientul!",0+48,"Atentie") toForm.ct_clb_nume_client.SetFocus() Else lcXMLAvize = caut_avize(poDate.id_client) && oproceduri_facturare.prg If !Empty(lcXMLAvize) Xmltocursor(lcXMLAvize, "crsAvizeTemp") *!* modificare v 2.0.44 Select id_vanzare,id_comanda,; Padl(Iif(!Empty(Nvl(serie_act,[])),Alltrim(serie_act)+[ ],[])+Alltrim(Str(numar_act,20)),50,[ ]) As numar_act ; From crsAvizeTemp Into Cursor crsAvizeTemp *!* modificare v 2.0.44 ^ lcIdVanzare = cursor2lista("crsAvizeTemp", "id_vanzare", ",") lcNumar_Act = cursor2lista("crsAvizeTemp", "numar_act", ",") poDate.listaid = lcIdVanzare poDate.descriere = lcNumar_Act AddProperty(poDate,"id_comanda_aviz",0) Select crsAvizeTemp Locate For Not Empty(ID_COMANDA) If Found() poDate.id_comanda_aviz=ID_COMANDA Endif Use In crsAvizeTemp toForm.ct_clb_altele.Refresh() If Type('toForm.ct_contabilitate.ct_clb_gestiune_init.visible')<>'U' && modificare v 2.0.41 toForm.ct_contabilitate.ct_clb_gestiune_init.SetFocus() Else toForm.but_TERMIN1.SetFocus() Endif Endif Endif Endproc Procedure do_cauta_client Lparameters toForm Local llAviz llAviz = This.EsteAviz() If m.llAviz Local loCauta Do Case Case poDate.tip = 23 loCauta = caut_gestiune_sursa([2,4,5,6,7]) && modificare v 2.0.71 : am adaugat 2 If !Isnull(loCauta) And !Empty(loCauta.id_gestiune) poDate.id_client = loCauta.id_gestiune poDate.nume_client = loCauta.nume_gestiune poDate.listaid = [] poDate.descriere = [] Endif *!* modificare v 2.0.16 Case poDate.tip = 41 loCauta = caut_gestiune_sursa([2,4,5,6,7]) If !Isnull(loCauta) And !Empty(loCauta.id_gestiune) poDate.id_client = loCauta.id_gestiune poDate.nume_client = loCauta.nume_gestiune poDate.listaid = [] poDate.descriere = [] Endif *!* modificare v 2.0.16 ^ Case poDate.tip = 25 loCauta = caut_gestiune_dest() If !Isnull(loCauta) And !Empty(Nvl(loCauta.id_gestiune,0)) poDate.id_client = loCauta.id_gestiune poDate.nume_client = loCauta.nume_gestiune poDateGestiuneDest.id_gestiune = loCauta.id_gestiune poDateGestiuneDest.id_tipgest = loCauta.id_tipgest poDateGestiuneDest.Cont = Nvl(loCauta.Cont,[XXXX]) poDateGestiuneDest.acont = Nvl(loCauta.acont,[XXXX]) lcSql = [begin ] + gcS + [.pack_facturare.cauta_date_comanda_gest(?poDate.id_client,?gnIdSucursala,] + ; [?poDate.dataact,?@poDate.listaid,?@poDate.descriere); end;] lnSucces = goExecutor.oExecute(lcSql) If lnSucces < 0 amessagebox(goExecutor.oPrelucrareEroare(),0+16,"Eroare") poDate.listaid = [] poDate.descriere = [] Endif Endif Otherwise && modificare v 2.0.93 : am adaugat 47 loHash = GetHash([cTitlu=>Clienti??cCont=>]+Iif(INLIST(poDate.tip,42,47),[357],Iif(Inlist(poDate.tip,28,29),[461],Alltrim(gcCont411)))+[??lAdaugCorespondente=>1??lVerificaANAF=>1]) loHash.SetValue('dDataDoc', Iif(Type('poDate.dataact') = 'D', poDate.dataact, {})) loCauta = CautPartenerContabilitate(loHash) If !Empty(Nvl(loCauta.id_part,0)) And !Empty(loCauta.denumire) poDate.id_client = loCauta.id_part poDate.nume_client = loCauta.denumire poDate.cod_fiscal = Nvl(loCauta.cod_fiscal, '') If Inlist(poDate.tip,21,28,42,47) && modificare v 2.0.93 : am adaugat 47 lcSql = [begin ] + gcS + [.pack_facturare.cauta_date_comanda(?poDate.id_client,?gnIdSucursala,] + ; [?poDate.dataact,?@poDate.listaid,?@poDate.descriere); end;] lnSucces = goExecutor.oExecute(lcSql) If lnSucces < 0 amessagebox(goExecutor.oPrelucrareEroare(),0+16,"Eroare") poDate.listaid = [] poDate.descriere = [] Endif Else poDate.listaid = [] poDate.descriere = [] Endif Endif Endcase *!* modificare v 2.0.70 If Type('toForm.ct_clb_altele.visible')<>'U' toForm.ct_clb_altele.Refresh() Endif *!* modificare v 2.0.70 ^ toForm.ct_clb_nume_client.Refresh() toForm.ct_contabilitate.ct_clb_lucrare.SetFocus() This.VerificaANAFAutomat(m.toForm, .F.) Else Local loCauta loHash = GetHash([cTitlu=>Clienti??cCont=>4111??lAdaugCorespondente=>1??lVerificaANAF=>1]) loHash.SetValue('dDataDoc', Iif(Type('poDate.dataact') = 'D', poDate.dataact, {})) loCauta = CautPartenerContabilitate(loHash) If !Empty(Nvl(loCauta.id_part,0)) And !Empty(loCauta.denumire) If loCauta.id_part <> poDate.id_client poDate.listaid = [] poDate.descriere = [] poDate.text_aditional = [] Endif poDate.id_client = loCauta.id_part poDate.nume_client = loCauta.denumire poDate.cod_fiscal = loCauta.cod_fiscal If poDate.tip = 3 lcSql = [begin ] + gcS + [.pack_facturare.cauta_date_comanda(?poDate.id_client,?gnIdSucursala,] + ; [?poDate.dataact,?@poDate.listaid,?@poDate.descriere); end;] lnSucces = goExecutor.oExecute(lcSql) If lnSucces < 0 amessagebox(goExecutor.oPrelucrareEroare(),0+16,"Eroare") poDate.listaid = [] poDate.descriere = [] poDate.text_aditional = [] Endif Endif *!* If Type('toForm.ct_clb_altele.visible')<>'U' *!* toForm.ct_clb_altele.Refresh() *!* Endif * Soldul curent loSoldClient = GetSoldClient(poDate.id_client) toForm.nSoldLei = loSoldClient.sold_lei toForm.nSoldValuta = loSoldClient.sold_valuta toForm.txtSoldLei.Refresh() toForm.txtCodFiscal.Refresh() toForm.ct_clb_nume_client.Refresh() toForm.ct_contabilitate.ct_clb_lucrare.SetFocus() toForm.ct_clb_nume_client.clb_TX_CAUTARE.text_SIMPLU1.ToolTipText = 'Id client: ' + TRANSFORM(poDate.id_client) This.VerificaANAFAutomat(m.toForm, .F.) Else poDate.listaid = [] poDate.descriere = [] poDate.text_aditional = [] toForm.ct_clb_nume_client.clb_TX_CAUTARE.text_SIMPLU1.ToolTipText = '' toForm.nSoldLei = 0 toForm.nSoldValuta = 0 toForm.txtSoldLei.Refresh() This.ReseteazaIndicator(m.toForm) Endif *!* modificare v 2.0.70 If Type('toForm.ct_clb_altele.visible')<>'U' toForm.ct_clb_altele.Refresh() ENDIF *!* modificare v 2.0.70 ^ Endif Endproc Procedure do_cauta_comanda Lparameters toForm Local llAviz llAviz = This.EsteAviz() If m.llAviz Local loCauta If Empty(Nvl(poDate.id_client,0)) amessagebox("Nu ati ales " + Iif(poDate.tip = 25,[gestiunea destinatie],[clientul]) + " !",0+48,"Atentie") toForm.ct_clb_nume_client.SetFocus() Else If poDate.tip = 25 loCauta = caut_comanda_gestiune(poDate.id_client) Else loCauta = caut_comanda_client(poDate.id_client) Endif If !Isnull(loCauta) And !Empty(Nvl(loCauta.id_comanda,0)) poDate.listaid = loCauta.id_comanda poDate.descriere = ALLTRIM(loCauta.nr_comanda) toForm.ct_clb_altele.Refresh() If Type('toForm.ct_contabilitate.ct_clb_gestiune_init.visible')<>'U' && modificare v 2.0.41 toForm.ct_contabilitate.ct_clb_gestiune_init.SetFocus() Else toForm.buT_TERMIN1.SetFocus() Endif Endif Endif Else * 12.03.2021 * folosesc caut_comanda_clienti in loc de caut_comanda_client, * ca sa pot folosi un client diferit fata de comanda (ex: pers. fizica in loc de pers. juridica) Local loCauta If Empty(Nvl(poDate.id_client,0)) amessagebox("Nu ati ales clientul!",0+48,"Atentie") toForm.ct_clb_nume_client.SetFocus() Else * loCauta = caut_comanda_client(poDate.id_client) loCauta = caut_comanda_clienti(poDate.id_client) If !Isnull(loCauta) And !Empty(loCauta.id_comanda) IF poDate.id_client <> loCauta.id_part AMESSAGEBOX('Comanda ' + ALLTRIM(TRANSFORM(loCauta.nr_comanda)) + ' (Client: ' + ALLTRIM(loCauta.nume) + ' Id: ' + ALLTRIM(TRANSFORM(loCauta.id_part)) + ')' + ; ' nu apartine clientului ales (' + ALLTRIM(poDate.nume_client) + ' Id: ' + ALLTRIM(TRANSFORM(poDate.id_client)) + ')',0+48,_sCREEN.Caption) ENDIF poDate.listaid = loCauta.id_comanda poDate.descriere = loCauta.nr_comanda toForm.ct_clb_altele.Refresh() If Type('toForm.ct_contabilitate.ct_clb_gestiune_init.visible')<>'U' && modificare v 2.0.41 toForm.ct_contabilitate.ct_clb_gestiune_init.SetFocus() Else toForm.but_TERMIN1.SetFocus() Endif Endif Endif Endif Endproc Procedure do_cauta_contract Lparameters toForm Local llAviz llAviz = This.EsteAviz() If m.llAviz Local loCauta If Empty(Nvl(poDate.id_client,0)) amessagebox("Nu ati ales clientul!",0+48,"Atentie") toForm.ct_clb_nume_client.SetFocus() Else *!* modificare v 2.0.67 *!* loCauta = caut_contract_facturare(poDate.id_client) *!* If !Isnull(loCauta) And !Empty(Nvl(loCauta.id_ctr,0)) *!* poDate.listaid = loCauta.id_ctr *!* poDate.descriere = loCauta.contract *!* *!* If Inlist(loCauta.opt_facturare,3,4) And !Empty(loCauta.scadenta_incasare) *!* *!* poDate.datascad = poDate.dataact + loCauta.scadenta_incasare *!* *!* toForm.clb_data_scadenta.Refresh() *!* *!* *!* Else *!* *!* *!* poDate.datascad = Iif(gnScadentaAutomata=0,Gomonth(poDate.dataact,1),poDate.dataact+gnZileScadentaFact) *!* *!* Endif *!* toForm.ct_clb_altele.Refresh() *!* *!* modificare v 2.0.41 *!* If Inlist(loCauta.opt_facturare,3,4) *!* If Type('toForm.ct_contabilitate.ct_clb_gestiune_init.visible')<>'U' *!* toForm.ct_contabilitate.ct_clb_gestiune_init.Visible = .T. *!* toForm.ct_contabilitate.ct_clb_gestiune_init.SetFocus() *!* Else *!* toForm.but_termin1.SetFocus() *!* Endif *!* Else *!* poDate.id_gestiune_init = Null *!* toForm.cgestiune_init = [] *!* *!* If Type('toForm.ct_contabilitate.ct_clb_gestiune_init.visible')<>'U' *!* *!* toForm.ct_contabilitate.ct_clb_gestiune_init.Refresh() *!* *!* toForm.ct_contabilitate.ct_clb_gestiune_init.Visible = .F. *!* *!* Endif *!* *!* toForm.but_termin1.SetFocus() *!* amessagebox("Acest contract este in rate si nu se poate emite aviz pentru el!",48,"Atentie") *!* Endif *!* *!* modificare v 2.0.41 ^ *!* *!* toForm.buT_TERMIN1.SetFocus() *!* Endif lcXMLContracte = caut_contract_facturare(poDate.id_client,[3,4]) If !Empty(lcXMLContracte) And gnButon = 1 Xmltocursor(lcXMLContracte, "crsCtrTemp") poDate.listaid = cursor2lista("crsCtrTemp", "id_ctr", ",") poDate.descriere = cursor2lista("crsCtrTemp", "contract", ",") toForm.ct_clb_altele.Refresh() If Type('toForm.ct_contabilitate.ct_clb_gestiune_init.visible')<>'U' toForm.ct_contabilitate.ct_clb_gestiune_init.Visible = .T. toForm.ct_contabilitate.ct_clb_gestiune_init.SetFocus() Else toForm.but_termin1.SetFocus() Endif *!* Use In crsCtrTemp Endif *!* modificare v 2.0.67 ^ Endif Else Local loCauta,lcXMLContracte If Empty(Nvl(poDate.id_client,0)) amessagebox("Nu ati ales clientul!",0+48,"Atentie") toForm.ct_clb_nume_client.SetFocus() Else *!* modificare v 2.0.67 *!* loCauta = caut_contract_facturare(poDate.id_client) *!* If !Isnull(loCauta) And !Empty(loCauta.id_ctr) *!* poDate.listaid = loCauta.id_ctr *!* poDate.descriere = loCauta.contract *!* toForm.ct_clb_altele.Refresh() *!* If Inlist(loCauta.opt_facturare,3,4) *!* If !Empty(loCauta.scadenta_incasare) *!* poDate.datascad = poDate.dataact + loCauta.scadenta_incasare *!* toForm.clb_data_scadenta.Refresh() *!* Endif *!* *!* modificare v 2.0.41 *!* If Type('toForm.ct_contabilitate.ct_clb_gestiune_init.visible')<>'U' *!* toForm.ct_contabilitate.ct_clb_gestiune_init.Visible = .T. *!* toForm.ct_contabilitate.ct_clb_gestiune_init.SetFocus() *!* Else *!* toForm.but_termin1.SetFocus() *!* Endif *!* *!* modificare v 2.0.41 ^ *!* Else *!* *!* poDate.datascad = Iif(gnScadentaAutomata=0,Gomonth(poDate.dataact,1),poDate.dataact+gnZileScadentaFact) *!* *!* modificare v 2.0.41 *!* poDate.id_gestiune_init = Null *!* toForm.cgestiune_init = [] *!* If Type('toForm.ct_contabilitate.ct_clb_gestiune_init.visible')<>'U' *!* toForm.ct_contabilitate.ct_clb_gestiune_init.Refresh() *!* toForm.ct_contabilitate.ct_clb_gestiune_init.Visible = .F. *!* Endif *!* toForm.but_termin1.SetFocus() *!* Endif *!* *!* modificare v 2.0.41 ^ lcXMLContracte = caut_contract_facturare(poDate.id_client) If !Empty(lcXMLContracte) And gnButon = 1 Xmltocursor(lcXMLContracte, "crsCtrTemp") poDate.listaid = cursor2lista("crsCtrTemp", "id_ctr", ",") poDate.descriere = cursor2lista("crsCtrTemp", "contract", ",") toForm.ct_clb_altele.Refresh() Select crsCtrTemp Calculate Min(scadenta_incasare),MAX(afisare_scadenta) For Inlist(opt_facturare,3,4,0) To lnScadentaIncasare,lnAfisareScadenta If lnScadentaIncasare <> 0 poDate.datascad = poDate.dataact + lnScadentaIncasare toForm.clb_data_scadenta.Refresh() Endif poDate.afisare_scadenta = lnAfisareScadenta && modificare ROACONTRACTE v 2.0.38 If Type('toForm.ct_contabilitate.ct_clb_gestiune_init.visible')<>'U' toForm.ct_contabilitate.ct_clb_gestiune_init.Visible = .T. toForm.ct_contabilitate.ct_clb_gestiune_init.SetFocus() Else toForm.but_termin1.SetFocus() Endif *!* Use In crsCtrTemp *!* modificare v 2.0.67 ^ Endif Endif Endif Endproc Procedure do_cauta_factura Lparameters toForm *!* modificare v 2.0.46 Local loCauta If Empty(Nvl(poDate.id_client,0)) amessagebox("Nu ati ales clientul!",0+48,"Atentie") toForm.ct_clb_nume_client.SetFocus() Else loCauta = caut_facturi_client(poDate.id_client) If !Isnull(loCauta) And !Empty(loCauta.id_fact) poDate.descriere = Alltrim(Alltrim(Nvl(loCauta.serie_act,[]))+[ ]+Alltrim(Str(loCauta.nract,14,0))) poDate.text_aditional = [INVOICE ] + poDate.descriere toForm.ct_clb_altele.Refresh() toForm.buT_TERMIN1.SetFocus() Endif EndIf *!* modificare v 2.0.46 ^ Endproc Procedure do_cauta_facturi Lparameters toForm *!* modificare v 2.0.56 Local loCauta Do Case Case Empty(Nvl(poDate.id_client,0)) amessagebox("Nu ati ales clientul!",0+48,"Atentie") toForm.ct_clb_nume_client.SetFocus() Case Empty(Nvl(poDate.id_valuta,0)) And poDate.tip = 9 amessagebox("Nu ati ales valuta!",0+48,"Atentie") toForm.ct_clb_valuta.SetFocus() OTHERWISE * 03.07.2020, marius * Nu stiu de ce se alegea o singura factura la retur. * Era si codul pentru mai multe facturi retur, dar era comentat *!* loCauta = caut_facturi_multiple_client(poDate.id_client,poDate.in_valuta,poDate.id_valuta) *!* If gnButon = 1 and !Empty(Nvl(loCauta.id_vanzare,0)) *!* poDate.listaid = Alltrim(Str(loCauta.id_vanzare)) *!* poDate.descriere = Alltrim(Iif(!Empty(Nvl(loCauta.serie_act,[])),Alltrim(loCauta.serie_act)+[ ],[])+Alltrim(Str(loCauta.numar_act,20,0))) * pentru mai multe facturi : lcXMLFacturi = caut_facturi_multiple_client(poDate.id_client,poDate.in_valuta,poDate.id_valuta,.T.) If !Empty(lcXMLFacturi) and gnButon = 1 Xmltocursor(lcXMLFacturi, "crsFacturiTemp") Select id_vanzare,; Padl(Iif(!Empty(Nvl(serie_act,[])),Alltrim(serie_act)+[ ],[])+Alltrim(Str(numar_act,20,0)),50,[ ]) As numar_act ; From crsFacturiTemp Into Cursor crsFacturiTemp poDate.listaid = cursor2lista("crsFacturiTemp", "id_vanzare", ",") poDate.descriere = cursor2lista("crsFacturiTemp", "numar_act", ",") USE IN (SELECT('crsFacturiTemp')) poDate.text_aditional = Iif(poDate.tip=8,[RETUR FACTURA ],[REFUND INVOICE FOR ]) + poDate.descriere toForm.ct_clb_altele.Refresh() toForm.buT_TERMIN1.SetFocus() Endif Endcase *!* modificare v 2.0.56 ^ Endproc Procedure do_cauta_fdoc Lparameters toForm Local loCauta loCauta = caut_fdoc() If !Isnull(loCauta) And !Empty(loCauta.fel_document) poDate.id_fdoc = loCauta.id_fdoc poDate.fdoc = loCauta.fel_document toForm.clb_fdoc.Refresh() toForm.clb_dataact.SetFocus() Endif Endproc Procedure do_cauta_gestiune_dest Lparameters toForm Local loCauta If Empty(NVL(poDate.id_client,0)) amessagebox("Nu ati ales gestiunea " + Iif(poDate.tip = 41,"de la care se face returul!","sursa!") ,0+48,"Atentie") toForm.ct_clb_nume_client.SetFocus() Else If poDate.tip = 41 loCauta = caut_gestiune_dest(poDate.id_client,[2,4,5,6,7]) && modificare v 2.0.71 : am adaugat 2 Else loCauta = caut_gestiune_dest(poDate.id_client) Endif If !Isnull(loCauta) And !Empty(NVL(loCauta.id_gestiune,0)) poDate.listaid = loCauta.id_gestiune poDate.descriere = loCauta.nume_gestiune poDateGestiuneDest.id_gestiune = loCauta.id_gestiune poDateGestiuneDest.id_tipgest = loCauta.id_tipgest poDateGestiuneDest.Cont = Nvl(loCauta.Cont,[XXXX]) poDateGestiuneDest.acont = Nvl(loCauta.acont,[XXXX]) toForm.ct_clb_altele.Refresh() toForm.ct_clb_politici_preturi.SetFocus() Endif Endif Endproc Procedure do_cauta_gestiune_init Lparameters toForm Local llAviz llAviz = This.EsteAviz() loCauta = caut_gestiune(0,gnIdUtil) If !Isnull(loCauta) And !Empty(loCauta.id_gestiune) poDate.id_gestiune_init = loCauta.id_gestiune toForm.cgestiune_init = loCauta.nume_gestiune Else poDate.id_gestiune_init = Null toForm.cgestiune_init = [] Endif toForm.ct_contabilitate.ct_clb_gestiune_init.Refresh() If m.llAviz toForm.buT_TERMIN1.SetFocus() Else *!* modificare ROACONTRACTE v 2.0.42 *!* toForm.buT_TERMIN1.SetFocus() toForm.ct_contabilitate.ed_tx_simplu1._edbase1.SetFocus() *!* modificare ROACONTRACTE v 2.0.42 ^ Endif Endproc Procedure do_cauta_locatii Lparameters toForm Local loCauta loCauta = caut_locatie_restaurant() If !Isnull(loCauta) And !Empty(loCauta.id_rest_locatie) poDate.listaid = loCauta.id_rest_locatie poDate.descriere = loCauta.locatie toForm.ct_clb_altele.Refresh() toForm.but_TERMIN1.SetFocus() Endif Endproc Procedure do_cauta_lucrare Lparameters toForm Local llAviz llAviz = This.EsteAviz() Local loCauta LOCAL llToateIreg, llNou, lcFiltruOriginal llToateIreg = .F. llNou = .T. lcFiltruOriginal = '' loCauta = caut_lucrare(m.llToateIreg, m.llNou, m.lcFiltruOriginal) If m.llAviz If !Empty(Nvl(loCauta.id_lucrare,0)) poDate.id_lucrare = loCauta.id_lucrare poDate.nrord = loCauta.nrord Else poDate.id_lucrare = Null poDate.nrord = [] Endif toForm.ct_contabilitate.ct_clb_lucrare.Refresh() Else *!* modificare v 2.0.46 *!* If !Empty(Nvl(loCauta.id_lucrare,0)) *!* poDate.id_lucrare = loCauta.id_lucrare *!* poDate.nrord = loCauta.nrord *!* toForm.ct_contabilitate.ct_clb_lucrare.Refresh() *!* Endif If gnButon = 1 poDate.id_lucrare = loCauta.id_lucrare poDate.nrord = loCauta.nrord Else poDate.id_lucrare = Null poDate.nrord = [] Endif *!* modificare v 2.0.46 ^ Endif toForm.ct_contabilitate.ct_clb_sectie.SetFocus() Endproc Procedure do_cauta_politica Lparameters toForm Local loCauta loCauta = caut_politici_curente_util() If !Isnull(loCauta) And !Empty(Nvl(loCauta.id_pol,0)) poDate.id_pol = loCauta.id_pol poDate.nume_politica = loCauta.nume toForm.ct_clb_politici_preturi.SetFocus() If Type('toForm.ct_contabilitate.ct_clb_gestiune_init.visible')<>'U' && modificare v 2.0.41 toForm.ct_contabilitate.ct_clb_gestiune_init.SetFocus() Else toForm.buT_TERMIN1.SetFocus() Endif Endif Endproc Procedure do_cauta_responsabil Lparameters toForm Local loCauta loCauta = CautPartenerContabilitate(GetHash([cTitlu=>Responsabili??cTipuriParteneri=>]+Alltrim(Str(gnIdTipResponsabili))+[??lAdaugCorespondente=>1])) If !Empty(Nvl(loCauta.id_part,0)) And !Empty(loCauta.denumire) poDate.id_responsabil = loCauta.id_part poDate.responsabil = loCauta.denumire Else poDate.id_responsabil = Null poDate.responsabil = [] Endif toForm.ct_contabilitate.ct_clb_responsabil.Refresh() Do Case Case Type('toForm.ct_clb_altele.visible')<>'U' toForm.ct_clb_altele.SetFocus() Case Type('toForm.ct_contabilitate.ct_clb_gestiune_init.visible')<>'U' && modificare v 2.0.41 toForm.ct_contabilitate.ct_clb_gestiune_init.SetFocus() Otherwise toForm.buT_TERMIN1.SetFocus() Endcase Endproc Procedure do_cauta_sectie Lparameters toForm Local llAviz llAviz = This.EsteAviz() Local loCauta LOCAL lnPornire, llDesktop, llToateIreg, llNou, lcFiltruOriginal lnPornire = 0 llDesktop = .F. llToateIreg = .F. llNou = .T. lcFiltruOriginal = '' loCauta = caut_sectie(lnPornire, llDesktop, m.llToateIreg, m.llNou, m.lcFiltruOriginal) If m.llAviz If !Empty(Nvl(loCauta.id_sectie,0)) poDate.id_sectie = loCauta.id_sectie poDate.sectie = loCauta.sectie Else poDate.id_sectie = Null poDate.sectie = [] Endif toForm.ct_contabilitate.ct_clb_sectie.Refresh() Else *!* modificare v 2.0.46 *!* If !Empty(Nvl(loCauta.id_sectie,0)) *!* poDate.id_sectie = loCauta.id_sectie *!* poDate.sectie = loCauta.sectie *!* toForm.ct_contabilitate.ct_clb_sectie.Refresh() *!* Endif If gnButon = 1 poDate.id_sectie = loCauta.id_sectie poDate.sectie = loCauta.sectie Else poDate.id_sectie = Null poDate.sectie = [] Endif toForm.ct_contabilitate.ct_clb_sectie.Refresh() *!* modificare v 2.0.46 ^ Endif Do Case *!* modificare v 2.0.46 Case Type('toForm.ct_contabilitate.ct_clb_venchelt.visible')<>'U' toForm.ct_contabilitate.ct_clb_venchelt.SetFocus() *!* modificare v 2.0.46 ^ Case Type('toForm.ct_contabilitate.ct_clb_responsabil.visible')<>'U' toForm.ct_contabilitate.ct_clb_responsabil.SetFocus() Case Type('toForm.ct_clb_altele.visible')<>'U' If m.llAviz toForm.ct_clb_altele.Refresh() Endif toForm.ct_clb_altele.SetFocus() Case Type('toForm.ct_contabilitate.ct_clb_gestiune_init.visible')<>'U' && modificare v 2.0.41 toForm.ct_contabilitate.ct_clb_gestiune_init.SetFocus() Otherwise toForm.buT_TERMIN1.SetFocus() Endcase Endproc Procedure do_cauta_valuta Lparameters toForm Local loCauta loCauta = caut_valuta(1,.F.,.T.) If !Isnull(loCauta) And !Empty(loCauta.id_valuta) poDate.id_valuta = loCauta.id_valuta poDate.nume_valuta = loCauta.nume_val toForm.ct_clb_valuta.Refresh() If Type('toForm.clb_zi_curs.visible')<>'U' toForm.clb_zi_curs.SetFocus() Else toForm.clb_serie_act1.SetFocus() Endif Endif Endproc Procedure do_cauta_venchelt Lparameters toForm Local llAviz llAviz = This.EsteAviz() Local loCauta LOCAL lnPornire, llDesktop, lnTip, lnId, llToateIreg, llNou, lcFiltruOriginal lnPornire = 0 llDesktop = .F. lnTip = 2 && venituri lnId = 0 llToateIreg = .F. llNou = .T. lcFiltruOriginal = '' loCauta = caut_venchelt(m.lnPornire, m.llDesktop, m.lnTip, m.lnId, m.llToateIreg, m.llNou, m.lcFiltruOriginal) If gnButon = 1 poDate.id_venchelt = loCauta.id_venchelt poDate.venchelt = loCauta.explicatie Else poDate.id_venchelt = Null poDate.venchelt = [] Endif toForm.ct_contabilitate.ct_clb_venchelt.Refresh() Do Case Case Type('toForm.ct_contabilitate.ct_clb_responsabil.visible')<>'U' toForm.ct_contabilitate.ct_clb_responsabil.SetFocus() Case Type('toForm.ct_clb_altele.visible')<>'U' If m.llAviz toForm.ct_clb_altele.Refresh() Endif toForm.ct_clb_altele.SetFocus() Case Type('toForm.ct_contabilitate.ct_clb_gestiune_init.visible')<>'U' toForm.ct_contabilitate.ct_clb_gestiune_init.SetFocus() Otherwise toForm.buT_TERMIN1.SetFocus() Endcase Endproc Procedure do_verifica Lparameters toForm 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, "data", ANAF_CaData(Iif(Type('poDate.dataact') $ 'DT', poDate.dataact, {}))) AddProperty(loDate, "tip_verificare", "ANAF_SERVICIU_WEB") lnRaspuns = VerificaCodFiscal(loDate, @lnOptiune, @loPartener) This.AplicaRezultatButon(m.toForm, m.loPartener) Endproc Procedure valideaza_antet Lparameters toForm Local plReturn,lcFacturi_dublate, llCopiere, llAviz Store .T. To plReturn llAviz = This.EsteAviz() llCopiere = toForm.lCopiere && copiere factura/aviz Do Case Case Empty(poDate.dataireg) amessagebox("Nu ati completat data inregistrarii!",48,"Atentie") toForm.clb_dataireg.SetFocus() plReturn = .F. Case Empty(poDate.dataact) amessagebox("Nu ati completat data documentului!",48,"Atentie") toForm.clb_dataact.SetFocus() plReturn = .F. Case !m.llAviz And Empty(poDate.datascad) amessagebox("Nu ati completat data scadenta!",48,"Atentie") toForm.clb_data_scadenta.SetFocus() plReturn = .F. Case Isnull(poDate.id_fdoc) Or Empty(poDate.id_fdoc) amessagebox("Nu ati ales felul documentului!",48,"Atentie") toForm.clb_fdoc.SetFocus() plReturn = .F. *!* modificare v 2.0.56 Case !m.llAviz And poDate.in_valuta = 1 And Empty(Nvl(poDate.zi_curs,{})) And Type('toForm.clb_zi_curs.visible')<>'U' *!* Case poDate.in_valuta = 1 And Empty(Nvl(poDate.zi_curs,{})) *!* modificare v 2.0.56 ^ amessagebox("Nu ati completat ziua cursului valutar!",48,"Atentie") toForm.clb_zi_curs.SetFocus() plReturn = .F. Case !m.llAviz And poDate.in_valuta = 1 And Empty(Nvl(poDate.id_valuta,0)) amessagebox("Nu ati completat valuta!",48,"Atentie") toForm.ct_clb_valuta.SetFocus() plReturn = .F. Case Empty(poDate.nract) amessagebox("Nu ati completat numarul documentului!",48,"Atentie") toForm.clb_nract.SetFocus() plReturn = .F. Case !Between(poDate.dataireg,Date(gnAn,gnLuna,1),Gomonth(Date(gnAn,gnLuna,1),1)-1) amessagebox("Data inregistrarii trebuie sa fie din luna "+Alltrim(Str(gnLuna))+"/"+Alltrim(Str(gnAn))+" !",48,"Atentie") toForm.clb_dataireg.SetFocus() plReturn = .F. Case !m.llAviz And poDate.datascadpoDate.dataireg amessagebox("Data documentului trebuie sa fie mai mica sau egala cu data inregistrarii!",48,"Atentie") toForm.clb_dataact.SetFocus() plReturn = .F. Case !m.llAviz And (Empty(poDate.id_client) Or Isnull(poDate.id_client)) && aviz: fara validare client amessagebox("Nu ati ales clientul!",48,"Atentie") toForm.ct_clb_nume_client.SetFocus() plReturn = .F. Case !m.llAviz And Empty(Nvl(poDate.descriere,[])) And poDate.tip = 7 amessagebox("Nu ati ales factura!",48,"Atentie") toForm.ct_clb_altele.SetFocus() plReturn = .F. Case !m.llAviz And Empty(Nvl(poDate.descriere,[])) And m.llCopiere amessagebox("Nu ati ales factura de copiat!",48,"Atentie") toForm.ct_clb_altele.SetFocus() plReturn = .F. Case m.llAviz And Empty(Nvl(poDate.descriere,[])) And m.llCopiere amessagebox("Nu ati ales avizul de copiat!",48,"Atentie") toForm.ct_clb_altele.SetFocus() plReturn = .F. *!* modificare v 2.0.56 Case !m.llAviz And Empty(Nvl(poDate.descriere,[])) And Inlist(poDate.tip,8,9) amessagebox("Nu ati ales factura/facturile pentru care se face returul!",48,"Atentie") toForm.ct_clb_altele.SetFocus() plReturn = .F. *!* modificare v 2.0.56 ^ Case !m.llAviz And Empty(Nvl(poDate.listaid,[])) And !Inlist(poDate.tip,1,5,7,8,9,10,48,49) && modificare : am adaugat 10 ( v 2.0.56 ), 48 ( v 2.0.93 ), 49 ( v 2.0.95 ) Do Case Case Inlist(poDate.tip, 2, 6, 52) lcMesaj = [Nu ati ales contractul!] Case poDate.tip = 3 lcMesaj = [Nu ati ales comanda!] Case poDate.tip = 4 lcMesaj = [Nu ati ales avizul!] Case poDate.tip = 45 && modificare v 2.0.87 lcMesaj = [Nu ati ales locatia!] Endcase amessagebox(lcMesaj,48,"Atentie") toForm.ct_clb_altele.SetFocus() plReturn = .F. Case m.llAviz And Empty(Nvl(poDate.listaid,[])) And Inlist(poDate.tip,21,23,25,26,28,41,42,47) && modificare v 2.0.93 : am adaugat 47 Do Case Case INLIST(poDate.tip,21,25,28,42,47) && modificare v 2.0.93 : am adaugat 47 lcMesaj = [Nu ati ales comanda!] Case poDate.tip = 23 lcMesaj = [Nu ati ales gestiunea destinatie!] *!* modificare v 2.0.16 Case poDate.tip = 41 lcMesaj = [Nu ati ales gestiunea catre care se face returul!] *!* modificare v 2.0.16 ^ Case poDate.tip = 26 lcMesaj = [Nu ati ales contractul!] Endcase amessagebox(lcMesaj,48,"Atentie") toForm.ct_clb_altele.SetFocus() plReturn = .F. Case m.llAviz And Empty(Nvl(poDate.id_pol,0)) And InList(poDate.tip,23,41) amessagebox("Nu ati ales politica de preturi!",48,"Atentie") toForm.ct_clb_politici_preturi.SetFocus() plReturn = .F. Otherwise *!* modificare v 2.0.46 *!* plReturn = .T. lcFacturi_dublate = facturi_duplicate(Iif(m.llAviz,'418','4111'), 0, poDate.serie_act, poDate.nract, []) If !Empty(lcFacturi_dublate) lnRaspuns = amessagebox(lcFacturi_dublate + Chr(13)+"Doriti sa continuati?",4+32,Iif(m.llAviz,"Avize dublate","Facturi dublate")) plReturn = (m.lnRaspuns = 6) Endif *!* modificare v 2.0.46 ^ * Daca FACTURA si clientul se numeste "CLIENT"[I DIVERSI] * Atentionez ca ar trebui sa se aleaga "BON FISCAL" in loc de "FACTURA" IF poDate.nIdTipDoc = poDate.nIdTipDocFactura AND 'CLIENT'$UPPER(NVL(poDate.nume_client,'')) lnRaspuns = amessagebox('Ati ales clientul ' + ALLTRIM(poDate.nume_client) + ' si Tip document = FACTURA in loc de BON FISCAL' + Chr(13)+"Doriti sa continuati?",4+32,"Bon Fiscal") plReturn = (m.lnRaspuns = 6) ENDIF Endcase Return plReturn Endproc Function alege_tipdoc Lparameters tcTipDoc LOCAL lnIdTipDoc, lcTipDoc lcTipDoc = UPPER(m.tcTipDoc) lnIdTipDoc = IIF(m.lcTipDoc = 'FACTURA', poDate.nIdTipDocFactura, ; IIF(m.lcTipDoc = 'PROFORMA', poDate.nIdTipDocProforma, ; IIF(m.lcTipDoc = 'BON FISCAL', poDate.nIdTipDocBonFiscal, ; IIF(m.lcTipDoc = 'AVIZ', poDate.nIdTipDocAvizExpeditie, poDate.nIdTipDocFactura)))) *!* poDate.nIdTipDocFactura = 5 *!* poDate.nIdTipDocProforma = 23 *!* poDate.nIdTipDocBonFiscal = 3 *!* poDate.nIdTipDocAvizExpeditie = 6 *!* poDate.eProforma = IIF(m.lnIdTipDoc = poDate.nIdTipDocProforma, 1, 0) *!* poDate.eBonFiscal = IIF(m.lnIdTipDoc = poDate.nIdTipDocBonFiscal, 1, 0) poDate.initializeaza_setari_document(IIF(m.lnIdTipDoc = poDate.nIdTipDocBonFiscal, -101, IIF(m.lnIdTipDoc = poDate.nIdTipDocProforma, -102, poDate.Tip))) Return m.lnIdTipDoc Endfunc Function schimba_tipdoc Lparameters tnIdTipDoc IF poDate.nIdTipDoc = m.tnIdTipDoc RETURN .F. ENDIF poDate.nract = 0 poDate.serie_act = "" poGeneratorNumere.dezaloca_numar(poDate.nIdTipDoc) poDate.nIdTipDoc = m.tnIdTipDoc && se initializeaza automat si .eBonFiscal, .eProforma poDate.rezultat_serii = poGeneratorNumere.creeaza_cursor_serii(poDate.nIdTipDoc) && 1 = CU SERIE, 2 = FARA SERIE CU PLAJE, 3 = CU SERIE SI PLAJE Return .T. Endfunc Procedure VerificaANAFAutomat Lparameters toForm, tlIstoricIntai Local lcCod, ldData, lcMotiv, lcCheie, loRez, loEx If This.lInVerificare Return Endif This.lVerificaLaActivare = .F. This.lInVerificare = .T. Try lcCod = This.CodFiscalClient() ldData = ANAF_CaData(Iif(Type('poDate.dataact') $ 'DT', poDate.dataact, {})) lcMotiv = This.MotivNeutru(m.lcCod, m.ldData) lcCheie = Upper(Chrtran(m.lcCod, ' ', '')) + '_' + Dtos(m.ldData) Do Case Case !Empty(m.lcMotiv) This.cCheieVerificata = '' This.AplicaIndicatorANAF(m.toForm, 'NEUTRU', m.lcMotiv) Case This.CodInvalid(m.lcCod) This.cCheieVerificata = '' This.AplicaIndicatorANAF(m.toForm, 'ATENTIE', 'Cod fiscal invalid: ' + m.lcCod) Case m.lcCheie == This.cCheieVerificata && indicatorul e deja la zi pentru cod si data Otherwise This.cCheieVerificata = '' loRez = This.CalculeazaStare(m.toForm, m.lcCod, m.ldData, m.lcCheie, m.tlIstoricIntai) This.AplicaIndicatorANAF(m.toForm, loRez.cStare, loRez.cTooltip, loRez.lGri) This.cCheieVerificata = Iif(loRez.cStare == 'NEUTRU', '', m.lcCheie) Endcase Catch To loEx This.cCheieVerificata = '' This.AplicaIndicatorANAF(m.toForm, 'NEUTRU', 'Verificare ANAF esuata - apasati pentru verificare manuala') This.Logheaza('eroare: ' + loEx.Message + ' linia ' + Transform(loEx.LineNo)) Finally This.lInVerificare = .F. This.SeteazaCursor(m.toForm, 0) Endtry Endproc Procedure LaSchimbareData Lparameters toForm If !This.lVerificaLaActivare This.VerificaANAFAutomat(m.toForm, .F.) Endif Endproc Procedure ReseteazaIndicator Lparameters toForm If Type('poDate.id_client') = 'N' And !Empty(Nvl(poDate.id_client, 0)) Return Endif This.cCheieVerificata = '' This.AplicaIndicatorANAF(m.toForm, 'NEUTRU', 'Verificare') Endproc Procedure MarcheazaVerificareLaActivare If Type('poDate.tip') = 'N' And !Inlist(poDate.tip, 23, 25, 41) And Type('poDate.cod_fiscal') $ 'CX' poDate.cod_fiscal = This.CodFiscalClient() Endif This.lVerificaLaActivare = .T. Endproc Function AplicaRezultatButon Lparameters toForm, toPartener Local lcCod, ldData, lcCheie, lcCheieSes, loStare, loRez, lcRO lcCod = This.CodFiscalClient() ldData = ANAF_CaData(Iif(Type('poDate.dataact') $ 'DT', poDate.dataact, {})) If !Empty(This.MotivNeutru(m.lcCod, m.ldData)) Or Vartype(m.toPartener) <> 'O' Or !Pemstatus(m.toPartener, 'platitortvamfin', 5) Or !Empty(Nvl(toPartener.eroare, '')) Return '' Endif lcCheie = Upper(Chrtran(m.lcCod, ' ', '')) + '_' + Dtos(m.ldData) If Empty(Alltrim(Nvl(toPartener.firma, ''))) lcCheieSes = 'C' + NormalizeazaCUI(m.lcCod) + '_' + Dtos(m.ldData) If Type('goCacheANAF_Sesiune') = 'O' And goCacheANAF_Sesiune.GetKey(m.lcCheieSes) > 0 goCacheANAF_Sesiune.Remove(m.lcCheieSes) Endif This.cCheieVerificata = '' This.VerificaANAFAutomat(m.toForm, .F.) Return This.cStare Endif lcRO = Left(Upper(Alltrim(m.lcCod)), 2) == 'RO' loStare = Createobject('Empty') Addproperty(loStare, 'cCui', NormalizeazaCUI(m.lcCod)) Addproperty(loStare, 'lAreRO', m.lcRO) Addproperty(loStare, 'lPlatitorANAF', toPartener.platitortvamfin) Addproperty(loStare, 'lInactivANAF', toPartener.inactiv) Addproperty(loStare, 'cDenumireANAF', Alltrim(toPartener.firma)) Addproperty(loStare, 'lRadiatANAF', .F.) Addproperty(loStare, 'dRadiereANAF', {}) Addproperty(loStare, 'lDiscordanta', (toPartener.platitortvamfin <> m.lcRO) Or toPartener.inactiv) Addproperty(loStare, 'dInceputScpTVA', Nvl(toPartener.data_inceput_scptva, {})) Addproperty(loStare, 'dSfarsitScpTVA', Nvl(toPartener.data_sfarsit_scptva, {})) Addproperty(loStare, 'dAnulareScpTVA', Nvl(toPartener.data_anul_imp_scptva, {})) Addproperty(loStare, 'cMesajScpTVA', Alltrim(Nvl(toPartener.stare, ''))) Addproperty(loStare, 'lTvaIncasareANAF', Nvl(toPartener.tvaincasare, .F.)) Addproperty(loStare, 'dInceputTvaInc', Nvl(toPartener.data_inceput_tvainc, {})) Addproperty(loStare, 'dSfarsitTvaInc', Nvl(toPartener.data_sfarsit_tvainc, {})) Addproperty(loStare, 'dData', m.ldData) Addproperty(loStare, 'cSursa', Iif(Empty(Alltrim(Nvl(toPartener.sursa, ''))), 'ANAF', Alltrim(toPartener.sursa))) Addproperty(loStare, 'dDataSursa', Nvl(toPartener.data_sursa, {})) loRez = This.ClasificaRezultat(m.loStare, .F., '', m.lcCod, m.ldData) This.AplicaIndicatorANAF(m.toForm, loRez.cStare, loRez.cTooltip, loRez.lGri) This.cCheieVerificata = m.lcCheie Return loRez.cStare Endfunc Procedure PuneFiltruCui Lparameters toHash, tcCui Local lcFiltru, lnNr If Empty(m.tcCui) Or !Empty(Chrtran(m.tcCui, '0123456789', '')) Return Endif lcFiltru = "LTRIM(UPPER(B.COD_FISCAL), 'RO ') = '" + m.tcCui + "'" lnNr = 0 goExecutor.oSelect2Value('select count(*) from nom_parteneri b where b.sters = 0 and b.inactiv = 0 and ' + m.lcFiltru, @lnNr) If Nvl(m.lnNr, 0) > 1 toHash.SetValue('cFiltruOrig', m.lcFiltru) Endif Endproc Function CalculeazaStare Lparameters toForm, tcCod, tdData, tcCheie, tlIstoricIntai Local loStare, llNecesita, llNegasit, lcClasa, loRez, lnT0 If Isnull(This.oNegasit) This.oNegasit = Createobject('Collection') Endif If This.oNegasit.GetKey(m.tcCheie) > 0 Return This.oNegasit.Item(m.tcCheie) Endif This.AplicaIndicatorANAF(m.toForm, 'NEUTRU', 'Se verifica la ANAF...') This.SeteazaCursor(m.toForm, 11) lnT0 = Seconds() Store .F. To llNecesita, llNegasit lcClasa = '' loStare = ANAF_StarePartener(m.tcCod, m.tdData, .F., @llNecesita, @llNegasit, @lcClasa, 0, m.tlIstoricIntai) loRez = This.ClasificaRezultat(m.loStare, m.llNegasit, m.lcClasa, m.tcCod, m.tdData) If m.llNegasit This.oNegasit.Add(m.loRez, m.tcCheie) Endif This.Logheaza('stare=' + loRez.cStare + ' cod=' + m.tcCod + ' data=' + Dtoc(m.tdData) + ; ' sursa=' + Iif(Isnull(m.loStare), '-', loStare.cSursa) + ' data_sursa=' + Iif(Isnull(m.loStare), '-', Dtoc(loStare.dDataSursa)) + ; ' ms=' + Transform(Int((Seconds() - m.lnT0) * 1000))) Return m.loRez Endfunc Function ClasificaRezultat Lparameters toStare, tlNegasit, tcClasaEsec, tcCod, tdData Local lcStare, lcTip, llGri, loRez lcStare = 'NEUTRU' llGri = .F. lcTip = 'Verificare' Do Case Case Isnull(m.toStare) And m.tlNegasit lcStare = 'ATENTIE' lcTip = 'ATENTIE: cod fiscal inexistent la ANAF (' + Alltrim(Iif(Left(Upper(Alltrim(m.tcCod)), 2) == 'RO', Substr(Alltrim(m.tcCod), 3), m.tcCod)) + ') - verificati daca e client strain. Click/Enter = detalii' Case Isnull(m.toStare) Do Case Case Inlist(m.tcClasaEsec, 'FARA_RASPUNS', 'RASPUNS_NEINTELES') lcStare = 'NECUNOSCUT' llGri = .T. lcTip = 'ANAF indisponibil, fara istoric - verificati manual' Case m.tcClasaEsec == 'CNP' lcTip = 'Persoana fizica (CNP) - fara verificare ANAF' Case m.tcClasaEsec == 'COD_NENUMERIC' lcTip = 'Cod fiscal nenumeric - nu se poate verifica la ANAF' Case m.tcClasaEsec == 'SE_TESTEAZA' lcTip = 'Verificarea ANAF se testeaza - reincercati' Endcase Case m.toStare.cSursa == 'CACHE_INDISP' And !Empty(m.toStare.dDataSursa) And m.toStare.dDataSursa < m.tdData llGri = .T. If m.toStare.lDiscordanta lcStare = 'ATENTIE' lcTip = 'ATENTIE: ANAF indisponibil; ultima verificare din ' + Dtoc(m.toStare.dDataSursa) + ', anterioara facturii: ' + ; This.MotiveDiscordanta(m.toStare) + '. Click/Enter = detalii' Else lcStare = 'NECUNOSCUT' lcTip = 'ANAF indisponibil; ultima verificare din ' + Dtoc(m.toStare.dDataSursa) + ', anterioara facturii: ' + ; Iif(m.toStare.lPlatitorANAF, 'Platitor TVA', 'Neplatitor TVA') Endif Case m.toStare.lDiscordanta lcStare = 'ATENTIE' lcTip = 'ATENTIE: ' + This.MotiveDiscordanta(m.toStare) + '. ' + This.TextAnafStare(m.toStare) + ' Click/Enter = detalii' Otherwise lcStare = 'OK' lcTip = 'OK - ' + This.TextAnafStare(m.toStare) + Iif(m.toStare.cSursa == 'ANAF', '', ' Radierea nu se verifica din istoric.') Endcase loRez = Createobject('Empty') Addproperty(loRez, 'cStare', m.lcStare) Addproperty(loRez, 'cTooltip', m.lcTip) Addproperty(loRez, 'lGri', m.llGri) Return m.loRez Endfunc Function MotiveDiscordanta Lparameters toStare Local lcMotiv lcMotiv = '' If m.toStare.lAreRO And !m.toStare.lPlatitorANAF lcMotiv = 'cod cu RO, dar ANAF il da neplatitor TVA la data facturii' Endif If !m.toStare.lAreRO And m.toStare.lPlatitorANAF lcMotiv = 'cod fara RO, dar ANAF il da platitor TVA la data facturii' Endif If m.toStare.lInactivANAF lcMotiv = m.lcMotiv + Iif(Empty(m.lcMotiv), '', '; ') + 'client inactiv la ANAF' Endif If m.toStare.lRadiatANAF lcMotiv = m.lcMotiv + Iif(Empty(m.lcMotiv), '', '; ') + 'client radiat la ANAF din ' + Dtoc(m.toStare.dRadiereANAF) Endif Return m.lcMotiv Endfunc Procedure AplicaIndicatorANAF Lparameters toForm, tcStare, tcTooltip, tlGri Local loBtn, lcTip, lcUp, lcDown, lcPic lcTip = Left(m.tcTooltip, 255) This.cStare = m.tcStare This.cTooltip = m.lcTip This.ColoreazaCodFiscal(m.toForm, m.tcStare) If Vartype(m.toForm) <> 'O' Or !Pemstatus(m.toForm, 'But_verifica1', 5) Return Endif loBtn = toForm.But_verifica1 If !Pemstatus(m.loBtn, 'cPicOrig', 5) Addproperty(m.loBtn, 'cPicOrig', m.loBtn.Picture) Addproperty(m.loBtn, 'cUpOrig', m.loBtn.cpictureup) Addproperty(m.loBtn, 'cDownOrig', m.loBtn.cpicturedown) Endif Do Case Case m.tcStare == 'NECUNOSCUT' Or (Vartype(m.tlGri) = 'L' And m.tlGri) lcUp = 'verificare1_gri.bmp' lcDown = 'verificare2_gri.bmp' lcPic = m.lcUp Case m.tcStare == 'OK' lcUp = 'verificare1_verde.bmp' lcDown = 'verificare2_verde.bmp' lcPic = m.lcUp Case m.tcStare == 'ATENTIE' lcUp = 'verificare1_rosu.bmp' lcDown = 'verificare2_rosu.bmp' lcPic = m.lcUp Otherwise lcUp = m.loBtn.cUpOrig lcDown = m.loBtn.cDownOrig lcPic = m.loBtn.cPicOrig Endcase This.PuneProprietate(m.loBtn, 'cpictureup', m.lcUp) This.PuneProprietate(m.loBtn, 'cpicturedown', m.lcDown) This.PuneProprietate(m.loBtn, 'Picture', m.lcPic) This.PuneProprietate(m.loBtn, 'ToolTipText', m.lcTip) This.PuneProprietate(m.loBtn, 'StatusBarText', m.lcTip) If Pemstatus(m.loBtn, 'Refresh', 5) loBtn.Refresh() Endif Endproc Procedure ColoreazaCodFiscal Lparameters toForm, tcStare Local loTxt, lnCuloare If Vartype(m.toForm) <> 'O' Or !Pemstatus(m.toForm, 'txtCodFiscal', 5) Return Endif loTxt = toForm.txtCodFiscal If !Pemstatus(m.loTxt, 'ForeColor', 5) Or !Pemstatus(m.loTxt, 'DisabledForeColor', 5) Return Endif If !Pemstatus(m.loTxt, 'nForeOrig', 5) Addproperty(m.loTxt, 'nForeOrig', m.loTxt.ForeColor) Addproperty(m.loTxt, 'nDisOrig', m.loTxt.DisabledForeColor) Endif Do Case Case m.tcStare == 'OK' loTxt.ForeColor = Rgb(0, 110, 0) loTxt.DisabledForeColor = Rgb(0, 110, 0) Case m.tcStare == 'ATENTIE' loTxt.ForeColor = Rgb(192, 0, 0) loTxt.DisabledForeColor = Rgb(192, 0, 0) Otherwise loTxt.ForeColor = m.loTxt.nForeOrig loTxt.DisabledForeColor = m.loTxt.nDisOrig Endcase Endproc Procedure PuneProprietate Lparameters toObj, tcNume, tuValoare If Pemstatus(m.toObj, m.tcNume, 5) toObj.&tcNume = m.tuValoare Endif Endproc Procedure SeteazaCursor Lparameters toForm, tnCursor If Vartype(m.toForm) = 'O' And Pemstatus(m.toForm, 'MousePointer', 5) toForm.MousePointer = m.tnCursor Endif Endproc Procedure Logheaza Lparameters tcText If Type('goLog') = 'O' goLog.Log(m.tcText, 'anaf_verif_factura') Endif Endproc Function MotivNeutru Lparameters tcCod, tdData Do Case Case !('OCAUTARE' $ Upper(Set('Procedure'))) Or ANAF_NivelVerificare() = 0 Return 'Verificare' Case Type('poDate.lEditare') = 'L' And poDate.lEditare Return 'Verificare' Case Type('poDate.tip') = 'N' And Inlist(poDate.tip, 23, 25, 41) Return 'Gestiune - fara verificare ANAF' Case Empty(m.tcCod) Return 'Verificare' Case Empty(m.tdData) Return 'Completati data facturii' Endcase Return '' Endfunc Function CodInvalid Lparameters tcCod Local lcCui lcCui = NormalizeazaCUI(m.tcCod) If Empty(m.lcCui) Return .F. Endif If Len(m.lcCui) = 13 And Empty(Chrtran(m.lcCui, '0123456789', '')) Return !Empty(ANAF_ValidareCod(m.tcCod, 2)) Endif Return !Empty(ANAF_ValidareCod(m.tcCod, 1)) Or (Len(m.lcCui) < 2 And Empty(Chrtran(m.lcCui, '0123456789', ''))) Endfunc Function TextAnafStare Lparameters toStare If Isnull(This.oTextAnaf) This.oTextAnaf = Createobject('anaf_verif_cautare') Endif Return This.oTextAnaf.TextAnaf(m.toStare, .F., 24) Endfunc Function CodFiscalClient Local lcCod, lnSelect Private pnIdClientAnaf lcCod = Iif(Type('poDate.cod_fiscal') $ 'CX', Alltrim(Nvl(poDate.cod_fiscal, '')), '') If Empty(m.lcCod) And Type('poDate.id_client') = 'N' And Type('goExecutor') = 'O' pnIdClientAnaf = poDate.id_client If !Empty(pnIdClientAnaf) lnSelect = Select() Use In (Select('crsCodFiscalAnaf')) If goExecutor.oExecute('select cod_fiscal from nom_parteneri where id_part = ?pnIdClientAnaf', 'crsCodFiscalAnaf') >= 0 And Used('crsCodFiscalAnaf') lcCod = Alltrim(Nvl(crsCodFiscalAnaf.cod_fiscal, '')) Endif Use In (Select('crsCodFiscalAnaf')) If Used(m.lnSelect) Select (m.lnSelect) Endif Endif Endif Return m.lcCod Endfunc Enddefine