Files
vfp_roaauto/COMUN/programe/oproceduri_facturare.prg

2394 lines
119 KiB
Plaintext

*!* 20.02.2015
*!* marius.mutu
*!* + caut_facturi_multiple_client_articol: alegere factura dupa client si articol in scop de retur articol pe o factura de vanzare normala
*!* 16.06.2015
*!* marius.mutu
*!* vizualizare_facturi + coloane:id_facturare, listare_detaliata
*!* 11.05.2017
*!* marius.mutu
*!* caut_contract_facturare: se poate adauga un contract din cautarea de contracte - parametru contracte_nou with tnIdPart
*!* 16.12.2019
*!* marius.mutu
*!* vizualizare_facturi, vizualizare_facturi2 crsDetalii.id_jtva_coloana_ex, jtva_coloana_ex
*!* 29.12.2019
*!* marius.mutu
*!* vizualizare_facturi, vizualizare_facturi2 crsFcturi.email_facturare, adresa_client, email_client, adresa_beneficiar, email_beneficiar pentru trimiterea facturii pe email la clienti
*!* 20.01.2020
*!* marius.mutu
*!* vizualizare_facturi, vizualizare_facturi2 crsFacturi.codmatc - codmat client
*!* 30.01.2020
*!* marius.mutu
*!* vizualizare_facturi, vizualizare_facturi2 + id_util pentru listarea facturii cu responsabilul care a introdus factura
*!* 25.03.2020
*!* marius.mutu
*!* vizualizare_facturi, vizualizare_facturi2 + tlShowRecords - arata facturile din luna la intrarea in formular
***************************************************************************************************************
**** Proceduri:
**** vizualizare_optiuni_facturare
**** configurare_serii_facturare
**** facturare_lista_de_preturi
**** facturare_contracte
**** facturare_comenzi
**** facturare_avize
**** facturare_articole_compuse
**** emitere_aviz_clienti
**** emitere_aviz_clienti_debitori
**** emitere_aviz_clienti_custodie
**** emitere_aviz_transfer
**** emitere_dispozitii_livrare
**** vizualizare_facturi
**** vizualizare_proforme
**** verifica_setari
**** vanzare_materii_prime
**** vanzare_produse
**** vanzare_marfa_pret_achi
**** vanzare_marfa_pret_vanz
**** vanzare_marfa_pret_achi_vanz
**** selecteaza_gestiuni
**** creeaza_cursor_seturi
**** creeaza_cursor_seturi_proforme
**** recreeaza_cursoare_retur
**** calculeaza_totaluri
**** Functii :
**** actualizeaza_optiuni_program - inlocuita de actualizeaza_optiuni_program din oinit_optiuni.prg
**** caut_comanda_client
**** caut_comanda_gestiune
**** caut_contract_facturare
**** caut_avize
**** caut_facturi_client
**** caut_facturi_multiple_client
**** caut_gestiune_sursa
**** caut_utilizator_facturare
**** caut_gestiune_dest - am mutat-o in ocautare.prg
**** caut_politici_curente_util - veche 26.01
***************************************************************************************************************
************************************ INCEPUT: vizualizare_optiuni_facturare ***********************************
Procedure vizualizare_optiuni_facturare
Lparameters tnTip
&& 1 = optiuni de pe server
&& 2 = optiuni din registrul Windows
Local lnTipOptiuni
If Used('crsoptiuni')
Use In crsoptiuni
Endif
If gcNumeProgram = 'ROACONTRACTE'
lnTipOptiuni = 2
Else
lnTipOptiuni = 1
Endif
Do Case
Case tnTip = 1
If actualizeaza_optiuni_program()
ofrmoptiune = Createobject('frm_optiuni_facturare', lnTipOptiuni)
ofrmoptiune.Show(1)
Release ofrmoptiune
Endif
Case tnTip = 2
ofrmoptiune = Createobject('frm_optiuni_facturare_local', lnTipOptiuni)
ofrmoptiune.Show(1)
Release ofrmoptiune
Otherwise
*!* amessagebox("Optiune invalida!",16,"Eroare")
lnTipOptiuni = 0
Endcase
If Used('crsoptiuni')
Use In crsoptiuni
Endif
Release lnTipOptiuni
Endproc && vizualizare_optiuni_facturare
************************************ SFARSIT: vizualizare_optiuni_facturare ***********************************
*!* ************************************ INCEPUT: facturare_din_stoc *******************************************
*!* Procedure facturare_din_stoc
*!* factureaza(7)
*!* Endproc && facturare_din_stoc
*!* ************************************ SFARSIT: facturare_din_stoc *******************************************
************************************ INCEPUT: facturare_lista_de_preturi ***********************************
Procedure facturare_lista_de_preturi
Do politica.mpr
Endproc && facturare_lista_de_preturi
************************************ SFARSIT: facturare_lista_de_preturi ***********************************
************************************ INCEPUT: facturare_contracte ******************************************
Procedure facturare_contracte
LPARAMETERS tcTip
LOCAL lcTip
lcTip = UPPER(ALLTRIM(TRANSFORM(m.tcTip)))
IF EMPTY(m.lcTip) OR !INLIST(m.lcTip, 'FACTURA LEI', 'INVOICE', 'FACTURA VALUTA')
lcTip = 'FACTURA LEI'
ENDIF
DO CASE
CASE m.lcTip = 'FACTURA LEI'
factureaza(2)
CASE m.lcTip = 'INVOICE'
factureaza(6)
CASE m.lcTip = 'FACTURA VALUTA'
factureaza(52)
ENDCASE
Endproc && facturare_contracte
************************************ SFARSIT: facturare_contracte ******************************************
************************************ INCEPUT: facturare_comenzi ********************************************
Procedure facturare_comenzi
factureaza(3)
Endproc && facturare_comenzi
************************************ SFARSIT: facturare_comenzi ********************************************
************************************ INCEPUT: facturare_avize ***********************************************
Procedure facturare_avize
factureaza(4)
Endproc && facturare_avize
************************************ SFARSIT: facturare_avize ***********************************************
************************************ INCEPUT: copiere_factura ***********************************************
PROCEDURE copiere_factura
LPARAMETERS toFactura
factureaza(toFactura.Tip, toFactura)
ENDPROC && copiere_factura
************************************ SFARSIT: copiere_factura ***********************************************
********************************** INCEPUT: facturare_articole_compuse ***************************************
Function facturare_articole_compuse
Private ofrmfactseturi
Local lnNrInregRate
*!* modificare v 2.0.56
*!* Dimension laStructura(1,18)
*!* Afields(laStructura,[crsfactura])
*!* If Used('crsfacturaset')
*!* Use In crsfacturaset
*!* Endif
*!* Create Cursor crsfacturaset From Array laStructura
*!* modificare v 2.0.67
*!* copiaza_structura_cursor([crsfactura],[crsfacturaset])
*!* modificare v 2.0.67 ^
*!* modificare v 2.0.56 ^
gnButon = 1
Select crsfactura
lnRecno = Recno()
Replace id_set_fact With 0 All
*!* modificare v 2.0.67
Calculate Cnt() For Inlist(opt_facturare, 1, 2) To lnNrInregRate
Set Filter To !Inlist(opt_facturare, 1, 2)
If lnNrInregRate <> Reccount('crsfactura')
copiaza_structura_cursor([crsfactura], [crsfacturaset])
Select crsfactura
*!* modificare v 2.0.67 ^
Go Top
ofrmfactseturi = Createobject('frm_articole_compuse')
ofrmfactseturi.Show(1)
Release ofrmfactseturi
*!* modificare v 2.0.67
Endif
Release lnNrInregRate
*!* modificare v 2.0.67 ^
Select crsfactura
*!* modificare v 2.0.67
Set Filter To
*!* modificare v 2.0.67 ^
Go Min(lnRecno, Reccount('crsfactura'))
Return Iif(gnButon = 1, .T., .F.)
Endfunc
********************************** SFARSIT: facturare_articole_compuse ***************************************
************************************ INCEPUT: emitere_aviz_clienti *****************************************
Procedure emitere_aviz_clienti
Lparameters tnTip
Do Case
Case tnTip = 1
factureaza(21) && pe baza de comenzi
Case tnTip = 2
factureaza(22) && pe baza de lista de preturi
Case tnTip = 3
factureaza(26) && pe baza de lista de contract
Case tnTip = 4 && Retur aviz \<marfa (valoric) - gestiune la pret de achizitie *
gnTipGest = 7
initializeaza_vanzare_din_stoc(260)
Case tnTip = 5 && Retur \<aviz marfa (valoric) - gestiune la pret de vanzare
gnTipGest = 6
initializeaza_vanzare_din_stoc(238)
Case tnTip = 6 && protocol marfa la pret de vanzare
gnTipGest = 6
initializeaza_vanzare_din_stoc(270)
Case tnTip = 7
factureaza(24) && Retur aviz
Otherwise
amessagebox("Nu exista configurarea pentru aceasta optiune!", 48, "Atentie")
Endcase
Endproc && emitere_aviz_clienti
************************************ SFARSIT: emitere_aviz_clienti *****************************************
******************************** INCEPUT: emitere_aviz_clienti_debitori ************************************
Procedure emitere_aviz_clienti_debitori
Lparameters tnTip
Do Case
Case tnTip = 1
factureaza(28) && pe baza de comenzi
Case tnTip = 2
factureaza(29) && pe baza de lista de preturi
Otherwise
amessagebox("Nu exista configurarea pentru aceasta optiune!", 48, "Atentie")
Endcase
Endproc && emitere_aviz_clienti
******************************** SFARSIT: emitere_aviz_clienti_debitori ************************************
******************************** INCEPUT: emitere_aviz_clienti_custodie ************************************
Procedure emitere_aviz_clienti_custodie
Lparameters tnTip
Do Case
Case tnTip = 1
factureaza(42) && pe baza de comenzi
Case tnTip = 2
factureaza(47) && pe baza de comenzi
CASE tnTip = 3
gnTipGest = 6
initializeaza_vanzare_din_stoc(267) && retur
Otherwise
amessagebox("Nu exista configurarea pentru aceasta optiune!", 48, "Atentie")
Endcase
Endproc && emitere_aviz_clienti_custodie
******************************** SFARSIT: emitere_aviz_clienti_custodie ************************************
************************************ INCEPUT: emitere_aviz_transfer ****************************************
Procedure emitere_aviz_transfer
Lparameters tnTip
Do Case
Case tnTip = 1
factureaza(25) && pe baza de comenzi
Case tnTip = 2
factureaza(23) && pe baza de lista de preturi
Case tnTip = 3
factureaza(27) && pe baza de lucrare
Case tnTip = 4
factureaza(30) && pe baza de NIR
*!* v 2.0.16
Case tnTip = 5
factureaza(41) && retur pe baza de lista de preturi
*!* v 2.0.16 ^
Otherwise
amessagebox("Nu exista configurarea pentru aceasta optiune!", 48, "Atentie")
Endcase
Endproc && emitere_aviz_transfer
************************************ SFARSIT: emitere_aviz_transfer ****************************************
********************************** INCEPUT: emitere_dispozitii_livrare *************************************
Procedure emitere_dispozitii_livrare
Private poFacturi
Local llAfiseaza, loFrmFacturi
Store .F. To llAfiseaza
Store '' To poFacturi
If Used('crsfacturi')
Use In crsfacturi
Endif
pcschema1 = ['selectat n(1),id_vanzare n(20),dataora t,dataora_exp t,data_act d,numar_act n(14),serie_act c(10),'+] + ;
['tip n(5),id_part n(10),discount n(17,4),discount_evidentiat n(1),text_aditional c(250),facturat n(1),data_facturat t,'+] + ;
['explicatie c(240),altele c(200),client c(100),cod n(20),utilizator c(30),utilfact c(30),delegat c(70),'+] + ;
['bidelegat c(30),nume_agent c(70),nrinmat c(10),total_fara_tva n(20,4),total_tva n(20,4),total_cu_tva n(20,4),id_gestiune n(10),tip_incasare n(10)']
pcselect1 = ['select 0 as selectat,id_vanzare,dataora,dataora_exp,data_act,numar_act,serie_act,'+] + ;
['tip,id_part,discount,discount_evidentiat,text_aditional,facturat,data_facturat,'+] + ;
['explicatie,altele,client,cod,utilizator,utilfact,delegat,bidelegat,'+] + ;
['nume_agent,nrinmat,total_fara_tva,total_tva,total_cu_tva,id_gestiune,tip_incasare from ] + gcS + [.fact_vfacturi ] + ;
[where ']
pcorder1 = [data_act]
pcfiltru1 = [1=2]
llAfiseaza = .F.
gencursor('poFacturi', 'crsfacturi', pcselect1, pcfiltru1, pcschema1, pcorder1, llAfiseaza)
poFacturi.ca_baza1.afisare()
loFrmFacturi = Createobject("frm_emitere_dispozitii")
loFrmFacturi.Show(1)
Release loFrmFacturi, poFacturi, poDetalii
Endproc && emitere_dispozitii_livrare
********************************** SFARSIT: emitere_dispozitii_livrare *************************************
************************************ INCEPUT: vizualizare_facturi ******************************************
Procedure vizualizare_facturi
LPARAMETERS tlShowRecords
* tlShowRecords: .T. arata facturile din luna curenta la intrarea in formular, default (.F.)
Private poFacturi, poDetaliiFactura, pdData1, pdData2, pnRecords
Local llAfiseaza, loFrmFacturi, lcData, lcSql
llAfiseaza = .F.
poFacturi = Null
poDetalii = Null
Use In (SELECT('crsfacturi'))
Use In (SELECT('crsDetalii'))
* Afisez automat facturile din luna daca tlShowRecords=.T. sau daca numarul de vanzari.count(*) <= optiunea gnVanzariRecords sau 500 de inregistrari
IF !m.tlShowRecords
lnVanzariRecords = IIF(TYPE('gnVanzariRecords') = 'N', m.gnVanzariRecords, 500)
pdData1 = DATE(m.gnAn, m.gnLuna, 1)
pdData2 = GOMONTH(m.pdData1, 1) - 1
pnRecords = 0
lcSql = [SELECT COUNT(*) as nr FROM vanzari WHERE data_act between ?pdData1 AND ?pdData2 AND STERS = 0]
llSucces = goExecutor.oSelecteaza2Value(m.lcSql, @pnRecords)
IF m.pnRecords < m.lnVanzariRecords
tlShowRecords = .T.
ENDIF
ENDIF
lcSchema = ['ales n(1),id_vanzare n(20),id_comanda n(20),dataora t,dataora_exp t,data_act d,data_scad d,sters n(1),dataoras t,numar_act n(14),serie_act c(10),'+] + ;
['tip n(5),id_part n(10),discount n(17,4),disc_fara_tva n(17,4),discount_evidentiat n(1),text_aditional M,facturat n(1),data_facturat t,'+] + ;
['explicatie c(240),altele c(200),client c(100),cod n(20),id_util I,utilizator c(30),utils c(30),utilfact c(30),delegat c(70),'+] + ;
['bidelegat c(30),cnpdelegat c(15),nume_agent c(70),nrinmat c(10),total_fara_tva n(20,4),total_tva n(20,4),total_cu_tva n(20,4),id_gestiune n(10),'+] + ;
['serie_chit c(20),nr_incasare n(10),incasat n(17,4),in_valuta n(1),sucursala c(100),id_ruta n(10),ruta c(100),curs n(20,4),multiplicator n(10),nume_val c(50),'+] + ;
['valuta c(50), id_valuta n(5), valval n(20,4), tvaval n(20,4), totval n(20,4),'+] + ;
['id_delegat n(10),id_agent n(10),id_masina n(10),valoarea N(20,4),nume_gestiune C(50),id_sectie n(5),sectie c(50),id_lucrare n(20), lucrare c(200),'+] + ;
['tip_incasare n(10),afisare_scadenta n(1),id_ordl n(10),tva_incasare n(1),listare_detaliata n(1),'+] + ;
['id_facturare n(10),adresa_facturare c(250),email_facturare c(100),adresa_client c(250),email_client c(100),adresa_beneficiar c(250),email_beneficiar c(100),'+] + ;
['id_beneficiar n(20),beneficiar C(100),tip_factura N(5),ctip_factura C(100), id_ctr N(10), contract C(100),eproforma N(1),tip_saft N(3) null,tip_saftname V(250) null,'+]+;
['id_livrare N(10),adresa_livrare V(250), denumire_adresa_livrare V(100), email_livrare V(100),institutie_publica N(1) null,efactura N(1) null,cod_fiscal C(20),id_fact N(20)']
lcSelect = ['select 0 as ales,id_vanzare,id_comanda,dataora,dataora_exp,data_act,data_scad,sters,dataoras,numar_act,serie_act,'+] + ;
['tip,id_part,discount,disc_fara_tva,discount_evidentiat,text_aditional,facturat,data_facturat,'+] + ;
['explicatie,altele,client,cod,id_util,utilizator,utils,utilfact,delegat,bidelegat,cnpdelegat,'+] + ;
['nume_agent,nrinmat,total_fara_tva,total_tva,total_cu_tva,id_gestiune,serie_chit,nr_incasare,incasat,'+] + ;
['in_valuta,sucursala,id_ruta,ruta,curs,multiplicator,nume_val,'+] + ;
['valuta,id_valuta,valval,tvaval,totval,'+] + ;
['id_delegat,id_agent,id_masina,valoarea,'+] + ;
['nume_gestiune,id_sectie,sectie,id_lucrare,lucrare,tip_incasare,afisare_scadenta,id_ordl,tva_incasare,listare_detaliata,'+] + ;
['id_facturare,adresa_facturare,email_facturare,adresa_client,email_client,adresa_beneficiar,email_beneficiar,'+] + ;
['id_beneficiar, beneficiar, tip_factura, ctip_factura, id_ctr, contract, eproforma,tip_saft,tip_saftname, '+]+;
['id_livrare,adresa_livrare,denumire_adresa_livrare,email_livrare,institutie_publica,efactura,cod_fiscal,id_fact from fact_vfacturi where ']
lcorder = [data_act,numar_act]
lcData = Alltrim(Str(gnAn)) + Padl(Alltrim(Str(gnLuna)), 2, [0]) + [01]
lcFiltru = IIF(!m.tlShowRecords, [1=2], [data_act between to_date('] + lcData + [','YYYYMMDD') and last_day(to_date('] + lcData + [','YYYYMMDD')) AND STERS = 0])
llAfiseaza = .F.
lcGroup = []
llModParam = .F.
lcFiltruOriginal = []
gencursor('poFacturi', 'crsfacturi', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcGroup, llModParam, lcFiltruOriginal)
poFacturi.ca_baza1.afisare()
*!* TEXT TO lcSchema NOSHOW
*!* id_vanzare n(20),id_vanzare_det n(10),serie c(100), pret n(20,4), pret_val n(20,4),sters n(1),dataoras d,
*!* proc_tvav n(10,4), cantitate n(10,4), discount_unitar n(20,4), discount_unitar_val n(20,4), cont c(4),
*!* id_valuta n(10), id_gestiune n(20), pret_achizitie n(20,4), pret_cu_tva n(1), denumire c(250), explicatie c(240),
*!* um c(10), nume_lista_preturi c(100), nume_gestiune c(50), utils c(30), curs n(20,4), multiplicator n(10),
*!* nume_val c(10), tip_valuta n(1), id_vanzare_set n(10), codmatf c(50), codmat c(50), codbare c(50),
*!* id_subgrupa n(5), subgrupa c(100), client c(70), id_jtva_coloana n(10), id_ctr n(10), numar_contract c(50)
*!* ENDTEXT
lcSchema = ['id_vanzare n(20),id_vanzare_det n(10),lot C(20), serie c(100), pret n(20,6), pret_val n(20,6),sters n(1),dataoras d, '+] + ;
['proc_tvav n(10,4), cantitate n(10,4), discount_unitar n(20,6), discount_unitar_val n(20,6), cont c(4), '+] + ;
['id_valuta n(10), id_gestiune n(20), pret_achizitie n(20,6), pret_cu_tva n(1), denumire c(250), explicatie M, '+] + ;
['um c(10), nume_lista_preturi c(100), nume_gestiune c(50), utils c(30), curs n(20,4), multiplicator n(10), '+] + ;
['nume_val c(10), tip_valuta n(1), id_vanzare_set n(10), codmatf c(50), codmat c(50), codmatc c(50), codbare c(50), '+] + ;
['id_subgrupa n(5), subgrupa c(100), client c(70), id_jtva_coloana n(10), jtva_coloana C(100), id_jtva_coloana_ex n(10), jtva_coloana_ex C(100), id_ctr n(10), numar_contract c(50), taxcode N(6), taxname C(250)']
*!* TEXT TO lcSelect NOSHOW
*!* select id_vanzare, id_vanzare_det, serie, pret, pret_val, sters, dataoras,
*!* proc_tvav, cantitate, discount_unitar, discount_unitar_val, cont,
*!* id_valuta, id_gestiune, pret_achizitie, pret_cu_tva, denumire, explicatie,
*!* um, nume_lista_preturi, nume_gestiune, utils, curs, multiplicator,
*!* nume_val, tip_valuta, id_vanzare_set, codmatf, codmat, codbare,
*!* id_subgrupa, subgrupa, client, id_jtva_coloana, id_ctr, numar_contract
*!* from fact_vfacturi_detalii
*!* ENDTEXT
lcSelect = ['select id_vanzare, id_vanzare_det, lot, serie, pret, pret_val, sters, dataoras, '+] + ;
['proc_tvav, cantitate, discount_unitar, discount_unitar_val, cont, '+] + ;
['id_valuta, id_gestiune, pret_achizitie, pret_cu_tva, denumire, explicatie, '+] + ;
['um, nume_lista_preturi, nume_gestiune, utils, curs, multiplicator, '+] + ;
['nume_val, tip_valuta, id_vanzare_set, codmatf, codmat, codmatc, codbare, '+] + ;
['id_subgrupa, subgrupa, client, id_jtva_coloana, jtva_coloana, id_jtva_coloana_ex, jtva_coloana_ex, id_ctr, numar_contract, taxcode, taxname '+] + ;
['from fact_vfacturi_detalii where 2=2']
lcOrder = [id_vanzare_det]
lcfiltru = [1 = 2]
llAfiseaza = .F.
lcGroup = []
llModParam = .F.
lcFiltruOriginal = []
gencursor('poDetalii', 'crsDetalii', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcGroup, llModParam, lcFiltruOriginal)
poDetalii.ca_baza1.afisare()
SELECT crsfacturi
loFrmFacturi = Createobject("frm_facturi")
loFrmFacturi.Show(1)
USE IN (SELECT('crsFacturi'))
USE IN (SELECT('crsDetalii'))
Release loFrmFacturi, poFacturi, poDetalii
Endproc
************************************ SFARSIT: vizualizare_facturi ****************************************
************************************ INCEPUT: vizualizare_facturi2 ******************************************
*** acelasi formular ca vizualizare_facturi
*** diferenta la fact_vfacturi.totalurile in lei si in valuta, valuta sunt calculate in vanzari, in loc sa fie luate din vanzari_detalii, pentru rapiditate
*** totalurile sunt completate in vanzari la insert into vanzari
************************************ INCEPUT: vizualizare_facturi2 ******************************************
Procedure vizualizare_facturi2
LPARAMETERS tlShowRecords
* tlShowRecords: .T. arata facturile din luna curenta la intrarea in formular, default (.F.)
Private poFacturi, poDetaliiFactura, pdData1, pdData2, pnRecords
Local llAfiseaza, loFrmFacturi, lcData, lcSql
llAfiseaza = .F.
poFacturi = Null
poDetalii = Null
Use In (SELECT('crsfacturi'))
Use In (SELECT('crsDetalii'))
* Afisez automat facturile din luna daca tlShowRecords=.T. sau daca numarul de vanzari.count(*) <= optiunea gnVanzariRecords sau 500 de inregistrari
IF !m.tlShowRecords
lnVanzariRecords = IIF(TYPE('gnVanzariRecords') = 'N', m.gnVanzariRecords, 500)
pdData1 = DATE(m.gnAn, m.gnLuna, 1)
pdData2 = GOMONTH(m.pdData1, 1) - 1
pnRecords = 0
lcSql = [SELECT COUNT(*) as nr FROM vanzari WHERE data_act between ?pdData1 AND ?pdData2 AND STERS = 0]
llSucces = goExecutor.oSelecteaza2Value(lcSql, @pnRecords)
IF m.pnRecords < m.lnVanzariRecords
tlShowRecords = .T.
ENDIF
ENDIF
TEXT TO lcSchema NOSHOW
ales n(1),id_vanzare n(20),id_comanda n(20),dataora t,dataora_exp t,data_act d,data_scad d,sters n(1),dataoras t,numar_act n(14),serie_act c(10),tip n(5),id_part n(10),discount n(17,4),disc_fara_tva n(17,4),discount_evidentiat n(1),text_aditional M,facturat n(1),data_facturat t,explicatie c(240),altele c(200),client c(100),cod n(20),id_util I, utilizator c(30),utils c(30),utilfact c(30),delegat c(70),bidelegat c(30),cnpdelegat c(15),nume_agent c(70),nrinmat c(10),total_fara_tva n(20,4),total_tva n(20,4),total_cu_tva n(20,4),id_gestiune n(10),serie_chit c(20),nr_incasare n(10),incasat n(17,4),in_valuta n(1),sucursala c(100),id_ruta n(10),ruta c(100),curs n(20,4),multiplicator n(10),nume_val c(50),valuta c(50), id_valuta N(5), valval n(20,4), tvaval n(20,4), totval n(20,4),id_delegat n(10),id_agent n(10),id_masina n(10),valoarea N(20,4),nume_gestiune C(50),id_sectie n(5),sectie c(50),id_lucrare n(20), lucrare c(200),tip_incasare n(10),afisare_scadenta n(1),id_ordl n(10),tva_incasare n(1),listare_detaliata n(1),id_facturare N(10), adresa_facturare c(250), email_facturare c(100), adresa_client c(250), email_client c(100), adresa_beneficiar c(250), email_beneficiar c(100),id_beneficiar n(20), beneficiar C(100), tip_factura N(5), ctip_factura C(100), id_ctr N(10), contract C(100),eproforma N(1),tip_saft N(3) null,tip_saftname V(250) null,id_livrare N(10),adresa_livrare V(250), denumire_adresa_livrare V(100), email_livrare V(100),institutie_publica N(1) null,efactura N(1) null, cod_fiscal C(20), id_fact n(20)
ENDTEXT
TEXT TO lcSelect NOSHOW
select 0 as ales,id_vanzare,id_comanda,dataora,dataora_exp,data_act,data_scad,sters,dataoras,numar_act,serie_act,tip,id_part,discount,disc_fara_tva,discount_evidentiat,text_aditional,facturat,data_facturat,
explicatie,altele,client,cod,id_util,utilizator,utils,utilfact,delegat,bidelegat,cnpdelegat,nume_agent,nrinmat,total_fara_tva,total_tva,total_cu_tva,id_gestiune,serie_chit,nr_incasare,incasat,
in_valuta,sucursala,id_ruta,ruta,curs,multiplicator,nume_val,valuta,id_valuta,valval,tvaval,totval,id_delegat,id_agent,id_masina,valoarea,
nume_gestiune,id_sectie,sectie,id_lucrare,lucrare,tip_incasare,afisare_scadenta,id_ordl,tva_incasare,listare_detaliata,
id_facturare,adresa_facturare,email_facturare,adresa_client,email_client,adresa_beneficiar,email_beneficiar,id_beneficiar, beneficiar, tip_factura, ctip_factura, id_ctr, contract,eproforma,
tip_saft,tip_saftname,id_livrare,adresa_livrare,denumire_adresa_livrare,email_livrare,institutie_publica,efactura,cod_fiscal,id_fact
from fact_vfacturi2
ENDTEXT
lcorder = [data_act,numar_act]
lcData = Alltrim(Str(gnAn)) + Padl(Alltrim(Str(gnLuna)), 2, [0]) + [01]
lcFiltru = IIF(!m.tlShowRecords, [1=2], [data_act between to_date('] + lcData + [','YYYYMMDD') and last_day(to_date('] + lcData + [','YYYYMMDD')) AND STERS = 0])
llAfiseaza = .F.
lcGroup = []
llModParam = .T.
lcFiltruOriginal = []
gencursor('poFacturi', 'crsfacturi', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcGroup, llModParam, lcFiltruOriginal)
poFacturi.ca_baza1.afisare()
TEXT TO lcSchema NOSHOW
id_vanzare n(20),id_vanzare_det n(10),lot c(20), serie c(100), pret n(20,6), pret_val n(20,6),sters n(1),dataoras d, proc_tvav n(10,4), cantitate n(10,4), discount_unitar n(20,4), discount_unitar_val n(20,4), cont c(4), id_valuta n(10), id_gestiune n(20), pret_achizitie n(20,6), pret_cu_tva n(1), denumire c(250), explicatie M, um c(10), nume_lista_preturi c(100), nume_gestiune c(50), utils c(30), curs n(20,4), multiplicator n(10), nume_val c(10), tip_valuta n(1), id_vanzare_set n(10), codmatf c(50), codmat c(50), codmatc c(50), codbare c(50), id_subgrupa n(5), subgrupa c(100), client c(70), id_jtva_coloana n(10), jtva_coloana C(100), id_jtva_coloana_ex n(10), jtva_coloana_ex C(100), id_ctr n(10), numar_contract c(50),taxcode N(6),taxname C(250)
ENDTEXT
TEXT TO lcSelect NOSHOW
select id_vanzare, id_vanzare_det, lot, serie, pret, pret_val, sters, dataoras,
proc_tvav, cantitate, discount_unitar, discount_unitar_val, cont,
id_valuta, id_gestiune, pret_achizitie, pret_cu_tva, denumire, explicatie,
um, nume_lista_preturi, nume_gestiune, utils, curs, multiplicator,
nume_val, tip_valuta, id_vanzare_set, codmatf, codmat, codmatc, codbare, id_subgrupa, subgrupa, client, id_jtva_coloana, jtva_coloana, id_jtva_coloana_ex, jtva_coloana_ex, id_ctr, numar_contract,taxcode,taxname
from fact_vfacturi_detalii
ENDTEXT
lcOrder=[id_vanzare_det]
lcfiltru = [1 = 2]
llAfiseaza = .F.
lcGroup = []
llModParam = .T.
lcFiltruOriginal = []
gencursor('poDetalii','crsDetalii', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcGroup, llModParam, lcFiltruOriginal)
poDetalii.ca_baza1.afisare()
SELECT crsfacturi
loFrmFacturi = Createobject("frm_facturi")
loFrmFacturi.Show(1)
USE IN (SELECT('crsFacturi'))
USE IN (SELECT('crsDetalii'))
Release loFrmFacturi, poFacturi, poDetalii
ENDPROC && vizualizare_facturi2
************************************ SFARSIT: vizualizare_facturi2 ****************************************
*********************************** INCEPUT: vizualizare_proforme ****************************************
Procedure vizualizare_proforme
Private poFacturi, poDetaliiFactura
Local llAfiseaza,loFrmFacturi
Store .F. To llAfiseaza
Store '' To poFacturi, poDetalii
If Used('crsfacturi')
Use In crsfacturi
Endif
If Used('crsDetalii')
Use In crsDetalii
Endif
pcschema1=['id_proforma n(20),id_comanda n(20),dataora t,data_act d,sters n(1),dataoras t,numar_act n(14),'+]+;
['tip n(5),id_part n(10),discount n(17,4),discount_evidentiat n(1),text_aditional m,'+]+;
['explicatie c(240),altele c(200),client c(100), utilizator c(30),utils c(30),'+]+;
['total_fara_tva n(20,4),total_tva n(20,4),total_cu_tva n(20,4),in_valuta n(1),sucursala c(100),nume_val c(50),curs n(20,gnPCurs),multiplicator n(10),'+] +;
['id_facturare n(10), adresa_facturare c(250), listare_detaliata n(1)']
pcselect1=['select id_proforma, id_comanda, dataora, data_act, sters, dataoras, numar_act, tip, id_part, discount,' + ] + ;
['discount_evidentiat, text_aditional, explicatie, altele, client, utilizator, utils, total_fara_tva, total_tva,' + ] + ;
['total_cu_tva,in_valuta,sucursala,nume_val,curs,multiplicator, CAST(null as Number(10)) as id_facturare, CAST(null as varchar2(100)) as adresa_facturare, 0 as listare_detaliata from fact_vproforme where ']
pcorder1=[data_act]
pcfiltru1 = [1=2]
llAfiseaza = .F.
gencursor('poFacturi','crsfacturi',pcselect1,pcfiltru1,pcschema1,pcorder1,llAfiseaza)
poFacturi.ca_baza1.afisare()
pcschema1=['']
pcselect1=['select a.id_proforma_det as id_vanzare_det,a.id_proforma_set as id_vanzare_set,a.* from ] + gcS + [.fact_vproforme_detalii a where 2=2']
pcorder1=[a.id_proforma_det]
pcfiltru1 = [1 = 2]
llAfiseaza = .F.
gencursor('poDetalii','crsDetalii',pcselect1,pcfiltru1,pcschema1,pcorder1,llAfiseaza)
poDetalii.ca_baza1.afisare()
loFrmFacturi = Createobject("frm_proforme")
loFrmFacturi.Show(1)
Release loFrmFacturi, poFacturi, poDetalii
Endproc
*********************************** SFARSIT: vizualizare_proforme ****************************************
************************************ INCEPUT: vizualizare_borderou_facturi ******************************************
*** vizualizare borderou facturi de trimis la clienti pe email
Procedure vizualizare_borderou_facturi
Private poBorderou, poFacturi
Local llAfiseaza,loFrmBorderou, lcData
Store .F. To llAfiseaza
Store '' To poBorderou, poFacturi
Use In (SELECT('crsBorderou'))
USE IN (SELECT('crsFacturiBorderou'))
TEXT TO lcSchema NOSHOW
ales n(1), id_borderou I, data_borderou T, id_client N(10), client C(200), email_client c(100), trimis N(1), data_trimis T, confirmat N(1), data_confirmat T
ENDTEXT
TEXT TO lcSelect NOSHOW
select 0 as ales,id_borderou,data_borderou,id_client,client,email_client,trimis,data_trimis,confirmat,data_confirmat FROM fact_vborderou
ENDTEXT
lcorder = [data_borderou desc,id_borderou desc]
lcData = Alltrim(Str(gnAn)) + Padl(Alltrim(Str(gnLuna)), 2, [0]) + [01]
lcFiltru = [TRUNC(data_borderou) between to_date('] + lcData + [','YYYYMMDD') and SYSDATE]
llAfiseaza = .F.
lcGroup = []
llModParam = .T.
lcFiltruOriginal = []
gencursor('poBorderou', 'crsBorderou', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcGroup, llModParam, lcFiltruOriginal)
poBorderou.ca_baza1.afisare()
TEXT TO lcSchema NOSHOW
id_borderou n(20), data_borderou T, id_client N(10), client C(200), id_vanzare N(20), data_act D, numar_act n(14),serie_act c(10),ctip_factura C(100), total_fara_tva N(20,4), total_cu_tva N(20,4), valval N(20,4), totval N(20,4), valuta C(10), in_valuta N(1), trimis N(1), data_trimis T, confirmat N(1), data_confirmat T
ENDTEXT
TEXT TO lcSelect NOSHOW
select id_borderou, data_borderou, id_client, client, id_vanzare, data_act, numar_act, serie_act, ctip_factura, total_fara_tva, total_cu_tva, valval, totval, valuta, in_valuta, trimis,data_trimis,confirmat,data_confirmat FROM fact_vborderou_detalii
ENDTEXT
lcorder = [data_borderou desc, id_borderou desc, data_act, serie_act, numar_act]
lcFiltru = [TRUNC(data_borderou) between to_date('] + lcData + [','YYYYMMDD') and SYSDATE]
llAfiseaza = .F.
lcGroup = []
llModParam = .T.
lcFiltruOriginal = []
gencursor('poFacturi', 'crsFacturiBorderou', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcGroup, llModParam, lcFiltruOriginal)
poFacturi.ca_baza1.afisare()
SELECT crsBorderou
DO FORM frm_borderou_facturi
*!* loFrmBorderou = Createobject("frm_borderou_facturi")
*!* loFrmBorderou.Show(1)
Release loFrmBorderou, poBorderou, poFacturi
ENDPROC && vizualizare_borderou_facturi
************************************ SFARSIT: vizualizare_borderou_facturi ****************************************
*---------------------------------------------------------------------------
* Genereaza borderouri clienti pentru facturile selectate
* Se apeleaza din frm_facturi (ofacturare.vcx)
* Intoarce lista cu id-uri de borderouri generate, pentru listare
Procedure generare_borderou_facturi
Local lcClient, lcIds, lcRecc, lcRecno, lcSelect, lcSqlB, lcSqlBd, llSucces, llSucces2, lnRecSel
PRIVATE pnIdBorderou, pnIdPart
pnIdBorderou = 0
pnIdPart = 0
lcSelect = Select()
lcIds = ''
lcSqlB = [begin pack_fact_borderou.BorderouNou(?pnIdPart, ?gnIdUtil, ?@pnIdBorderou); end;]
*lcSqlBd = [begin pack_fact_borderou.BorderouAdaugaFactura(?pnIdBorderou,?pnIdVanzare); end;]
Select crsfacturi
lnRecSel = Recno()
Locate For ales = 1
If !Found()
amessagebox('Nu ati selectat nici un document pentru borderou!', 0 + 48, 'Atentie')
Else
Private pcDataora
pcDataora = get_ora(2)
* Facturile selectate
Select client, id_part, id_vanzare ;
FROM crsfacturi ;
WHERE ales = 1 ;
ORDER By 1, 2, 3 ;
INTO Cursor crsdocgrup
* Creez borderouri pentru fiecare client
* adaug in borderou inregistrari distincte pentru fiecare client si in borderou detalii facturile aferente
llSucces = .T.
Select Distinct id_part, client From crsDocGrup Group By id_part, client ORDER BY client Into Cursor crsDocClienti
llSucces = goConn.BeginManualTransaction()
IF m.llSucces
Select crsDocClienti
lcRecc = ALLTRIM(STR(RECCOUNT()))
SCAN
lcRecno = ALLTRIM(STR(RECNO()))
pnIdPart = id_part
pnIdBorderou = 0
lcClient = ALLTRIM(client)
WAIT WINDOW 'Generare borderou ' + m.lcClient + ' ' + lcRecno + '/' + m.lcRecc NOWAIT
llSucces = goExecutor.oExecuta(m.lcSqlB)
If m.llSucces
* Adaugare facturi pe borderou
lcSqlBd = [begin ]
Select crsDocGrup
Scan For id_part = m.pnIdPart
lcSqlBd = lcSqlBd + [pack_fact_borderou.BorderouAdaugaFactura(] + ALLTRIM(STR(m.pnIdBorderou)) + [,] + ALLTRIM(STR(crsDocGrup.id_vanzare)) + [);]
Endscan && crsDocGrup
lcSqlBd = lcSqlBd + [ end;]
llSucces = goExecutor.oExecuta(m.lcSqlBd)
If !m.llSucces
Exit
ELSE
* Lista id-uri borderouri pentru listare si salvare pdf borderouri
lcIds = m.lcIds + ',' + ALLTRIM(STR(m.pnIdBorderou))
ENDIF
Else
Exit && crsDocClienti
Endif
Endscan && crsDocClienti
lcIds = IIF(!EMPTY(m.lcIds), SUBSTR(m.lcIds,2), '')
llSucces2 = goConn.EndManualTransaction(IIF(m.llSucces, 'COMMIT', 'ROLLBACK'))
llSucces = m.llSucces and m.llSucces2
ENDIF && llSucces
Endif && Found
Use In (Select('crsDocGrup'))
Use In (Select('crsDocClienti'))
USE IN (SELECT('crsBorderouTemp'))
Select (m.lcSelect)
IF !m.llSucces
lcIds = ''
ENDIF
Return m.lcIds
Endproc && generare_borderou_facturi
*---------------------------------------------------------------------------
* Trimite emailuri pe baza de borderou - la fiecare client ataseaza facturile si documentele asociate intr-un singur email
PROCEDURE email_borderou_facturi
LPARAMETERS tcIds, tcCursorFacturi
* tcIds: lista id_borderou
* tcCursorFacturi: optional, pentru citirea ctip_factura suprascris de utilizator (ACN!)
Local laFiles[1], lcBody, lcClient, lcDir, lcEmail, lcEmailClient, lcErrorMessage, lcFacturaFile
Local lcFile, lcFiles, lcRaportEmail, lcScheletonFile, lcSelect, lcSubject, lcTo, lcWhere
Local ldDataBoderou, ldDataFactura, llClearErrors, llSucces, lnFile, lnFiles, lnIdBorderou
Local lnIdVanzare, lnNumarFactura, lnRecno, loDate, loMail, lcSubjectTemplate, lcBodyTemplate
lcSelect = Select()
lcRaportEmail = Addbs(gcTempPath) + "email_" + Ttoc(Datetime(), 1) + '.xls'
* Selectez borderourile direct de pe server, nu din cursor borderouri
* Sa pot apela procedura si programatic daca este cazul, fara sa existe cursorul de borderouri
TEXT TO lcSql TEXTMERGE NOSHOW
Select id_borderou, id_vanzare, data_act, numar_act, id_borderou, data_borderou, ctip_factura, id_client, client, email_client, adresa_client
FROM fact_vborderou_detalii
WHERE id_borderou in (<<m.tcIds>>)
ENDTEXT
lcCursor = SYS(2015)
llSucces = goExecutor.oExecuta(m.lcSql, m.lcCursor)
***************
* Suprascriere ctip_factura special pentru ACN, pentru ca voiau ENERGIE ELECTRICA in loc de CHIRII SI UTILITATI pe borderou
* si nu am adaugat un tip nou de prestatii ENERGIE ELECTRICA
***************
IF !EMPTY(m.tcCursorFacturi) AND USED(m.tcCursorFacturi)
SELECT (m.tcCursorFacturi)
SCAN
lnIdVanzare = id_vanzare
lcTipFactura = ALLTRIM(NVL(ctip_factura,''))
UPDATE (m.lcCursor) SET ctip_factura = m.lcTipFactura WHERE id_vanzare = m.lnIdVanzare
ENDSCAN
ENDIF
Select distinct id_borderou, data_borderou, id_client, client, email_client, .F. As email_succes, Space(250) As email_mesaj ;
From (m.lcCursor) ;
ORDER BY id_borderou ;
Into Cursor cBorderouEmail READWRITE
Select id_borderou, id_vanzare, data_act, numar_act, ctip_factura ;
From (m.lcCursor) ;
ORDER BY data_act, numar_act ;
Into Cursor cFacturiEmail Readwrite
USE IN (SELECT(m.lcCursor))
loMail = getoEmail() && email.prg
lcSubjectTemplate = loMail.cBorderouSubject
lcBodyTemplate = loMail.cBorderouBody
llCancel = .F.
Sele cBorderouEmail
Scan
lnIdBorderou = id_borderou
ldDataBorderou = Ttod(data_borderou)
lcClient = Upper(Alltrim(client))
lnIdClient = id_client
lcEmailClient = Alltrim(NVL(email_client,''))
loMail.cTo = m.lcEmailClient
llSucces = .T.
Wait Window 'Email ' + Alltrim(Transform(Recno('cBorderouEmail'))) + '/' + Alltrim(Transform(Reccount('cBorderouEmail'))) + ' Client: ' + m.lcClient Nowait
lcSubject = m.lcSubjectTemplate && Borderou facturi nr. <nr> din <data> - <client>'
lcSubject = Strtran(m.lcSubject, '<nr>', Alltrim(Str(m.lnIdBorderou)), 1, 1, 1)
lcSubject = Strtran(m.lcSubject, '<data>', Alltrim(Dtoc(m.ldDataBorderou)), 1, 1, 1)
lcSubject = Strtran(m.lcSubject, '<client>', m.lcClient, 1, 1, 1)
loMail.cSubject = m.lcSubject
lcBody = m.lcBodyTemplate && Aveti atasat borderoul de facturi nr. <nr> din <data> si documentele asociate pentru serviciile prestate de <<ALLTRIM(goFirma.firma)>>.
lcBody = Strtran(m.lcBody, '<nr>', Alltrim(Str(m.lnIdBorderou)), 1, 10, 1)
lcBody = Strtran(m.lcBody, '<data>', Alltrim(Dtoc(m.ldDataBorderou)), 1, 10, 1)
lcBody = Strtran(m.lcBody, '<client>', m.lcClient, 1, 10, 1)
loMail.cHTMLBody = m.lcBody
* Atasez borderoul si toate fisierele pdf care au aceeasi denumire ca aaaallzz_nrfact_[factura].pdf
lcFiles = ""
lcFile = GetPDFBorderouFile(m.ldDataBorderou, m.lnIdBorderou) && d:\roa\pdf\20200401_29_borderou.pdf
* Generez borderoul in caz ca nu era listat si salvat pdf
IF !FILE(m.lcFile)
llListare = .F.
llPdf = .T.
rap_borderou_clienti(m.lnIdBorderou, m.llPdf, m.llListare) && oproceduri_rapoarte_fact.prg
ENDIF
IF !FILE(m.lcFile)
lnRaspuns = MESSAGEBOX('Email ' + Alltrim(Transform(Recno('cBorderouEmail'))) + '/' + Alltrim(Transform(Reccount('cBorderouEmail'))) + ' Client: ' + m.lcClient + CHR(13) + CHR(10) + ;
'Nu exista borderoul ' + m.lcFile + '!' + CHR(13) + CHR(10) + ;
'Continuati fara borderou?', 3+32, _Screen.Caption)
DO CASE
CASE m.lnRaspuns = 6 && YES
*
CASE m.lnRaspuns = 7 && NO
llSucces = .F.
CASE m.lnRaspuns = 2 && CANCEL
llSucces = .F.
llCancel = .T.
EXIT
ENDCASE
ENDIF
IF m.llCancel
EXIT
ENDIF
loMail.EmailSetAttachment(m.lcFile)
lcFiles = m.lcFiles + Iif(File(m.lcFile), m.lcFile, "")
Select cFacturiEmail
Scan For id_borderou = m.lnIdBorderou
lnIdVanzare = id_vanzare
ldDataFactura = data_act
lnNumarFactura = numar_act
loDate = Null
lcFacturaFile = GetPDFFacturaFile(m.ldDataFactura, m.lnNumarFactura) && d:\roa\pdf\20200402_12346_factura.pdf
IF !FILE(m.lcFacturaFile)
lnRaspuns = MESSAGEBOX('Email ' + Alltrim(Transform(Recno('cBorderouEmail'))) + '/' + Alltrim(Transform(Reccount('cBorderouEmail'))) + ' Client: ' + m.lcClient + CHR(13) + CHR(10) + ;
'Nu exista factura ' + m.lcFacturaFile + '!' + CHR(13) + CHR(10) + ;
'Continuati fara factura?', 3+32, _Screen.Caption)
DO CASE
CASE m.lnRaspuns = 6 && YES
*
CASE m.lnRaspuns = 7 && NO
llSucces = .F.
EXIT
CASE m.lnRaspuns = 2 && CANCEL
llSucces = .F.
llCancel = .T.
EXIT
ENDCASE
ENDIF
lcScheletonFile = Strtran(lcFacturaFile, 'factura', '*', 1, 10, 1) && d:\roa\pdf\20200402_12346_*.pdf (_recapitulatia.pdf, _situatie_stationare.pdf, _declaratie_comandant.pdf)
lcDir = Addbs(Justpath(m.lcFacturaFile))
lnFiles = Adir(laFiles, m.lcScheletonFile)
For lnFile = 1 To m.lnFiles
lcFile = m.lcDir + laFiles[m.lnFile, 1]
loMail.EmailSetAttachment(m.lcFile)
lcFiles = m.lcFiles + Iif(File(m.lcFile), m.lcFile, "")
Endfor
Endscan && cFacturiEmail
IF m.llCancel
EXIT
ENDIF
* Email
IF m.llSucces
lcErrorMessage = ''
If loMail.Send() > 0
llClearErrors = .T.
lcErrorMessage = loMail.GetErrorMessage(m.llClearErrors)
llSucces = .F.
Endif
Replace email_succes With m.llSucces, email_mesaj With Left(m.lcErrorMessage, 250) In cBorderouEmail
ENDIF && llSucces
If Inkey(0.5) = 27 && 'ESC'
If AMESSAGEBOX('Doriti sa intrerupeti operatia?', 4 + 32, _Screen.Caption) = 6
Exit
Endif
Endif
Endscan
Select cBorderouEmail
Copy To (m.lcRaportEmail) Type Xl5
OPEN_DEFAULT_APP(m.lcRaportEmail)
Use In (Select('cBorderouEmail'))
Use In (Select('cFacturiEmail'))
Select (m.lcSelect)
ENDPROC && email_borderou_facturi
* ------------------------------------
* Apeleaza email_facturi() cu parametri ListareFactura, ListareRecapitulatie, ListareAlteDocumente
PROCEDURE wrap_email_facturi
LPARAMETERS toFacturiForm, tcCursorFacturi, tnFactura, tnRecapitulatia, tnAlteDocumente, tnIdVanzare
* toFacturiForm (optional): referinta la formularul frm_facturi, pentru generare pdf factura, recapitulatie, in caz ca nu exista deja
* tcCursorFacturi: cursorul cu lista de facturi (id_vanzare, data_act, numar_act, serie_act, total_fara_tva, total_tva, total_cu_tva, client, email_facturare)
* tnFactura: 0 = nu se ataseaza factura, 1 = se ataseaza factura, 2 = se genereaza factura daca nu exista si se ataseaza
* tnRecapitulatia: 0 = nu se ataseaza recapitulatia, 1 = se ataseaza recapitulatia, 2 = se genereaza recapitulatia daca nu exista si se ataseaza
* tnAlteDocumente: 0 = nu se ataseaza alte documente, 1 = se ataseaza alte documente cu aceeasi structura denumire ca factura
* tnIdVanzare: (optional) vanzari.id_vanzare, daca se apeleaza din afara formularului de vizualizare facturi
LOCAL loDate
loDate = CREATEOBJECT("empty")
ADDPROPERTY(loDate, 'cCursorFacturi', IIF(TYPE('tcCursorFacturi') = 'C' and !EMPTY(m.tcCursorFacturi) and USED(m.tcCursorFacturi), m.tcCursorFacturi, ''))
ADDPROPERTY(loDate, 'nListareFactura', m.tnFactura)
ADDPROPERTY(loDate, 'nListareRecapitulatia', m.tnRecapitulatia)
ADDPROPERTY(loDate, 'nListareAlteDocumente', m.tnAlteDocumente)
ADDPROPERTY(loDate, 'nIdVanzare', IIF(TYPE('tnIdVanzare') = 'N', m.tnIdVanzare, 0))
email_facturi(toFacturiForm, loDate)
ENDPROC && wrap_email_facturi
* ------------------------------------
* trimite email factura, recapitulatie si alte documente pdf cu aceeasi structura ca factura.pdf
* In formularul Vizualizare facturi se apasa butonul listare
PROCEDURE email_facturi
Lparameters toFacturiForm, toDate
* toFacturiForm (optional): referinta la formularul frm_facturi, pentru generare pdf factura, recapitulatie, in caz ca nu exista deja
*** Trimit email la facturile alese, sau la factura de pe inregistrarea curenta
Local laFiles[1], lcBody, lcClient, lcDir, lcEmail, lcErrorMessage, lcFacturaFile, lcFile, lcSelect
Local lcFileName, lcFiles, lcNume, lcRaportEmail, lcRecapitulatiaFile, lcScheletonFile
Local lcSerieFactura, lcSubject, lcTipDocument, lcTo, lcWhere, ldDataFactura, llClearErrors
Local llJustPDF, llListareFactura, llListareRecapitulatia, llListareAlteDocumente, llSilent, llSucces, lnFile, lnFiles
Local lnIdVanzare, lnNumarFactura, lnRecno, loDate, loMail, lcSubjectTemplate, lcBodyTemplate, lnIdVanzare, lcCursorFacturi, llUsed
lcSelect = SELECT()
loMail = getoEmail() && email.prg
lcWhere = ""
llListareFactura = .T.
llGenerareFactura = .F.
llListareRecapitulatia = .F.
llGenerareRecapitulatia = .F.
llListareAlteDocumente = .F.
lnIdVanzare = 0
lcCursorFacturi = ''
If Type('toDate') = 'O'
lcCursorFacturi = IIF(TYPE('toDate.cCursorFacturi') = 'C', toDate.cCursorFacturi, '')
llListareFactura = IIF(Type('toDate.nListareFactura') = 'N', INLIST(toDate.nListareFactura, 1, 2), .T.)
llGenerareFactura = IIF(Type('toDate.nListareFactura') = 'N', toDate.nListareFactura = 2, .F.)
llListareRecapitulatia = IIF(Type('toDate.nListareRecapitulatia') = 'N', INLIST(toDate.nListareRecapitulatia, 1, 2), .F.)
llGenerareRecapitulatia = IIF(Type('toDate.nListareRecapitulatia') = 'N', toDate.nListareRecapitulatia = 2, .F.)
llListareAlteDocumente = IIF(Type('toDate.nListareAlteDocumente') = 'L', toDate.nListareAlteDocumente = 1, .F.)
lnIdVanzare = IIF(Type('toDate.nIdVanzare') = 'N', toDate.nIdVanzare, 0)
Endif
lcRaportEmail = Addbs(gcTempPath) + "email_" + Ttoc(Datetime(), 1) + '.xls'
CREATE CURSOR cEmail (id_vanzare I, data_act D null, numar_act N(14) null, serie_act C(20) null, client C(200) null, ;
total_fara_tva N(20,4) null, total_tva N(20,4) null, total_cu_tva N(20,4) null, ;
email_facturare C(200) null, email_succes L, email_mesaj C(250))
llUsed = .T.
IF !USED(m.lcCursorFacturi) AND !EMPTY(m.lnIdVanzare)
lcCursorFacturi = 'cEmailTemp'
lcSql = [SELECT id_vanzare, data_act, numar_act, serie_act, total_fara_tva, total_tva, total_cu_tva, client, email_facturare FROM fact_vfacturi2 WHERE id_vanzare = ] + ALLTRIM(STR(m.lnIdVanzare))
llSucces = goExecutor.oExecuta(m.lcSql, m.lcCursorFacturi)
llUsed = .F.
ENDIF
IF USED(m.lcCursorFacturi)
SELECT cEmail
APPEND FROM DBF(m.lcCursorFacturi)
ENDIF
IF !m.llUsed
USE IN (SELECT(m.lcCursorFacturi))
ENDIF
lcSubjectTemplate = loMail.cSubject
lcBodyTemplate = loMail.cHtmlBody
Sele cEmail
Scan
lcFiles = ""
ldDataFactura = data_act
lcSerieFactura = Alltrim(serie_act)
lnNumarFactura = numar_act
lcNume = Upper(Alltrim(NVL(client,'')))
lcClient = m.lcNume
lnIdVanzare = id_vanzare
loDate = Null
lcSubject = m.lcSubjectTemplate
lcSubject = Strtran(m.lcSubject, '<nrfact>', Alltrim(Str(m.lnNumarFactura)), 1, 1, 1)
lcSubject = Strtran(m.lcSubject, '<datafact>', Alltrim(Dtoc(m.ldDataFactura)), 1, 1, 1)
lcSubject = Strtran(m.lcSubject, '<client>', m.lcClient, 1, 1, 1)
loMail.cSubject = m.lcSubject
lcBody = m.lcBodyTemplate
lcBody = Strtran(m.lcBody, '<nrfact>', Alltrim(Str(m.lnNumarFactura)), 1, 10, 1)
lcBody = Strtran(m.lcBody, '<datafact>', Alltrim(Dtoc(m.ldDataFactura)), 1, 10, 1)
lcBody = Strtran(m.lcBody, '<client>', m.lcClient, 1, 10, 1)
loMail.cHtmlBody = m.lcBody
* Generare PDF factura
lcFacturaFile = GetPDFFacturaFile(m.ldDataFactura, m.lnNumarFactura)
If m.llListareFactura
If !File(m.lcFacturaFile) AND m.llGenerareFactura AND TYPE('toFacturiForm') = 'O'
llSilent = .F.
llJustPDF = .T.
lcTipDocument = 'FACTURA'
loDate = toFacturiForm.do_listare_document(m.lnIdVanzare, m.llSilent, m.llJustPDF, m.lcTipDocument) && .ListareDocument(m.llSilent, m.llJustPDF, "cEmail")
ENDIF
IF FILE(m.lcFacturaFile)
loMail.EmailSetAttachment(m.lcFacturaFile)
lcFiles = m.lcFiles + Iif(File(m.lcFacturaFile), m.lcFacturaFile, "")
ENDIF
ENDIF && llListareFactura
* Generare PDF recapitulatie
lcRecapitulatiaFile = GetPDFRecapitulatiaFile(ldDataFactura, m.lnNumarFactura)
If m.llListareRecapitulatia
If !File(m.lcRecapitulatiaFile) AND m.llGenerareRecapitulatia AND TYPE('toFacturiForm') = 'O'
llSilent = .F.
llJustPDF = .T.
lcTipDocument = 'RECAPITULATIE'
loDate = toFacturiForm.do_listare_document(m.lnIdVanzare, m.llSilent, m.llJustPDF, m.lcTipDocument) && .ListareDocument(m.llSilent, m.llJustPDF, "cEmail")
ENDIF
IF FILE(m.lcRecapitulatiaFile)
loMail.EmailSetAttachment(m.lcRecapitulatiaFile)
lcFiles = m.lcFiles + Iif(File(m.lcRecapitulatiaFile), "," + m.lcRecapitulatiaFile, "")
ENDIF
ENDIF && llListareRecapitulatia
* Atasez alte documente cu aceeasi structura ca factura.pdf
IF m.llListareAlteDocumente
lcScheletonFile = Strtran(lcFacturaFile, 'factura', '*', 1, 10, 1) && d:\roa\pdf\20200402_12346_*.pdf (_recapitulatia.pdf, _situatie_stationare.pdf, _declaratie_comandant.pdf)
lcDir = Addbs(Justpath(m.lcFacturaFile))
lnFiles = Adir(laFiles, m.lcScheletonFile)
For lnFile = 1 To m.lnFiles
lcFileName = laFiles[m.lnFile, 1]
* Nu mai atasez factura.pdf si recapitulatie.pdf
If Inlist(Lower(m.lcFileName), Lower(JUSTFNAME(m.lcFacturaFile)), Lower(JUSTFNAME(m.lcRecapitulatiaFile)))
Loop
Endif
lcFile = m.lcDir + m.lcFileName
loMail.EmailSetAttachment(m.lcFile)
lcFiles = m.lcFiles + Iif(File(m.lcFile), m.lcFile, "")
ENDFOR
ENDIF && llListareAlteDocumente
* Email
Wait Window 'Email ' + Alltrim(Transform(Recno('cEmail'))) + '/' + Alltrim(Transform(Reccount('cEmail'))) + ' Client: ' + m.lcClient + ' Factura: ' + Alltrim(Str(m.lnNumarFactura)) Nowait
lcEmail = Alltrim(Nvl(cEmail.email_facturare, '')) && am adaugat direct in crsFacturi.email_facturare, ca sa nu mai folosesc loDate.oClient.email_facturare, daca fisierele pdf sunt deja listate
lcTo = Iif(!Empty(Nvl(m.lcEmail, '')), m.lcEmail, '')
loMail.cTo = m.lcTo
llSucces = .T.
lcErrorMessage = ''
If loMail.Send() > 0
llClearErrors = .T.
lcErrorMessage = loMail.GetErrorMessage(m.llClearErrors)
llSucces = .F.
Endif
Replace email_succes With m.llSucces, email_mesaj With Left(m.lcErrorMessage, 250) In cEmail
If Inkey(0.5) = 27 && 'ESC'
If AMESSAGEBOX('Doriti sa intrerupeti operatia?', 4 + 32, _Screen.Caption) = 6
Exit
Endif
Endif
Endscan
lcMesaj = ''
SELECT cEmail
SCAN
lcMesaj = lcMesaj + 'Factura ' + TRANSFORM(numar_act) + ' din ' + TRANSFORM(data_act) + ' ' + ALLTRIM(NVL(client,'')) + ' : EMAIL ' + ;
IIF(email_succes, 'SUCCES', 'EROARE: ' + ' ' + ALLTRIM(NVL(email_mesaj,''))) + CHR(13) + CHR(10)
ENDSCAN
AMESSAGEBOX(m.lcMesaj,0+64,_screen.Caption)
*!*
*!* Copy To (m.lcRaportEmail) Type Xl5
*!* OPEN_DEFAULT_APP(m.lcRaportEmail)
Use In (Select('cEmail'))
SELECT(m.lcSelect)
ENDPROC && email_facturi
***********************************************
* Listeaza factura, aviz, proforma, recapitulatie
* Se apeleaza dupa scrierea in baza de date pe baza id_vanzare
* Exista si listarea dupa emiterea facturii, din cursoarele locale
* intoarce poDate pentru folosirea informatiilor despre factura (ex: poDate.email_factura in pluginul de trimitere email cu atasament factura)
PROCEDURE listeaza_formular
Lparameters lnIdVanzare, tlSilent, tlJustPDF, tcTipDocument, tlEFactura
* tlSilent: listare fara previzualizare
* tlJustPDF: listare doar pdf, fara previzualizare/imprimanta - pentru atasament la email
* tcTipDocument: FACTURA/RECAPITULATIE/EFACTURA
* tlEfactura: export xml eFactura
Local lcNumeCursor, lnIdVanzare, lcTipDocument, lnIdFact, lnIdPart, loSoldClient
Local lcCursor, lcProcedura, lcRaport, lcSql, lnSucces
LOCAL loEx as Exception
*:Global ocomanda
*lcNumeCursor = tcNumeCursor
Local lnTip
Private poDate, poDateGestiuneDest, pnCod, pnid_comanda_aviz, pnIdGestiuneRetur
Local lnDiscount, lnDiscountVal, lnProcTvav
lcTipDocument = Iif(Type('tcTipDocument') = 'C' And !Empty(m.tcTipDocument), Upper(Alltrim(m.tcTipDocument)), 'FACTURA') && FACTURA/RECAPITULATIE/EFACTURA
**********************************************************
* Creez cursoarele crsFacturaListare, crsDetaliiListare
**********************************************************
Create Cursor crsFacturaListare (ales N(1) null, id_vanzare N(20) null, id_fact N(20), id_comanda N(20) null, dataora T(8) null, dataora_exp T(8) null, ;
data_act D(8) null, sters N(1) null, dataoras T(8) null, numar_act N(14) null, serie_act C(10) null, tip N(5) null, ;
id_part N(10) null, discount N(17,4) null, disc_fara_tva N(17,4) null, discount_evidentiat N(1) null, text_aditional M(4) null, ;
facturat N(1) null, data_facturat T(8) null, explicatie C(240) null, altele C(200) null, client C(100) null, cod N(20) null, ;
id_util I(4) null, utilizator C(30) null, utils C(30) null, utilfact C(30) null, delegat C(70) null, bidelegat C(30) null, ;
cnpdelegat C(15) null, nume_agent C(70) null, nrinmat C(10) null, total_fara_tva N(20,4) null, total_tva N(20,4) null, total_cu_tva N(20,4) null, ;
id_gestiune N(10) null, serie_chit C(20) null, nr_incasare N(10) null, incasat N(17,4) null, in_valuta N(1) null, sucursala C(100) null, ;
id_ruta N(10) null, ruta C(100) null, curs N(20,4) null, multiplicator N(10) null, nume_val C(50) null, valuta C(50) null, id_valuta N(5) null, ;
valval N(20,4) null, tvaval N(20,4) null, totval N(20,4) null, id_delegat N(10) null, id_agent N(10) null, id_masina N(10) null, valoarea N(20,4) null, ;
nume_gestiune C(50) null, id_sectie N(5) null, sectie C(50) null, id_lucrare N(20) null, lucrare C(200) null, tip_incasare N(10) null, ;
afisare_scadenta N(1) null, id_ordl N(10) null, tva_incasare N(1) null, listare_detaliata N(1) null, id_facturare N(10) null, adresa_facturare C(250) null, ;
email_facturare C(100) null, adresa_client C(250) null, email_client C(100) null, adresa_beneficiar C(250) null, email_beneficiar C(100) null, ;
id_beneficiar N(20) null, beneficiar C(100) null, tip_factura N(5) null, ctip_factura C(100) null, id_ctr N(10) null, contract C(100) null, eproforma N(1) null,tip_saft N(3) null,institutie_publica N(1) null)
Create Cursor crsDetaliiListare (id_vanzare N(20) null, id_vanzare_det N(10) null, id_articol N(10) null, lot c(100) null, serie C(100) null, pret N(20,6) null, pret_val N(20,6) null, sters N(1) null, dataoras D(8) null, ;
proc_tvav N(10,4) null, cantitate N(10,4) null, discount_unitar N(20,6) null, discount_unitar_val N(20,6) null, cont C(4) null, id_valuta N(10) null, id_gestiune N(20) null, ;
pret_achizitie N(20,6) null, pret_cu_tva N(1) null, denumire C(250) null, explicatie M(4) null, um C(10) null, cod_um_iso C(5) null, nume_lista_preturi C(100) null, nume_gestiune C(50) null, ;
utils C(30) null, curs N(20,4) null, multiplicator N(10) null, nume_val C(10) null, tip_valuta N(1) null, id_vanzare_set N(10) null, codmatf C(50) null, codmat C(50) null, ;
codmatc C(50) null, codbare C(50) null, id_subgrupa N(5) null, subgrupa C(100) null, client C(70) null, id_jtva_coloana N(10) null, jtva_coloana C(100) null, ;
id_jtva_coloana_ex N(10) null, jtva_coloana_ex C(100) null, id_ctr N(10) null, numar_contract C(50) null, taxcode N(6) null)
TEXT TO lcSqlFactura TEXTMERGE NOSHOW
select 0 as ales,id_vanzare,id_fact,id_comanda,dataora,dataora_exp,data_act,sters,dataoras,numar_act,serie_act,tip,id_part,discount,disc_fara_tva,discount_evidentiat,text_aditional,facturat,data_facturat,
explicatie,altele,client,cod,id_util,utilizator,utils,utilfact,delegat,bidelegat,cnpdelegat,nume_agent,nrinmat,total_fara_tva,total_tva,total_cu_tva,id_gestiune,serie_chit,nr_incasare,incasat,
in_valuta,sucursala,id_ruta,ruta,curs,multiplicator,nume_val,valuta,id_valuta,valval,tvaval,totval,id_delegat,id_agent,id_masina,valoarea,
nume_gestiune,id_sectie,sectie,id_lucrare,lucrare,tip_incasare,afisare_scadenta,id_ordl,tva_incasare,listare_detaliata,
id_facturare,adresa_facturare,email_facturare,adresa_client,email_client,adresa_beneficiar,email_beneficiar,id_beneficiar, beneficiar, tip_factura, ctip_factura, id_ctr, contract,eproforma,tip_saft,institutie_publica
from fact_vfacturi2
where id_vanzare = <<m.lnIdVanzare>>
ENDTEXT
TEXT TO lcSqlDetalii TEXTMERGE NOSHOW
select id_vanzare, id_vanzare_det, id_articol, lot, serie, pret, pret_val, sters, dataoras,
proc_tvav, cantitate, discount_unitar, discount_unitar_val, cont,
id_valuta, id_gestiune, pret_achizitie, pret_cu_tva, denumire, explicatie,
um, cod_um_iso, nume_lista_preturi, nume_gestiune, utils, curs, multiplicator,
nume_val, tip_valuta, id_vanzare_set, codmatf, codmat, codmatc, codbare, id_subgrupa, subgrupa, client, id_jtva_coloana, jtva_coloana, id_jtva_coloana_ex, jtva_coloana_ex, id_ctr, numar_contract, taxcode
from fact_vfacturi_detalii
where id_vanzare = <<m.lnIdVanzare>>
order by id_vanzare_det
ENDTEXT
llSucces = goExecutor.oExecuta(m.lcSqlFactura, 'cFacturaTemp')
IF m.llSucces
SELECT crsFacturaListare
APPEND FROM DBF('cFacturaTemp')
USE IN (SELECT('cFacturaTemp'))
llSucces = goExecutor.oExecuta(m.lcSqlDetalii, 'cDetaliiTemp')
IF m.llSucces
SELECT crsDetaliiListare
APPEND FROM DBF('cDetaliiTemp')
USE IN (SELECT('cDetaliiTemp'))
ENDIF && llSucces
ENDIF && llSucces
*******************************************
Select crsFacturaListare
lnTip = tip
pnCod = cod
pnid_comanda_aviz = 0
poDate = Createobject("oDateFactura", 0, 0)
Select crsFacturaListare
lnIdFact = id_fact
lnIdPart = id_part
poDate.nid_vanzare = id_vanzare
poDate.nRelistare = 1
poDate.tip = lnTip
poDate.nract = numar_act
poDate.serie_act = Alltrim(serie_act)
poDate.dataact = Iif(Type('data_act') = 'T', Ttod(data_act), data_act)
poDate.discount_evidentiat = discount_evidentiat
poDate.text_aditional = Nvl(text_aditional, [])
poDate.text_aditional = Strtran(poDate.text_aditional, CHR(170),Chr(13)+Chr(10),1,100,1)
poDate.nrinmat = nrinmat
poDate.nume_delegat = delegat
poDate.bidelegat = bidelegat
poDate.cnpdelegat = cnpdelegat
poDate.dataora_exp = dataora_exp
*!* poDate.listaid = Iif(poDate.tip = 2,Alltrim(Str(id_ctr)),Iif(Inlist(poDate.tip, 3, 21, 28, 42),Alltrim(Str(id_comanda)), [0]))
poDate.listaid = Iif(Inlist(poDate.tip, 3, 21, 28, 42, 47), Alltrim(Str(id_comanda)), []) && id_comanda
poDate.ntip_incasare = tip_incasare && modificare v 2.0.84
poDate.nr_incasare = nr_incasare
poDate.serie_chit = Nvl(serie_chit, []) && modificare v 2.0.80
poDate.incasat = incasat
poDate.in_valuta = in_valuta
poDate.afisare_scadenta = afisare_scadenta && modificare ROACONTRACTE v 2.0.38
poDate.descriere = altele && modificare v 2.0.44 nr comanda/aviz
poDate.id_ordl = id_ordl && modificare v 2.0.98
poDate.tva_incasare = tva_incasare && modificare v 2.2.0
poDate.id_facturare = id_facturare
poDate.nListareDetaliata = listare_detaliata
poDate.nListareSilentioasa = Iif(m.tlSilent, 1, 0)
poDate.nListareJustPDF = Iif(m.tlJustPDF, 1, 0)
poDate.nIdBeneficiar = id_beneficiar
poDate.nTipFactura = tip_factura
poDate.id_util = id_util
poDate.eProforma = eproforma
poDate.nEFactura = IIF(m.tlEFactura, 1, 0) && xml EFactura
poDate.id_ctr = id_ctr
poDate.contract = ALLTRIM(NVL(contract,''))
If poDate.in_valuta = 1
*!* modificare v 2.0.56
poDate.nume_valuta = nume_val
poDate.Curs = Curs
poDate.multiplicator = multiplicator
poDate.totftvaconv = total_fara_tva
poDate.tottvaconv = total_tva
poDate.totctvaconv = poDate.totftvaconv + poDate.tottvaconv
lnDiscountVal = discount
lnDiscount = Round(lnDiscountVal * poDate.Curs / poDate.multiplicator, gnPc)
Else
lnDiscount = discount
lnDiscountVal = 0
ENDIF
poDate.nValVal = valval
poDate.nTvaVal = tvaval
poDate.nTotVal = totval
poDate.cValuta = ALLTRIM(nume_val)
poDate.Curs = Curs
poDate.multiplicator = multiplicator
poDate.tip_saft = NVL(tip_saft, 380) && factura initiala
poDate.institutie_publica = NVL(institutie_publica, 0)
Do Case
Case m.lcTipDocument = 'FACTURA'
If !Pemstatus(poDate, "id_comanda_aviz", 5)
AddProperty(poDate, "id_comanda_aviz", 0)
Endif
If Inlist(poDate.tip, 3, 21, 28, 42, 47) && factura / aviz din comanda && modificare v 2.0.93 : am adaugat 47
Select crsFacturaListare
poDate.id_comanda_aviz = id_comanda
If Inlist(poDate.tip, 21, 28)
lcSql = [select nr_fact from fact_vdetalii_fact where id_vanzare_aviz = ] + Alltrim(Str(poDate.nid_vanzare))
lnSucces = goExecutor.oExecute(lcSql, [crsnrfact])
If lnSucces < 0
amessagebox(goExecutor.oPrelucrareEroare(), 16, "Eroare")
Else
If Reccount('crsnrfact') > 0
Select crsnrfact
AddProperty(poDate, [descriere2], Alltrim(nr_fact))
Endif
Use In crsnrfact
Endif
Endif
Select crsFacturaListare
Else
If poDate.tip = 4 && factura din aviz
lcSql = [select max(v.id_comanda) as id_comanda from vanzari_coresp vc ] + ;
[join vanzari v on vc.id_vanzare_aviz = v.id_vanzare where vc.sters = 0 and v.sters = 0 and vc.id_vanzare_fact =] + Alltrim(Str(poDate.nid_vanzare))
lnSucces = goExecutor.oSelect2Value(lcSql, @pnid_comanda_aviz)
If lnSucces < 0
amessagebox(goExecutor.oPrelucrareEroare(), 16, "Eroare")
poDate.id_comanda_aviz = 0
Else
poDate.id_comanda_aviz = Nvl(pnid_comanda_aviz, 0)
Endif
Select crsFacturaListare
poDate.descriere = Alltrim(altele)
Endif
Endif
If Inlist(lnTip, 23, 25, 27, 30, 41, -6) && AVIZE SUBUNITATI 23,25,27,30; AVIZE SUBUNITATI RETUR 41, AVIZ RETUR VALORIC -6
poDateGestiuneDest = Createobject("oDateGestiune")
poDateGestiuneDest.id_gestiune = id_gestiune
If Inlist(m.lnTip, 41, -6) && AVIZE SUBUNITATI RETUR (GESTIUNEA DESTINATIE ESTE DEPOZIT, TREBUIE GESTIUNEA SURSA DIN VANZARI_DETALII)
pnIdGestiuneRetur = 0
lcSql = [select min(id_gestiune) from vanzari_detalii where id_vanzare = ] + + Alltrim(Str(poDate.nid_vanzare))
lnSucces = goExecutor.oSelect2Value(lcSql, @pnIdGestiuneRetur)
If lnSucces < 0
Messagebox(goExecutor.cEroare, 0 + 16, _Screen.Caption)
Else
poDateGestiuneDest.id_gestiune = m.pnIdGestiuneRetur
poDate.id_client = m.pnIdGestiuneRetur
Endif
Endif
Select crsDetaliiListare
poDate.id_client = id_gestiune
poDate.nume_client = nume_gestiune
If !Isnull(pnCod)
lcSql = [select r.id_responsabil, p.denumire as nresp from rul r left join nom_parteneri p on r.id_responsabil = p.id_part where r.cod = ] + Alltrim(Str(m.pnCod)) + [ and rownum = 1]
* lcSql = [select /*+ index(rul IDX_RUL_005) */ r.id_responsabil, p.denumire as nresp from rul r left join nom_parteneri p on r.id_responsabil = p.id_part where r.cod = ?pnCod and rownum = 1]
If Used('crsresp')
Use In crsresp
Endif
lcCursor = [crsresp]
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
If lnSucces < 0
amessagebox(goExecutor.oPrelucrareEroare(), 16, "Eroare")
Return
Else
Select (lcCursor)
poDate.id_responsabil = id_responsabil
poDate.responsabil = nresp
Use In (lcCursor)
Endif
If Inlist(lnTip, 23, 25)
lcSql = [select id_partd from act where cod = ] + Alltrim(Str(m.pnCod)) + [ and scd = '357' ] + ;
[and id_gestin = ] + Alltrim(Str(poDateGestiuneDest.id_gestiune)) + [ and rownum = 1]
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
If lnSucces < 0
amessagebox(goExecutor.oPrelucrareEroare(), 16, "Eroare")
Return
Else
If Reccount(lcCursor) > 0
Select (lcCursor)
poDate.id_part_rez = id_partd
Endif
Use In (lcCursor)
Endif
Endif
Endif
Else
poDate.id_client = id_part
poDate.nume_client = client
Endif
If !Isnull(pnCod)
If poDate.tip = -12 And !Isnull(poDate.id_ordl)
lcSql = [select a.datascad,b.nr_dosar,c1.denumire as asigurator,d.inspector from ] + ;
[(select MAX(id_lucrare) as id_lucrare,MAX(datascad) as datascad from act where cod = ] + Alltrim(Str(pnCod)) + [) a ] + ;
[left join dev_ordl b on a.id_lucrare = b.id_lucrare and b.sters = 0 ] + ;
[left join dev_nom_asiguratori c on b.id_asigurator = c.id_asigurator ] + ;
[left join nom_parteneri c1 on c.id_part = c1.id_part ] + ;
[left join dev_nom_inspectori d on b.id_inspector = d.id_inspector]
lcCursor = [crsdatascad]
If Used(lcCursor)
Use In (lcCursor)
Endif
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
If lnSucces < 0
amessagebox(goExecutor.oPrelucrareEroare(), 16, "Eroare")
Return
Else
Select (lcCursor)
Scatter Name ocomanda Memo
poDate.datascad = datascad
poDate.tip_doc_394 = 'F' && F = factura, M = factura simplificata
Use In (lcCursor)
Endif
Else
lcSql = [select MAX(a.datascad) as datascad, MAX(f.tip_doc) as tip_doc from act a left join nom_fdoc f on a.id_fdoc = f.id_fdoc where cod = ] + Alltrim(Str(m.pnCod))
lcCursor = [crsdatascad]
Use In (SELECT(m.lcCursor))
llSucces = goExecutor.oExecuta(lcSql, lcCursor)
If !m.llSucces
Return
Else
Select (m.lcCursor)
poDate.datascad = datascad
poDate.tip_doc_394 = NVL(tip_doc, 'F') && F = factura, M = factura simplificata
Use In (SELECT(m.lcCursor))
ENDIF
Endif
Endif
Use In (Select('crsfactura'))
* Text TVA de afisat in partea de sus a facturii, daca este o singura explicatie de TVA pe toate liniile din crsDetaliiListare
ADDPROPERTY(poDate, 'cTextTVA', '')
SELECT distinct jtva_coloana_ex, jtva_coloana FROM crsDetaliiListare INTO CURSOR cTextTVATemp
IF RECCOUNT('cTextTVATemp') = 1
SELECT cTextTVATemp
GO TOP
poDate.cTextTVA = IIF(!EMPTY(NVL(jtva_coloana_ex, '')), ALLTRIM(jtva_coloana_ex), ALLTRIM(NVL(jtva_coloana,'')))
ENDIF
USE IN (SELECT('cTextTVATemp'))
* Soldul pana la factura inclusiv
loSoldClient = GetSoldClient(m.lnIdPart, m.lnIdFact)
poDate.sold_lei = loSoldClient.sold_lei
poDate.sold_valuta = loSoldClient.sold_valuta
Select crsDetaliiListare
Calculate Max(proc_tvav) To lnProcTvav
creeaza_facturacrs([crsfactura])
prelucreaza_facturacrs([crsDetaliiListare], [crsfactura], lnProcTvav, lnDiscount, lnDiscountVal)
creeaza_cursor_seturi(pnCod)
listeaza_ofacturare() && ofacturare.prg
Use In (Select('crsfactura'))
Use In (Select('crsfacturaset'))
Case m.lcTipDocument = 'RECAPITULATIE'
Select crsFacturaListare
poDate.id_client = id_part
poDate.nume_client = client
Do Case
Case poDate.tip = 51 && FACTURA ACN
*!* TRY
Do Case
Case poDate.nTipFactura = 0 && TRANZIT
do listeaza_recapitulatie_tranzit in proceduri_acnpro.prg
Case poDate.nTipFactura = 1 && CHEIAJ
do listeaza_recapitulatie_cheiaj in proceduri_acnpro.prg
Case poDate.nTipFactura = 6 && PENALITATI
do listeaza_recapitulatie_penalitati in proceduri_acnpro.prg
Otherwise && CHIRII / APA / ALTELE
do listeaza_recapitulatie_alte in proceduri_acnpro.prg
ENDCASE
*!* CATCH TO loEx
*!* AMESSAGEBOX('Listati recapitulatia din programul "ROAACNPRO"!' + CHR(13) + CHR(10) + loEx.Message,0+48,_SCREEN.Caption)
*!* ENDTRY
OTHERWISE
DO listeaza_recapitulatie WITH 'crsDetaliiListare', 'recapitulatie.frx' in ofacturare.prg
* am facu si o recapitulatie generica, pentru ca am pus recapitulatia in meniul de listare pentru ACN
ENDCASE
Endcase
Release pnCod, lnTip
USE IN (SELECT('crsFacturaListare'))
USE IN (SELECT('crsDetaliiListare'))
Return poDate && intorc poDate pentru folosirea informatiilor despre factura (ex: poDate.email_factura in pluginul de trimitere email cu atasament factura)
ENDPROC && listeaza_formular
* Intoarce vanzari.id_fact pe baza vanzari.id_vanzare
* Folosesc la GetSoldClient
FUNCTION IdVanzare2IdFact
LPARAMETERS tnIdVanzare
PRIVATE pnIdVanzare
LOCAL lnIdFact
pnIdVanzare = m.tnIdVanzare
lnIdFact = 0
llSucces = goExecutor.oSelecteaza2Value("Select MIN(id_fact) from vanzari where id_vanzare = ?pnIdVanzare", @lnIdFact)
RETURN m.lnIdFact
ENDFUNC
***********************************
* Obtine sold client 4111 + 461 din balanta_parteneri sau din ireg_parteneri pana la numarul facturii
* Pentru afisarea in raportul factura
***********************************
FUNCTION GetSoldClient
LPARAMETERS tnIdPart, tnIdFact
* tnIdPart: Id partener client
* tnIdFact : (optional) Id factura
PRIVATE pnIdPart, pnIdFact
Local loSold As "empty"
Local lcSelect, lcSql, llSucces
pnIdPart = tnIdPart
pnIdFact = tnIdFact
lcSelect = SELECT()
loSold = CREATEOBJECT("empty")
ADDPROPERTY(loSold, 'sold_lei', 0)
ADDPROPERTY(loSold, 'sold_valuta', 0)
lcSql = [{call pack_facturare.getSoldClient(?gnAn, ?gnLuna, ?pnIdPart, ?pnIdFact)}]
If goExecutor.oExecuta(m.lcSql, 'cSoldClientTemp')
SELECT cSoldClientTemp
GO TOP
loSold.sold_lei = NVL(sold_lei, 0)
loSold.sold_valuta = NVL(sold_valuta, 0)
ENDIF
USE IN (SELECT('cSoldClientTemp'))
SELECT (m.lcSelect)
RETURN loSold
ENDFUNC
******************************** INCEPUT: verifica_setari *************************************
Procedure verifica_setari
LPARAMETERS tlSilent
* tlSilent: .T. nu afiseaza mesajul, .F. (default) afiseaza mesajul
Private pcMesaj
Store "" To pcMesaj
lcSql = [begin ] + gcS + [.pack_facturare.verificare_setari_program(?gnIdUtil,?@pcMesaj);] + ;
[end;]
lnSucces = goExecutor.oexecute(lcSql)
If lnSucces < 0
amessagebox(goExecutor.oPrelucrareEroare(), 16, "Eroare")
Else
If !m.tlSilent AND !Isnull(m.pcMesaj) And !Empty(m.pcMesaj)
amessagebox(pcMesaj, 48, "Atentie")
Endif
ENDIF
RETURN m.pcMesaj
Endproc
******************************** SFARSIT: verifica_setari *************************************
************************************ INCEPUT: vanzare_materii_prime ****************************************
Procedure vanzare_materii_prime
Local lnIdSet
gnTipGest = 2
Do vanzare1.mpr
Endproc
************************************ SFARSIT: vanzare_materii_prime ****************************************
*************************************** INCEPUT: vanzare_produse *******************************************
Procedure vanzare_produse
gnTipGest = 4
Do vanzare2.mpr
Endproc
*************************************** SFARSIT: vanzare_produse *******************************************
*********************************** INCEPUT: vanzare_marfa_pret_achi ***************************************
Procedure vanzare_marfa_pret_achi
gnTipGest = 5
Do vanzare3.mpr
Endproc
*********************************** SFARSIT: vanzare_marfa_pret_achi ***************************************
*********************************** INCEPUT: vanzare_marfa_pret_vanz ***************************************
Procedure vanzare_marfa_pret_vanz
gnTipGest = 6
Do vanzare4.mpr
Endproc
*********************************** SFARSIT: vanzare_marfa_pret_vanz ***************************************
*********************************** INCEPUT: vanzare_marfa_pret_achi_vanz ***************************************
Procedure vanzare_marfa_pret_achi_vanz
gnTipGest = 7
Do vanzare5.mpr
Endproc
*********************************** SFARSIT: vanzare_marfa_pret_achi_vanz ***************************************
************************************* INCEPUT: selecteaza_gestiuni *****************************************
Procedure selecteaza_gestiuni
If Used('nom_gestiuni')
Use In nom_gestiuni
Endif
Do Case
Case "-1" $ gcGestPermis
lcSql = [select * from ] + gcS + [.vnom_GESTIUNI where inactiv = 0 ] + ;
[and nr_pag = ?gnTipGest order by nume_gestiune]
lcCursor = [nom_gestiuni]
lnSucces = goExecutor.oexecute(lcSql, lcCursor)
If lnSucces < 0
amessagebox(goExecutor.cEroare, 0 + 16, 'Eroare')
Quit
Endif
goExecutor.oReset()
Otherwise
lcSql = [select * from ] + gcS + [.vnom_GESTIUNI where inactiv = 0 and nr_pag = ?gnTipGest ] + ;
[ and id_gestiune in ] + ;
[(select g.id_gestiune from ] + gcS + [.vgest_coresp_grupe_gestiuni g join ] + ;
gcS + [.vgest_coresp_util_grupe u on g.id_grupe = u.id_grupe and u.id_util = ?gnIdUtil) order by nume_gestiune]
lcCursor = [nom_gestiuni]
lnSucces = goExecutor.oexecute(lcSql, lcCursor)
If lnSucces < 0
amessagebox(goExecutor.cEroare, 0 + 16, 'Eroare')
Quit
Endif
goExecutor.oReset()
Endcase
Endproc && selecteaza_gestiuni
************************************* SFARSIT: selecteaza_gestiuni *****************************************
************************************* INCEPUT: creeaza_cursor_seturi *****************************************
Procedure creeaza_cursor_seturi
Lparameters tnCod
*!* Dimension laStructura(1,18)
lcCursorTemp = [crsfacturasettemp]
lcCursor = [crsfacturaset]
If Used(lcCursorTemp)
Use In (lcCursorTemp)
Endif
If Used(lcCursor)
Use In (lcCursor)
Endif
*!* modificare v 2.0.84
*!* lcSql = [select c.id_vanzare_set as id_set_fact,Min(b.id_vanzare_det) as id_temp,c.denumire,c.explicatie,c.cantitate,c.um,c.serie,c.pret,Nvl(c.discount_unitar,0) as discount_unitar,c.pret_cu_tva ] + ;
*!* [from ] + gcS + [.vanzari a ] + ;
*!* [left join ] + gcS + [.vanzari_detalii b on a.id_vanzare = b.id_vanzare and b.sters = 0 ] + ;
*!* [left join ] + gcS + [.vanzari_seturi c on b.id_vanzare_set = c.id_vanzare_set ] + ;
*!* [where a.cod = ] + Alltrim(Str(tnCod)) + [ and b.id_vanzare_set is not null ] + ;
*!* [group by c.id_vanzare_set,c.denumire,c.explicatie,c.cantitate,c.um,c.serie,c.pret,Nvl(c.discount_unitar,0),c.pret_cu_tva]
lcSql = [{call pack_facturare.citeste_vanzari_seturi(] + Alltrim(Str(tnCod)) + [)}]
*!* modificare v 2.0.84 ^
lnSucces = goExecutor.oexecute(lcSql, lcCursorTemp)
Do Case
Case lnSucces < 0
amessagebox(goExecutor.cEroare, 0 + 16, "Eroare")
Return
Case Reccount(lcCursorTemp) = 0
Use In (lcCursorTemp)
Otherwise
*!* modificare v 2.0.56
*!* Afields(laStructura,[crsfactura])
*!* Create Cursor (lcCursor) From Array laStructura
copiaza_structura_cursor([crsfactura], lcCursor)
*!* modificare v 2.0.56 ^
*!* *!* Insert Into (lcCursor) ;
*!* *!* Select a.id_set_fact,a.denumire,a.explicatie,a.cantitate,a.um,a.serie,;
*!* *!* Max(b.proc_tvav) As proc_tvav,;
*!* *!* Sum(b.valftva) As valftva,Sum(b.valtva) As valtva,;
*!* *!* Sum(b.valdiscountftva) As valdiscountftva,Sum(b.valdiscounttva) As valdiscounttva,;
*!* *!* Sum(b.valdiminuatftva) As valdiminuatftva,;
*!* *!* Sum(b.valdiminuattva) As valdiminuattva,Sum(b.valdiminuatctva) As valdiminuatctva,;
*!* *!* Sum(b.vvalftva) As vvalftva,Sum(b.vvaltva) As vvaltva,Sum(b.vvalctva) As vvalctva,;
*!* *!* Sum(b.vdiscountftva) As vdiscountftva,Sum(b.vdiscountctva) As vdiscountctva,;
*!* *!* Sum(b.vvaldiscountftva) As vvaldiscountftva,Sum(b.vvaldiscounttva) As vvaldiscounttva,;
*!* *!* Sum(b.vvaldiscountctva) As vvaldiscountctva,Sum(b.vvaldiminuatftva) As vvaldiminuatftva,;
*!* *!* Sum(b.vvaldiminuattva) As vvaldiminuattva,Sum(b.vvaldiminuatctva) As vvaldiminuatctva,;
*!* *!* Round(Sum(b.valftva)/a.cantitate,gnPc) As pretftva,Round(Sum(b.valtva)/a.cantitate,gnPc) As tva,;
*!* *!* Round(Sum(b.valdiscountftva)/a.cantitate,gnPc) As discountftva,;
*!* *!* Round(Sum(b.valdiscounttva)/a.cantitate,gnPc) As discounttva,;
*!* *!* Round(Sum(b.vvalftva)/a.cantitate,gnPc) As vpretftva,;
*!* *!* ROUND(Sum(b.vvaltva)/a.cantitate,gnPc) As vtva,;
*!* *!* Round(Sum(b.vvalctva) / a.cantitate,gnPc) As vpretctva,;
*!* *!* ROUND(Sum(b.vvaldiscountftva) / a.cantitate,gnPc) As vdiscountftva,;
*!* *!* Round(Sum(b.vvaldiscountctva) / a.cantitate,gnPc) As vdiscountctva,;
*!* *!* ROUND(Sum(b.vvaldiscountftva) / a.cantitate,gnPc) - Round(Sum(b.vvaldiscountctva) / a.cantitate,gnPc) As vdiscounttva ;
*!* *!* FROM (lcCursorTemp) a Left Join crsfactura b On a.id_set_fact = b.id_set_fact ;
*!* *!* Group By a.id_set_fact,a.denumire,a.explicatie,a.cantitate,a.um,a.serie
*!* Insert Into (lcCursor) (id_set_fact,denumire,explicatie,cantitate,um,serie,;
*!* proc_tvav,pretftva,valftva,valtva,discountftva,valdiscountftva,;
*!* valdiscounttva,valdiminuatftva,valdiminuattva,vpretftva,;
*!* vvalftva,vvaltva,vdiscountftva,vvaldiscountftva,vvaldiscounttva,;
*!* vvaldiminuatftva,vvaldiminuattva) ;
*!* Select a.id_set_fact,a.denumire,a.explicatie,a.cantitate,a.um,a.serie,;
*!* b.proc_tvav,;
*!* Round(b.valftva/a.cantitate,gnPc) As pretftva,;
*!* b.valftva,b.valtva,;
*!* Round(b.valdiscountftva/a.cantitate,gnPc) As discountftva,;
*!* b.valdiscountftva,b.valdiscounttva,b.valdiminuatftva,b.valdiminuattva,;
*!* Round(b.vvalftva/a.cantitate,gnPc) As vpretftva,b.vvalftva,b.vvaltva,;
*!* b.vdiscountftva,b.vvaldiscountftva,b.vvaldiscounttva,b.vvaldiminuatftva,;
*!* b.vvaldiminuattva ;
*!* From (lcCursorTemp) a ;
*!* Left Join (Select Max(proc_tvav) As proc_tvav,;
*!* Sum(valftva) As valftva,Sum(valtva) As valtva,;
*!* Sum(valdiscountftva) As valdiscountftva,Sum(valdiscounttva) As valdiscounttva,;
*!* Sum(valdiminuatftva) As valdiminuatftva,;
*!* Sum(valdiminuattva) As valdiminuattva,;
*!* Sum(vvalftva) As vvalftva,Sum(vvaltva) As vvaltva,;
*!* Sum(vdiscountftva) As vdiscountftva,;
*!* Sum(vvaldiscountftva) As vvaldiscountftva,Sum(vvaldiscounttva) As vvaldiscounttva,;
*!* Sum(vvaldiminuatftva) As vvaldiminuatftva,;
*!* Sum(vvaldiminuattva) As vvaldiminuattva,id_set_fact From crsfactura Where id_set_fact <> 0 ;
*!* GROUP By id_set_fact) b On a.id_set_fact = b.id_set_fact
*!* modificare v 2.0.56 : am discount_unitar pe articolul din set
*!* Insert Into (lcCursor) (id_set_fact,id_temp,denumire,explicatie,cantitate,um,serie,;
*!* proc_tvav,id_jtva_coloana,gestionabil,pretftva,valftva,valtva,discountftva,valdiscountftva,;
*!* valdiscounttva,valdiminuatftva,valdiminuattva,vpretftva,;
*!* vvalftva,vvaltva,vdiscountftva,vvaldiscountftva,vvaldiscounttva,;
*!* vvaldiminuatftva,vvaldiminuattva) ;
*!* Select a.id_set_fact,a.id_temp,a.denumire,a.explicatie,a.cantitate,a.um,a.serie,;
*!* b.proc_tvav,b.id_jtva_coloana,b.gestionabil,IIF(poDate.in_valuta=0,a.pret,ROUND(a.pret*b.curs,gnPc)) As pretftva,;
*!* Round(Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))*a.cantitate,gnPc) As valftva,;
*!* Round(Round(Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) As valtva,;
*!* Round(b.valdiscountftva/a.cantitate,gnPc) As discountftva,;
*!* b.valdiscountftva,b.valdiscounttva,;
*!* ROUND((Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))-Round(b.valdiscountftva/a.cantitate,gnPc))*a.cantitate,gnPc) as valdiminuatftva,;
*!* ROUND(ROUND((Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))-Round(b.valdiscountftva/a.cantitate,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) as valdiminuattva,;
*!* IIF(poDate.in_valuta=0,0,a.pret) as vpretftva,;
*!* IIF(poDate.in_valuta=0,0,ROUND(a.pret*a.cantitate,gnPc)) as vvalftva,;
*!* IIF(poDate.in_valuta=0,0,ROUND(ROUND(a.pret*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc)) as vvaltva,;
*!* IIF(poDate.in_valuta=0,0,ROUND(b.vvaldiscountftva/a.cantitate,gnPc)) as vdiscountftva,;
*!* b.vvaldiscountftva,b.vvaldiscounttva,;
*!* ROUND(Iif(poDate.in_valuta=0,0,a.Pret-Round(b.vvaldiscountftva/a.cantitate,gnPc))*a.cantitate,gnPc) as vvaldiminuatftva,;
*!* ROUND(ROUND(Iif(poDate.in_valuta=0,0,a.Pret-Round(b.vvaldiscountftva/a.cantitate,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) as vvaldiminuattva ;
*!* From (lcCursorTemp) a ;
*!* Left Join (Select id_set_fact,IIF(poDate.in_valuta=0,1,poDate.curs) as curs,;
*!* Max(proc_tvav) As proc_tvav,Min(id_jtva_coloana) as id_jtva_coloana,Max(gestionabil) as gestionabil,;
*!* Sum(valdiscountftva) As valdiscountftva,Sum(valdiscounttva) As valdiscounttva,;
*!* Sum(vvaldiscountftva) As vvaldiscountftva,Sum(vvaldiscounttva) As vvaldiscounttva ;
*!* From crsfactura Where id_set_fact <> 0 ;
*!* GROUP By 1,2) b On a.id_set_fact = b.id_set_fact
*!* modificare v 2.0.67 : am adaugat id_ctr, numar_contract
*!* modificare v 2.0.84
*!* Insert Into (lcCursor) (id_set_fact,id_temp,denumire,explicatie,cantitate,um,serie,;
*!* proc_tvav,id_jtva_coloana,gestionabil,pretftva,valftva,valtva,discountftva,valdiscountftva,;
*!* valdiscounttva,valdiminuatftva,valdiminuattva,vpretftva,;
*!* vvalftva,vvaltva,vdiscountftva,vvaldiscountftva,vvaldiscounttva,;
*!* vvaldiminuatftva,vvaldiminuattva,id_ctr,numar_contract) ;
*!* Select a.id_set_fact,a.id_temp,a.denumire,a.explicatie,a.cantitate,a.um,a.serie,;
*!* b.proc_tvav,b.id_jtva_coloana,b.gestionabil,;
*!* IIF(poDate.in_valuta=0,a.pret,ROUND(a.pret*b.curs,gnPc)) As pretftva,;
*!* Round(Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))*a.cantitate,gnPc) As valftva,;
*!* Round(Round(Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) As valtva,;
*!* IIF(poDate.in_valuta=0,a.discount_unitar,ROUND(a.discount_unitar*b.curs,gnPc)) As discountftva,;
*!* Round(Iif(poDate.in_valuta=0,a.discount_unitar,Round(a.discount_unitar*b.Curs,gnPc))*a.cantitate,gnPc) As valdiscountftva,;
*!* Round(Round(Iif(poDate.in_valuta=0,a.discount_unitar,Round(a.discount_unitar*b.Curs,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) As valdiscounttva,;
*!* ROUND(Iif(poDate.in_valuta=0,a.Pret-a.discount_unitar,Round((a.Pret-a.discount_unitar)*b.Curs,gnPc))*a.cantitate,gnPc) as valdiminuatftva,;
*!* ROUND(ROUND(Iif(poDate.in_valuta=0,a.Pret-a.discount_unitar,Round((a.Pret-a.discount_unitar)*b.Curs,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) as valdiminuattva,;
*!* IIF(poDate.in_valuta=0,0,a.pret) as vpretftva,;
*!* IIF(poDate.in_valuta=0,0,ROUND(a.pret*a.cantitate,gnPc)) as vvalftva,;
*!* IIF(poDate.in_valuta=0,0,ROUND(ROUND(a.pret*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc)) as vvaltva,;
*!* IIF(poDate.in_valuta=0,0,a.discount_unitar) as vdiscountftva,;
*!* IIF(poDate.in_valuta=0,0,ROUND(a.discount_unitar*a.cantitate,gnPc)) as vvaldiscountftva,;
*!* IIF(poDate.in_valuta=0,0,ROUND(ROUND(a.discount_unitar*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc)) as vvaldiscounttva,;
*!* ROUND(Iif(poDate.in_valuta=0,0,a.Pret-a.discount_unitar)*a.cantitate,gnPc) as vvaldiminuatftva,;
*!* ROUND(ROUND(Iif(poDate.in_valuta=0,0,a.Pret-a.discount_unitar)*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) as vvaldiminuattva, ;
*!* b.id_ctr,b.numar_contract ;
*!* From (lcCursorTemp) a ;
*!* Left Join (Select id_set_fact,IIF(poDate.in_valuta=0,1,poDate.curs) as curs,id_ctr,numar_contract,;
*!* Max(proc_tvav) As proc_tvav,Min(id_jtva_coloana) as id_jtva_coloana,Max(gestionabil) as gestionabil ;
*!* From crsfactura Where id_set_fact <> 0 ;
*!* GROUP By 1,2,3,4) b On a.id_set_fact = b.id_set_fact
prelucreaza_facturacrs(lcCursorTemp, lcCursor, 0, 0, 0)
*!* modificare v 2.0.84 ^
*!* modificare v 2.0.56 ^
Endcase
If Used(lcCursorTemp)
Use In (lcCursorTemp)
Endif
Endproc && creeaza_cursor_seturi
************************************* SFARSIT: creeaza_cursor_seturi *****************************************
********************************* INCEPUT: creeaza_cursor_seturi_proforme *************************************
Procedure creeaza_cursor_seturi_proforme
Lparameters tnIdProforma
*!* Dimension laStructura(1,18)
lcCursorTemp = [crsfacturasettemp]
lcCursor = [crsfacturaset]
If Used(lcCursorTemp)
Use In (lcCursorTemp)
Endif
If Used(lcCursor)
Use In (lcCursor)
Endif
*!* modificare v 2.0.84
*!* lcSql = [select Min(a.id_proforma_det) as id_temp,b.id_proforma_set as id_set_fact,b.denumire,b.explicatie,b.cantitate,b.um,b.serie,b.pret,Nvl(b.discount_unitar,0) as discount_unitar ] + ;
*!* [from ] + gcS + [.proforme_detalii a ] + ;
*!* [left join ] + gcS + [.proforme_seturi b on a.id_proforma_set = b.id_proforma_set ] + ;
*!* [where a.id_proforma = ] + Alltrim(Str(tnIdProforma)) + [ and a.id_proforma_set is not null ] + ;
*!* [and a.sters = 0 ] + ;
*!* [group by b.id_proforma_set,b.denumire,b.explicatie,b.cantitate,b.um,b.serie,b.pret,Nvl(b.discount_unitar,0)]
lcSql = [{call pack_facturare.citeste_proforme_seturi(] + Alltrim(Str(tnIdProforma)) + [)}]
*!* modificare v 2.0.84 ^
lnSucces = goExecutor.oexecute(lcSql, lcCursorTemp)
Do Case
Case lnSucces < 0
amessagebox(goExecutor.cEroare, 0 + 16, "Eroare")
Return
Case Reccount(lcCursorTemp) = 0
Use In (lcCursorTemp)
Otherwise
*!* modificare v 2.0.56
*!* Afields(laStructura,[crsfactura])
*!* Create Cursor (lcCursor) From Array laStructura
copiaza_structura_cursor([crsfactura], lcCursor)
*!* modificare v 2.0.56 ^
*!* Insert Into (lcCursor) (id_set_fact,denumire,explicatie,cantitate,um,serie,;
*!* proc_tvav,pretftva,valftva,valtva,discountftva,valdiscountftva,;
*!* valdiscounttva,valdiminuatftva,valdiminuattva,vpretftva,;
*!* vvalftva,vvaltva,vdiscountftva,vvaldiscountftva,vvaldiscounttva,;
*!* vvaldiminuatftva,vvaldiminuattva) ;
*!* Select a.id_set_fact,a.denumire,a.explicatie,a.cantitate,a.um,a.serie,;
*!* b.proc_tvav,;
*!* Round(b.valftva/a.cantitate,gnPc) As pretftva,;
*!* b.valftva,b.valtva,;
*!* Round(b.valdiscountftva/a.cantitate,gnPc) As discountftva,;
*!* b.valdiscountftva,b.valdiscounttva,b.valdiminuatftva,b.valdiminuattva,;
*!* Round(b.vvalftva/a.cantitate,gnPc) As vpretftva,b.vvalftva,b.vvaltva,;
*!* b.vdiscountftva,b.vvaldiscountftva,b.vvaldiscounttva,b.vvaldiminuatftva,;
*!* b.vvaldiminuattva ;
*!* FROM (lcCursorTemp) a ;
*!* Left Join (Select Max(proc_tvav) As proc_tvav,;
*!* Sum(valftva) As valftva,Sum(valtva) As valtva,;
*!* Sum(valdiscountftva) As valdiscountftva,Sum(valdiscounttva) As valdiscounttva,;
*!* Sum(valdiminuatftva) As valdiminuatftva,;
*!* Sum(valdiminuattva) As valdiminuattva,;
*!* Sum(vvalftva) As vvalftva,Sum(vvaltva) As vvaltva,;
*!* Sum(vdiscountftva) As vdiscountftva,;
*!* Sum(vvaldiscountftva) As vvaldiscountftva,Sum(vvaldiscounttva) As vvaldiscounttva,;
*!* Sum(vvaldiminuatftva) As vvaldiminuatftva,;
*!* Sum(vvaldiminuattva) As vvaldiminuattva,id_set_fact From crsfactura Where id_set_fact <> 0 ;
*!* GROUP By id_set_fact) b On a.id_set_fact = b.id_set_fact
*!* modificare v 2.0.56 : am discount_unitar pe articolul din set
*!* Insert Into (lcCursor) (id_temp,id_set_fact,denumire,explicatie,cantitate,um,serie,;
*!* proc_tvav,pretftva,valftva,valtva,discountftva,valdiscountftva,;
*!* valdiscounttva,valdiminuatftva,valdiminuattva,vpretftva,;
*!* vvalftva,vvaltva,vdiscountftva,vvaldiscountftva,vvaldiscounttva,;
*!* vvaldiminuatftva,vvaldiminuattva) ;
*!* Select a.id_temp,a.id_set_fact,a.denumire,a.explicatie,a.cantitate,a.um,a.serie,;
*!* b.proc_tvav,IIF(poDate.in_valuta=0,a.pret,ROUND(a.pret*b.curs,gnPc)) As pretftva,;
*!* Round(Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))*a.cantitate,gnPc) As valftva,;
*!* Round(Round(Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) As valtva,;
*!* Round(b.valdiscountftva/a.cantitate,gnPc) As discountftva,;
*!* b.valdiscountftva,b.valdiscounttva,;
*!* ROUND((Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))-Round(b.valdiscountftva/a.cantitate,gnPc))*a.cantitate,gnPc) as valdiminuatftva,;
*!* ROUND(ROUND((Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))-Round(b.valdiscountftva/a.cantitate,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) as valdiminuattva,;
*!* IIF(poDate.in_valuta=0,0,a.pret) as vpretftva,;
*!* IIF(poDate.in_valuta=0,0,ROUND(a.pret*a.cantitate,gnPc)) as vvalftva,;
*!* IIF(poDate.in_valuta=0,0,ROUND(ROUND(a.pret*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc)) as vvaltva,;
*!* IIF(poDate.in_valuta=0,0,ROUND(b.vvaldiscountftva/a.cantitate,gnPc)) as vdiscountftva,;
*!* b.vvaldiscountftva,b.vvaldiscounttva,;
*!* ROUND(Iif(poDate.in_valuta=0,0,a.Pret-Round(b.vvaldiscountftva/a.cantitate,gnPc))*a.cantitate,gnPc) as vvaldiminuatftva,;
*!* ROUND(ROUND(Iif(poDate.in_valuta=0,0,a.Pret-Round(b.vvaldiscountftva/a.cantitate,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) as vvaldiminuattva ;
*!* From (lcCursorTemp) a ;
*!* Left Join (Select id_set_fact,IIF(poDate.in_valuta=0,1,poDate.curs) as curs,;
*!* Max(proc_tvav) As proc_tvav,;
*!* Sum(valdiscountftva) As valdiscountftva,Sum(valdiscounttva) As valdiscounttva,;
*!* Sum(vvaldiscountftva) As vvaldiscountftva,Sum(vvaldiscounttva) As vvaldiscounttva ;
*!* From crsfactura Where id_set_fact <> 0 ;
*!* GROUP By 1,2) b On a.id_set_fact = b.id_set_fact
*!* modificare v 2.0.84
*!* modificare v 2.0.84
*!* Insert Into (lcCursor) (id_temp,id_set_fact,denumire,explicatie,cantitate,um,serie,;
*!* proc_tvav,pretftva,valftva,valtva,discountftva,valdiscountftva,;
*!* valdiscounttva,valdiminuatftva,valdiminuattva,vpretftva,;
*!* vvalftva,vvaltva,vdiscountftva,vvaldiscountftva,vvaldiscounttva,;
*!* vvaldiminuatftva,vvaldiminuattva) ;
*!* Select a.id_temp,a.id_set_fact,a.denumire,a.explicatie,a.cantitate,a.um,a.serie,;
*!* b.proc_tvav,;
*!* IIF(poDate.in_valuta=0,a.pret,ROUND(a.pret*b.curs,gnPc)) As pretftva,;
*!* Round(Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))*a.cantitate,gnPc) As valftva,;
*!* Round(Round(Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) As valtva,;
*!* IIF(poDate.in_valuta=0,a.discount_unitar,ROUND(a.discount_unitar*b.curs,gnPc)) As discountftva,;
*!* Round(Iif(poDate.in_valuta=0,a.discount_unitar,Round(a.discount_unitar*b.Curs,gnPc))*a.cantitate,gnPc) As valdiscountftva,;
*!* Round(Round(Iif(poDate.in_valuta=0,a.discount_unitar,Round(a.discount_unitar*b.Curs,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) As valdiscounttva,;
*!* ROUND(Iif(poDate.in_valuta=0,a.Pret-a.discount_unitar,Round((a.Pret-a.discount_unitar)*b.Curs,gnPc))*a.cantitate,gnPc) as valdiminuatftva,;
*!* ROUND(ROUND(Iif(poDate.in_valuta=0,a.Pret-a.discount_unitar,Round((a.Pret-a.discount_unitar)*b.Curs,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) as valdiminuattva,;
*!* IIF(poDate.in_valuta=0,0,a.pret) as vpretftva,;
*!* IIF(poDate.in_valuta=0,0,ROUND(a.pret*a.cantitate,gnPc)) as vvalftva,;
*!* IIF(poDate.in_valuta=0,0,ROUND(ROUND(a.pret*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc)) as vvaltva,;
*!* IIF(poDate.in_valuta=0,0,a.discount_unitar) as vdiscountftva,;
*!* IIF(poDate.in_valuta=0,0,ROUND(a.discount_unitar*a.cantitate,gnPc)) as vvaldiscountftva,;
*!* IIF(poDate.in_valuta=0,0,ROUND(ROUND(a.discount_unitar*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc)) as vvaldiscounttva,;
*!* ROUND(Iif(poDate.in_valuta=0,0,a.Pret-a.discount_unitar)*a.cantitate,gnPc) as vvaldiminuatftva,;
*!* ROUND(ROUND(Iif(poDate.in_valuta=0,0,a.Pret-a.discount_unitar)*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) as vvaldiminuattva ;
*!* From (lcCursorTemp) a ;
*!* Left Join (Select id_set_fact,IIF(poDate.in_valuta=0,1,poDate.curs) as curs,;
*!* Max(proc_tvav) As proc_tvav ;
*!* From crsfactura Where id_set_fact <> 0 ;
*!* GROUP By 1,2) b On a.id_set_fact = b.id_set_fact
prelucreaza_facturacrs(lcCursorTemp, lcCursor, 0, 0, 0)
*!* modificare v 2.0.84 ^
*!* modificare v 2.0.56 ^
Endcase
If Used(lcCursorTemp)
Use In (lcCursorTemp)
Endif
Endproc && creeaza_cursor_seturi_proforme
********************************* SFARSIT: creeaza_cursor_seturi_proforme **************************************
*!* ******************************** INCEPUT: actualizeaza_optiuni_program *************************************
*!* Function actualizeaza_optiuni_program
*!* Lparameters tnTip
*!* && 0 - toate
*!* && 1 - fara id-uri
*!* Local llReturn
*!* Store .F. To llReturn
*!* If Empty(tnTip)
*!* lcFiltru = []
*!* Else
*!* lcFiltru = [ and varname not like 'ID%']
*!* Endif
*!* lcSql=[SELECT VARTYPE,VARNAME,VARVALUE FROM ] + gcS + [.OPTIUNI WHERE PROGRAM='] + Upper(Alltrim(gcNumeProgram)) + ['] + ;
*!* lcFiltru
*!* 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
*!* llReturn = .T.
*!* Endif
*!* Return llReturn
*!* Endfunc && actualizeaza_optiuni_program
*!* ******************************** SFARSIT: actualizeaza_optiuni_program *************************************
******************************************* INCEPUT:caut_locatie_restaurant *******************************************
Function caut_locatie_restaurant
Local loCauta
Store "" To loCauta
pcselect = [select id_rest_locatie,locatie FROM ] + gcS + [.rest_vcoresp_util_locatii]
pcfiltru = [1=2]
pcschema = ['']
pcorder = [locatie]
pccoloane = [locatie]
pcTitlu = [Alegeti locatia]
pcTitluColoane = [Locatie]
pcFiltruOriginal = [id_util_rest = ] + Alltrim(Str(gnIdUtil))
lcNumeProc = []
llToateIreg = .F.
loCauta = cauta_alfa(pcselect, pcfiltru, pcschema, pcorder, pccoloane, pcTitlu, pcTitluColoane, lcNumeProc, llToateIreg, pcFiltruOriginal)
Return loCauta
Endfunc
******************************************* SFARSIT: caut_locatie_restaurant *******************************************
******************************************* INCEPUT:caut_comanda_client *******************************************
Function caut_comanda_client
Lparameters tnIdPart
Local loCauta
Store "" To loCauta
If !Empty(tnIdPart)
lcFiltruClient = [ and id_part = ] + Alltrim(Str(tnIdPart))
Else
lcFiltruClient = []
Endif
pcselect = [select id_comanda, data_comanda, nr_comanda FROM vcomenzi ]
pcfiltru = [1=2]
pcschema = ['']
pcorder = [data_comanda,nr_comanda]
pccoloane = [nr_comanda,data_comanda]
pcTitlu = [Alegeti comanda]
pcTitluColoane = [Nr. comanda,Data comanda]
pcFiltruOriginal = [facturat = 0 and interna in (2,5) ] + lcFiltruClient + gcCondSucursala
lcNumeProc = []
llToateIreg = .F.
loCauta = cauta_alfa(pcselect, pcfiltru, pcschema, pcorder, pccoloane, pcTitlu, pcTitluColoane, lcNumeProc, llToateIreg, pcFiltruOriginal)
Return loCauta
Endfunc
******************************************* SFARSIT: caut_comanda_client *******************************************
******************************************* INCEPUT:caut_comanda_clienti *******************************************
* Afisez toate comenzile, indiferent de client
* Este posibil sa fac comanda pe un client si sa fac facturi pe persoana fizica si pe persoana juridica pentru acel client
* Arat comenzile ordonate dupa client si numar comanda
* Este folosita in ROAFACTURARE > frm_date_factura.do_cauta_comanda
Function caut_comanda_clienti
Lparameters tnIdPart
PRIVATE pnIdPart
pnIdPart = IIF(!EMPTY(NVL(m.tnIdPart,0)), m.tnIdPart, 0)
Local loCauta
Store "" To loCauta
If !Empty(tnIdPart)
lcFiltruClient = [ and id_part = ] + Alltrim(Str(tnIdPart))
Else
lcFiltruClient = []
Endif
pcselect = [select decode(id_part, ?pnIdpart, 1, 2) as ord, id_part, nume, id_comanda, data_comanda, nr_comanda FROM vcomenzi]
pcfiltru = [1=2]
pcschema = ['']
pcorder = [ord, nume,data_comanda,nr_comanda]
pccoloane = [nr_comanda,data_comanda,nume]
pcTitlu = [Alegeti comanda]
pcTitluColoane = [Nr. comanda,Data comanda,Client]
pcFiltruOriginal = [facturat = 0 and interna in (2,5) ] + gcCondSucursala
lcNumeProc = []
llToateIreg = .F.
loCauta = cauta_alfa(pcselect, pcfiltru, pcschema, pcorder, pccoloane, pcTitlu, pcTitluColoane, lcNumeProc, llToateIreg, pcFiltruOriginal)
Return loCauta
Endfunc
******************************************* SFARSIT: caut_comanda_clienti *******************************************
******************************************* INCEPUT:caut_comanda_gestiune *******************************************
Function caut_comanda_gestiune
Lparameters tnIdGestiune
Local loCauta
Store "" To loCauta
If !Empty(tnIdGestiune)
lcFiltruGestiune = [ and id_gestiune = ] + Alltrim(Str(tnIdGestiune))
Else
lcFiltruGestiune = []
Endif
pcselect = [select id_comanda, data_comanda, nr_comanda FROM ] + gcS + [.vcomenzi ]
pcfiltru = [1=2]
pcschema = ['']
pcorder = [data_comanda,nr_comanda]
pccoloane = [nr_comanda,data_comanda]
pcTitlu = [Alegeti comanda]
pcTitluColoane = [Nr. comanda,Data comanda]
pcFiltruOriginal = [facturat = 0 and interna = 3 ] + lcFiltruGestiune + gcCondSucursala
lcNumeProc = []
llToateIreg = .F.
loCauta = cauta_alfa(pcselect, pcfiltru, pcschema, pcorder, pccoloane, pcTitlu, pcTitluColoane, lcNumeProc, llToateIreg, pcFiltruOriginal)
Return loCauta
Endfunc
******************************************* SFARSIT: caut_comanda_gestiune *******************************************
***************************************** INCEPUT:caut_contract_facturare *******************************************
Function caut_contract_facturare
Lparameters tnIdPart, tcSirTipFacturare
Local loCauta, lcSelect, lcFiltru, lcSchema, lcColoane, lcTitlu, lcTitluColoane, lcFiltruOriginal, lcNumeProg, llToateInreg, lcOrder, lcFiltruSuplimentar, lcPrimaColoana, lnPornire, lnTipReturn, lcIdColumn
Store "" To loCauta
*!* modificare v 2.0.67 : am adaugat tcSirTipFacturare si lcFiltruSuplimentar
If !Empty(tcSirTipFacturare)
lcFiltruSuplimentar = [ and opt_facturare in (] + Alltrim(tcSirTipFacturare) + [)]
Else
lcFiltruSuplimentar = []
Endif
If !Empty(tnIdPart)
lcFiltruSuplimentar = lcFiltruSuplimentar + [ and id_part = ] + Alltrim(Str(tnIdPart))
Else
lcFiltruSuplimentar = []
Endif
lcSelect = [select id_ctr, contract, numar, data, denumire, scadenta_incasare, opt_facturare, text_standard, afisare_scadenta FROM fact_vcontracte ]
lcFiltru = [1=2]
lcSchema = ['']
lcOrder = [data,numar]
lcColoane = [numar,data,denumire]
lcTitlu = [Alegeti contractul (mouse-click pe numar sau apasati SPACE)]
lcTitluColoane = [Numar,Data,Denumire]
lcFiltruOriginal = [2=2] + gcCondSucursala + lcFiltruSuplimentar
lcNumeProc = [contracte] + ';' + IIF(!EMPTY(m.tnIdPart), ALLTRIM(STR(m.tnIdPart)), '0') + ',-1'
llToateInreg = .F.
*!* modificare v 2.0.67
*!* loCauta = cauta_alfa(pcselect,pcfiltru,pcschema,pcorder,pccoloane,pcTitlu,pcTitluColoane, lcNumeProc, llToateIreg, pcFiltruOriginal)
lcPrimaColoana = [numar]
lnPornire = 1
lnTipReturn = 1 && 1 = Cursor XML
lcIdColumn = [id_ctr]
loCauta = cauta_alfa(lcSelect, lcFiltru, lcSchema, lcOrder, lcColoane, lcTitlu, lcTitluColoane, lcNumeProc, llToateInreg, lcFiltruOriginal, lcPrimaColoana, lnPornire, lnTipReturn, lcIdColumn)
*!* modificare v 2.0.67 ^
Release lcSelect, lcFiltru, lcSchema, lcColoane, lcTitlu, lcTitluColoane, lcFiltruOriginal, lcNumeProg, llToateInreg, lcOrder, lcFiltruSuplimentar, lcPrimaColoana, lnPornire, lnTipReturn, lcIdColumn
Return loCauta
Endfunc
***************************************** SFARSIT: caut_contract_facturare *******************************************
******************************************* INCEPUT: caut_avize *******************************************
Function caut_avize
Lparameters tnIdPart
Store "" To loCauta
lcFiltruPart = Iif(Empty(tnIdPart), [], [ and a.id_part = ] + Alltrim(Str(tnIdPart)))
lcFiltru = [1=2]
lcSchema = [serie_act C(50),numar_act N(20),data_act d,dataora t,id_vanzare N(20), id_comanda n(20)]
lcOrder = [dataora]
lcColoane = [serie_act,numar_act,data_act,dataora]
lcTitlu = [Alegeti avizele (mouse-click pe numar sau apasati SPACE)]
lcTitluColoane = [Serie act,Numar act,Data,Data inreg.]
llMultipleArticles = .T.
lcSelect = [select a.serie_act,a.numar_act,a.data_act,a.dataora,a.id_vanzare,] + ;
[(case when a.tip in (21,42) then a.id_comanda else 0 end) as id_comanda from ] + gcS + [.vanzari a ]
lcFiltruOriginal = [a.sters=0 and a.tip in (21,22,26,42) and a.facturat = 0] + Strtran(gcCondSucursala, [id_sucursala], [a.id_sucursala]) + ;
lcFiltruPart
** 21 - catre clienti din comanda
** 22 - catre clienti din lista
** 23 - transfer catre subunitati din lista
** 24 - aviz de retur
** 25 - transfer catre subunitati din comanda
** 26 - catre clienti din contract
** 27 - transfer catre subunitati pe baza de lucrare
** 28 - catre clienti debitori din comanda
** 29 - catre clienti debitori din lista
** 30 - transfer catre subunitati pe baza de NIR
** 41 - retur transfer catre subunitati lista pret
** 42 - catre clienti custodie pe baza de comanda
** fara 47, deoarece acele avize le descarc prin alta optiune
lcNumeProc = []
llToateIreg = .F.
lcPrimaColoana = [numar_act]
lnPornire = 1
lnTipReturn = Iif(llMultipleArticles, 1, 0)
lcIdColumn = "id_vanzare"
loCauta = cauta_alfa(lcSelect, lcFiltru, lcSchema, lcOrder, lcColoane, lcTitlu, lcTitluColoane, lcNumeProc, llToateIreg, lcFiltruOriginal, lcPrimaColoana, lnPornire, lnTipReturn, lcIdColumn)
Return loCauta
Endfunc && caut_avize
******************************************* SFARSIT: caut_avize *******************************************
******************************************* INCEPUT: caut_facturi_client *******************************************
Function caut_facturi_client
Lparameters tnIdPart
Local loCauta
Store "" To loCauta
If !Empty(tnIdPart)
lcFiltruClient = [ and id_part = ] + Alltrim(Str(tnIdPart))
Else
lcFiltruClient = []
Endif
pcselect = [select id_fact,dataact,serie_act,nract from ] + gcS + [.ireg_parteneri ]
pcfiltru = [1=2]
pcschema = ['']
pcorder = [dataact,serie_act,nract]
pccoloane = [dataact,serie_act,nract]
pcTitlu = [Alegeti factura]
pcTitluColoane = [Data factura,Serie act,Nr. factura]
pcFiltruOriginal = [an = ?gnAn and luna = ?gnLuna and cont = ?gcCont411 ] + ;
[and valdebit + precvaldeb <> precvalcred + valcredit and id_valuta <> 0 ] + lcFiltruClient + ;
+ gcCondSucursala
lcNumeProc = []
llToateIreg = .F.
loCauta = cauta_alfa(pcselect, pcfiltru, pcschema, pcorder, pccoloane, pcTitlu, pcTitluColoane, lcNumeProc, llToateIreg, pcFiltruOriginal)
Return loCauta
******************************************* SFARSIT: caut_facturi_client *******************************************
*************************************** INCEPUT: caut_facturi_multiple_client ***************************************
Function caut_facturi_multiple_client
Lparameters tnIdPart, tnInValuta, tnIdValuta, tlFacturiMultiple
Local loCauta
Store "" To loCauta
lcFiltruPart = Iif(Empty(tnIdPart), [], [ and id_part = ] + Alltrim(Str(tnIdPart)))
lcFiltruValuta = Iif(Empty(tnInValuta), [ and in_valuta = 0], [ and in_valuta = 1 and id_valuta = ] + Alltrim(Str(tnIdValuta)))
lcFiltru = [1=2]
lcSchema = [serie_act C(50),numar_act N(20),data_act d,dataora t,id_vanzare N(20)]
lcOrder = [dataora]
lcColoane = [serie_act,numar_act,data_act,dataora]
If Empty(tlFacturiMultiple)
lcTitlu = [Alegeti factura]
Else
lcTitlu = [Alegeti facturile (mouse-click pe numar sau apasati SPACE)]
Endif
lcTitluColoane = [Serie act,Numar act,Data,Data inreg.]
lcSelect = [select serie_act,numar_act,data_act,dataora,id_vanzare ] + ;
[from ] + gcS + [.fact_vfacturi ]
lcFiltruOriginal = [sters=0 and tip in (1,2,3,4,5,6,10,-1,-2,-3,-4,-11) ] + gcCondSucursala + ;
lcFiltruPart + lcFiltruValuta
lcNumeProc = []
llToateIreg = .F.
lcPrimaColoana = [numar_act]
lnPornire = 1
lnTipReturn = Iif(tlFacturiMultiple, 1, 0)
lcIdColumn = "id_vanzare"
loCauta = cauta_alfa(lcSelect, lcFiltru, lcSchema, lcOrder, lcColoane, lcTitlu, lcTitluColoane, lcNumeProc, llToateIreg, lcFiltruOriginal, lcPrimaColoana, lnPornire, lnTipReturn, lcIdColumn)
Return loCauta
*************************************** SFARSIT: caut_facturi_multiple_client ***************************************
*************************************** INCEPUT: caut_facturi_multiple_client_articol ***************************************
Function caut_facturi_multiple_client_articol
Lparameters tnIdPart, tnInValuta, tnIdValuta, tlFacturiMultiple, tnIdArticol
Local loCauta
loCauta = ""
PRIVATE pnIdArticol, pnIdPart, pnIdValuta
pnIdArticol = tnIdArticol
pnIdPart = tnIdPart
pnIdValuta = tnIdValuta
lcFiltruPart = Iif(Empty(tnIdPart), [], [ and a.id_part = ?pnIdPart])
lcFiltruValuta = Iif(Empty(tnInValuta), [ and a.in_valuta = 0], [ and a.in_valuta = 1 and b.id_valuta = ?pnIdValuta])
lcFiltru = [1=2]
lcSchema = [serie_act C(50),numar_act N(20),data_act d,dataora t,id_vanzare N(20)]
lcOrder = [a.data_act desc, a.numar_act desc, a.dataora desc]
lcColoane = [serie_act,numar_act,data_act,dataora]
If Empty(tlFacturiMultiple)
lcTitlu = [Alegeti factura]
Else
lcTitlu = [Alegeti facturile (mouse-click pe numar sau apasati SPACE)]
Endif
lcTitluColoane = [Serie act,Numar act,Data,Data inreg.]
lcSelect = [select a.serie_act,a.numar_act,a.data_act,a.dataora,a.id_vanzare ] + ;
[from vanzari a join vanzari_detalii b on a.id_vanzare = b.id_vanzare and b.id_articol = ?pnIdArticol ]
lcFiltruOriginal = [a.sters=0 and a.tip in (1,2,3,4,5,6,10,-1,-2,-3,-4,-11) ] + gcCondSucursala + ;
lcFiltruPart + lcFiltruValuta
lcNumeProc = []
llToateIreg = .F.
lcPrimaColoana = [numar_act]
lnPornire = 1
lnTipReturn = Iif(tlFacturiMultiple, 1, 0)
lcIdColumn = "id_vanzare"
loCauta = cauta_alfa(lcSelect, lcFiltru, lcSchema, lcOrder, lcColoane, lcTitlu, lcTitluColoane, lcNumeProc, llToateIreg, lcFiltruOriginal, lcPrimaColoana, lnPornire, lnTipReturn, lcIdColumn)
Return loCauta
*************************************** SFARSIT: caut_facturi_multiple_client ***************************************
******************************************* INCEPUT: caut_gestiune_sursa *******************************************
Function caut_gestiune_sursa
Lparameters tcListaTipGest
Store "" To loCauta
pcFiltruOriginal = [a.id_util = ?gnIdUtil and a.sters = 0 and b.sters = 0 and c.sters = 0]
If !Empty(tcListaTipGest)
pcFiltruOriginal = pcFiltruOriginal + [ and c.nr_pag in (] + Alltrim(tcListaTipGest) + [)]
Endif
pcselect = [select distinct c.nume_gestiune, b.id_gestiune, c.cont, c.acont ] + ;
[from ] + gcS + [.gest_coresp_util_grupe a ] + ;
[left join ] + gcS + [.gest_coresp_grupe_gestiuni b on a.id_grupe = b.id_grupe ] + ;
[left join ] + gcS + [.nom_gestiuni c on b.id_gestiune = c.id_gestiune ]
pcfiltru = [1=2]
pcschema = []
pcorder = [nume_gestiune,cont,acont]
pccoloane = [nume_gestiune,cont,acont]
pcTitlu = [Alegeti gestiunea]
pcTitluColoane = [Gestiune,Cont,Acont]
lcNumeProc = []
llToateIreg = .F.
loCauta = cauta_alfa(pcselect, pcfiltru, pcschema, pcorder, pccoloane, pcTitlu, pcTitluColoane, lcNumeProc, llToateIreg, pcFiltruOriginal)
Return loCauta
Endfunc
******************************************* SFARSIT: caut_gestiune_sursa *******************************************
**************************************** INCEPUT: caut_utilizator_facturare ****************************************
Function caut_utilizator_facturare
Store "" To loCauta
pcFiltruOriginal = [a.id_util in (select distinct id_util from ] + gcS + [.vanzari where sters = 0] + ;
gcCondSucursala + [)]
pcselect = [select a.id_util,a.utilizator from syn_vutilizatori a ]
pcfiltru = [1=2]
pcschema = []
pcorder = [utilizator]
pccoloane = [utilizator]
pcTitlu = [Alegeti utilizatorul]
pcTitluColoane = [Utilizator]
lcNumeProc = []
llToateIreg = .F.
loCauta = cauta_alfa(pcselect, pcfiltru, pcschema, pcorder, pccoloane, pcTitlu, pcTitluColoane, lcNumeProc, llToateIreg, pcFiltruOriginal)
Return loCauta
Endfunc
**************************************** SFARSIT: caut_utilizator_facturare ****************************************
*!* ******************************************* INCEPUT: caut_gestiune_dest *******************************************
*!* Function caut_gestiune_dest
*!* Lparameters tnIdGestiune
*!* Store "" To loCauta
*!* pcFiltruOriginal = [a.id_util=?gnIdUtil and a.sters=0 and b.sters=0 and c.sters=0 and c.nr_pag in (4,5,6)]
*!* If !Empty(tnIdGestiune)
*!* pcFiltruOriginal = pcFiltruOriginal + [ and b.id_gestiune!=] + Alltrim(Str(tnIdGestiune))
*!* Endif
*!* pcselect = [select distinct c.nume_gestiune,b.id_gestiune,d.id_tipgest,] + ;
*!* [(case when p.explicatie is null then s.explicatie else p.explicatie end) as explicatie,] + ;
*!* [d.cont,p.acont ] + ;
*!* [from ] + gcS + [.gest_coresp_util_grupe a ] + ;
*!* [left join ] + gcS + [.gest_coresp_grupe_gestiuni b on a.id_grupe=b.id_grupe ] + ;
*!* [left join ] + gcS + [.nom_gestiuni c on b.id_gestiune=c.id_gestiune ] + ;
*!* [left join ] + gcS + [.coresp_cont_tipgest d on c.nr_pag=d.id_tipgest ] + ;
*!* [left join ] + gcS + [.vplcont_analitic p on d.cont=p.cont and p.an=?gnAn ] + ;
*!* [left join ] + gcS + [.vplcont_sintetic s on d.cont=s.cont and s.an=?gnAn ]
*!* pcfiltru = [1=2]
*!* pcschema = []
*!* pcorder = [nume_gestiune,cont,acont]
*!* pccoloane = [nume_gestiune,cont,acont,explicatie]
*!* pcTitlu = [Alegeti gestiunea si contul de transfer]
*!* pcTitluColoane = [Gestiune,Cont,Analitic,Explicatie]
*!* lcNumeProc = []
*!* llToateIreg = .F.
*!* loCauta = cauta_alfa(pcselect,pcfiltru,pcschema,pcorder,pccoloane,pcTitlu,pcTitluColoane, lcNumeProc, llToateIreg, pcFiltruOriginal)
*!* Return loCauta
*!* Endfunc
*!* ******************************************* SFARSIT: caut_gestiune_dest *******************************************
*!* ******************************************* INCEPUT: caut_politici_curente_util *******************************************
*!* Procedure caut_politici_curente_util
*!* Local loCauta,llReturn
*!* Store "" To loCauta
*!* Store .F. To llReturn
*!* lcSelect = ["select id_pol,nume,datai,datas from ] + gcS + [.fact_vpolitici_pret_curente"]
*!* lcFiltru = [1=2]
*!* lcSchema = ['']
*!* lcorder = [2]
*!* lccoloane = [nume,datai,datas]
*!* lcTitlu = [Alegeti politica de preturi]
*!* lcTitluColoane = [Nume,Data inceput,Data sfarsit]
*!* lcNumeProc = []
*!* llToateIreg = .F.
*!* lcFiltruOriginal = [id_util = ] + Alltrim(Str(gnIdUtil))
*!* loCauta = cauta_alfa(lcSelect, lcFiltru, lcSchema, lcorder, lccoloane, lcTitlu, lcTitluColoane, lcNumeProc, llToateIreg, lcFiltruOriginal)
*!* Return loCauta
*!* Endproc && caut_politici_curente_util
*!* ******************************************* SFARSIT: caut_politici_curente_util *******************************************
******************************************* INCEPUT: calculeaza_totaluri *******************************************
Function calculeaza_totaluri
Lparameters toArticol
*!* v 2.0.15 calcul valoare tva din valoare cu tva daca preturi_cu_tva = 1
Local lnProcTvav_19_119
lnProcTvav_19_119 = (toArticol.proc_tvav - 1) / toArticol.proc_tvav
*!* v 2.0.15 ^
If Type('toArticol.cu_tva') <> 'U'
AddProperty(toArticol, 'preturi_cu_tva', toArticol.cu_tva)
AddProperty(toArticol, 'discount_unitar', toArticol.discountftva)
AddProperty(toArticol, 'discount_unitar_ctva', toArticol.discountctva)
AddProperty(toArticol, 'pretftva_val', toArticol.vpretftva)
AddProperty(toArticol, 'pretctva_val', toArticol.vpretctva)
AddProperty(toArticol, 'discount_unitar_val', toArticol.vdiscountftva)
AddProperty(toArticol, 'discount_unitar_ctva_val', toArticol.vdiscountctva)
Endif
If toArticol.preturi_cu_tva = 0
toArticol.vvalftva = Round(toArticol.Pretftva_val * toArticol.cantitate, gnPVal)
toArticol.vvaltva = Round(Round(toArticol.Pretftva_val * toArticol.cantitate, gnPVal) * (toArticol.proc_tvav - 1), gnPVal)
toArticol.vvalctva = toArticol.vvalftva + toArticol.vvaltva
toArticol.vvaldiminuatftva = Round((toArticol.Pretftva_val - toArticol.discount_unitar_val) * toArticol.cantitate, gnPVal)
toArticol.vvaldiminuattva = Round(Round((toArticol.Pretftva_val - toArticol.discount_unitar_val) * toArticol.cantitate, gnPVal) * (toArticol.proc_tvav - 1), gnPVal)
toArticol.vvaldiminuatctva = toArticol.vvaldiminuatftva + toArticol.vvaldiminuattva
toArticol.vvaldiscountftva = Round(toArticol.discount_unitar_val * toArticol.cantitate, gnPVal)
toArticol.vvaldiscounttva = Round(Round(toArticol.discount_unitar_val * toArticol.cantitate, gnPVal) * (toArticol.proc_tvav - 1), gnPVal)
toArticol.vvaldiscountctva = toArticol.vvaldiscountftva + toArticol.vvaldiscounttva
If poDate.in_valuta = 0
toArticol.valftva = Round(toArticol.Pretftva * toArticol.cantitate, gnPc)
toArticol.valtva = Round(Round(toArticol.Pretftva * toArticol.cantitate, gnPc) * (toArticol.proc_tvav - 1), gnPc)
toArticol.valctva = toArticol.valftva + toArticol.valtva
toArticol.valdiscountftva = Round(toArticol.discount_unitar * toArticol.cantitate, gnPc)
toArticol.valdiscounttva = Round(Round(toArticol.discount_unitar * toArticol.cantitate, gnPc) * (toArticol.proc_tvav - 1), gnPc)
toArticol.valdiscountctva = toArticol.valdiscountftva + toArticol.valdiscounttva
toArticol.valdiminuatftva = Round((toArticol.Pretftva - toArticol.discount_unitar) * toArticol.cantitate, gnPc)
toArticol.valdiminuattva = Round(Round((toArticol.Pretftva - toArticol.discount_unitar) * toArticol.cantitate, gnPc) * (toArticol.proc_tvav - 1), gnPc)
toArticol.valdiminuatctva = toArticol.valdiminuatftva + toArticol.valdiminuattva
Else
toArticol.valftva = Round(Round(toArticol.Pretftva_val * toArticol.Curs / toArticol.multiplicator, gnPPretV) * toArticol.cantitate, gnPc)
toArticol.valtva = Round(Round(Round(toArticol.Pretftva_val * toArticol.Curs / toArticol.multiplicator, gnPPretV) * toArticol.cantitate, gnPc) * (toArticol.proc_tvav - 1), gnPc)
toArticol.valctva = toArticol.valftva + toArticol.valtva
toArticol.valdiscountftva = Round(Round(toArticol.discount_unitar_val * toArticol.Curs / toArticol.multiplicator, gnPPretV) * toArticol.cantitate, gnPc)
toArticol.valdiscounttva = Round(Round(Round(toArticol.discount_unitar_val * toArticol.Curs / toArticol.multiplicator, gnPPretV) * toArticol.cantitate, gnPc) * (toArticol.proc_tvav - 1), gnPc)
toArticol.valdiscountctva = toArticol.valdiscountftva + toArticol.valdiscounttva
toArticol.valdiminuatftva = Round((Round(toArticol.Pretftva_val * toArticol.Curs / toArticol.multiplicator, gnPPretV) - Round(toArticol.discount_unitar_val * toArticol.Curs / toArticol.multiplicator, gnPPretV)) * toArticol.cantitate, gnPc)
toArticol.valdiminuattva = Round(Round((Round(toArticol.Pretftva_val * toArticol.Curs / toArticol.multiplicator, gnPPretV) - Round(toArticol.discount_unitar_val * toArticol.Curs / toArticol.multiplicator, gnPPretV)) * toArticol.cantitate, gnPc) * (toArticol.proc_tvav - 1), gnPc)
toArticol.valdiminuatctva = toArticol.valdiminuatftva + toArticol.valdiminuattva
Endif
Else
*!* v 2.0.15 calcul valoare tva din valoare cu tva daca preturi_cu_tva = 1
toArticol.vvalctva = Round(toArticol.Pretctva_val * toArticol.cantitate, gnPVal)
*!* toArticol.vvalftva = Round(toArticol.Pretftva_val * toArticol.cantitate, gnPVal)
*!* toArticol.vvaltva = toArticol.vvalctva - toArticol.vvalftva
toArticol.vvaltva = Round(toArticol.vvalctva * m.lnProcTvav_19_119, gnPVal)
toArticol.vvalftva = toArticol.vvalctva - toArticol.vvaltva
toArticol.vvaldiscountctva = Round(toArticol.discount_unitar_ctva_val * toArticol.cantitate, gnPVal)
*!* toArticol.vvaldiscountftva = Round(toArticol.discount_unitar_val * toArticol.cantitate, gnPVal)
*!* toArticol.vvaldiscounttva = toArticol.vvaldiscountctva - toArticol.vvaldiscountftva
toArticol.vvaldiscounttva = Round(toArticol.vvaldiscountctva * m.lnProcTvav_19_119, gnPVal)
toArticol.vvaldiscountftva = toArticol.vvaldiscountctva - toArticol.vvaldiscounttva
toArticol.vvaldiminuatctva = Round((toArticol.Pretctva_val - toArticol.discount_unitar_ctva_val) * toArticol.cantitate, gnPVal)
*!* toArticol.vvaldiminuatftva = Round(Round((toArticol.Pretctva_val - toArticol.discount_unitar_ctva) / toArticol.proc_tvav, gnPVal) * toArticol.cantitate, gnPVal)
*!* toArticol.vvaldiminuattva = toArticol.vvaldiminuatctva - toArticol.vvaldiminuatftva
toArticol.vvaldiminuattva = Round(toArticol.vvaldiminuatctva * m.lnProcTvav_19_119, gnPVal)
toArticol.vvaldiminuatftva = toArticol.vvaldiminuatctva - toArticol.vvaldiminuattva
If poDate.in_valuta = 0
toArticol.valctva = Round(toArticol.Pretctva * toArticol.cantitate, gnPc)
*!* toArticol.valftva = Round(toArticol.Pretftva * toArticol.cantitate,gnPc)
*!* toArticol.valtva = toArticol.valctva - toArticol.valftva
toArticol.valtva = Round(toArticol.valctva * m.lnProcTvav_19_119, gnPc)
toArticol.valftva = toArticol.valctva - toArticol.valtva
toArticol.valdiscountctva = Round(toArticol.discount_unitar_ctva * toArticol.cantitate, gnPc)
*!* toArticol.valdiscountftva = Round(toArticol.discount_unitar * toArticol.cantitate,gnPc)
*!* toArticol.valdiscounttva = toArticol.valdiscountctva - toArticol.valdiscountftva
toArticol.valdiscounttva = Round(toArticol.valdiscountctva * m.lnProcTvav_19_119, gnPc)
toArticol.valdiscountftva = toArticol.valdiscountctva - toArticol.valdiscounttva
toArticol.valdiminuatctva = Round((toArticol.Pretctva - toArticol.discount_unitar_ctva) * toArticol.cantitate, gnPc)
*!* toArticol.valdiminuatftva = Round(Round((toArticol.Pretctva - toArticol.discount_unitar_ctva) / toArticol.proc_tvav,gnPc) * toArticol.cantitate, gnPc)
*!* toArticol.valdiminuattva = toArticol.valdiminuatctva - toArticol.valdiminuatftva
toArticol.valdiminuattva = Round(toArticol.valdiminuatctva * m.lnProcTvav_19_119, gnPc)
toArticol.valdiminuatftva = toArticol.valdiminuatctva - toArticol.valdiminuattva
Else
toArticol.valctva = Round(Round(toArticol.Pretctva_val * toArticol.Curs / toArticol.multiplicator, gnPPretV) * toArticol.cantitate, gnPc)
*!* toArticol.valftva = Round(Round(toArticol.Pretftva_val * toArticol.Curs,gnPc) * toArticol.cantitate,gnPc)
*!* toArticol.valtva = toArticol.valctva - toArticol.valftva
toArticol.valtva = Round(toArticol.valctva * m.lnProcTvav_19_119, gnPc)
toArticol.valftva = toArticol.valctva - toArticol.valtva
toArticol.valdiscountctva = Round(Round(toArticol.discount_unitar_ctva_val * toArticol.Curs / toArticol.multiplicator, gnPPretV) * toArticol.cantitate, gnPc)
*!* toArticol.valdiscountftva = Round(Round(toArticol.discount_unitar_val * toArticol.Curs,gnPc) * toArticol.cantitate,gnPc)
*!* toArticol.valdiscounttva = toArticol.valdiscountctva - toArticol.valdiscountftva
toArticol.valdiscounttva = Round(toArticol.valdiscountctva * m.lnProcTvav_19_119, gnPc)
toArticol.valdiscountftva = toArticol.valdiscountctva - toArticol.valdiscounttva
toArticol.valdiminuatctva = Round((Round(toArticol.Pretctva_val * toArticol.Curs / toArticol.multiplicator, gnPPretV) - Round(toArticol.discount_unitar_ctva_val * toArticol.Curs / toArticol.multiplicator, gnPPretV)) * toArticol.cantitate, gnPc)
*!* toArticol.valdiminuatftva = Round(Round((Round(toArticol.Pretctva_val*toArticol.Curs,gnPc) - ROUND(toArticol.discount_unitar_ctva_val*toArticol.Curs,gnPc)) / toArticol.proc_tvav,gnPc) * toArticol.cantitate, gnPc)
*!* toArticol.valdiminuattva = toArticol.valdiminuatctva - toArticol.valdiminuatftva
toArticol.valdiminuattva = Round(toArticol.valdiminuatctva * m.lnProcTvav_19_119, gnPc)
toArticol.valdiminuatftva = toArticol.valdiminuatctva - toArticol.valdiminuattva
Endif
*!* v 2.0.15 ^
Endif
If Type('toArticol.cu_tva') <> 'U'
toArticol.cu_tva = toArticol.preturi_cu_tva
Removeproperty(toArticol, 'preturi_cu_tva')
toArticol.discountftva = toArticol.discount_unitar
Removeproperty(toArticol, 'discount_unitar')
toArticol.discountctva = toArticol.discount_unitar_ctva
Removeproperty(toArticol, 'discount_unitar_ctva')
toArticol.vpretftva = toArticol.Pretftva_val
Removeproperty(toArticol, 'pretftva_val')
toArticol.vpretctva = toArticol.Pretctva_val
Removeproperty(toArticol, 'pretctva_val')
toArticol.vdiscountftva = toArticol.discount_unitar_val
Removeproperty(toArticol, 'discount_unitar_val')
toArticol.vdiscountctva = toArticol.discount_unitar_ctva_val
Removeproperty(toArticol, 'discount_unitar_ctva_val')
Endif
Release lnProcTvav_19_119
Return toArticol
Endfunc
******************************************* SFARSIT: calculeaza_totaluri *******************************************