Files
comun/programe/ofacturare_antet.prg
Marius Mutu 8e022d332e #13: formular de facturare unificat - etapa curenta
Squash al branch-ului de lucru plan13-s2.

Clase: ofacturare (nucleul formularului unificat), ofacturare_comun,
ferestre_cere_date, ocomenzi, caut_ora (lista de preturi in combo-urile de
cautare), omodificari.

Programe: ofacturare impartit - ofacturare_antet, ofacturare_rutare_scriere si
ogrid_latimi sunt fisiere noi; oproceduri_facturare primeste discountul pe linie
si cota standard de TVA cand articolul nu are cota pe politica.

Documentatie: capcana SQLExec no_data_found, conventia de encoding, depanarea
testelor VFP si regulile de lucru - conflictele cu modificarile venite din alte
proiecte sunt rezolvate pastrand ambele parti.

Loguri de rulare a testelor scoase din versionare; testele raman.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PkyjGyrV2S7932om4kfSiK
2026-09-09 21:38:25 +03:00

926 lines
33 KiB
Plaintext

*!* 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().
Define Class oAntetFacturare As Custom
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
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()
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)
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()
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, "tip_verificare", "ANAF_SERVICIU_WEB")
lnRaspuns = VerificaCodFiscal(loDate, @lnOptiune, @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.datascad<poDate.dataact
amessagebox("Data scadenta trebuie sa fie mai mare sau egala cu data documentului!",48,"Atentie")
toForm.clb_data_scadenta.SetFocus()
plReturn = .F.
Case poDate.dataact>poDate.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
Enddefine