Files
vfp_roaauto/COMUN/programe/onom_comenzi.prg

310 lines
14 KiB
Plaintext

***************************************************************************************************************
**** Proceduri:
**** vizualizare_lucrari
**** vizualizare_comenzi
**** vizualizare_optiuni
**** extrage_optiuni - mutata in proceduri_comune.prg ( v 2.0.11 )
**** recompune_optiuni - mutata in proceduri_comune.prg ( v 2.0.11 )
**** make_sectii_utilizator - mutata in proceduri_comune.prg ( v 2.0.11 )
**** verifica_lucrare
***************************************************************************************************************
******************************************* INCEPUT: vizualizare_lucrari *******************************************
Procedure vizualizare_lucrari
gcAcces=[1;2;3;4;]
Private polucrari,pocomenzi,polucrarielemente
Local lcSchema,lcSelect,lcOrder,lcFiltru,lcFiltruOriginal,llAfiseaza
Store '' To polucrari,pocomenzi,polucrarielemente
lcSchema=[id_lucrare n(20),nrord c(30),termen_executie t,id_lucrari_detalii n(20),explicatie c(100),data_lucrare t,]+;
[dataora t,utilizator c(30),inchisa n(1)]
lcSelect=[select id_lucrare,nrord,termen_executie,id_lucrari_detalii,explicatie,data_lucrare,]+;
[dataora,utilizator,inchisa from vlucrari_detalii]
lcOrder=[data_lucrare]
lcFiltru = [1=2]
lcFiltruOriginal = [id_sectie=]+ALLTRIM(STR(gnId_sectie))
llAfiseaza = .F.
lcgroup = []
llModParam = .T.
llAfiseaza = .F.
*gencursor('polucrari','crslucrari',lcSelect,lcFiltru,lcSchema,lcOrder,llAfiseaza)
gencursor('polucrari','crslucrari', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
polucrari.ca_baza1.afisare()
lcSchema=[id_comanda n(20),COMANDA_EXTERNA c(20),id_codclient c(20),id_lucrare n(20),id_part n(20),id_gestiune n(20),]+;
[nr_comanda c(100),data_comanda t,nume c(70),data_livrare t,interna n(1),id_sectie n(5),id_sectie2 n(5),id_facturare n(5),id_livrare n(5),adresa_facturare c(50),adresa_livrare c(50)]
lcSelect=[select id_comanda,COMANDA_EXTERNA,id_codclient,id_lucrare,id_part,id_gestiune]+;
[nr_comanda,data_comanda,nume,data_livrare,interna,id_sectie,id_sectie2,id_facturare,id_livrare,b.denumire_adresa as adresa_facturare,c.denumire_adresa as adresa_livrare]+;
[from vcomenzi a left join adrese_parteneri b on b.id_adresa=a.id_facturare left join adrese_parteneri c on c.id_adresa=a.id_livrare]
lcOrder=[data_comanda]
lcFiltru = [1=2]
lcFiltruOriginal = [id_sectie=]+ALLTRIM(STR(gnId_sectie))
llAfiseaza = .F.
lcgroup = []
llModParam = .T.
llAfiseaza = .F.
*gencursor('pocomenzi','crscomenzi',lcSelect,lcFiltru,lcSchema,lcOrder,llAfiseaza)
gencursor('pocomenzi','crscomenzi', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
pocomenzi.ca_baza1.afisare()
lcSchema=[id_lucrare n(20),denumire c(100),cantitate n(16,3),um c(10),cantitate2 n(16,3),um2 c(10)]
lcSelect=[select id_lucrare,denumire,cantitate,um,cantitate2,um2 from vlucrari_elemente]
lcOrder=[denumire]
lcFiltru = [1=2]
lcFiltruOriginal = [] && [id_sectie=]+ALLTRIM(STR(gnId_sectie))
llAfiseaza = .F.
lcgroup = []
llModParam = .T.
llAfiseaza = .F.
*gencursor('polucrarielemente','crslucrarielemente',lcSelect,lcFiltru,lcSchema,lcOrder,llAfiseaza)
gencursor('polucrarielemente','crslucrarielemente', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
polucrarielemente.ca_baza1.afisare()
ofrmlucrari=Createobject('frm_lucrari_detalii')
ofrmlucrari.Show(1)
Release polucrari,pocomenzi,polucrarielemente,ofrmlucrari
Endproc && vizualizare_lucrari
******************************************* SFARSIT: vizualizare_lucrari *******************************************
******************************************* INCEPUT: vizualizare_comenzi *******************************************
Procedure vizualizare_comenzi
gcAcces=[1;2;3;4;]
Private pocomenzi,pocomenzielemente
Local lcSchema,lcSelect,lcOrder,lcFiltru,llAfiseaza
Store '' To pocomenzi,pocomenzielemente
lcSchema=[selectat n(1),id_comanda n(20),COMANDA_EXTERNA c(20),id_codclient c(20),id_lucrare n(20),id_part n(20),id_agent n(20),id_delegat n(20),id_masina n(20),]+;
[nr_comanda c(100),data_comanda t,nume c(70),tip_comanda c(20),data_livrare t,nume_agent c(70),nume_delegat c(70),]+;
[nrinmat c(10),nrord c(30),facturat n(1),dataora t,utilizator c(40),data_livrat t,interna n(1),]+;
[nr_livrare c(50),inchisa n(1), id_sectie n(5),id_sectie2 n(5),id_facturare n(5),id_livrare n(5),adresa_facturare c(50),adresa_livrare c(50), cod_client c(50), id_ctr n(10),numar_contract c(100)]
lcSelect=[select 0 as selectat,a.id_comanda,a.COMANDA_EXTERNA,a.id_codclient,a.id_lucrare,a.id_part,a.id_agent,a.id_delegat,a.id_masina,]+;
[a.nr_comanda,a.data_comanda,a.nume,a.tip_comanda,a.data_livrare,a.nume_agent,a.nume_delegat,]+;
[a.nrinmat,a.nrord,a.facturat,a.dataora,a.utilizator,a.data_livrat,a.interna,a.nr_livrare,a.inchisa,a.id_sectie,a.id_sectie2,a.id_facturare,a.id_livrare,] + ;
[b.denumire_adresa as adresa_facturare,c.denumire_adresa as adresa_livrare, d.COD as cod_client,d.id_ctr,d.numar_contract ]+;
[from vcomenzi a left join adrese_parteneri b on b.id_adresa=a.id_facturare left join adrese_parteneri c on c.id_adresa=a.id_livrare left join parteneri_coduri d on d.id=a.id_codclient]
lcOrder=[data_comanda]
lcFiltru = [1=2]
lcFiltruOriginal = [] && [id_sectie=]+ALLTRIM(STR(gnId_sectie))
llAfiseaza = .F.
*gencursor('pocomenzi','crscomenzi',lcSelect,lcFiltru,lcSchema,lcOrder,llAfiseaza)
gencursor('pocomenzi','crscomenzi', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
pocomenzi.ca_baza1.afisare()
lcSchema=[id_comanda n(20),id_articol n(20),id_pol n(20),denumire c(100),pret n(16,] + alltrim(str(gnPPretV)) + [),cantitate n(16,] + alltrim(str(gnPCant)) + [),um c(10)]
lcSelect=[select id_comanda,id_articol,id_pol,denumire,pret,cantitate,um from vcomenzi_elemente]
lcOrder=[denumire]
lcFiltru = [1=2]
lcFiltruOriginal = [] && [id_sectie=]+ALLTRIM(STR(gnId_sectie))
llAfiseaza = .F.
*gencursor('pocomenzielemente','crscomenzielemente',lcSelect,lcFiltru,lcSchema,lcOrder,llAfiseaza)
gencursor('pocomenzielemente','crscomenzielemente', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
pocomenzielemente.ca_baza1.afisare()
ofrmcomenzi=Createobject('frm_comenzi')
ofrmcomenzi.Show(1)
Release pocomenzi,pocomenzielemente,ofrmcomenzi
Endproc && vizualizare_comenzi
******************************************* SFARSIT: vizualizare_comenzi *******************************************
******************************************* INCEPUT: vizualizare_optiuni *******************************************
Procedure vizualizare_optiuni
If Used('crsoptiuni')
Use In crsoptiuni
Endif
lcSql=[SELECT VARTYPE,VARNAME,VARVALUE FROM ] + gcS + [.OPTIUNI WHERE PROGRAM='] + Upper(Alltrim(gcNumeProgram)) + [']
lcCursor=[crsoptiuni]
lnSucces=goExecutor.oExecute(lcSql,lcCursor)
If lnSucces<0
amessagebox(goExecutor.cEroare,0+48,"Eroare")
Else
Select crsoptiuni
Scan
lcvartype=Alltrim(Upper(Vartype))
lcvarname=Alltrim(Upper(varname))
Do Case
Case lcvartype = "CHARACTER"
luvarvalue = Alltrim(varvalue)
gc&lcvarname. = luvarvalue
Case lcvartype = "NUMERIC"
luvarvalue = Val(varvalue)
gn&lcvarname. = luvarvalue
Endcase
Endscan
Use In crsoptiuni
ofrmoptiune=Createobject('frm_optiuni_comenzi')
ofrmoptiune.Show(1)
Release ofrmoptiune
Endif
Endproc && vizualizare_optiuni
******************************************* SFARSIT: vizualizare_optiuni *******************************************
********************************************************************************************************************
*!* modificare v 2.0.11
*!* Procedure extrage_optiuni
*!* Parameters tcLista, tnId
*!* Local lcLista, lcReturn
*!* Store '' To lcReturn
*!* lcLista = Nvl(Alltrim(tcLista),'')
*!* lnNrOptiuni = Getwordcount(lcLista,";")
*!* For i=1 To lnNrOptiuni
*!* lcExtragOptId = Getwordnum(lcLista,i,";")
*!* lcId_extras = Getwordnum(lcExtragOptId,1,"::")
*!* If lcId_extras = Alltrim(Str(tnId))
*!* lcReturn = Getwordnum(lcExtragOptId,2,"::")
*!* Endif
*!* Endfor
*!* Return lcReturn
*!* Endproc && extrage_optiune
********************************************************************************************************************
********************************************************************************************************************
*!* *!* lcLista = '1001::3;2::777;21001::5;'
*!* *!* lcId = 2
*!* *!* lcValoareNoua = '9'
*!* *!* lcListaNoua = recompune_optiuni(lcLista,lcId,lcValoareNoua)
*!* Procedure recompune_optiuni
*!* Parameters tcLista, tnId, tcValoareNoua
*!* Local lcLista, lcListaNoua, lcId, lcValoareNoua, lnGrupuri, lcGrup, lcIdCautat, lnPoz, lnPozGrup, lcValoare
*!* lcLista = Nvl(Alltrim(tcLista),'')
*!* lcId = Alltrim(Str(tnId))
*!* lcValoareNoua = Alltrim(tcValoareNoua)
*!* llGasit = .F.
*!* lcListaNoua = ''
*!* lnGrupuri = Getwordcount(lcLista,';')
*!* For i = 1 To lnGrupuri
*!* lcGrup = Getwordnum(lcLista,i,";")
*!* If i=1
*!* lcIdCautat = lcId + '::'
*!* Else
*!* lcIdCautat = ';'+ lcId + '::'
*!* lcGrup = ';' + lcGrup && ';id_sectie::optiune_veche'
*!* Endif
*!* lnPozGrup = At(lcIdCautat,lcGrup)
*!* If lnPozGrup > 0
*!* llGasit = .T.
*!* lnPoz = At('::', lcGrup)
*!* If lnPoz > 0
*!* lcValoare = Substr(lcGrup,lnPoz) && '::optiune_veche'
*!* lcGrup= Strtran(lcGrup,lcValoare,'::'+lcValoareNoua)
*!* Endif
*!* Endif
*!* lcListaNoua = lcListaNoua + lcGrup
*!* Endfor
*!* If lnGrupuri = 0
*!* lcListaNoua = lcId + '::' + lcValoareNoua
*!* Else
*!* If !llGasit
*!* lcListaNoua = lcListaNoua + ';' + lcId + '::' + lcValoareNoua
*!* Endif
*!* Endif
*!* Return lcListaNoua
*!* Endproc && recompune_optiuni
********************************************************************************************************************
*!* Procedure make_sectii_utilizator
*!* lcSel = [{call PACK_COMENZI.sectii_utilizator(?gnIdUtil,?gnIdSucursala)}]
*!* lcCursor = 'crsSectii'
*!* lnSucces = goExecutor.oExecute(lcSel,lcCursor)
*!* If lnSucces < 0
*!* amessagebox(goExecutor.cEroare,0+16,"Eroare")
*!* Return
*!* Endif
*!* Select crsSectii
*!* Go Top
*!* Endproc && make_sectii_utilizator
*!* modificare v 2.0.11 ^
********************************************************************************************************************
Function verifica_lucrare
Lparameters tnIdLucrare,tcNumeCursorVFP
Local llReturn,lcSql,lcNumeCursorOra,lcCursorV,lcMesaj
&&& (loCauta.id_lucrare,[crstempcomlucrare])
llReturn = .T.
lcNumeCursorTempV = [crstempvluc]
lcCursorVerificare = [crsverificareluc]
lcMesaj = []
If Used(lcCursorVerificare)
Use In (lcCursorVerificare)
Endif
If Used(lcNumeCursorTempV)
Use In (lcNumeCursorTempV)
Endif
Create Cursor (lcCursorVerificare) (Id N(14),nume c(100),nr_comanda M)
Create Cursor (lcNumeCursorTempV) (interna N(1),Id N(14),nume c(200),nr_comanda M,nr N(14))
If !Empty(Nvl(tnIdLucrare,0))
lcNumeCursorOra = [crstemporalucrare]
If Used(lcNumeCursorOra)
Use In (lcNumeCursorOra)
Endif
lcSql = [select a.interna,a.id,(case when a.interna in (2,5) then b.denumire ] + ;
[when interna = 3 then c.nume_gestiune ] + ;
[when interna = 4 then d.sectie ] + ;
[else null end) as nume,] + ;
[stringagg(a.nr_comanda) as nr_comanda,a.nr from ] + ;
[(select id_lucrare, interna,] + ;
[(case when interna in (2,5) then id_part ] + ;
[when interna = 3 then id_gestiune ] + ;
[when interna = 4 then id_sectie2 ] + ;
[else null end) as id,] + ;
[nr_comanda,] + ;
[count(*) over(partition by id_lucrare, interna,(case when interna = 2 then id_part when interna = 3 then id_gestiune ] + ;
[when interna = 4 then id_sectie2 else null end)) as nr ] + ;
[from ] + gcS + [.comenzi where sters = 0 and id_sectie = ?gnId_sectie and interna <> 1 and id_lucrare = ] + Alltrim(Str(tnIdLucrare)) + [) a ] + ;
[left join ] + gcS + [.nom_parteneri b on a.id = b.id_part and a.interna = 2 ] + ;
[left join ] + gcS + [.nom_gestiuni c on a.id = c.id_gestiune and a.interna = 3 ] + ;
[left join ] + gcS + [.nom_sectii d on a.id = d.id_sectie and a.interna = 4 ] + ;
[group by a.interna,a.id,(case when a.interna in (2,5) then b.denumire when a.interna = 3 then c.nume_gestiune when a.interna = 4 then d.sectie else null end),a.nr ] + ;
[order by 3,2]
lnSucces = goExecutor.oExecute(lcSql,lcNumeCursorOra)
If lnSucces < 0
amessagebox(goExecutor.cEroare,16,"Eroare")
Return .F.
Else
Insert Into (lcNumeCursorTempV) Select interna,id,nume,Chr(44)+Alltrim(nr_comanda)+Chr(44) as nr_comanda,nr From (lcNumeCursorOra)
Use In (lcNumeCursorOra)
Endif
Endif
If !Empty(tcNumeCursorVFP)
Local loDublura
Select (tcNumeCursorVFP)
Scan For interna <> 1
Scatter Name loDublura
Select (lcNumeCursorTempV)
Locate For interna = loDublura.interna And Id = Iif(INLIST(loDublura.interna,2,5),loDublura.id_part,Iif(loDublura.interna=3,loDublura.id_gestiune,loDublura.id_sectie2)) && modificare v 2.0.20
If Found()
If At([,] + Alltrim(loDublura.nr_comanda) + [,],Alltrim(nr_comanda)) = 0
&& s-ar putea sa am comanda deja pe lucrare si sa o am si selectata in cursorul din VFP
Replace nr_comanda With Alltrim(nr_comanda) + Alltrim(loDublura.nr_comanda) + [,],nr With nr + 1
Endif
Else
Append Blank
Replace interna With loDublura.interna,Id With Iif(INLIST(loDublura.interna,2,5),loDublura.id_part,Iif(loDublura.interna=3,loDublura.id_gestiune,loDublura.id_sectie2)),; && modificare v 2.0.20
nume With loDublura.nume,nr_comanda With [,] + Alltrim(loDublura.nr_comanda) + [,],nr With 1
Endif
Select (tcNumeCursorVFP)
Endscan
Release loDublura
Endif
Insert Into (lcCursorVerificare) Select Id,nume,nr_comanda From (lcNumeCursorTempV) Where nr > 1 Order By nume,Id
If Reccount(lcCursorVerificare)>0
lcMesaj = [Urmatorii beneficiari vor avea mai mult de o comanda pe lucrare : ] + Chr(13) + Chr(10)
Select (lcCursorVerificare)
Scan
lcMesaj = lcMesaj + Padr(Alltrim(nume),50,[ ]) + [ - ] + Substr(Alltrim(nr_comanda),2,Len(Alltrim(nr_comanda))-2) + Chr(13) + Chr(10)
Endscan
lcMesaj = lcMesaj + Chr(13) + Chr(10) + [Doriti sa continuati?]
If amessagebox(lcMesaj,4+32,"Comenzi multiple") = 7
llReturn = .F.
Endif
Endif
If Used(lcCursorVerificare)
Use In (lcCursorVerificare)
Endif
Return llReturn
Endfunc && verifica_lucrare
********************************************************************************************************************