2219 lines
107 KiB
Plaintext
2219 lines
107 KiB
Plaintext
*!* 12.06.2014
|
|
*!* marius.mutu
|
|
*!* adaugat proprietatea oDateFactura.incasatCARD = suma incasata prin CARD POS
|
|
|
|
*!* 19.01.2015
|
|
*!* marius.mutu
|
|
*!* + oDateFactura.completeaza_setari_document() completeaza datele de la un document anterior
|
|
|
|
*!* 19.01.2015
|
|
*!* marius.mutu
|
|
*!* + proprietati: nIdTipDocFactura, nIdTipDocProforma, nIdTipDocBonFiscal, nIdTipDocAvizExpeditie
|
|
|
|
*!* 06.02.2015
|
|
*!* marius.mutu
|
|
*!* la schimbarea poDate.nIdTipDoc se initializeaza poDate.eBonFiscal, .eProforma in nIdTipDoc_Assign
|
|
|
|
*!* 16.06.2015
|
|
*!* marius.mutu
|
|
*!* + proprietati: oDateFactura.id_facturare, nListareDetaliata
|
|
|
|
*!* 30.03.2017
|
|
*!* marius.mutu
|
|
*!* prelucreaza_factura
|
|
*!* Explicatia articolului a fost marita la 500 de caractere in baza de date, tip Memo si nu poate fi folosita intr-un select group by
|
|
*!* Am selectat doar primele 240 caractere apoi completez explicatia din cursorul original
|
|
|
|
*!* 31.03.2017
|
|
*!* marius.mutu
|
|
*!* prelucreaza_lista_livrare - explicatie M, nu mergea grupata
|
|
|
|
*!* 30.01.2019
|
|
*!* marius.mutu
|
|
*!* prelucreaza_factura, prelucreaza_recapitulatia - s-au tratat grupare dupa campul explicatie Memo - Cast(explicatie as C(254)) pentru facturare seturi
|
|
|
|
*!* 06.11.2019
|
|
*!* marius.mutu
|
|
*!* +oDateFactura.nIdBeneficiar, nTipFactura
|
|
|
|
*!* 20.12.2019
|
|
*!* marius.mutu
|
|
*!* +oDateFactura.nvalval, ntvaval, ntotval, cValuta, tip_factura - pentru listarea valorilor in valuta pe facturile in lei la ROAACNPRO
|
|
|
|
*!* 22.01.2020
|
|
*!* marius.mutu
|
|
*!* prelucreaza_factura, prelucreaza_factura_valuta + codmatc (codmat client)
|
|
|
|
*!* 22.07.2020
|
|
*!* marius.mutu
|
|
*!* prelucreaza_facturacrs, prelucreaza_factura_valuta: verificare camp codmatc
|
|
|
|
*!* 12.07.2024
|
|
*!* marius.mutu
|
|
*!* alege_optiuni_listare_facturare - se listeaza serii/lot?
|
|
|
|
***************************************************************************************************************
|
|
**** Clase:
|
|
**** oDateFactura
|
|
**** init
|
|
**** initializeaza_politica_pret
|
|
**** initializeaza_setari_document
|
|
**** completeaza_setari_document
|
|
**** genereaza_numar_act
|
|
**** Reset
|
|
**** scrieAtasamente
|
|
**** oDateGestiune
|
|
**** Reset
|
|
**** Functii:
|
|
**** actualizeaza_document
|
|
**** actualizeaza_partener_fact
|
|
**** actualizeaza_politica_pret
|
|
**** optiuni_format_listare && denumire veche : optiuni_format_factura
|
|
**** recalculeaza_pret_vanzare_lei
|
|
**** recalculeaza_pret_vanzare_compus
|
|
**** Proceduri:
|
|
**** modifica_pret_articol_compus
|
|
**** prelucreaza_aviz_cu_tva
|
|
**** prelucreaza_factura
|
|
**** prelucreaza_recapitulatie
|
|
**** prelucreaza_factura_valuta
|
|
**** prelucreaza_aviz_retur
|
|
**** prelucreaza_lista_livrare
|
|
**** creeaza_crsfactura
|
|
**** creeaza_crsfactura_rate && veche
|
|
**** copiaza_structura_cursor
|
|
**** creeaza_backup_cursoare_facturare
|
|
**** repune_backup_cursoare_facturare
|
|
**** sterge_backup_cursoare_facturare
|
|
**** alege_optiuni_listare_facturare
|
|
**** alege_banci_facturare
|
|
**** completeaza_explicatie_tva
|
|
**** completeaza_explicatie_contract
|
|
***************************************************************************************************************
|
|
******************************************** INCEPUT: oDateFactura ********************************************
|
|
#define precizie_max_pret_vz 6
|
|
|
|
Define Class oDateFactura As Custom
|
|
Data = {}
|
|
dataireg = {}
|
|
nIdTipDoc = 5
|
|
nIdTipDocFactura = 5
|
|
nIdTipDocProforma = 23
|
|
nIdTipDocBonFiscal = 3
|
|
nIdTipDocAvizExpeditie = 6
|
|
id_fdoc = Null
|
|
fdoc = []
|
|
dataact = {}
|
|
datascad = {}
|
|
nract = 0
|
|
serie_act = []
|
|
nract_retur = 0
|
|
serie_act_retur = []
|
|
id_client = Null
|
|
nume_client = []
|
|
listaid = [] && id_comanda sau lista id_aviz
|
|
descriere = [] && numar comanda sau numere avize
|
|
id_venchelt = Null && modificare ROAFACTURARE v 2.0.46
|
|
venchelt = [] && modificare ROAFACTURARE v 2.0.46
|
|
id_responsabil = Null
|
|
responsabil = []
|
|
id_set = 0
|
|
tip = 0
|
|
id_pol = Null
|
|
nume_politica = []
|
|
nume_responsabil= [] && alte date pentru facturare
|
|
BIresp = []
|
|
CNPresp = []
|
|
id_delegat = Null
|
|
nume_delegat = []
|
|
BIdelegat = []
|
|
CNPdelegat = []
|
|
id_masina = Null
|
|
nrinmat = []
|
|
dataora_exp = {} && modificare ROAFACTURARE v 2.0.80
|
|
id_agent = Null
|
|
nume_agent = []
|
|
proc_tva = 0
|
|
explicatie_tva = [] && modificare ROAFACTURARE v 2.0.46
|
|
zi_curs = {}
|
|
discount_evidentiat = 0 && daca se evidentiaza discount-ul sau este inclus in pret
|
|
afisare_scadenta = 1 && modificare ROACONTRACTE v 2.0.38
|
|
text_aditional = []
|
|
text_aditional_invoice = [] && modificare ROAFACTURARE v 2.0.46
|
|
text_aditional_retur = []
|
|
text_aditional_en = [] && modificare ROAFACTURARE v 2.0.80
|
|
eProforma = 0
|
|
nEFactura = 0 && xml eFactura
|
|
oInfoEFactura = Null && obiect cu infoe eFactura rezultat in urma listarii (cFile, lOk, cMesaj)
|
|
eBonFiscal = 0
|
|
serie_chit = [] && modificare ROAFACTURARE v 2.0.80
|
|
explicatie_chit = [] && modificare ROAFACTURARE v 2.0.80
|
|
nr_incasare = 0
|
|
id_fdoc_incasare= 0
|
|
ntip_incasare = 0 && modificare ROAFACTURARE v 2.0.84
|
|
id_casa = 0
|
|
incasat = 0 && incasat numerar
|
|
incasatCARD = 0 && incasat prin CARD POS
|
|
nIncasatPos = 0 && 1 s-a ales bon fiscal prin CARD POS
|
|
nBonDetaliat = 0 && 1 se listeaza articole individuale; 0 se listeaza "contravaloare factura nr..."
|
|
incasatTichete = 0 && incasat tichete
|
|
totalctva = 0
|
|
in_valuta = 0
|
|
id_valuta = 0
|
|
nume_valuta = []
|
|
Curs = 0
|
|
multiplicator = 1 && modificare ROAFACTURARE v 2.0.90
|
|
id_lucrare = 0
|
|
nrord = []
|
|
id_sectie = 0
|
|
sectie = []
|
|
totctvaconv = 0
|
|
totftvaconv = 0
|
|
tottvaconv = 0
|
|
nvalval = 0
|
|
ntvaval = 0
|
|
ntotval = 0
|
|
cValuta = []
|
|
rezultat_serii = 0
|
|
listare_componenta_set = 1
|
|
listare_componenta_set_ll = 1 && modificare ROAFACTURARE v 2.0.56
|
|
listare_serii = 1 && modificare ROAFACTURARE v 2.0.46
|
|
listare_recapitulatie = 1 && modificare ROAFACTURARE v 2.0.46
|
|
listare_lista_livrare = 1 && modificare ROAFACTURARE v 2.0.46
|
|
id_furnizor = 0 && id_furnizor - imi trebuie la aviz pe baza de NIR
|
|
furnizor = [] && nume furnizor - imi trebuie la aviz pe baza de NIR
|
|
nrfactachi = 0 && numar factura achizitie - imi trebuie la aviz pe baza de NIR
|
|
id_part_rez = Null
|
|
id_gestiune_init = Null && gestiunea aleasa in formularul de introducere a datelor facturii / avizului
|
|
cDocAtasate = [crsoDateDocAtasate]&& modificare ROAFACTURARE v 2.0.58
|
|
nRelistare = 0 && modificare ROAFACTURARE v 2.0.58
|
|
nSalveazaAtasamente = 0 && modificare ROAFACTURARE v 2.0.58
|
|
nid_proforma = 9999999999 && modificare ROAFACTURARE v 2.0.58
|
|
nid_vanzare = 9999999999 && modificare ROAFACTURARE v 2.0.58
|
|
nid_vanzare_retur = 9999999999 && modificare ROAFACTURARE v 2.0.58
|
|
sumavorbe = [] && modificare ROAFACTURARE v 2.0.78
|
|
coeficient_k = 0 && modificare ROAFACTURARE v 2.0.93
|
|
explicatia4 = [] && modificare ROACONTRACTE v 2.0.42
|
|
id_ordl = NULL && modificare ROAAUTO v 2.0.33
|
|
tva_incasare = 0 && modificare ROAGEST v 2.2.0
|
|
id_facturare = NULL && id adresa facturare
|
|
adresa_facturare = '' && adresa factuare text
|
|
nListareDetaliata = 0 && articolele se listeaza cumulat dupa cantitate sau detaliat, asa cum au fost adaugate pe factura
|
|
nListareSilentioasa = 0 && listare fara previzualizare
|
|
nListareJustPDF = 0 && listare doar pdf
|
|
oClient = NULL
|
|
lCopiere = .F. && copiere factura/aviz
|
|
nIdBeneficiar = Null
|
|
nTipFactura = NULL && tip intern factura (ex: ACN 0=TRANZIT/1=CHEIAJ/3=CHIRII/5=APA/6=PENALITATI)
|
|
id_util = NULL && id utilizator
|
|
tip_doc_394 = 'F' && FACTURA pentru xml EFactura
|
|
nRectificativa = 0 && 0 = factura initiala, 1 = factura rectificativa
|
|
tip_saft = 380 && factura initiala
|
|
institutie_publica = 0 && 1 = clientul este institutie publica, pentru folosirea coduri articole CPV sau NC8
|
|
id_ctr = NULL && ID CONTRACT
|
|
contract = NULL && CONTNRACT
|
|
eFactura = 0 && 0/1 = se transmite in borderoul eFactura
|
|
sold_lei = 0 && soldul total pe client la emiterea facturii in lei
|
|
sold_valuta = 0 && soldul total pe client la emiterea facturii in valuta (nediferentiat pe valuta)
|
|
|
|
Procedure Init
|
|
Lparameters tnIdSet, tnTip
|
|
&& 0,0 - la listare
|
|
&& id_set,tip
|
|
|
|
Local ldData
|
|
If !Empty(m.tnIdSet)
|
|
&& modificare ROAFACTURARE v 2.0.58
|
|
Use In (SELECT('crsoDateDocAtasate'))
|
|
|
|
Create Cursor crsoDateDocAtasate (nume_frx c(50),fisier w)
|
|
&& modificare ROAFACTURARE v 2.0.58 ^
|
|
ldData = Ttod(get_ora())
|
|
If Month(ldData)<>gnLuna Or Year(ldData)<>gnAn
|
|
ldData=Gomonth(Date(gnAn,gnLuna,1),1)-1
|
|
Endif
|
|
With This
|
|
.Data = ldData
|
|
.dataireg = ldData
|
|
.dataact = ldData
|
|
.tva_incasare = goCalendar.tva_incasare && modificare ROAFACTURARE v 2.2.0
|
|
If (tnTip<21) OR INLIST(tnTip,45,48,49,51,52) && modificare ROAFACTURARE v 2.0.87 ( 45 ), v 2.0.93 ( 48 ), v 2.0.95 ( 49 )
|
|
.datascad = IIF(TYPE('gnZileScadentaFact') = 'N', Iif(gnZileScadentaFact=-1,Gomonth(ldData,1),ldData+gnZileScadentaFact), GOMONTH(m.ldData,1))
|
|
Endif
|
|
.zi_curs = ldData
|
|
If Inlist(tnIdSet,223,225,226,227,271) OR INLIST(m.tnTip, 5,6,7,9,10,52) && ,25014,25015,25016,25018,25019,25004,25005,25006,25008,25009,25051,25061)
|
|
.in_valuta = 1
|
|
Endif
|
|
.id_set = tnIdSet
|
|
.tip = tnTip
|
|
.initializeaza_setari_document()
|
|
If Inlist(tnTip,23,30,41)
|
|
.initializeaza_politica_pret()
|
|
Endif
|
|
*!* .genereaza_numar_act()
|
|
.discount_evidentiat = IIF(TYPE('gnDiscountEvidentiat') = 'N', m.gnDiscountEvidentiat, 1)
|
|
.nRelistare = 0 && modificare ROAFACTURARE v 2.0.58
|
|
|
|
If INLIST(m.tnTip, 2, 6, 52) And Type('goContract') <> 'U' && FACTURARE DIN ROACONTRACTE
|
|
.id_client = goContract.id_part
|
|
.nume_client = goContract.denumire
|
|
.listaid = goContract.id_ctr
|
|
.descriere = goContract.contract
|
|
.id_sectie = goContract.id_sectie
|
|
.sectie = goContract.sectie
|
|
.id_responsabil = goContract.id_responsabil
|
|
.responsabil = goContract.responsabil
|
|
.id_valuta = goContract.id_valuta
|
|
.nume_valuta = goContract.nume_val
|
|
|
|
lcSql = [ select id_ctr, contract, numar, data, denumire, scadenta_incasare, opt_facturare, text_standard, afisare_scadenta ]+;
|
|
[ FROM fact_vcontracte ]+;
|
|
[ where id_ctr = ] + Alltrim(Str(goContract.id_ctr))
|
|
lnSucces = goExecutor.oExecute(lcSql,'crsCtrTemp')
|
|
|
|
If lnSucces < 0
|
|
AMESSAGEBOX(goExecutor.cEroare,0+16,"Eroare")
|
|
Return
|
|
*!* modificare ROACONTRACTE v 2.0.35
|
|
Else
|
|
lcAlias = SELECT()
|
|
Select crsctrtemp
|
|
Calculate Min(scadenta_incasare),MAX(afisare_scadenta) For Inlist(opt_facturare,3,4,0) To lnScadentaIncasare,lnAfisareScadenta
|
|
If lnScadentaIncasare <> 0
|
|
.datascad = .dataact + lnScadentaIncasare
|
|
Endif
|
|
&& modificare ROACONTRACTE v 2.0.38
|
|
.afisare_scadenta = lnAfisareScadenta
|
|
&& modificare ROACONTRACTE v 2.0.38 ^
|
|
Go Top
|
|
Select (lcAlias)
|
|
*!* modificare ROACONTRACTE v 2.0.35 ^
|
|
ENDIF && lnSucces < 0
|
|
ENDIF && tnTip = 2 And Type('goContract') <> 'U' && FACTURARE DIN ROACONTRACTE
|
|
|
|
|
|
|
|
If tnTip = 3 And Type('goComanda') = 'O' && FACTURARE DIN ROACOMENZI
|
|
.id_client = goComanda.id_part
|
|
.nume_client = ALLTRIM(goComanda.nume)
|
|
.listaid = goComanda.id_comanda
|
|
.descriere = goComanda.nr_comanda
|
|
.id_sectie = goComanda.id_sectie
|
|
*!* .sectie = goComanda.sectie
|
|
*!* .id_responsabil = goComanda.id_responsabil
|
|
*!* .responsabil = goComanda.responsabil
|
|
|
|
lcSql = [ select sectie from nom_sectii where id_sectie = ] + ALLTRIM(STR(goComanda.id_sectie))
|
|
lnSucces = goExecutor.oExecute(lcSql,'crsComTemp')
|
|
|
|
If lnSucces < 0
|
|
AMESSAGEBOX(goExecutor.cEroare,0+16,"Eroare")
|
|
Return
|
|
Else
|
|
lcAlias = SELECT()
|
|
IF RECCOUNT('crsComTemp') > 0
|
|
GO TOP IN crsComTemp
|
|
.sectie = ALLTRIM(crsComTemp.sectie)
|
|
ENDIF
|
|
USE IN (SELECT('crsComTemp'))
|
|
|
|
Select (lcAlias)
|
|
ENDIF && lnSucces < 0
|
|
ENDIF && tnTip = 3 And Type('goComanda') = 'O'
|
|
|
|
Endwith
|
|
Endif
|
|
Endproc
|
|
|
|
Procedure initializeaza_politica_pret
|
|
Local lnIdPol,lcNumePol
|
|
lnIdPol = 0
|
|
lcNumePol = []
|
|
actualizeaza_politica_pret(This.tip,@lnIdPol,@lcNumePol)
|
|
With This
|
|
.id_pol = lnIdPol
|
|
.nume_politica = lcNumePol
|
|
Endwith
|
|
Endproc
|
|
|
|
Procedure initializeaza_setari_document
|
|
LPARAMETERS tnTip
|
|
Local lnIdFdoc, lcFdoc, lnTip
|
|
lnIdFdoc = 0
|
|
lcFdoc = []
|
|
|
|
* vreau sa ReInitializez id_fdoc, daca schimb tipul documentului FACTURA/PROFORMA/BON FISCAL
|
|
* BON FISCAL = -101, PROFORMA = -102
|
|
lnTip = IIF(EMPTY(m.tnTip), This.tip, m.tnTip)
|
|
actualizeaza_document(m.lnTip,@lnIdFdoc,@lcFdoc)
|
|
With This
|
|
.id_fdoc = lnIdFdoc
|
|
.fdoc = lcFdoc
|
|
Endwith
|
|
Endproc
|
|
|
|
*** Se apeleaza in functie de optiunea
|
|
Procedure completeaza_setari_document
|
|
LPARAMETERS toDateAnterior, tlFactura
|
|
* tlFactura: .T. daca copiez o factura si am nevoie de id-ul facturii anterioare, iar toDateAnterior = toFactura
|
|
|
|
IF TYPE('toDateAnterior') = 'O' AND !ISNULL(toDateAnterior) AND PEMSTATUS(toDateAnterior,'id_lucrare', 5)
|
|
With This
|
|
IF m.tlFactura
|
|
.lCopiere = .T.
|
|
*.nIdTipDoc = toDateAnterior.nIdTipDoc
|
|
.id_lucrare = toDateAnterior.id_lucrare
|
|
.nrord = ALLTRIM(NVL(toDateAnterior.lucrare, ''))
|
|
*.id_responsabil = toDateAnterior.id_responsabil
|
|
*.responsabil = toDateAnterior.responsabil
|
|
.id_sectie = toDateAnterior.id_sectie
|
|
.sectie = ALLTRIM(NVL(toDateAnterior.sectie, ''))
|
|
*.id_venchelt = toDateAnterior.id_venchelt
|
|
*.venchelt = toDateAnterior.venchelt
|
|
.id_agent = toDateAnterior.id_agent
|
|
.nume_agent = ALLTRIM(NVL(toDateAnterior.nume_agent , ''))
|
|
.id_delegat = toDateAnterior.id_delegat
|
|
.nume_delegat = ALLTRIM(NVL(toDateAnterior.delegat, ''))
|
|
.BIdelegat = toDateAnterior.BIdelegat
|
|
.CNPdelegat = toDateAnterior.CNPdelegat
|
|
.nrinmat = ALLTRIM(NVL(toDateAnterior.nrinmat, ''))
|
|
.id_masina = toDateAnterior.id_masina
|
|
.listaid = toDateAnterior.id_vanzare
|
|
.descriere = Alltrim(Alltrim(Nvl(toDateAnterior.serie_act,[]))+[ ]+Alltrim(Str(toDateAnterior.numar_act,14,0)))
|
|
.id_client = toDateAnterior.id_part
|
|
.nume_client = toDateAnterior.client
|
|
ELSE
|
|
.nIdTipDoc = toDateAnterior.nIdTipDoc
|
|
.id_lucrare = toDateAnterior.id_lucrare
|
|
.nrord = toDateAnterior.nrord
|
|
.id_responsabil = toDateAnterior.id_responsabil
|
|
.responsabil = toDateAnterior.responsabil
|
|
.id_sectie = toDateAnterior.id_sectie
|
|
.sectie = toDateAnterior.sectie
|
|
.id_venchelt = toDateAnterior.id_venchelt
|
|
.venchelt = toDateAnterior.venchelt
|
|
.id_agent = toDateAnterior.id_agent
|
|
.nume_agent = toDateAnterior.nume_agent
|
|
.id_delegat = toDateAnterior.id_delegat
|
|
.nume_delegat = toDateAnterior.nume_delegat
|
|
.BIdelegat = toDateAnterior.BIdelegat
|
|
.CNPdelegat = toDateAnterior.CNPdelegat
|
|
.nrinmat = toDateAnterior.nrinmat
|
|
.id_masina = toDateAnterior.id_masina
|
|
ENDIF
|
|
ENDWITH
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
*!* Procedure genereaza_numar_act
|
|
*!* Private pnTip,pnNumarAct
|
|
*!* With This
|
|
*!* pnTip = .tip
|
|
*!* pnNumarAct = 0
|
|
*!* lcSql = [begin ] + gcS + [.pack_facturare.genereaza_numar_act(?pnTip,?gnIdUtil,?@pnNumarAct);] + ;
|
|
*!* [end;]
|
|
*!* lnSucces = goExecutor.oExecute(lcSql)
|
|
*!* If lnSucces<0
|
|
*!* amessagebox(goExecutor.oPrelucrareEroare(),16,"Eroare")
|
|
*!* Endif
|
|
*!* .nract = pnNumarAct
|
|
*!* Endwith
|
|
*!* Endproc
|
|
|
|
Procedure scrieAtasamente
|
|
Private pnId,pnTip,pcFormat
|
|
If Used('crsoDateDocAtasate') And Nvl(poDate.nid_vanzare,9999999999)<>9999999999
|
|
If Reccount('crsoDateDocAtasate') > 0
|
|
Select crsoDateDocAtasate
|
|
Scan
|
|
*!* If poDate.tip = 4 And Like([AVIZ*],Upper(Alltrim(crsoDateDocAtasate.nume_frx)))
|
|
*!* lcSql = [begin pack_facturare.scrie_atasamente_factura(?poDate.nid_vanzare_retur,?crsoDateDocAtasate.nume_frx,?crsoDateDocAtasate.fisier); end;]
|
|
*!* Else
|
|
*!* lcSql = [begin pack_facturare.scrie_atasamente_factura(?poDate.nid_vanzare,?crsoDateDocAtasate.nume_frx,?crsoDateDocAtasate.fisier); end;]
|
|
*!* Endif
|
|
lcNume_Frx = crsoDateDocAtasate.nume_frx
|
|
If poDate.tip = 4 And Like([AVIZ*],Upper(Alltrim(lcNume_Frx)))
|
|
pnId = poDate.nid_vanzare_retur
|
|
Else
|
|
pnId = poDate.nid_vanzare
|
|
Endif
|
|
|
|
Do Case
|
|
Case Like([FACTURA_VAL*],Upper(Alltrim(lcNume_Frx)))
|
|
pnTip= 2
|
|
Case Like([FACTURA*],Upper(Alltrim(lcNume_Frx)))
|
|
pnTip = 1
|
|
Case Like([INVOICE*],Upper(Alltrim(lcNume_Frx)))
|
|
pnTip = 3
|
|
Case Like([RECAPITULATIE],Upper(Alltrim(lcNume_Frx)))
|
|
pnTip = 4
|
|
Case Like([AVIZ*],Upper(Alltrim(lcNume_Frx)))
|
|
pnTip = 5
|
|
Endcase
|
|
|
|
If Like([*A5],Upper(Alltrim(lcNume_Frx)))
|
|
pcFormat = [A5]
|
|
Else
|
|
pcFormat = [A4]
|
|
Endif
|
|
|
|
lcSql = [INSERT INTO ATASAMENTE_VANZARI(ID_VANZARE, TIP, FORMAT, DOCUMENT, ID_UTIL) VALUES (?pnId,?pnTip,?pcFormat,?crsoDateDocAtasate.fisier,?gnIdUtil);]
|
|
lnSucces = goExecutor.oExecute(lcSql)
|
|
If lnSucces < 0
|
|
AMESSAGEBOX(goExecutor.cEroare,16,"Eroare")
|
|
Endif
|
|
Endscan
|
|
Endif
|
|
Use In crsoDateDocAtasate
|
|
Endif
|
|
Release pnId,pnTip,pcFormat
|
|
Endproc
|
|
|
|
Procedure Reset
|
|
Lparameters tnTip
|
|
&& modificare ROAFACTURARE v 2.0.58
|
|
If Used('crsoDateDocAtasate')
|
|
Use In crsoDateDocAtasate
|
|
Endif
|
|
Create Cursor crsoDateDocAtasate (nume_frx c(50),fisier w)
|
|
&& modificare ROAFACTURARE v 2.0.58 ^
|
|
With This
|
|
.dataireg = .Data
|
|
.dataact = .Data
|
|
If (tnTip<21) OR INLIST(tnTip,45,48,49,51,52) && modificare ROAFACTURARE v 2.0.93 ; v 2.0.95 ( 49 )
|
|
*!* modificare v 2.2.4
|
|
*!* .datascad = Iif(gnScadentaAutomata=0,Gomonth(.Data,1),.Data+gnZileScadentaFact)
|
|
.datascad = Iif(gnZileScadentaFact=-1,Gomonth(.Data,1),.Data+gnZileScadentaFact)
|
|
*!* modificare v 2.2.4 ^
|
|
ENDIF
|
|
.nIdTipDoc = 5 && FACTURA
|
|
.zi_curs = .Data
|
|
.id_client = Null
|
|
.nume_client = []
|
|
.listaid = [] && id_comanda, id_contract sau lista id_aviz
|
|
.descriere = [] && numar comanda, numar contract sau numere avize
|
|
.id_venchelt = Null && modificare ROAFACTURARE v 2.0.46
|
|
.venchelt = [] && modificare ROAFACTURARE v 2.0.46
|
|
.id_responsabil = Null
|
|
.responsabil = []
|
|
.id_pol = Null
|
|
.nume_politica = []
|
|
.nume_responsabil= [] && alte date pentru facturare
|
|
.BIresp = []
|
|
.CNPresp = []
|
|
.id_delegat = Null
|
|
.nume_delegat = []
|
|
.BIdelegat = []
|
|
.CNPdelegat = []
|
|
.id_masina = Null
|
|
.nrinmat = []
|
|
.id_agent = Null
|
|
.dataora_exp = {} && modificare ROAFACTURARE v 2.0.80
|
|
.nume_agent = []
|
|
.proc_tva = 0
|
|
.explicatie_tva = [] && modificare ROAFACTURARE v 2.0.46
|
|
.discount_evidentiat = gnDiscountEvidentiat
|
|
.afisare_scadenta = 1 && modificare ROACONTRACTE v 2.0.38
|
|
.text_aditional = []
|
|
.text_aditional_invoice = [] && modificare ROAFACTURARE v 2.0.46
|
|
.text_aditional_retur = []
|
|
.text_aditional_en = [] && modificare ROAFACTURARE v 2.0.80
|
|
.eProforma = 0
|
|
.nEFactura = 0
|
|
.oInfoEFactura = Null
|
|
.eBonFiscal = 0
|
|
.serie_chit = [] && modificare ROAFACTURARE v 2.0.80
|
|
.explicatie_chit = [] && modificare ROAFACTURARE v 2.0.80
|
|
.nr_incasare = 0
|
|
.id_casa = 0
|
|
.ntip_incasare = 0 && modificare ROAFACTURARE v 2.0.84
|
|
.incasat = 0 && incasat numerar
|
|
.incasatCARD = 0 && incasat prin CARD POS
|
|
.nIncasatPos = 0 && 1 s-a ales bon fiscal prin CARD POS
|
|
.nBonDetaliat = 0 && 1 se listeaza articole individuale; 0 se listeaza "contravaloare factura nr..."
|
|
.incasatTichete = 0 && incasat tichete
|
|
.totalctva = 0
|
|
.nract = 0
|
|
.serie_act = []
|
|
.nract_retur = 0
|
|
.serie_act_retur = []
|
|
.id_valuta = 0
|
|
.nume_valuta = []
|
|
.Curs = 0
|
|
.multiplicator = 1
|
|
.id_lucrare = 0
|
|
.nrord = []
|
|
.id_sectie = 0
|
|
.sectie = []
|
|
.totctvaconv = 0
|
|
.totftvaconv = 0
|
|
.tottvaconv = 0
|
|
.rezultat_serii = 0
|
|
.listare_componenta_set = 1
|
|
.listare_componenta_set_ll = 1 && modificare ROAFACTURARE v 2.0.56
|
|
.id_part_rez = Null
|
|
.id_gestiune_init = Null
|
|
.listare_serii = 1 && modificare ROAFACTURARE v 2.0.46
|
|
.listare_recapitulatie = 1 && modificare ROAFACTURARE v 2.0.46
|
|
.listare_lista_livrare = 1 && modificare ROAFACTURARE v 2.0.46
|
|
.nRelistare = 0 && modificare ROAFACTURARE v 2.0.58
|
|
.nSalveazaAtasamente = 0 && modificare ROAFACTURARE v 2.0.58
|
|
.nid_proforma = 9999999999 && modificare ROAFACTURARE v 2.0.58
|
|
.nid_vanzare = 9999999999 && modificare ROAFACTURARE v 2.0.58
|
|
.nid_vanzare_retur = 9999999999 && modificare ROAFACTURARE v 2.0.58
|
|
.sumavorbe = [] && modificare ROAFACTURARE v 2.0.78
|
|
.coeficient_k = 0 && modificare ROAFACTURARE v 2.0.93
|
|
.explicatia4 = [] && modificare ROACONTRACTE v 2.0.42
|
|
.id_ordl = NULL && modificare ROAAUTO v 2.0.33
|
|
.id_facturare = NULL
|
|
.nListareDetaliata = 0
|
|
.nListareSilentioasa = 0 && listare fara previzualizare
|
|
.nListareJustPDF = 0 && listare doar pdf
|
|
.oClient = NULL
|
|
.lCopiere = .F. && copiere factura/aviz
|
|
.nIdBeneficiar = Null
|
|
.nTipFactura = NULL && tip intern factura (ex: ACN 0=TRANZIT/1=CHEIAJ/3=CHIRII/5=APA/6=PENALITATI)
|
|
.id_util = NULL && id utilizator
|
|
.tip_doc_394 = 'F' && FACTURA pentru xml EFactura
|
|
.nRectificativa = 0 && 0 = factura initiala, 1 = factura rectificativa
|
|
.tip_saft = 380 && factura initiala
|
|
.institutie_publica = 0 && 1 = institutie publica
|
|
.eFactura = 0 && 1 = se transmite in borderoul eFactura
|
|
.id_ctr = NULL && ID CONTRACT
|
|
.contract = NULL && CONTRACT
|
|
Endwith
|
|
Endproc
|
|
|
|
PROCEDURE nIdTipDoc_Assign
|
|
LPARAMETERS tnIdTipDoc
|
|
|
|
This.eProforma = IIF(m.tnIdTipDoc = This.nIdTipDocProforma, 1, 0)
|
|
This.eBonFiscal = IIF(m.tnIdTipDoc = This.nIdTipDocBonFiscal, 1, 0)
|
|
|
|
this.nIdTipDoc = m.tnIdTipDoc
|
|
ENDPROC && nIdTipDoc_Assign
|
|
|
|
Enddefine
|
|
******************************************** SFARSIT: oDateFactura ********************************************
|
|
******************************************** INCEPUT: oDateGestiune ********************************************
|
|
Define Class oDateGestiune As Custom
|
|
id_gestiune = 0
|
|
id_tipgest = 0
|
|
Cont = []
|
|
acont = []
|
|
|
|
Procedure Reset
|
|
With This
|
|
.id_gestiune = 0
|
|
.id_tipgest = 0
|
|
.Cont = []
|
|
.acont = []
|
|
Endwith
|
|
Enddefine
|
|
******************************************** SFARSIT: oDateGestiune ********************************************
|
|
************************************** INCEPUT: actualizeaza_document ******************************************
|
|
Function actualizeaza_document
|
|
Lparameters tnTip,tnIdFdoc,tcFdoc
|
|
Local llReturn
|
|
Private pnTip,pnIdFdoc,pcFdoc
|
|
Store .T. To llReturn
|
|
pnTip = tnTip
|
|
pnIdFdoc = tnIdFdoc
|
|
pcFdoc = tcFdoc
|
|
lcSql = [begin ] + gcS + [.pack_facturare.citeste_setari_document(?pnTip,?@pnIdFdoc,?@pcFdoc);] + ;
|
|
[end;]
|
|
lnSucces = goExecutor.oExecute(lcSql)
|
|
If lnSucces<0
|
|
AMESSAGEBOX(goExecutor.oPrelucrareEroare(),16,"Eroare")
|
|
pnIdFdoc = Null
|
|
pcFdoc = []
|
|
llReturn = .F.
|
|
Endif
|
|
tnIdFdoc = pnIdFdoc
|
|
tcFdoc = pcFdoc
|
|
Return llReturn
|
|
Endfunc
|
|
************************************** SFARSIT: actualizeaza_document *****************************************
|
|
Function actualizeaza_partener_fact
|
|
Lparameters tnTip,tnIdPart,tcNumePart
|
|
Local llReturn
|
|
Private pnTip,pnIdPart,pcNumePart
|
|
Store .T. To llReturn
|
|
pnTip = tnTip
|
|
pnIdPart = tnIdPart
|
|
pcNumePart = tcNumePart
|
|
lcSql = [begin ] + gcS + [.pack_facturare.citeste_setari_partener(?pnTip,?@pnIdPart,?@pcNumePart);] + ;
|
|
[end;]
|
|
lnSucces = goExecutor.oExecute(lcSql)
|
|
If lnSucces<0
|
|
AMESSAGEBOX(goExecutor.oPrelucrareEroare(),16,"Eroare")
|
|
pnIdPart = Null
|
|
pcNumePart = []
|
|
llReturn = .F.
|
|
Endif
|
|
tnIdPart = pnIdPart
|
|
tcNumePart = pcNumePart
|
|
Return llReturn
|
|
Endfunc
|
|
************************************ SFARSIT: actualizeaza_partener_fact ***************************************
|
|
Function actualizeaza_politica_pret
|
|
Lparameters tnTip,tnIdPol,tcNumePol
|
|
Local llReturn
|
|
Private pnTip,pnIdPol,pcNumePol
|
|
Store .T. To llReturn
|
|
pnTip = tnTip
|
|
pnIdPol = tnIdPol
|
|
pcNumePol = tcNumePol
|
|
lcSql = [begin ] + gcS + [.pack_facturare.citeste_setari_pol_pret(?pnTip,?gnIdUtil,?@pnIdPol,?@pcNumePol);] + ;
|
|
[end;]
|
|
lnSucces = goExecutor.oExecute(lcSql)
|
|
If lnSucces<0
|
|
AMESSAGEBOX(goExecutor.oPrelucrareEroare(),16,"Eroare")
|
|
pnIdPol = Null
|
|
pcNumePol = []
|
|
llReturn = .F.
|
|
Endif
|
|
tnIdPol = pnIdPol
|
|
tcNumePol = pcNumePol
|
|
Return llReturn
|
|
Endfunc
|
|
************************************ SFARSIT: actualizeaza_politica_pret ***************************************
|
|
*********************************************************************************************************
|
|
Function recalculeaza_pret_vanzare_lei
|
|
Lparameters tcTabel,tnCurs
|
|
Private pcSirIdTemp,pcSirDiferenta
|
|
Store [] To pcSirIdTemp,pcSirDiferenta
|
|
Local llReturn
|
|
llReturn = .T.
|
|
lcSeparator = [|]
|
|
|
|
Select (tcTabel)
|
|
Calculate Sum(Round(vpretftva*cantitate,gnPVal)),Sum(Round(pretftva*cantitate,gnPc)) To lnTotalVal,lnTotalLei
|
|
lnTotalVal = Round(lnTotalVal*tnCurs,gnPc)
|
|
|
|
*!* modificare 09.11.2007
|
|
*!* If lnTotalVal <> lnTotalLei
|
|
*!* lnDiferenta = lnTotalVal - lnTotalLei
|
|
*!* lnSemn = Sign(lnDiferenta)
|
|
*!* lnDiferenta = Abs(lnDiferenta)
|
|
*!* lnDiferentaPretU = Exp((-1)*gnPc*Log(10))
|
|
*!* lnModificari = 1
|
|
|
|
*!* Do While lnModificari <> 0
|
|
*!* lnModificari = 0
|
|
*!* Select (tcTabel)
|
|
*!* Scan
|
|
*!* lnDiferentaPret = Round(lnDiferentaPretU*cantitate,gnPc)
|
|
*!* lnSemnPret = Sign(lnDiferentaPret)
|
|
*!* If Abs(lnDiferentaPret) <= Abs(lnDiferenta)
|
|
*!* lnDiferenta = lnDiferenta - lnSemn * lnDiferentaPret
|
|
If lnTotalVal <> lnTotalLei
|
|
lnDiferenta = lnTotalVal - lnTotalLei
|
|
lnSemn = Sign(lnDiferenta)
|
|
lnDiferentaMin = Abs(lnDiferenta)
|
|
lnDiferentaPretU = Exp((-1)*gnPPretV*Log(10))
|
|
lnModificari = 1
|
|
|
|
Do While lnModificari <> 0
|
|
lnModificari = 0
|
|
Select (tcTabel)
|
|
Scan
|
|
lnDiferentaPret = Round(lnDiferentaPretU*cantitate,gnPC)
|
|
lnSemnPret = Sign(cantitate)
|
|
lnTestDiferenta = lnDiferenta - lnSemn * Abs(lnDiferentaPret)
|
|
*!* If Abs(lnDiferentaPret) <= Abs(lnDiferenta) And Abs(lnTestDiferenta)<lnDiferentaMin
|
|
If Abs(lnTestDiferenta)<lnDiferentaMin
|
|
lnDiferentaMin = Abs(lnTestDiferenta)
|
|
lnDiferenta = lnTestDiferenta
|
|
*!* modificare 09.11.2007 ^
|
|
lnPretNou = pretftva + lnSemn * lnSemnPret * lnDiferentaPretU
|
|
pcSirIdTemp = pcSirIdTemp + Alltrim(Str(id_temp)) + lcSeparator
|
|
pcSirDiferenta = pcSirDiferenta + Alltrim(Str(lnSemn * lnSemnPret * lnDiferentaPretU,14,gnPPretV)) + lcSeparator
|
|
Replace pretftva With lnPretNou,;
|
|
pretctva With lnPretNou + Round(lnPretNou*(proc_Tvav-1),gnPPretV),;
|
|
valftva With Round(lnPretNou * cantitate,gnPc),;
|
|
valtva With Round(Round(lnPretNou * cantitate,gnPc)*(proc_Tvav-1),gnPc),;
|
|
valctva With valftva + valtva,;
|
|
valdiminuatftva With Round((lnPretNou-discountftva)*cantitate,gnPc),;
|
|
valdiminuattva With Round(Round((lnPretNou-discountftva)*cantitate,gnPc)*(proc_Tvav-1),gnPc),;
|
|
valdiminuatctva With valdiminuatftva + valdiminuattva
|
|
lnModificari = lnModificari + 1
|
|
Endif
|
|
Endscan
|
|
Enddo
|
|
Endif
|
|
|
|
If !Empty(pcSirIdTemp)
|
|
lcSql = [begin ] + gcS + [.pack_facturare.adauga_diferente_pret(?pcSirIdTemp,?pcSirDiferenta,?gnIdUtil); end;]
|
|
lnSucces = goExecutor.oExecute(lcSql)
|
|
If lnSucces<0
|
|
AMESSAGEBOX(goExecutor.oPrelucrareEroare(),16,"Eroare")
|
|
llReturn = .F.
|
|
Endif
|
|
Endif
|
|
|
|
Return llReturn
|
|
Endfunc && recalculeaza_pret_vanzare_lei
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
*!* Function recalculeaza_pret_vanzare_lei_set
|
|
*!* Lparameters tcTabel,tnCurs
|
|
*!* Local llReturn
|
|
*!* llReturn = .T.
|
|
*!* lcSeparator = [|]
|
|
|
|
*!* Select (tcTabel)
|
|
*!* Calculate Sum(Round(vpretftva*cantitate,gnPc)),Sum(Round(pretftva*cantitate,gnPc)) To lnTotalVal,lnTotalLei
|
|
*!* lnTotalVal = Round(lnTotalVal*tnCurs,gnPc)
|
|
|
|
*!* If lnTotalVal <> lnTotalLei
|
|
*!* lnDiferenta = lnTotalVal - lnTotalLei
|
|
*!* lnSemn = Sign(lnDiferenta)
|
|
*!* lnDiferentaMin = Abs(lnDiferenta)
|
|
*!* lnDiferentaPretU = Exp((-1)*gnPc*Log(10))
|
|
*!* lnModificari = 1
|
|
|
|
*!* Do While lnModificari <> 0
|
|
*!* lnModificari = 0
|
|
*!* Select (tcTabel)
|
|
*!* Scan
|
|
*!* lnDiferentaPret = Round(lnDiferentaPretU*cantitate,gnPc)
|
|
*!* lnSemnPret = Sign(cantitate)
|
|
*!* lnTestDiferenta = lnDiferenta - lnSemn * Abs(lnDiferentaPret)
|
|
*!* *!* If Abs(lnDiferentaPret) <= Abs(lnDiferenta) And Abs(lnTestDiferenta)<lnDiferentaMin
|
|
*!* If Abs(lnTestDiferenta)<lnDiferentaMin
|
|
*!* lnDiferentaMin = Abs(lnTestDiferenta)
|
|
*!* lnDiferenta = lnTestDiferenta
|
|
*!* lnPretNou = pretftva + lnSemn * lnSemnPret * lnDiferentaPretU
|
|
*!* Replace pretftva With lnPretNou,;
|
|
*!* pretctva With lnPretNou + Round(lnPretNou*(proc_Tvav-1),gnPc),;
|
|
*!* valftva With Round(lnPretNou * cantitate,gnPc),;
|
|
*!* valtva With Round(Round(lnPretNou * cantitate,gnPc)*(proc_Tvav-1),gnPc),;
|
|
*!* valctva With valftva + valtva,;
|
|
*!* valdiminuatftva With Round((lnPretNou-discountftva)*cantitate,gnPc),;
|
|
*!* valdiminuattva With Round(Round((lnPretNou-discountftva)*cantitate,gnPc)*(proc_Tvav-1),gnPc),;
|
|
*!* valdiminuatctva With valdiminuatftva + valdiminuattva
|
|
*!* lnModificari = lnModificari + 1
|
|
*!* Endif
|
|
*!* Endscan
|
|
*!* Enddo
|
|
*!* Endif
|
|
|
|
*!* Return llReturn
|
|
*!* Endfunc && recalculeaza_pret_vanzare_lei_set
|
|
*********************************************************************************************************
|
|
Function recalculeaza_pret_vanzare_compus
|
|
Local lnIdSetFact,lnDiferenta,lnSemn,lnDiferentaMin,lnDiferentaPretU,lnModificari,lnCantitateSet,llReturn,lnPreciziePret,lnPrecizieValoare
|
|
Local lnTotalSet,lnTotal
|
|
Store .T. To llReturn
|
|
If Used('crsxtemp')
|
|
Use In crsxtemp
|
|
Endif
|
|
|
|
If Used('crsfacturaset') And Reccount('crsfacturaset')>0
|
|
lnPreciziePret = iif(poDate.in_valuta=0,gnPPretV,gnPVal)
|
|
lnPrecizieValoare = iif(poDate.in_valuta=0,gnPc,gnPVal)
|
|
lnDiferentaPretU = Exp((-1)*lnPreciziePret*Log(10))
|
|
|
|
Create Cursor crsxtemp(id_temp N(20),difunit N(18,max(lnPreciziePret,4)),tip_valuta N(1),Curs N(10,max(gnPCurs,4)),multiplicator N(10),;
|
|
cantitate N(18,max(gnPCant,4)),pret N(18,max(lnPreciziePret,4)),id_set_fact N(20))
|
|
|
|
*!* modificare ROAFACTURARE v 2.0.46
|
|
*!* Insert Into crsxtemp (id_c, difunit, tip_valuta, Curs, cantitate, Pret, id_set_fact) ;
|
|
*!* Select id_c,Round(Round(lnDiferentaPretU*Iif(poDate.in_valuta=0,Iif(tip_valuta=0,1,Curs),1),gnPPret)*cantitate,gnPc) As difunit,;
|
|
*!* tip_valuta,Curs,cantitate,Iif(tip_valuta=0,pretftva,vpretftva) As Pret,id_set_fact ;
|
|
*!* FROM crsfactura Where id_set_fact <> 0 Order By 2 Desc
|
|
Insert Into crsxtemp (id_temp, difunit, tip_valuta, Curs, multiplicator, cantitate, Pret, id_set_fact) ;
|
|
Select id_temp,Round(round(lnDiferentaPretU*Iif(poDate.in_valuta=0,Iif(tip_valuta=0,1,Curs/multiplicator),1),lnPreciziePret)*cantitate,lnPrecizieValoare) As difunit,;
|
|
tip_valuta,Curs,multiplicator,cantitate,Iif(tip_valuta=0,pretftva,vpretftva) As Pret,id_set_fact ;
|
|
FROM crsfactura Where id_set_fact <> 0 Order By 2 Desc
|
|
*!* modificare ROAFACTURARE v 2.0.46 ^
|
|
|
|
Select crsfacturaset
|
|
Scan
|
|
lnIdSetFact = id_set_fact
|
|
lnTotalSet = Iif(poDate.in_valuta=0,Round(pretftva*cantitate,lnPrecizieValoare),Round(vpretftva*cantitate,lnPrecizieValoare))
|
|
lnCantitateSet = cantitate
|
|
lcDenumire = Alltrim(denumire)
|
|
lnPretInitialSet = Iif(poDate.in_valuta=0,pretftva,vpretftva)
|
|
lnPretPropusSet = lnPretInitialSet
|
|
*!* lnDiferentaMin = Round(lnDiferentaPretU*cantitate,gnPc)
|
|
|
|
Select crsfactura
|
|
Calculate Sum(Round(Iif(poDate.in_valuta=0,Iif(tip_valuta=0,pretftva,Round(vpretftva*Curs/multiplicator,gnPc)),vpretftva)*cantitate,lnPrecizieValoare)) ;
|
|
For id_set_fact = lnIdSetFact To lnTotal
|
|
|
|
If lnTotalSet <> lnTotal
|
|
lnDiferenta = lnTotalSet - lnTotal
|
|
lnDiferentaInitiala = lnDiferenta
|
|
lnSemn = Sign(lnDiferenta)
|
|
lnDiferentaMin = Abs(lnDiferenta)
|
|
*!* lnDiferentaPretU = Exp((-1)*gnPc*Log(10))
|
|
lnModificari = 1
|
|
|
|
Do While lnModificari <> 0
|
|
lnModificari = 0
|
|
Select crsxtemp
|
|
Scan For id_set_fact = lnIdSetFact
|
|
lnTipValuta = tip_valuta
|
|
lnCurs = Curs / multiplicator
|
|
lnDiferentaPret = difunit
|
|
lnSemnPret = Sign(cantitate)
|
|
lnTestDiferenta = lnDiferenta - lnSemn * Abs(lnDiferentaPret)
|
|
*!* STRTOFILE(ALLTRIM(STR(lnDiferenta,10,gnPc))+[ >> ]+ALLTRIM(STR(lnDiferentaPret,10,gnPc))+CHR(13)+CHR(10),[c:\testfact.txt],1)
|
|
*!* modificare ROAFACTURARE v 2.0.46
|
|
*!* If Abs(lnDiferentaPret) <= Abs(lnDiferenta) And Abs(lnTestDiferenta)<lnDiferentaMin
|
|
If Abs(Round(lnDiferentaPret,lnPrecizieValoare)) <= Abs(Round(lnDiferenta,lnPrecizieValoare)) And Abs(Round(lnTestDiferenta,lnPrecizieValoare))<lnDiferentaMin
|
|
*!* modificare ROAFACTURARE v 2.0.46 ^
|
|
*!* If Abs(lnDiferentaPret) <= Abs(lnDiferenta) And Abs(lnTestDiferenta)>lnDiferentaMin
|
|
lnDiferentaMin = Abs(lnTestDiferenta)
|
|
lnDiferenta = lnTestDiferenta
|
|
Replace Pret With Pret + lnSemn * lnSemnPret * lnDiferentaPretU
|
|
*!* modificare ROAFACTURARE v 2.0.46
|
|
*!* If Abs((lnDiferentaInitiala-lnDiferenta)/lnCantitateSet - Round((lnDiferentaInitiala-lnDiferenta)/lnCantitateSet,gnPc)) <= gnMarjaEroareRepartizare
|
|
If Round(Abs((lnDiferentaInitiala-lnDiferenta)/lnCantitateSet - Round((lnDiferentaInitiala-lnDiferenta)/lnCantitateSet,lnPreciziePret)),lnPreciziePret) <= gnMarjaEroareRepartizare
|
|
*!* modificare ROAFACTURARE v 2.0.46 ^
|
|
lnPretPropusSet = lnPretInitialSet - lnSemn * lnSemnPret * ;
|
|
Floor((lnDiferentaInitiala-lnDiferenta)/lnCantitateSet*Exp(lnPreciziePret*Log(10)))*Exp((-1)*lnPreciziePret*Log(10))
|
|
Endif
|
|
If lnDiferenta <> 0
|
|
lnModificari = lnModificari + 1
|
|
Else
|
|
lnModificari = 0
|
|
Exit
|
|
Endif
|
|
|
|
Endif
|
|
Endscan
|
|
Enddo
|
|
|
|
*!* amessagebox(Alltrim(Str(lnDiferenta,10,gnPc)))
|
|
*!* modificare ROAFACTURARE v 2.0.46
|
|
*!* If Abs(lnDiferenta)>gnMarjaEroareRepartizare
|
|
If Abs(Round(lnDiferenta,lnPrecizieValoare))>gnMarjaEroareRepartizare
|
|
*!* modificare ROAFACTURARE v 2.0.46 ^
|
|
lnDiferentaUnitara = lnDiferenta/lnCantitateSet
|
|
*!* amessagebox(ALLTRIM(STR(lnDiferentaUnitara,10,gnPc))+[ ]+ALLTRIM(STR(lnDiferenta,10,gnPc)))
|
|
If Round(lnDiferentaUnitara,lnPreciziePret)=lnDiferentaUnitara
|
|
If AMESSAGEBOX("Nu s-a putut repartiza intreaga diferenta." + Chr(13) + Chr(10) + ;
|
|
"Doriti sa "+Iif(lnDiferentaUnitara>0,[diminuati],[cresteti]) + ;
|
|
" pretul unitar al articolului compus " + lcDenumire + ;
|
|
" cu " + formateaza(Abs(lnDiferentaUnitara),14,lnPreciziePret) + " ?";
|
|
,4+32,"Confirmare")==6
|
|
Select crsfacturaset
|
|
&& se scade pretul setului cu lnDiferentaUnitara
|
|
modifica_pret_articol_compus(1,lnDiferentaUnitara)
|
|
llReturn = .T.
|
|
Else
|
|
llReturn = .F.
|
|
Exit
|
|
Endif
|
|
Else
|
|
If lnPretPropusSet <> lnPretInitialSet
|
|
If AMESSAGEBOX("Doriti sa modificati pretul pentru " + ;
|
|
lcDenumire + " din " + formateaza(lnPretInitialSet,18,lnPreciziePret) + ;
|
|
" in " + formateaza(lnPretPropusSet,18,lnPreciziePret)+" ?",4+32,"Confirmare")=6
|
|
modifica_pret_articol_compus(2,lnPretPropusSet)
|
|
llReturn = .F.
|
|
Else
|
|
AMESSAGEBOX("Nu se poate repartiza diferenta de pret pentru articolele din componenta " + ;
|
|
lcDenumire + " !",48,"Atentie")
|
|
llReturn = .F.
|
|
Exit
|
|
Endif
|
|
Else
|
|
AMESSAGEBOX("Nu se poate repartiza diferenta de pret pentru articolele din componenta " + ;
|
|
lcDenumire + " !",48,"Atentie")
|
|
llReturn = .F.
|
|
Exit
|
|
Endif
|
|
Endif
|
|
Endif
|
|
Endif
|
|
Endscan
|
|
Endif
|
|
|
|
If Used('crsxtemp') And llReturn
|
|
Select crsxtemp
|
|
Scan
|
|
*!* modificare ROAFACTURARE v 2.0.46
|
|
lnIdTemp = id_temp
|
|
*!* lnIdC = id_c
|
|
*!* modificare ROAFACTURARE v 2.0.46 ^
|
|
lnPretNou = Pret
|
|
lnCurs = Curs / multiplicator
|
|
Select crsfactura
|
|
*!* modificare ROAFACTURARE v 2.0.46
|
|
Locate For id_temp = lnIdTemp
|
|
*!* Locate For id_c = lnIdC
|
|
*!* modificare ROAFACTURARE v 2.0.46 ^
|
|
If Found()
|
|
lnTipValuta = tip_valuta
|
|
If lnTipValuta = 0
|
|
*!* modificare ROAFACTURARE v 2.0.46
|
|
If pretftva <> lnPretNou
|
|
*!* modificare ROAFACTURARE v 2.0.46 ^
|
|
Replace pretftva With lnPretNou,;
|
|
pretctva With lnPretNou + Round(lnPretNou*(proc_Tvav-1),lnPreciziePret),;
|
|
valftva With Round(lnPretNou * cantitate,lnPrecizieValoare),;
|
|
valtva With Round(Round(lnPretNou * cantitate,lnPrecizieValoare)*(proc_Tvav-1),lnPrecizieValoare),;
|
|
valctva With valftva + valtva,;
|
|
valdiminuatftva With Round((lnPretNou-discountftva)*cantitate,lnPrecizieValoare),;
|
|
valdiminuattva With Round(Round((lnPretNou-discountftva)*cantitate,lnPrecizieValoare)*(proc_Tvav-1),lnPrecizieValoare),;
|
|
valdiminuatctva With valdiminuatftva + valdiminuattva
|
|
*!* modificare ROAFACTURARE v 2.0.46
|
|
Endif
|
|
*!* modificare ROAFACTURARE v 2.0.46 ^
|
|
Else
|
|
*!* modificare ROAFACTURARE v 2.0.46
|
|
If vpretftva <> lnPretNou
|
|
*!* modificare ROAFACTURARE v 2.0.46 ^
|
|
Replace vpretftva With lnPretNou,;
|
|
vpretctva With lnPretNou + Round(lnPretNou*(proc_Tvav-1),lnPreciziePret),;
|
|
vvalftva With Round(lnPretNou * cantitate,lnPrecizieValoare),;
|
|
vvaltva With Round(Round(lnPretNou * cantitate,lnPrecizieValoare)*(proc_Tvav-1),lnPrecizieValoare),;
|
|
vvalctva With vvalftva + vvaltva,;
|
|
vvaldiminuatftva With Round((lnPretNou-vdiscountftva)*cantitate,lnPrecizieValoare),;
|
|
vvaldiminuattva With Round(Round((lnPretNou-vdiscountftva)*cantitate,lnPrecizieValoare)*(proc_Tvav-1),lnPrecizieValoare),;
|
|
vvaldiminuatctva With vvaldiminuatftva + vvaldiminuattva,;
|
|
pretftva With Round(lnPretNou * lnCurs,gnPPretV),;
|
|
pretctva With Round(lnPretNou * lnCurs,gnPPretV) + Round(Round(lnPretNou * lnCurs,gnPPretV)*(proc_Tvav-1),gnPPretV),;
|
|
valftva With Round(Round(lnPretNou * lnCurs,gnPPretV) * cantitate,gnPc),;
|
|
valtva With Round(Round(Round(lnPretNou * lnCurs,gnPPretV) * cantitate,gnPc)*(proc_Tvav-1),gnPc),;
|
|
valctva With valftva + valtva,;
|
|
valdiminuatftva With Round(Round((lnPretNou-vdiscountftva)*lnCurs,gnPPretV)*cantitate,gnPc),;
|
|
valdiminuattva With Round(Round(Round((lnPretNou-vdiscountftva)*lnCurs,gnPPretV)*cantitate,gnPc)*(proc_Tvav-1),gnPc),;
|
|
valdiminuatctva With valdiminuatftva + valdiminuattva
|
|
*!* modificare ROAFACTURARE v 2.0.46
|
|
Endif
|
|
*!* modificare ROAFACTURARE v 2.0.46 ^
|
|
Endif
|
|
Endif
|
|
Select crsxtemp
|
|
Endscan
|
|
|
|
Use In crsxtemp
|
|
Endif
|
|
|
|
Return llReturn
|
|
Endfunc && recalculeaza_pret_vanzare_compus
|
|
*********************************************************************************************************
|
|
Procedure modifica_pret_articol_compus
|
|
Lparameters tnTip,tnValoare
|
|
&& tnTip = 1 - tnValoare este diferenta
|
|
&& = 2 - tnValoare este pretul nou
|
|
Local lnPretNou
|
|
Select crsfacturaset
|
|
If poDate.in_valuta = 0
|
|
lnPretNou = Iif(tnTip=1,pretftva + (-1) * tnValoare,tnValoare)
|
|
Replace pretftva With lnPretNou,;
|
|
pretctva With lnPretNou + Round(lnPretNou * (proc_Tvav - 1),gnPPretV),;
|
|
valftva With Round(lnPretNou * cantitate,gnPc),;
|
|
valtva With Round(Round(lnPretNou * cantitate,gnPc)*(proc_Tvav-1),gnPc),;
|
|
valctva With Round(lnPretNou * cantitate,gnPc) + Round(Round(lnPretNou * cantitate,gnPc)*(proc_Tvav-1),gnPc),;
|
|
valdiminuatftva With Round((lnPretNou - valdiscountftva)*cantitate,gnPc),;
|
|
valdiminuattva With Round(Round((lnPretNou - valdiscountftva)*cantitate,gnPc)*(proc_Tvav-1),gnPc),;
|
|
valdiminuatctva With Round((lnPretNou - valdiscountftva)*cantitate,gnPc) + Round(Round((lnPretNou - valdiscountftva)*cantitate,gnPc)*(proc_Tvav-1),gnPc)
|
|
|
|
Else
|
|
lnPretNou = Iif(tnTip=1,vpretftva + (-1) * tnValoare,tnValoare)
|
|
Replace vpretftva With lnPretNou,;
|
|
vpretctva With lnPretNou + Round(lnPretNou * (proc_Tvav - 1), gnPVal),;
|
|
vvalftva With Round(lnPretNou * cantitate,gnPVal),;
|
|
vvaltva With Round(Round(lnPretNou * cantitate,gnPVal) * (proc_Tvav - 1),gnPVal),;
|
|
vvalctva With Round(lnPretNou * cantitate,gnPVal) + Round(Round(lnPretNou * cantitate,gnPVal) * (proc_Tvav - 1),gnPVal),;
|
|
vvaldiminuatftva With Round((lnPretNou - vdiscountftva) * cantitate,gnPVal),;
|
|
vvaldiminuattva With Round(Round((lnPretNou - vdiscountftva) * cantitate,gnPVal) * (proc_Tvav - 1),gnPVal),;
|
|
vvaldiminuatctva With Round((lnPretNou - vdiscountftva) * cantitate,gnPVal) + Round(Round((lnPretNou - vdiscountftva) * cantitate,gnPVal) * (proc_Tvav - 1),gnPVal),;
|
|
pretftva With Round(lnPretNou*Curs/multiplicator,gnPPretV),;
|
|
pretctva With Round(lnPretNou*Curs/multiplicator,gnPPretV) + Round(Round(lnPretNou*Curs/multiplicator,gnPPretV) * (proc_Tvav - 1), gnPPretV),;
|
|
valftva With Round(Round(lnPretNou * Curs/multiplicator,gnPPretV) * cantitate,gnPc),;
|
|
valtva With Round(Round(Round(lnPretNou * Curs/multiplicator,gnPPretV) * cantitate,gnPc) * (proc_Tvav - 1),gnPc),;
|
|
valctva With Round(Round(lnPretNou * Curs/multiplicator,gnPPretV) * cantitate,gnPc) + Round(Round(Round(lnPretNou * Curs/multiplicator,gnPPretV) * cantitate,gnPc) * (proc_Tvav - 1),gnPc),;
|
|
valdiminuatftva With Round(Round((lnPretNou - vdiscountftva)* Curs/multiplicator,gnPPretV) * cantitate,gnPc),;
|
|
valdiminuattva With Round(Round(Round((lnPretNou - vdiscountftva)* Curs/multiplicator,gnPPretV) * cantitate,gnPc) * (proc_Tvav - 1),gnPc),;
|
|
valdiminuatctva With Round(Round((lnPretNou - vdiscountftva)* Curs/multiplicator,gnPPretV) * cantitate,gnPc) + Round(Round(Round((lnPretNou - vdiscountftva)* Curs/multiplicator,gnPPretV) * cantitate,gnPc) * (proc_Tvav - 1),gnPc)
|
|
Endif
|
|
|
|
Endproc && modifica_pret_articol_compus
|
|
*********************************************************************************************************
|
|
*!* Procedure prelucreaza_aviz_cu_tva
|
|
*!* Lparameters tnDiscountEvidentiat
|
|
*!* Create Cursor crsfacturafinala(denumire c(100),explicatie c(100),cantitate N(20,4),;
|
|
*!* pretctva N(20,4),valctva N(20,4),proc_tva N(20,4),um c(10),serie c(100))
|
|
*!* Select Recno() As nrcrt,a.denumire,a.explicatie,a.cantitate,a.pretctva,a.valctva,;
|
|
*!* a.proc_tvav as proc_tva,Nvl(a.um,Space(10)) as um,Nvl(a.serie,' ') As serie From crsfactura a;
|
|
*!* into Cursor crsfacturafinala
|
|
*!* Endproc && prelucreaza_aviz_cu_tva
|
|
*********************************************************************************************************
|
|
Procedure prelucreaza_factura
|
|
*!* modificare ROAFACTURARE v 2.0.67
|
|
*!* Lparameters tnDiscountEvidentiat,tnTipFacturare,tnInValuta,tnPretListSubunitati
|
|
*!* modificare ROAFACTURARE v 2.0.77 : am adaugat tcCursorSursa, tcCursorSursaSet,tcCursorDestinatie
|
|
Lparameters tcCursorSursa,tcCursorSursaSet,tcCursorDestinatie,tnDiscountEvidentiat,tnInValuta,tnPretListAviz, tnListareDetaliata
|
|
*!* modificare ROAFACTURARE v 2.0.67 ^
|
|
*!* ii transmit tnPretListSubunitati ca parametru pentru ca sa nu mai testez si daca este vorba de o factura sau nu
|
|
*!* tnListareDetaliata: daca sa se listeze randurile asa cum sunt in loc de grupate dupa articol, pret. sa nu se cumuleze cantitatea pe articole
|
|
LOCAL llListareDetaliata, lnIdArticol
|
|
llListareDetaliata = (IIF(TYPE('tnListareDetaliata') = 'N', tnListareDetaliata, 0) = 1)
|
|
|
|
Local lcCursor,lnPretListAviz,lnIdTemp
|
|
*!* modificare ROAFACTURARE v 2.0.67 : am adaugat id_ctr, numar_contract
|
|
*!* modificare v 2.0.77
|
|
creeaza_facturafinala(tcCursorDestinatie)
|
|
*!* Create Cursor crsfacturafinala(denumire c(100),explicatie c(240),cantitate N(20,4),pretctva N(20,4),valctva N(20,4),;
|
|
*!* pretftva N(20,4),pretftvai N(20,4),pretctvai N(20,4),proc_disc N(10,4),valftva N(20,4),valtva N(20,4),;
|
|
*!* valftvai N(20,4),valctvai N(20,4),valdiscount N(20,4),;
|
|
*!* proc_tva N(20,4),um c(10),serie c(100),codmat c(50),codbare c(50),codmatf c(50),;
|
|
*!* id_jtva_coloana N(10),expltva c(100),id_ctr N(10) Null,numar_contract c(100) Null)
|
|
*!* modificare v 2.0.77 ^
|
|
If Used('crsfacttemp')
|
|
Use In crsfacttemp
|
|
Endif
|
|
*!* modificare v 2.0.4
|
|
If Empty(tnPretListAviz)
|
|
lnPretListAviz = 2
|
|
Else
|
|
lnPretListAviz = Nvl(tnPretListAviz,2)
|
|
ENDIF
|
|
|
|
*!* modificare v 2.0.4 ^
|
|
If Empty(tcCursorSursaSet)
|
|
lcCursor = tcCursorSursa
|
|
Else
|
|
If !Used(tcCursorSursaSet)
|
|
lcCursor = tcCursorSursa
|
|
Else
|
|
Select (tcCursorSursaSet)
|
|
lcTab = Chr(9)
|
|
lcCrlf = Chr(13) + Chr(10)
|
|
*!* modificare v 2.0.4
|
|
If Used('crsfactstemp')
|
|
Use In crsfactstemp
|
|
Endif
|
|
Select * From (tcCursorSursaSet) Into Cursor crsfactstemp
|
|
Delete From (tcCursorSursaSet)
|
|
Select crsfactstemp
|
|
*!* modificare v 2.0.4 ^
|
|
Scan
|
|
lnIdSetFact = id_set_fact
|
|
lnCantitate = cantitate
|
|
lnIdTemp = id_temp && modificare ROAFACTURARE v 2.0.67
|
|
|
|
Insert Into (tcCursorSursaSet) Select * From crsfactstemp Where id_set_fact = lnIdSetFact
|
|
*!* modificare ROAFACTURARE v 2.0.67 : am pus lnIdTemp in loc de MIN(id_temp)
|
|
*!* Insert Into (tcCursorSursaSet) (id_temp,denumire) ;
|
|
*!* Select lnIdTemp As id_temp,lcTab+Alltrim(Alltrim(denumire)+lcTab+Alltrim(codmat)+lcTab+Alltrim(codmatf)+lcCrlf+Nvl(explicatie,[]))+Space(5)+;
|
|
*!* Alltrim(Str(Round(Sum(cantitate)/lnCantitate,gnPCant),9,gnPCant))+[ ]+Alltrim(Nvl(um,[])) As denumire ;
|
|
*!* From (tcCursorSursa) Where id_set_fact = lnIdSetFact Group By denumire,codmat,codmatf,explicatie,um
|
|
*!* Nu merge gruparea dupa campul explicatie Memo. Initial era tip caracter
|
|
select denumire,codmat,codmatc,codmatf,cast(explicatie as c(254)) as explicatie,um, Round(Sum(cantitate)/lnCantitate,gnPCant) as cant ;
|
|
From (tcCursorSursa) ;
|
|
Where id_set_fact = lnIdSetFact ;
|
|
Group By 1,2,3,4,5,6 ;
|
|
into cursor cSeturiTemporar
|
|
|
|
Insert Into (tcCursorSursaSet) (id_temp,denumire) ;
|
|
Select lnIdTemp As id_temp,lcTab+Alltrim(Alltrim(denumire)+lcTab+Alltrim(codmat)+lcTab+Alltrim(codmatf)+lcCrlf+Nvl(explicatie,[]))+Space(5)+;
|
|
Alltrim(Str(cant,9,gnPCant))+[ ]+Alltrim(Nvl(um,[])) As denumire ;
|
|
From cSeturiTemporar
|
|
USE IN (SELECT('cSeturiTemporar'))
|
|
|
|
Select crsfactstemp
|
|
*!* modificare v 2.0.4 ^
|
|
Endscan
|
|
|
|
Insert Into (tcCursorSursaSet) Select * From (tcCursorSursa) Where Nvl(id_set_fact,0) = 0
|
|
*!* modificare v 2.0.4
|
|
If Used('crsfactstemp')
|
|
Use In crsfactstemp
|
|
Endif
|
|
*!* modificare v 2.0.4 ^
|
|
lcCursor = tcCursorSursaSet
|
|
Endif
|
|
Endif
|
|
|
|
*!* modificare ROAFACTURARE v 2.0.31
|
|
If gnOrdineElemDoc = 2
|
|
Select a.* From (lcCursor) a Into Cursor (lcCursor) Order By a.denumire
|
|
*!* modificare ROAFACTURARE v 2.0.56
|
|
Else
|
|
Select a.* From (lcCursor) a Into Cursor (lcCursor) Order By a.id_temp
|
|
*!* modificare ROAFACTURARE v 2.0.56 ^
|
|
Endif
|
|
*!* modificare ROAFACTURARE v 2.0.31 ^
|
|
|
|
Select Recno() As nrcrt,IIF(m.llListareDetaliata, RECNO(), 1000) as grup, a.* From (lcCursor) a Into Cursor (lcCursor) Order By nrcrt
|
|
|
|
creeaza_crsfacttemp()
|
|
|
|
Do Case
|
|
Case tnDiscountEvidentiat = 1 And lnPretListAviz = 2 && pret fara tva
|
|
Insert Into crsfacttemp (nrcrt,denumire,explicatie,codmat,codmatc,codmatf,um,cod_um_iso,cantitate,;
|
|
pretftva,codbare,pretctva,pretftvai,pretctvai,proc_disc,valftvai,valctvai,;
|
|
valftva,valtva,discountftva,valdiscountftva,valdiscounttva, proc_Tvav,;
|
|
serie,id_jtva_coloana,id_jtva_coloana_ex,valctva,discountctva,valdiscountctva,id_ctr,numar_contract,grup, id_articol,lot) ;
|
|
Select Min(nrcrt) As nrcrt,denumire,LEFT(explicatie, 240) as explicatie,Nvl(codmat,Space(50)) As codmat,;
|
|
Nvl(codmatc,Space(50)) As codmatc,Nvl(codmatf,Space(50)) As codmatf,;
|
|
Nvl(um,Space(10)) As um,CAST(cod_um_iso as C(10)) As cod_um_iso,Sum(cantitate) As cantitate,;
|
|
pretftva,Nvl(codbare,Space(50)) As codbare,pretctva,;
|
|
pretftva As pretftvai,pretctva As pretctvai,0 As proc_disc,Sum(valftva) As valftvai,Sum(valftva+valtva) As valctvai,;
|
|
Sum(valftva) As valftva,Sum(valtva) As valtva, ;
|
|
discountftva,Sum(valdiscountftva) As valdiscountftva,Sum(valdiscounttva) As valdiscounttva, proc_Tvav,;
|
|
Min(Nvl(serie,Space(100))) As serie,id_jtva_coloana,id_jtva_coloana_ex, ;
|
|
SUM(valctva) As valctva,discountctva, Sum(discountctva) As valdiscountctva,id_ctr,numar_contract,grup,id_articol,Min(Nvl(lot,Space(20))) As lot ;
|
|
FROM (lcCursor) ;
|
|
group by 2,3,4,5,6,7,8,10,11,12,13,14,15,20,23,25,26,28,30,31,32,33 ;
|
|
ORDER By 1 && Into Cursor crsfacttemp
|
|
|
|
* Group By denumire,codmat,codmatf,explicatie,um,codbare,pretftva,pretctva,proc_Tvav,id_jtva_coloana,discountftva,discountctva,id_ctr,numar_contract,grup
|
|
|
|
Case tnDiscountEvidentiat = 0 And lnPretListAviz = 2 && pret fara tva
|
|
Insert Into crsfacttemp (denumire,explicatie,codmat,codmatc,codmatf,cantitate,pretftva,;
|
|
codbare,pretftvai,pretctvai,pretctva,proc_disc,valftva,valtva,;
|
|
valftvai,valctvai,discountftva,valdiscountftva,valdiscounttva,proc_Tvav,um,cod_um_iso,;
|
|
nrcrt,serie,id_jtva_coloana,id_jtva_coloana_ex,valctva,discountctva,valdiscountctva,id_ctr,numar_contract,grup,id_articol,lot) ;
|
|
Select denumire,LEFT(explicatie, 240) as explicatie,Nvl(codmat,Space(50)) As codmat,Nvl(codmatc,Space(50)) As codmatc,Nvl(codmatf,Space(50)) As codmatf,Sum(cantitate) As cantitate,pretftva-discountftva As pretftva,;
|
|
Nvl(codbare,Space(50)) As codbare,pretftva As pretftvai,pretctva As pretctvai,pretctva-discountctva As pretctva,;
|
|
Iif(cu_tva=0,Iif(pretftva<>0,Round(discountftva/pretftva*100,2),0),;
|
|
Iif(pretctva<>0,Round(discountctva/pretctva*100,2),0)) As proc_disc,;
|
|
Sum(valdiminuatftva) As valftva,Sum(valdiminuattva) As valtva,;
|
|
Sum(valftva) As valftvai,Sum(valftva+valtva) As valctvai,;
|
|
0 As discountftva,0 As valdiscountftva,0 As valdiscounttva, proc_Tvav, Nvl(um,Space(10)) As um,CAST(cod_um_iso as C(10)) As cod_um_iso,;
|
|
Min(nrcrt) As nrcrt,Min(Nvl(serie,Space(100))) As serie,id_jtva_coloana,id_jtva_coloana_ex, ;
|
|
SUM(valdiminuatctva) As valctva,0 As discountctva, 0 As valdiscountctva,id_ctr,numar_contract,grup,id_articol,Min(Nvl(lot,Space(20))) As lot ;
|
|
FROM (lcCursor) Group By 1,2,3,4,5,7,8,9,10,11,12,20,21,22,25,26,28,29,30,31,32,33 Order By 23
|
|
*!* UNION all
|
|
Insert Into crsfacttemp (denumire,explicatie,codmat,codmatc,codmatf,cantitate,pretftva,;
|
|
codbare,pretftvai,pretctvai,pretctva,proc_disc,valftva,valtva,;
|
|
valftvai,valctvai,discountftva,valdiscountftva,valdiscounttva,proc_Tvav,um,cod_um_iso,;
|
|
nrcrt,serie,id_jtva_coloana,id_jtva_coloana_ex,valctva,discountctva,valdiscountctva,grup,id_articol,lot) ;
|
|
Select denumire,explicatie,Nvl(codmat,Space(50)) As codmat,Nvl(codmatc,Space(50)) As codmatc,Nvl(codmatf,Space(50)) As codmatf,1 As cantitate,pretftva-discountftva as pretftva,;
|
|
Space(50) As codbare,pretftva As pretftvai,pretctva As pretctvai,pretctva-discountctva As pretctva,;
|
|
Iif(pretctva<>0,Round(discountctva/pretctva*100,2),0) As proc_disc,;
|
|
0 As valftva,0 As valtva,0 As valftvai,0 As valctvai,discountftva,valdiscountftva,valdiscounttva,;
|
|
proc_Tvav, Nvl(um,Space(10)) As um,CAST(cod_um_iso as C(10)) As cod_um_iso, nrcrt, Nvl(serie,Space(100)) As serie,id_jtva_coloana,id_jtva_coloana_ex, ;
|
|
valdiminuatctva As valctva,0 As discountctva, 0 As valdiscountctva, grup,id_articol, Nvl(lot,Space(20)) As lot ;
|
|
from (lcCursor) Where denumire = Replicate('Z',20) Order By 22 && Into Cursor crsfacttemp
|
|
Case tnDiscountEvidentiat = 1 And lnPretListAviz = 1 && pret cu tva
|
|
Insert Into crsfacttemp(nrcrt,denumire,explicatie,codmat,codmatc,codmatf,um,cod_um_iso,cantitate,pretctva,;
|
|
valctva,valtva,pretftva,codbare,discountctva,valdiscountctva,valdiscounttva,proc_Tvav,serie,id_jtva_coloana,id_jtva_coloana_ex,;
|
|
pretftvai,pretctvai,proc_disc,valftva,valftvai,valctvai,id_ctr,numar_contract,grup,id_articol,lot) ;
|
|
Select Min(nrcrt) As nrcrt,denumire,LEFT(explicatie, 240) as explicatie,Nvl(codmat,Space(50)) As codmat,Nvl(codmatc,Space(50)) As codmatc,Nvl(codmatf,Space(50)) As codmatf,;
|
|
Nvl(um,Space(10)) As um,CAST(cod_um_iso as C(10)) As cod_um_iso,Sum(cantitate) As cantitate,pretctva,Sum(valctva) As valctva,Sum(valtva) As valtva, ;
|
|
pretftva,Nvl(codbare,Space(50)) As codbare,discountctva,Sum(valdiscountctva) As valdiscountctva,;
|
|
Sum(valdiscounttva) As valdiscounttva, proc_Tvav, Min(Nvl(serie,Space(100))) As serie,id_jtva_coloana,id_jtva_coloana_ex, ;
|
|
pretftva As pretftvai,pretctva As pretctvai,0 As proc_disc,Sum(valftva) As valftva,;
|
|
Sum(valftva) As valftvai,Sum(valctva) As valctvai,id_ctr,numar_contract,grup,id_articol, Min(Nvl(lot,Space(20))) As lot ;
|
|
FROM (lcCursor) ;
|
|
group by 2,3,4,5,6,7,8,10,13,14,15,18,20,21,22,23,24,28,29,30,31 ;
|
|
ORDER By 1 && Into Cursor crsfacttemp
|
|
|
|
*Group By denumire,codmat,codmatf,explicatie,um,codbare,pretftva, pretctva,proc_Tvav,id_jtva_coloana,discountctva,id_ctr,numar_contract,grup ;
|
|
|
|
Otherwise && pret cu tva
|
|
Insert Into crsfacttemp(denumire,explicatie,codmat,codmatc,codmatf,cantitate,pretctva,;
|
|
codbare,pretftvai,pretctvai,pretftva,proc_disc,valftva,valctva,valtva,;
|
|
valftvai,valctvai,discountctva,valdiscountctva,valdiscounttva,proc_Tvav,um,cod_um_iso,;
|
|
nrcrt,serie,id_jtva_coloana,id_jtva_coloana_ex,id_ctr,numar_contract,grup,id_articol,lot) ;
|
|
Select denumire,LEFT(explicatie, 240) as explicatie,Nvl(codmat,Space(50)) As codmat,Nvl(codmatc,Space(50)) As codmatc,Nvl(codmatf,Space(50)) As codmatf,;
|
|
Sum(cantitate) As cantitate,pretctva-discountctva As pretctva,;
|
|
Nvl(codbare,Space(50)) As codbare,pretftva As pretftvai,pretctva As pretctvai,pretftva-discountftva As pretftva,;
|
|
Iif(cu_tva=0,Iif(pretftva<>0,Round(discountftva/pretftva*100,2),0),;
|
|
Iif(pretctva<>0,Round(discountctva/pretctva*100,2),0)) As proc_disc,;
|
|
Sum(valdiminuatftva) As valftva,Sum(valdiminuatctva) As valctva,Sum(valdiminuattva) As valtva,;
|
|
Sum(valftva) As valftvai,Sum(valctva) As valctvai,;
|
|
0 As discountctva,0 As valdiscountctva,0 As valdiscounttva, proc_Tvav, Nvl(um,Space(10)) As um,CAST(cod_um_iso as C(10)) As cod_um_iso,;
|
|
Min(nrcrt) As nrcrt, Min(Nvl(serie,Space(100))) As serie,id_jtva_coloana,id_jtva_coloana_ex,id_ctr,numar_contract,grup,id_articol, Min(Nvl(lot,Space(20))) As lot ;
|
|
FROM (lcCursor) Group By 1,2,3,4,5,7,8,9,10,11,12,21,22,23,26,27,28,29,30,31 Order By 24
|
|
*!* UNION all
|
|
Insert Into crsfacttemp(denumire,explicatie,codmat,codmatc,codmatf,cantitate,pretctva,;
|
|
codbare,pretftvai,pretctvai,pretftva,proc_disc,valftva,valctva,valtva,;
|
|
valftvai,valctvai,discountctva,valdiscountctva,valdiscounttva,proc_Tvav,um,cod_um_iso,;
|
|
nrcrt,serie,id_jtva_coloana,id_jtva_coloana_ex,grup,id_articol,lot) ;
|
|
Select denumire,explicatie,Nvl(codmat,Space(50)) As codmat,Nvl(codmatc,Space(50)) As codmatc,Nvl(codmatf,Space(50)) As codmatf,;
|
|
1 As cantitate,pretctva,;
|
|
Space(50) As codbare,pretftva As pretftvai,pretctva As pretctvai,pretftva,;
|
|
Iif(pretctva<>0,Round(discountctva/pretctva*100,2),0) As proc_disc,;
|
|
0 As valftva,0 As valctva,0 As valtva,0 As valftvai,0 As valctvai,discountctva,;
|
|
valdiscountctva,valdiscounttva, proc_Tvav, Nvl(um,Space(10)) As um,CAST(cod_um_iso as C(10)) As cod_um_iso, nrcrt,;
|
|
Nvl(serie,Space(100)) As serie,id_jtva_coloana,id_jtva_coloana_ex,grup,id_articol,Nvl(lot,Space(20)) As lot ;
|
|
from (lcCursor) Where denumire = Replicate('Z',20) Order By 23 && Into Cursor crsfacttemp
|
|
ENDCASE
|
|
|
|
********************************
|
|
*** Explicatia are 500 de caractere, tip Memo si nu poate fi folosita intr-un select group by
|
|
*** Am selectat doar primele 240 caractere apoi completez explicatia din cursorul original
|
|
********************************
|
|
SELECT (lcCursor)
|
|
SCAN
|
|
SCATTER NAME loRec MEMO
|
|
SELECT crsfacttemp
|
|
LOCATE FOR denumire = loRec.denumire AND Nvl(codmat,Space(50)) = Nvl(loRec.codmat,Space(50)) AND LEFT(explicatie, 240) = LEFT(loRec.explicatie, 240)
|
|
IF FOUND()
|
|
REPLACE explicatie WITH ALLTRIM(loRec.explicatie)
|
|
ENDIF
|
|
ENDSCAN
|
|
|
|
*!* modificare ROAFACTURARE v 2.0.20 ^
|
|
*!* crsfactura(id_temp N(20),id_articol N(20),id_pol N(20),id_gestiune N(20),Cont c(4),um c(10), ;
|
|
*!* denumire c(100),pretftva N(20,4),pretctva N(20,4),valftva N(20,4), valtva N(20,4), valctva N(20,4),;
|
|
*!* cantitate N(20,4),discountftva N(20,4), discountctva N(20,4),valdiscountftva N(20,4),valdiscounttva N(20,4),;
|
|
*!* valdiscountctva N(20,4),valdiminuatftva N(20,4),valdiminuattva N(20,4),;
|
|
*!* valdiminuatctva N(20,4),proc_tvav N(20,4),cu_tva N(1))
|
|
*!* modificare ROAFACTURARE v 2.0.67
|
|
*!* Endif
|
|
*!* modificare ROAFACTURARE v 2.0.67 ^
|
|
Select crsfacttemp
|
|
Scan
|
|
Scatter Name loArticol Memo
|
|
Select (tcCursorDestinatie)
|
|
lcSerie = Nvl(loArticol.serie,'') && modificare ROAFACTURARE v 2.0.46
|
|
lcLot = Nvl(loArticol.lot,'') && modificare ROAFACTURARE v 2.0.46
|
|
If loArticol.denumire <> Replicate('Z',20)
|
|
Append Blank
|
|
*!* modificare v 2.0.4
|
|
*!* If lnPretListSubunitati = 2 && pret fara tva
|
|
*!* *!* modificare v 2.0.4 ^
|
|
*!* Replace denumire With Alltrim(loArticol.denumire),explicatie With Alltrim(Nvl(loArticol.explicatie,[ ])),;
|
|
*!* cantitate With loArticol.cantitate,codmat With Alltrim(NVL(loArticol.codmat,Space(50))),codmatf With Alltrim(loArticol.codmatf),;
|
|
*!* codbare With Alltrim(NVL(loArticol.codbare,Space(50))),;
|
|
*!* pretftvai with loArticol.pretftvai,pretctvai with loArticol.pretctvai,proc_disc with loArticol.proc_disc,;
|
|
*!* pretctva with loArticol.pretctva,pretftva With loArticol.pretftva,;
|
|
*!* valftva With loArticol.valftva,valtva With loArticol.valtva,;
|
|
*!* valftvai with loArticol.valftvai,valctvai with loArticol.valctvai,;
|
|
*!* pretctva With loArticol.pretctva,valctva With loArticol.valctva,valtva With loArticol.valtva,;
|
|
*!* proc_tva With loArticol.proc_Tvav,um With Alltrim(loArticol.um),serie With Alltrim(loArticol.serie),id_jtva_coloana With loArticol.id_jtva_coloana
|
|
*!* *!* modificare v 2.0.4
|
|
*!* Else
|
|
Replace denumire With Alltrim(loArticol.denumire),explicatie With Alltrim(Nvl(loArticol.explicatie,[ ])),;
|
|
cantitate With loArticol.cantitate,codmat With Alltrim(Nvl(loArticol.codmat,Space(50))),codmatc With Alltrim(Nvl(loArticol.codmatc,Space(50))),codmatf With Alltrim(loArticol.codmatf),;
|
|
codbare With Alltrim(Nvl(loArticol.codbare,Space(50))),;
|
|
pretftvai With loArticol.pretftvai,pretctvai With loArticol.pretctvai,proc_disc With loArticol.proc_disc,;
|
|
pretctva With loArticol.pretctva,;
|
|
pretftva With loArticol.pretftva,valftva With loArticol.valftva,;
|
|
valftvai With loArticol.valftvai,valctvai With loArticol.valctvai,;
|
|
pretctva With loArticol.pretctva,valctva With loArticol.valctva,valtva With loArticol.valtva,;
|
|
proc_tva With loArticol.proc_Tvav,um With Alltrim(loArticol.um),cod_um_iso With Alltrim(loArticol.cod_um_iso),;
|
|
lot With Alltrim(loArticol.lot),serie With Alltrim(loArticol.serie),id_jtva_coloana With loArticol.id_jtva_coloana,id_jtva_coloana_ex With loArticol.id_jtva_coloana_ex,;
|
|
id_ctr With loArticol.id_ctr,numar_contract With loArticol.numar_contract, id_articol WITH loArticol.id_articol
|
|
*!* Endif
|
|
*!* modificare v 2.0.4 ^
|
|
*!* modificare v 2.0.46
|
|
lcSerie = []
|
|
lcLot = []
|
|
Select (tcCursorSursa)
|
|
*!* modificare v 2.0.47
|
|
*!* Scan For Alltrim(denumire) = Alltrim(loArticol.denumire) ;
|
|
*!* And Alltrim(Nvl(explicatie,[x_x|])) = Alltrim(Nvl(loArticol.explicatie,[x_x|])) ;
|
|
*!* and Alltrim(Nvl(codmat,[x_x|])) = Alltrim(Nvl(loArticol.codmat,[x_x|])) ;
|
|
*!* And Alltrim(Nvl(codmatf,[x_x|])) = Alltrim(Nvl(loArticol.codmatf,[x_x|])) ;
|
|
*!* and Alltrim(Nvl(codbare,[x_x|])) = Alltrim(Nvl(loArticol.codbare,[x_x|])) ;
|
|
*!* and pretftva = loArticol.pretftva ;
|
|
*!* and Alltrim(Nvl(um,[x_x|])) = Alltrim(Nvl(loArticol.um,[x_x|])) ;
|
|
*!* and discountftva = loArticol.discountftva ;
|
|
*!* and proc_Tvav = loArticol.proc_Tvav
|
|
*!* lcSerie = lcSerie + Iif(!Empty(Nvl(serie,'')),[,]+Alltrim(serie),[])
|
|
*!* Endscan
|
|
If lnPretListAviz = 2
|
|
Scan For Alltrim(denumire) = Alltrim(loArticol.denumire) ;
|
|
And Alltrim(Nvl(explicatie,[x_x|])) = Alltrim(Nvl(loArticol.explicatie,[x_x|])) ;
|
|
and Alltrim(Nvl(codmat,[x_x|])) = Alltrim(Nvl(loArticol.codmat,[x_x|])) ;
|
|
And Alltrim(Nvl(codmatf,[x_x|])) = Alltrim(Nvl(loArticol.codmatf,[x_x|])) ;
|
|
and Alltrim(Nvl(codbare,[x_x|])) = Alltrim(Nvl(loArticol.codbare,[x_x|])) ;
|
|
and pretftva = loArticol.pretftva ;
|
|
and Alltrim(Nvl(um,[x_x|])) = Alltrim(Nvl(loArticol.um,[x_x|])) ;
|
|
and discountftva = loArticol.discountftva ;
|
|
and proc_Tvav = loArticol.proc_Tvav ;
|
|
and Nvl(id_ctr,-1) = Nvl(loArticol.id_ctr,-1) ;
|
|
and Nvl(numar_contract,'') = Nvl(loArticol.numar_contract,'')
|
|
lcSerie = lcSerie + Iif(!Empty(Nvl(serie,'')),[,]+Alltrim(serie),[])
|
|
lcLot = lcLot + Iif(!Empty(Nvl(lot,'')),[,]+Alltrim(lot),[])
|
|
Endscan
|
|
Else
|
|
Scan For Alltrim(denumire) = Alltrim(loArticol.denumire) ;
|
|
And Alltrim(Nvl(explicatie,[x_x|])) = Alltrim(Nvl(loArticol.explicatie,[x_x|])) ;
|
|
and Alltrim(Nvl(codmat,[x_x|])) = Alltrim(Nvl(loArticol.codmat,[x_x|])) ;
|
|
And Alltrim(Nvl(codmatf,[x_x|])) = Alltrim(Nvl(loArticol.codmatf,[x_x|])) ;
|
|
and Alltrim(Nvl(codbare,[x_x|])) = Alltrim(Nvl(loArticol.codbare,[x_x|])) ;
|
|
and pretctva = loArticol.pretctva ;
|
|
and Alltrim(Nvl(um,[x_x|])) = Alltrim(Nvl(loArticol.um,[x_x|])) ;
|
|
and discountctva = loArticol.discountctva ;
|
|
and proc_Tvav = loArticol.proc_Tvav ;
|
|
and Nvl(id_ctr,-1) = Nvl(loArticol.id_ctr,-1) ;
|
|
and Nvl(numar_contract,'') = Nvl(loArticol.numar_contract,'')
|
|
lcSerie = lcSerie + Iif(!Empty(Nvl(serie,'')),[,]+Alltrim(serie),[])
|
|
lcLot = lcLot + Iif(!Empty(Nvl(lot,'')),[,]+Alltrim(lot),[])
|
|
Endscan
|
|
Endif
|
|
*!* modificare v 2.0.47 ^
|
|
Select (tcCursorDestinatie)
|
|
lcSerie = Iif(!Empty(lcSerie),Substr(lcSerie,2),Nvl(loArticol.serie,''))
|
|
lcLot = Iif(!Empty(lcLot),Substr(lcLot,2),Nvl(loArticol.lot,''))
|
|
Replace serie With m.lcSerie, lot WITH m.lcLot
|
|
*!* modificare v 2.0.46 ^
|
|
Else
|
|
loArticol.denumire = [FACTURA]
|
|
Endif
|
|
*!* modificare v 2.0.4
|
|
If lnPretListAviz = 2 && pret fara tva
|
|
*!* modificare v 2.0.4 ^
|
|
If loArticol.discountftva <> 0
|
|
Append Blank
|
|
lnProcentDiscount = loArticol.discountftva * 100 / loArticol.pretftva
|
|
Replace denumire With [Discount ]+Alltrim(Str(lnProcentDiscount,10,2))+[ % ]+Alltrim(Proper(loArticol.denumire)),;
|
|
lot With Iif(!Empty(Nvl(lcLot,[])),[],Alltrim(loArticol.lot)), serie With Iif(!Empty(Nvl(lcSerie,[])),[],Alltrim(loArticol.serie)),;
|
|
cantitate With loArticol.cantitate,um With Alltrim(loArticol.um),cod_um_iso WITH ALLTRIM(loArticol.cod_um_iso),;
|
|
codbare With Alltrim(Nvl(loArticol.codbare,Space(50))),;
|
|
pretftva With (-1) * loArticol.discountftva,valftva With (-1) * loArticol.valdiscountftva,codmat With Alltrim(Nvl(loArticol.codmat,Space(50))),;
|
|
codmatc With Alltrim(Nvl(loArticol.codmatc,Space(50))),codmatf With Alltrim(loArticol.codmatf),valtva With (-1) * loArticol.valdiscounttva,;
|
|
proc_tva With loArticol.proc_Tvav,id_jtva_coloana With loArticol.id_jtva_coloana,id_jtva_coloana_ex With loArticol.id_jtva_coloana_ex,;
|
|
id_ctr With loArticol.id_ctr,numar_contract With loArticol.numar_contract, id_articol WITH loArticol.id_articol
|
|
Endif
|
|
*!* modificare v 2.0.4
|
|
Else
|
|
If loArticol.discountctva <> 0
|
|
Append Blank
|
|
lnProcentDiscount = loArticol.discountctva * 100 / loArticol.pretctva
|
|
Replace denumire With [Discount ]+Alltrim(Str(lnProcentDiscount,10,2))+[ % ]+Alltrim(Proper(loArticol.denumire)),;
|
|
lot With Iif(!Empty(lcLot),[],Alltrim(loArticol.lot)), serie With Iif(!Empty(lcSerie),[],Alltrim(loArticol.serie)),;
|
|
cantitate With loArticol.cantitate,um With Alltrim(loArticol.um),cod_um_iso WITH ALLTRIM(loArticol.cod_um_iso),;
|
|
codmatc With Alltrim(Nvl(loArticol.codmatc,Space(50))),codmatf With Alltrim(loArticol.codmatf),codbare With Alltrim(Nvl(loArticol.codbare,Space(50))),;
|
|
pretctva With (-1) * loArticol.discountctva,valctva With (-1) * loArticol.valdiscountctva,codmat With Alltrim(Nvl(loArticol.codmat,Space(50))),;
|
|
valtva With (-1) * loArticol.valdiscounttva,proc_tva With loArticol.proc_Tvav,id_jtva_coloana With loArticol.id_jtva_coloana,id_jtva_coloana_ex With loArticol.id_jtva_coloana_ex,;
|
|
id_ctr With loArticol.id_ctr,numar_contract With loArticol.numar_contract, id_articol WITH loArticol.id_articol
|
|
Endif
|
|
Endif
|
|
*!* modificare v 2.0.4 ^
|
|
Select crsfacttemp
|
|
Endscan
|
|
|
|
Use In crsfacttemp
|
|
completeaza_explicatie_tva(tcCursorDestinatie) && modificare ROAFACTURARE v 2.0.46
|
|
|
|
*!* modificare ROAFACTURARE v 2.0.67
|
|
If Inlist(poDate.tip,2,6,26,51,52)
|
|
completeaza_explicatie_contract(tcCursorDestinatie)
|
|
Endif
|
|
*!* modificare ROAFACTURARE v 2.0.67 ^
|
|
|
|
* Completez CODNC8/CODCPV
|
|
SELECT (m.tcCursorDestinatie)
|
|
SCAN
|
|
lnIdArticol = id_articol
|
|
loCod = GetCodNC8CPV(m.lnIdArticol)
|
|
SELECT (m.tcCursorDestinatie)
|
|
Replace codnc8 WITH loCod.codnc8, codcpv WITH loCod.codcpv
|
|
ENDSCAN
|
|
|
|
If tnInValuta = 1
|
|
*!* nu a fost modificata prelucreaza_factura_valuta pentru ca avizele se fac doar in lei
|
|
*!* iar optiunea de listare a pretului cu tva este valabila doar pentru RON
|
|
*!* modificare ROAFACTURARE v 2.0.67
|
|
*!* prelucreaza_factura_valuta(tnDiscountEvidentiat,tnTipFacturare)
|
|
prelucreaza_factura_valuta(tcCursorSursa,tcCursorSursaSet,tnDiscountEvidentiat, tnListareDetaliata)
|
|
*!* modificare ROAFACTURARE v 2.0.67 ^
|
|
Endif
|
|
|
|
Endproc && prelucreaza_factura
|
|
*********************************************************************************************************
|
|
Procedure prelucreaza_lista_livrare
|
|
*!* modificare ROAFACTURARE v 2.0.67
|
|
*!* Lparameters tnTipFacturare
|
|
*!* modificare ROAFACTURARE v 2.0.67 ^
|
|
Local lcCursor
|
|
lcCursor = [crslltemp]
|
|
Create Cursor crslistalivrare(nrcrt N(10),denumire c(100),explicatie M,cantitate N(20,max(gnPCant,4)),um c(10),lot c(20) NULL, serie c(100) null,;
|
|
codmat c(50),codmatf c(50))
|
|
|
|
If !Used('crsfacturaset')
|
|
Select a.* From crsfactura a Where a.gestionabil = 1 Into Cursor (lcCursor) Order By 1
|
|
Else
|
|
*!* modificare ROAFACTURARE v 2.0.56
|
|
*!* Select a.* From crsfacturaset a Where !Isnull(a.id_set_fact) And Nvl(gestionabil,0) = 1 ;
|
|
*!* Into Cursor (lcCursor) Order By 1
|
|
If poDate.listare_componenta_set_ll = 1
|
|
Select a.* From crsfacturaset a Where Nvl(a.gestionabil,0) = 1 Or a.cantitate = 0 ;
|
|
Into Cursor (lcCursor) Order By 1
|
|
Else
|
|
Select a.* From crsfacturaset a Where Nvl(a.id_set_fact,0)<>0 Or (Nvl(a.id_set_fact,0)=0 And Nvl(a.gestionabil,0) = 1) ;
|
|
Into Cursor (lcCursor) Order By 1
|
|
Endif
|
|
*!* modificare ROAFACTURARE v 2.0.56 ^
|
|
Endif
|
|
|
|
If Reccount(lcCursor) > 0
|
|
Select Min(nrcrt) As nrcrt,denumire,Nvl(codmat,Space(50)) As codmat,Nvl(codmatf,Space(50)) As codmatf,;
|
|
LEFT(explicatie,254) as explicatie,Nvl(um,Space(10)) As um,Sum(cantitate) As cantitate, ;
|
|
Nvl(lot,Space(20)) As lot, Nvl(serie,Space(100)) As serie ;
|
|
FROM (lcCursor) Group By 2,3,4,5,6,8,9 ;
|
|
ORDER By 1 Into Cursor crslistalivrare
|
|
* denumire,codmat,codmatf,explicatie,um,serie
|
|
Else
|
|
Select * From (lcCursor) Into Cursor crslistalivrare
|
|
Endif
|
|
|
|
Use In (lcCursor)
|
|
|
|
Endproc && prelucreaza_lista_livrare
|
|
*********************************************************************************************************
|
|
Procedure prelucreaza_recapitulatie
|
|
Lparameters tnDiscountEvidentiat
|
|
Local lcCursor
|
|
Create Cursor crsrecapitulatie(denumire c(100),explicatie M,cantitate N(20,max(gnPCant,4)),pretftva N(20,max(gnPPretV,4)),pret_achizitie N(20,max(gnPPret,4)),;
|
|
valftva N(20,max(gnPc,4)),valtva N(20,max(gnPc,4)),um c(10),lot m,serie m,codmat c(50),codmatf c(50),id_jtva_coloana N(10),expltva c(100))
|
|
|
|
If Used('crsfacttemp')
|
|
Use In crsfacttemp
|
|
Endif
|
|
|
|
*!* modificare ROAFACTURARE v 2.0.31
|
|
If gnOrdineElemDoc = 2
|
|
Select a.* From crsfactura a Into Cursor crsfactura Order By a.denumire
|
|
*!* modificare ROAFACTURARE v 2.0.56
|
|
Else
|
|
Select a.* From crsfactura a Into Cursor crsfactura Order By a.id_temp
|
|
*!* modificare ROAFACTURARE v 2.0.56 ^
|
|
Endif
|
|
*!* modificare ROAFACTURARE v 2.0.31 ^
|
|
Select Recno() As nrcrt,a.* From crsfactura a Into Cursor crsfactura Order By nrcrt
|
|
|
|
If tnDiscountEvidentiat = 1
|
|
Select Min(nrcrt) As nrcrt,denumire,Nvl(codmat,Space(50)) As codmat,Nvl(codmatf,Space(50)) As codmatf,;
|
|
CAST(explicatie as C(254)) as explicatie,Nvl(um,Space(10)) As um,Sum(cantitate) As cantitate,pretftva,Sum(valftva) As valftva,;
|
|
Sum(valtva) As valtva, discountftva,pret_achizitie,Sum(valdiscountftva) As valdiscountftva,;
|
|
Sum(valdiscounttva) As valdiscounttva, proc_Tvav, Nvl(serie,Space(100)) As serie,;
|
|
id_jtva_coloana, Nvl(lot,Space(20)) As lot ;
|
|
FROM crsfactura Group By 2,3,4,5,6,8,11,12,15,16,17,18 ;
|
|
ORDER By 1 Into Cursor crsfacttemp
|
|
Else
|
|
Select denumire,CAST(explicatie as C(254)) as explicatie,Nvl(codmat,Space(50)) As codmat, Sum(cantitate) As cantitate,pretftva-discountftva As pretftva,;
|
|
Sum(valdiminuatftva) As valftva,Sum(valdiminuattva) As valtva,pret_achizitie,;
|
|
0 As discountftva,0 As valdiscountftva,0 As valdiscounttva, proc_Tvav, ;
|
|
Nvl(um,Space(10)) As um,Min(nrcrt) As nrcrt, Nvl(serie,Space(100)) As serie, ;
|
|
Nvl(codmatf,Space(50)) As codmatf,id_jtva_coloana, Nvl(lot,Space(20)) As lot ;
|
|
FROM crsfactura Group By 1,2,3,5,8,12,13,15,16,17,18 ;
|
|
UNION All ;
|
|
Select denumire,explicatie,Nvl(codmat,Space(50)) As codmat,1 As cantitate,pretftva,;
|
|
0 As valftva,0 As valtva,0 As pret_achizitie,discountftva,valdiscountftva,valdiscounttva,;
|
|
proc_Tvav, Nvl(um,Space(10)) As um, nrcrt, Nvl(serie,Space(100)) As serie, ;
|
|
Nvl(codmatf,Space(50)) As codmatf,id_jtva_coloana, Nvl(lot,Space(20)) As lot ;
|
|
from crsfactura Where denumire = Replicate('Z',20) Order By 14 ;
|
|
Into Cursor crsfacttemp
|
|
Endif
|
|
Select crsfacttemp
|
|
Scan
|
|
Scatter Name loArticol Memo
|
|
Select crsrecapitulatie
|
|
If loArticol.denumire <> Replicate('Z',20)
|
|
Append Blank
|
|
Replace denumire With Alltrim(loArticol.denumire),explicatie With Alltrim(Nvl(loArticol.explicatie,[ ])),;
|
|
cantitate With loArticol.cantitate,codmat With Nvl(loArticol.codmat,Space(50)),codmatf With Alltrim(loArticol.codmatf),;
|
|
pretftva With loArticol.pretftva,valftva With loArticol.valftva,valtva With loArticol.valtva,;
|
|
um With Alltrim(loArticol.um),lot With Alltrim(loArticol.lot),serie With Alltrim(loArticol.serie),;
|
|
pret_achizitie With loArticol.pret_achizitie,id_jtva_coloana With loArticol.id_jtva_coloana
|
|
Else
|
|
loArticol.denumire = [FACTURA]
|
|
Endif
|
|
If loArticol.discountftva <> 0
|
|
Append Blank
|
|
lnProcentDiscount = loArticol.discountftva * 100 / loArticol.pretftva
|
|
Replace denumire With [Discount ]+Alltrim(Str(lnProcentDiscount,10,2))+[ % ]+Alltrim(Proper(loArticol.denumire)),;
|
|
lot With Alltrim(loArticol.lot),serie With Alltrim(loArticol.serie),cantitate With loArticol.cantitate,um With Alltrim(loArticol.um),;
|
|
pretftva With (-1) * loArticol.discountftva,valftva With (-1) * loArticol.valdiscountftva,codmat With Nvl(loArticol.codmat,Space(50)),;
|
|
valtva With (-1) * loArticol.valdiscounttva,pret_achizitie With loArticol.pret_achizitie,codmatf With Nvl(loArticol.codmatf,Space(50)),;
|
|
id_jtva_coloana With loArticol.id_jtva_coloana
|
|
Endif
|
|
Select crsfacttemp
|
|
Endscan
|
|
|
|
Use In crsfacttemp
|
|
|
|
Endproc && prelucreaza_recapitulatie
|
|
*********************************************************************************************************
|
|
Procedure prelucreaza_factura_valuta
|
|
Lparameters tcCursorSursa,tcCursorSursaSet,tnDiscountEvidentiat, tnListareDetaliata
|
|
&& ,tnTipFacturare *!* modificare ROAFACTURARE v 2.0.67
|
|
*!* modificare v 2.0.77
|
|
*!* tnListareDetaliata: daca sa se listeze randurile asa cum sunt in loc de grupate dupa articol, pret. sa nu se cumuleze cantitatea pe articole
|
|
|
|
LOCAL llListareDetaliata, lnIdArticol
|
|
llListareDetaliata = (IIF(TYPE('tnListareDetaliata') = 'N', tnListareDetaliata, 0) = 1)
|
|
|
|
creeaza_facturafinala([crsfacturafinalaval])
|
|
*!* Create Cursor crsfacturafinalaval(denumire c(100),explicatie c(240),cantitate N(20,4),pretftva N(20,4),;
|
|
*!* valftva N(20,4),valtva N(20,4),proc_tva N(20,4),um c(10),serie m,codmat c(50),codmatf c(50),codbare c(50),;
|
|
*!* id_jtva_coloana N(10),expltva c(100),id_ctr N(10) Null,numar_contract c(100) Null)
|
|
*!* modificare v 2.0.77 ^
|
|
If Used('crsfacttemp')
|
|
Use In crsfacttemp
|
|
Endif
|
|
|
|
If !Used(tcCursorSursaSet)
|
|
lcCursor = tcCursorSursa
|
|
Else
|
|
lcCursor = tcCursorSursaSet
|
|
Endif
|
|
|
|
*!* modificare ROAFACTURARE v 2.0.56
|
|
If gnOrdineElemDoc = 2
|
|
Select a.* From (lcCursor) a Into Cursor (lcCursor) Order By a.denumire
|
|
Else
|
|
Select a.* From (lcCursor) a Into Cursor (lcCursor) Order By a.id_temp
|
|
ENDIF
|
|
|
|
*!* modificare ROAFACTURARE v 2.0.56 ^
|
|
|
|
creeaza_crsfacttemp()
|
|
If tnDiscountEvidentiat = 1
|
|
Insert Into crsfacttemp (nrcrt,denumire,explicatie,um,cod_um_iso,cantitate,pretftva,valftva,valtva, ;
|
|
discountftva,valdiscountftva,valdiscounttva,proc_Tvav,serie,;
|
|
codmat,codmatc,codmatf,id_jtva_coloana,codbare,id_ctr,numar_contract,grup,id_articol,lot) ;
|
|
Select Min(nrcrt) As nrcrt,denumire,LEFT(explicatie, 240) as explicatie,Nvl(um,Space(10)) As um,CAST(cod_um_iso as C(10)) As cod_um_iso,Sum(cantitate) As cantitate,;
|
|
vpretftva As pretftva,Sum(vvalftva) As valftva,Sum(vvaltva) As valtva, ;
|
|
vdiscountftva As discountftva,Sum(vvaldiscountftva) As valdiscountftva,;
|
|
Sum(vvaldiscounttva) As valdiscounttva,proc_Tvav, Min(Nvl(serie,Space(100))) As serie,;
|
|
Nvl(codmat,Space(50)) As codmat,IIF(TYPE(m.lcCursor + '.codmatc') = 'C', Nvl(codmatc,Space(50)), SPACE(50)) As codmatc,Nvl(codmatf,Space(50)) As codmatf,id_jtva_coloana, ;
|
|
Nvl(codbare,Space(50)) As codbare,id_ctr,numar_contract,grup,id_articol, Min(Nvl(lot,Space(20))) As lot ;
|
|
FROM (lcCursor) Group By 2,3,4,5,7,10,13,15,16,17,18,19,20,21,22,23 ;
|
|
ORDER By 1 && Into Cursor crsfacttemp
|
|
Else
|
|
Insert Into crsfacttemp(denumire,explicatie,cantitate,pretftva,valftva,valtva,;
|
|
discountftva,valdiscountftva,valdiscounttva,proc_Tvav,um,cod_um_iso,nrcrt,serie,codmat, ;
|
|
codmatc,codmatf,id_jtva_coloana,codbare,id_ctr,numar_contract,grup,id_articol,lot) ;
|
|
Select denumire,LEFT(explicatie, 240) as explicatie,Sum(cantitate) As cantitate,vpretftva-vdiscountftva As pretftva,;
|
|
Sum(vvaldiminuatftva) As valftva,Sum(vvaldiminuattva) As valtva,;
|
|
0 As discountftva,0 As valdiscountftva,0 As valdiscounttva, proc_Tvav,;
|
|
Nvl(um,Space(10)) As um,CAST(cod_um_iso as C(10)) As cod_um_iso,Min(nrcrt) As nrcrt, Min(Nvl(serie,Space(100))) As serie,Nvl(codmat,Space(50)) As codmat, ;
|
|
IIF(TYPE(m.lcCursor + '.codmatc') = 'C', Nvl(codmatc,Space(50)), SPACE(50)),Nvl(codmatf,Space(50)) As codmatf,id_jtva_coloana,Nvl(codbare,Space(50)) As codbare,id_ctr,numar_contract,grup,id_articol, Min(Nvl(lot,Space(20))) As lot ;
|
|
FROM (lcCursor) Group By 1,2,4,10,11,12,15,16,17,18,19,20,21,22,23 ;
|
|
UNION All ;
|
|
Select denumire,LEFT(explicatie, 240) as explicatie,1 As cantitate,vpretftva As pretftva,;
|
|
0 As valftva,0 As valtva,vdiscountftva As discountftva,vvaldiscountftva As valdiscountftva,;
|
|
vvaldiscounttva As valdiscounttva, proc_Tvav,Nvl(um,Space(10)) As um,CAST(cod_um_iso as C(10)) As cod_um_iso, nrcrt,;
|
|
Nvl(serie,Space(100)) As serie,Nvl(codmat,Space(50)) As codmat,IIF(TYPE(m.lcCursor + '.codmatc') = 'C', Nvl(codmatc,Space(50)), SPACE(50)) As codmatc,Nvl(codmatf,Space(50)) As codmatf, ;
|
|
id_jtva_coloana,Nvl(codbare,Space(50)) As codbare,id_ctr,numar_contract,grup,id_articol,Nvl(lot,Space(20)) As lot ;
|
|
from (lcCursor) Where denumire = Replicate('Z',20) Order By 13 && Into Cursor crsfacttemp
|
|
Endif
|
|
*!* modificare ROAFACTURARE v 2.0.46 ^
|
|
*!* modificare ROAFACTURARE v 2.0.67
|
|
*!* Endif
|
|
*!* modificare ROAFACTURARE v 2.0.67 ^
|
|
|
|
********************************
|
|
*** Explicatia are 500 de caractere, tip Memo si nu poate fi folosita intr-un select group by
|
|
*** Am selectat doar primele 240 caractere apoi completez explicatia din cursorul original
|
|
********************************
|
|
SELECT (lcCursor)
|
|
SCAN
|
|
SCATTER NAME loRec MEMO
|
|
SELECT crsfacttemp
|
|
LOCATE FOR denumire = loRec.denumire AND Nvl(codmat,Space(50)) = Nvl(loRec.codmat,Space(50)) AND LEFT(explicatie, 240) = LEFT(loRec.explicatie, 240)
|
|
IF FOUND()
|
|
REPLACE explicatie WITH ALLTRIM(loRec.explicatie)
|
|
ENDIF
|
|
ENDSCAN
|
|
|
|
Select crsfacttemp
|
|
Scan
|
|
Scatter Name loArticol Memo
|
|
Select crsfacturafinalaval
|
|
lcSerie = Nvl(loArticol.serie,'') && modificare ROAFACTURARE v 2.0.46
|
|
lcLot = Nvl(loArticol.lot,'')
|
|
If loArticol.denumire <> Replicate('Z',20)
|
|
Append Blank
|
|
*!* modificare ROAFACTURARE v 2.0.46
|
|
*!* Replace denumire With Alltrim(loArticol.denumire),cantitate With loArticol.cantitate,;
|
|
*!* explicatie With Alltrim(Nvl(loArticol.explicatie,[ ])),um With Alltrim(loArticol.um),;
|
|
*!* pretftva With loArticol.pretftva,valftva With loArticol.valftva,valtva With loArticol.valtva,;
|
|
*!* proc_tva With loArticol.proc_Tvav,serie With Alltrim(loArticol.serie),codmat With Alltrim(NVL(loArticol.codmat,Space(50)))
|
|
Replace denumire With Alltrim(loArticol.denumire),cantitate With loArticol.cantitate,;
|
|
explicatie With Alltrim(Nvl(loArticol.explicatie,[ ])),um With Alltrim(loArticol.um),cod_um_iso WITH ALLTRIM(loArticol.cod_um_iso),;
|
|
id_articol WITH loArticol.id_articol,;
|
|
pretftva With loArticol.pretftva,valftva With loArticol.valftva,valtva With loArticol.valtva,;
|
|
proc_tva With loArticol.proc_Tvav,codmat With Alltrim(Nvl(loArticol.codmat,Space(50))), ;
|
|
codmatc With Alltrim(Nvl(loArticol.codmatc,Space(50))),;
|
|
codmatf With Alltrim(Nvl(loArticol.codmatf,Space(50))),id_jtva_coloana With loArticol.id_jtva_coloana,;
|
|
id_ctr With loArticol.id_ctr,numar_contract With loArticol.numar_contract
|
|
lcSerie = []
|
|
lcLot = []
|
|
Select (tcCursorSursa)
|
|
Scan For Alltrim(denumire) = Alltrim(loArticol.denumire) ;
|
|
And Alltrim(Nvl(explicatie,[ ])) = Alltrim(Nvl(loArticol.explicatie,[ ])) ;
|
|
and Alltrim(codmat) = Alltrim(loArticol.codmat) ;
|
|
And Alltrim(codmatf) = Alltrim(loArticol.codmatf) ;
|
|
and vpretftva = loArticol.pretftva ;
|
|
and Alltrim(um) = Alltrim(loArticol.um) ;
|
|
and vdiscountftva = loArticol.discountftva ;
|
|
and proc_Tvav = loArticol.proc_Tvav ;
|
|
and Nvl(id_ctr,-1) = Nvl(loArticol.id_ctr,-1) ;
|
|
and Nvl(numar_contract,'') = Nvl(loArticol.numar_contract,'')
|
|
lcSerie = lcSerie + Iif(!Empty(Nvl(serie,'')),[,]+Alltrim(serie),[])
|
|
lcLot = lcLot + Iif(!Empty(Nvl(lot,'')),[,]+Alltrim(lot),[])
|
|
Select crsfactura
|
|
Endscan
|
|
Select crsfacturafinalaval
|
|
lcSerie = Iif(!Empty(lcSerie),Substr(lcSerie,2),Nvl(loArticol.serie,''))
|
|
lcLot = Iif(!Empty(lcLot),Substr(lcLot,2),Nvl(loArticol.lot,''))
|
|
Replace serie With m.lcSerie, lot WITH m.lcLot
|
|
*!* modificare ROAFACTURARE v 2.0.46 ^
|
|
Else
|
|
loArticol.denumire = [INVOICE]
|
|
Endif
|
|
If loArticol.discountftva <> 0
|
|
Append Blank
|
|
lnProcentDiscount = loArticol.discountftva * 100 / loArticol.pretftva
|
|
*!* modificare ROAFACTURARE v 2.0.46
|
|
*!* Replace denumire With Alltrim(Proper(loArticol.denumire))+[ Discount ]+Alltrim(Str(lnProcentDiscount,10,2))+[ %],;
|
|
*!* cantitate With loArticol.cantitate,um With Alltrim(loArticol.um),serie With Alltrim(loArticol.serie),;
|
|
*!* pretftva With (-1) * loArticol.discountftva,valftva With (-1) * loArticol.valdiscountftva,;
|
|
*!* valtva With (-1) * loArticol.valdiscounttva,proc_tva With loArticol.proc_Tvav,;
|
|
*!* codmat With Alltrim(NVL(loArticol.codmat,Space(50)))
|
|
Replace denumire With Alltrim(Proper(loArticol.denumire))+[ Discount ]+Alltrim(Str(lnProcentDiscount,10,2))+[ %],;
|
|
id_articol WITH loArticol.id_articol,;
|
|
cantitate With loArticol.cantitate,um With Alltrim(loArticol.um),cod_um_iso WITH ALLTRIM(loArticol.cod_um_iso),lot WITH lcLot, serie With lcSerie,;
|
|
pretftva With (-1) * loArticol.discountftva,valftva With (-1) * loArticol.valdiscountftva,;
|
|
valtva With (-1) * loArticol.valdiscounttva,proc_tva With loArticol.proc_Tvav,;
|
|
codmatc With Alltrim(Nvl(loArticol.codmatc,Space(50))), ;
|
|
codmat With Alltrim(Nvl(loArticol.codmat,Space(50))),codmatf With Alltrim(Nvl(loArticol.codmatf,Space(50))),;
|
|
id_jtva_coloana With loArticol.id_jtva_coloana,id_ctr With loArticol.id_ctr,numar_contract With loArticol.numar_contract
|
|
*!* modificare ROAFACTURARE v 2.0.46 ^
|
|
Endif
|
|
Select crsfacttemp
|
|
Endscan
|
|
|
|
* Completez CODNC8/CODCPV
|
|
SELECT crsfacturafinalaval
|
|
SCAN
|
|
lnIdArticol = id_articol
|
|
loCod = GetCodNC8CPV(m.lnIdArticol)
|
|
SELECT crsfacturafinalaval
|
|
Replace codnc8 WITH loCod.codnc8, codcpv WITH loCod.codcpv
|
|
ENDSCAN
|
|
|
|
Use In crsfacttemp
|
|
|
|
Endproc && prelucreaza_factura_valuta
|
|
*********************************************************************************************************
|
|
Procedure prelucreaza_aviz_retur
|
|
Lparameters tnDiscountEvidentiat
|
|
*!* modificare v 2.0.77
|
|
creeaza_facturacrs([crsavizretur2])
|
|
prelucreaza_facturacrs([crsavizretur],[crsavizretur2],0,0,0)
|
|
prelucreaza_factura([crsavizretur2],[],[crsfacturafinala2],tnDiscountEvidentiat,0,2)
|
|
|
|
If Used('crsavizretur')
|
|
Use In crsavizretur
|
|
Endif
|
|
If Used('crsavizretur2')
|
|
Use In crsavizretur2
|
|
Endif
|
|
|
|
Endproc && prelucreaza_aviz_retur
|
|
*********************************************************************************************************
|
|
*!* modificare ROAFACTURARE v 2.0.46
|
|
*!* Function optiuni_format_factura
|
|
*!* Private pnOptiune
|
|
*!* pnOptiune = 1
|
|
*!* pnButon = 1
|
|
*!* lcTitlu = "LISTARE FACTURA"
|
|
*!* lcExplicatie = "Alegeti formatul facturii:"
|
|
*!* lcOptiuni = [A4;A5;]
|
|
*!* lnNrOptiuni = 2
|
|
*!* llFaraRenuntare = .T.
|
|
*!* ofrmopt = Createobject("frm_optiune",lcTitlu,lcExplicatie,lnNrOptiuni,lcOptiuni,llFaraRenuntare)
|
|
*!* ofrmopt.Show(1)
|
|
*!* Release ofrmopt
|
|
*!* Return pnOptiune
|
|
*!* Endfunc && optiuni_format_factura
|
|
*********************************************************************************************************
|
|
Function optiuni_format_listare
|
|
Lparameters tnTip && 0 - factura ; 1 - aviz
|
|
Private pnOptiune
|
|
pnOptiune = 1
|
|
pnButon = 1
|
|
If Empty(tnTip)
|
|
lcTitlu = "LISTARE FACTURA"
|
|
lcExplicatie = "Alegeti formatul facturii:"
|
|
Else
|
|
lcTitlu = "LISTARE AVIZ"
|
|
lcExplicatie = "Alegeti formatul avizului:"
|
|
Endif
|
|
lcOptiuni = [A4;A5;]
|
|
lnNrOptiuni = 2
|
|
llFaraRenuntare = .T.
|
|
ofrmopt = Createobject("frm_optiune",lcTitlu,lcExplicatie,lnNrOptiuni,lcOptiuni,llFaraRenuntare)
|
|
ofrmopt.Show(1)
|
|
Release ofrmopt
|
|
Return pnOptiune
|
|
Endfunc && optiuni_format_listare
|
|
*!* modificare ROAFACTURARE v 2.0.46 ^
|
|
*********************************************************************************************************
|
|
Procedure creeaza_facturafinala
|
|
Lparameters tcNumeCursor
|
|
If Used(tcNumeCursor)
|
|
Use In (tcNumeCursor)
|
|
Endif
|
|
Create Cursor (tcNumeCursor) (denumire c(100),explicatie M,cantitate N(20,max(gnPCant,4)),pretctva N(20,max(gnPPretV,precizie_max_pret_vz)),valctva N(20,max(gnPc,4)),;
|
|
pretftva N(20,max(gnPPretV,precizie_max_pret_vz)),pretftvai N(20,max(gnPPretV,precizie_max_pret_vz)),pretctvai N(20,max(gnPPretV,precizie_max_pret_vz)),proc_disc N(10,4),valftva N(20,max(gnPc,4)),valtva N(20,max(gnPc,4)),;
|
|
valftvai N(20,max(gnPc,4)),valctvai N(20,max(gnPc,4)),valdiscount N(20,max(gnPc,4)),;
|
|
proc_tva N(20,4),um c(10),cod_um_iso C(10) null,lot C(20) null,serie c(100),codmat c(50),codmatc c(50), codbare c(50),codmatf c(50),;
|
|
id_jtva_coloana N(10),expltva c(100),id_jtva_coloana_ex N(10) null,expltva_ex c(100) null,id_ctr N(10) Null,numar_contract c(100) Null, taxcode N(6) null, id_articol N(10) null, codnc8 V(20) null, codcpv V(20) null)
|
|
Endproc && creeaza_crsfacturafinala
|
|
*********************************************************************************************************
|
|
Procedure creeaza_facturacrs
|
|
Lparameters tcNumeCursor
|
|
If Used(tcNumeCursor)
|
|
Use In (tcNumeCursor)
|
|
Endif
|
|
Create Cursor (tcNumeCursor) (id_c N(20),id_temp N(20),id_articol N(20) null,id_pol N(20) Null,id_gestiune N(20),Cont c(4),um c(10) Null, cod_um_iso c(5) null, ;
|
|
id_valuta N(10),gestionabil N(1),tip_valuta N(1),Curs N(20,4),multiplicator N(10),id_jtva_coloana N(20) Null,id_jtva_coloana_ex N(20) Null,codmat c(100),codmatc c(100),codmatf c(100),codbare c(50),;
|
|
pret_achizitie N(20,max(gnPPret,4)),denumire c(100),pretftva N(20,max(gnPPretV,precizie_max_pret_vz)),pretctva N(20,max(gnPPretV,precizie_max_pret_vz)),valftva N(20,max(gnPc,4)), valtva N(20,max(gnPc,4)),valctva N(20,max(gnPc,4)),;
|
|
cantitate N(20,max(gnPCant,4)),discountftva N(20,max(gnPPretV,4)), discountctva N(20,max(gnPPretV,precizie_max_pret_vz)), valdiscountftva N(20,max(gnPc,4)),valdiscounttva N(20,max(gnPc,4)),;
|
|
valdiscountctva N(20,max(gnPc,4)),valdiminuatftva N(20,max(gnPc,4)),valdiminuattva N(20,max(gnPc,4)),valdiminuatctva N(20,max(gnPc,4)),proc_Tvav N(20,4),cu_tva N(1), lot C(20) null, serie c(100) Null,;
|
|
vpretftva N(20,max(gnPVal,precizie_max_pret_vz)),vpretctva N(20,max(gnPVal,precizie_max_pret_vz)),vvalftva N(20,max(gnPVal,4)),vvaltva N(20,max(gnPVal,4)),vvalctva N(20,max(gnPVal,4)),;
|
|
vdiscountftva N(20,max(gnPVal,4)),vdiscountctva N(20,max(gnPVal,4)),vvaldiscountftva N(20,max(gnPVal,4)),vvaldiscounttva N(20,max(gnPVal,4)),;
|
|
vvaldiscountctva N(20,max(gnPVal,4)),vvaldiminuatftva N(20,max(gnPVal,4)),vvaldiminuattva N(20,max(gnPVal,4)),vvaldiminuatctva N(20,max(gnPVal,4)),id_set_fact N(20) Null,explicatie M Null,;
|
|
id_part_rez N(10) Null,id_lucrare_rez N(10) Null,pretv_orig N(20,max(gnPPretV,precizie_max_pret_vz)),pretd N(20,max(gnPPretVal,precizie_max_pret_vz)) Null,id_valuta_d N(15) Null,;
|
|
id_rata N(20) Null,data_rata d,data_scadenta d,nr_rata N(20),id_ctr N(20) Null,opt_facturare N(3),numar_contract c(100) Null,nume_val c(100),id_rul_aux n(10) null, ;
|
|
nume_gestiune c(100) null, cgest c(50) null, taxcode N(6) null, codnc8 V(20) null, codcpv V(20) null)
|
|
Endproc && creeaza_facturacrs
|
|
*********************************************************************************************************
|
|
Procedure creeaza_crsfacttemp
|
|
If Used('creeaza_crsfacttemp')
|
|
Use In creeaza_crsfacttemp
|
|
Endif
|
|
Create Cursor crsfacttemp(nrcrt N(10),id_articol N(20) null,denumire c(100),explicatie M Null,codmat c(50),codmatc c(50),codmatf c(50),codbare c(50),um c(10),cod_um_iso C(10) null, lot C(20) null, serie c(100) Null,;
|
|
id_ctr N(10) Null,numar_contract c(100) Null,cantitate N(20,max(gnPCant,4)),;
|
|
proc_Tvav N(20,4),id_jtva_coloana N(10),id_jtva_coloana_ex N(10) Null,;
|
|
pretftva N(20,max(gnPPretV,precizie_max_pret_vz)),pretftvai N(20,max(gnPPretV,precizie_max_pret_vz)),pretctva N(20,max(gnPPretV,precizie_max_pret_vz)),pretctvai N(20,max(gnPPretV,precizie_max_pret_vz)),;
|
|
valftva N(20,max(gnPc,4)),valftvai N(20,max(gnPc,4)),valtva N(20,max(gnPc,4)),valctva N(20,max(gnPc,4)),valctvai N(20,max(gnPc,4)),;
|
|
proc_disc N(10,4),discountftva N(20,max(gnPPretV,4)),discountctva N(20,max(gnPPretV,precizie_max_pret_vz)),;
|
|
valdiscountftva N(20,max(gnPC,4)),valdiscounttva N(20,max(gnPc,4)),valdiscountctva N(20,max(gnPc,4)), grup N(4), taxcode N(6) null, codnc8 V(20) null, codcpv V(20) null)
|
|
Endproc && creeaza_crsfacttemp
|
|
*********************************************************************************************************
|
|
Procedure prelucreaza_facturacrs
|
|
Lparameters tcCursorSursa,tcCursorDestinatie,tnProcTvav,tnDiscount,tnDiscountVal
|
|
Local lnTotalBaza,lnTotalBazaVal,lnIdTemp
|
|
*!* modificare ROAAUTO v 2.0.41 : am adaugat id_articol
|
|
|
|
Insert Into (tcCursorDestinatie) (id_articol,id_temp,explicatie,denumire,lot,serie,codmat,codmatc,id_jtva_coloana,id_jtva_coloana_ex,taxcode,codmatf,codbare,pret_achizitie,cantitate,proc_Tvav,um,cod_um_iso,;
|
|
cu_tva,pretctva,discountctva,valctva,valdiscountctva,valdiminuatctva,pretftva,;
|
|
valftva,valtva,discountftva,valdiscountftva,valdiscounttva,valdiminuatftva,;
|
|
valdiminuattva,vpretftva,vvalftva,vvaltva,vdiscountftva,vvaldiscountftva,vvaldiscounttva,;
|
|
vvaldiminuatftva,vvaldiminuattva,id_set_fact,gestionabil,id_ctr,numar_contract,id_valuta,tip_valuta,Curs,multiplicator,nume_val,codnc8,codcpv) ;
|
|
SELECT CAST(IIF(TYPE(tcCursorSursa+".id_articol")='U',0,id_articol) as N(20)) as id_articol,id_vanzare_det As id_temp,;
|
|
explicatie,denumire,lot,serie,Nvl(codmat,Space(50)) As codmat,IIF(TYPE(tcCursorSursa + '.codmatc') = 'C', Nvl(codmatc,Space(50)), SPACE(50)) As codmatc,id_jtva_coloana,id_jtva_coloana_ex,taxcode,;
|
|
NVL(codmatf,Space(50)) As codmatf,;
|
|
Nvl(codbare,Space(50)) As codbare,Nvl(pret_achizitie,0.000) As pret_achizitie,Nvl(cantitate,1) As cantitate,proc_Tvav,Nvl(um,Space(50)) As um, ;
|
|
CAST(IIF(TYPE(tcCursorSursa+".cod_um_iso")='U','',cod_um_iso) as C(5)) as cod_um_iso, ;
|
|
pret_cu_tva As cu_tva,;
|
|
Iif(pret_cu_tva = 1,Round(Pret,gnPPretV),Round(Pret,gnPPretV)+Round(Round(Pret,gnPPretV)*(proc_Tvav-1),gnPPretV)) As pretctva,;
|
|
Iif(pret_cu_tva = 1,Round(discount_unitar,gnPPretV),0.000) As discountctva,;
|
|
Iif(pret_cu_tva = 1,Round(Round(Pret,gnPPretV)*Nvl(cantitate,1),gnPc),Round(Round(Pret,gnPPretV)*Nvl(cantitate,1),gnPc)+;
|
|
Round(Round(Round(Pret,gnPPretV)*Nvl(cantitate,1),gnPc)*(proc_Tvav-1),gnPc)) As valctva,;
|
|
Iif(pret_cu_tva = 1,Round(Round(discount_unitar,gnPPretV)*Nvl(cantitate,1),gnPc),;
|
|
ROUND((Round(discount_unitar,gnPPretV)-Round(Round(discount_unitar,gnPPretV)*(proc_Tvav-1),gnPPretV))*Nvl(cantitate,1),gnPc)) As valdiscountctva,;
|
|
IIF(pret_cu_tva = 1,;
|
|
ROUND((Round(Pret,gnPPretV)-Round(discount_unitar,gnPPretV))*Nvl(cantitate,1),gnPc),;
|
|
ROUND((Round(Pret,gnPPretV)+Round(Round(Pret,gnPPretV)*(proc_Tvav-1),gnPPretV)-Round(discount_unitar,gnPPretV)-Round(Round(discount_unitar,gnPPretV)*(proc_Tvav-1),gnPPretV))*Nvl(cantitate,1),gnPc)) As valdiminuatctva,;
|
|
IIF(pret_cu_tva = 0,;
|
|
Round(Pret,gnPPretV),;
|
|
Round(Round(Pret,gnPPretV)/proc_Tvav,gnPPretV)) As pretftva,;
|
|
IIF(pret_cu_tva = 0,;
|
|
Round(Round(Pret,gnPPretV)*Nvl(cantitate,1),gnPc),;
|
|
ROUND(Round(Pret,gnPPretV)*Nvl(cantitate,1),gnPc) - ;
|
|
Round(Round(Round(Pret,gnPPretV)*Nvl(cantitate,1),gnPc)*(proc_Tvav-1)/proc_Tvav, gnPc)) As valftva,;
|
|
IIF(pret_cu_tva = 0,;
|
|
Round(Round(Round(Pret,gnPPretV)*Nvl(cantitate,1),gnPc)*(proc_Tvav-1),gnPc),;
|
|
Round(Round(Round(Pret,gnPPretV)*Nvl(cantitate,1),gnPc)*(proc_Tvav-1)/proc_Tvav, gnPc)) As valtva,;
|
|
IIF(pret_cu_tva = 0,;
|
|
Round(discount_unitar,gnPPretV),;
|
|
Round(Round(discount_unitar,gnPPretV)/proc_Tvav,gnPPretV)) As discountftva,;
|
|
IIF(pret_cu_tva = 0,;
|
|
Round(Round(discount_unitar,gnPPretV)*Nvl(cantitate,1),gnPc),;
|
|
ROUND(Round(discount_unitar,gnPPretV)*Nvl(cantitate,1),gnPc) - ;
|
|
Round(Round(Round(discount_unitar,gnPPretV)*Nvl(cantitate,1),gnPc)*(proc_Tvav-1)/proc_Tvav, gnPc)) As valdiscountftva,;
|
|
IIF(pret_cu_tva = 0,;
|
|
ROUND(Round(Round(discount_unitar,gnPPretV)*Nvl(cantitate,1),gnPc)*(proc_Tvav-1),gnPc),;
|
|
Round(Round(Round(discount_unitar,gnPPretV)*Nvl(cantitate,1),gnPc)*(proc_Tvav-1)/proc_Tvav, gnPc)) As valdiscounttva,;
|
|
IIF(pret_cu_tva = 0,;
|
|
Round((Round(Pret,gnPPretV)-Round(discount_unitar,gnPPretV))*Nvl(cantitate,1),gnPc),;
|
|
ROUND((Round(Pret,gnPPretV)-Round(discount_unitar,gnPPretV))*Nvl(cantitate,1),gnPc) - ;
|
|
Round(Round((Round(Pret,gnPPretV)-Round(discount_unitar,gnPPretV))*Nvl(cantitate,1),gnPc)*(proc_Tvav-1)/proc_Tvav, gnPc)) As valdiminuatftva,;
|
|
IIF(pret_cu_tva = 0,;
|
|
Round(Round((Round(Pret,gnPPretV)-Round(discount_unitar,gnPPretV))*Nvl(cantitate,1),gnPc)*(proc_Tvav-1),gnPc),;
|
|
Round(Round((Round(Pret,gnPPretV)-Round(discount_unitar,gnPPretV))*Nvl(cantitate,1),gnPc)*(proc_Tvav-1)/proc_Tvav, gnPc)) As valdiminuattva, ;
|
|
IIF(pret_cu_tva = 0,;
|
|
Round(Pret_val,gnPVal),;
|
|
Round(Round(Pret_val,gnPVal)/proc_Tvav,gnPVal)) As vpretftva,;
|
|
IIF(pret_cu_tva = 0,;
|
|
Round(Round(Pret_val,gnPVal)*Nvl(cantitate,1),gnPVal),;
|
|
ROUND(Round(Pret_val,gnPVal)*Nvl(cantitate,1),gnPVal) - ;
|
|
Round(Round(Round(Pret_val,gnPVal)*Nvl(cantitate,1),gnPVal)*(proc_Tvav-1)/proc_Tvav, gnPVal)) As vvalftva,;
|
|
IIF(pret_cu_tva = 0,;
|
|
Round(Round(Round(Pret_val,gnPVal)*Nvl(cantitate,1),gnPVal)*(proc_Tvav-1),gnPVal),;
|
|
Round(Round(Round(Pret_val,gnPVal)*Nvl(cantitate,1),gnPVal)*(proc_Tvav-1)/proc_Tvav, gnPVal)) As vvaltva,;
|
|
IIF(pret_cu_tva = 0,;
|
|
Round(discount_unitar_val,gnPVal),;
|
|
Round(Round(discount_unitar_val,gnPVal)/proc_Tvav,gnPVal)) As vdiscountftva,;
|
|
IIF(pret_cu_tva = 0,;
|
|
Round(Round(discount_unitar_val,gnPVal)*Nvl(cantitate,1),gnPVal),;
|
|
ROUND(Round(discount_unitar_val,gnPVal)*Nvl(cantitate,1),gnPVal) - ;
|
|
Round(Round(Round(discount_unitar_val,gnPVal)*Nvl(cantitate,1),gnPVal)*(proc_Tvav-1)/proc_Tvav, gnPVal)) As vvaldiscountftva,;
|
|
IIF(pret_cu_tva = 0,;
|
|
ROUND(Round(Round(discount_unitar_val,gnPVal)*Nvl(cantitate,1),gnPVal)*(proc_Tvav-1),gnPVal),;
|
|
Round(Round(Round(discount_unitar_val,gnPVal)*Nvl(cantitate,1),gnPVal)*(proc_Tvav-1)/proc_Tvav, gnPVal)) As vvaldiscounttva,;
|
|
IIF(pret_cu_tva = 0,;
|
|
Round((Round(Pret_val,gnPVal)-Round(discount_unitar_val,gnPVal))*Nvl(cantitate,1),gnPVal),;
|
|
ROUND((Round(Pret_val,gnPVal)-Round(discount_unitar_val,gnPVal))*Nvl(cantitate,1),gnPVal) - ;
|
|
Round(Round((Round(Pret_val,gnPVal)-Round(discount_unitar_val,gnPVal))*Nvl(cantitate,1), gnPVal)*(proc_Tvav-1)/proc_Tvav, gnPVal)) As vvaldiminuatftva,;
|
|
IIF(pret_cu_tva = 0,;
|
|
Round(Round((Round(Pret_val,gnPVal)-Round(discount_unitar_val,gnPVal))*Nvl(cantitate,1),gnPVal)*(proc_Tvav-1),gnPVal),;
|
|
Round(Round((Round(Pret_val,gnPVal)-Round(discount_unitar_val,gnPVal))*Nvl(cantitate,1), gnPVal)*(proc_Tvav-1)/proc_Tvav, gnPVal)) As vvaldiminuattva, ;
|
|
Nvl(id_vanzare_set,00000000000000000) As id_set_fact,;
|
|
Iif(Nvl(id_gestiune,0)<>0,1,0) As gestionabil, ;
|
|
id_ctr,numar_contract,id_valuta,tip_valuta,Nvl(Curs,1.000) As Curs,NVL(multiplicator,1) as multiplicator,nume_val, ;
|
|
CAST(IIF(TYPE(tcCursorSursa+".codnc8")='U','',codnc8) as V(20)) as codnc8, ;
|
|
CAST(IIF(TYPE(tcCursorSursa+".codcpv")='U','',codcpv) as V(20)) as codcpv ;
|
|
From (tcCursorSursa)
|
|
If tnDiscount<> 0
|
|
Select (tcCursorDestinatie)
|
|
Calculate Sum(valdiminuatftva),Sum(vvaldiminuatftva),Max(id_temp) To lnTotalBaza,lnTotalBazaVal,lnIdTemp
|
|
Select (tcCursorDestinatie)
|
|
Append Blank
|
|
Replace denumire With Replicate('Z',20),cantitate With 1,;
|
|
pretftva With lnTotalBaza,discountftva With tnDiscount,valdiscountftva With tnDiscount,;
|
|
valdiscounttva With Round(tnDiscount * (tnProcTvav - 1),gnPc),;
|
|
vpretftva With lnTotalBazaVal,vdiscountftva With tnDiscountVal,vvaldiscountftva With tnDiscountVal,;
|
|
vvaldiscounttva With Round(tnDiscountVal * (tnProcTvav - 1),gnPVal),;
|
|
proc_Tvav With tnProcTvav,id_temp With lnIdTemp+1
|
|
Endif
|
|
Endproc && prelucreaza_facturacrs
|
|
*********************************************************************************************************
|
|
*!* modificare v 2.0.67
|
|
*!* Procedure creeaza_crsfactura_rate
|
|
*!* If Used('crsfactura')
|
|
*!* Use in crsfactura
|
|
*!* EndIf
|
|
*!* Create Cursor crsfactura(id_rata N(20),id_temp N(20),den_rata c(100),data_rata d, data_scadenta d,um c(10),denumire c(100),codmat c(100),codmatf c(100),codbare c(50),;
|
|
*!* explicatie c(240),nr_rata N(20), valftva N(20,4), valtva N(20,4), valctva N(20,4),serie c(100),Curs N(20,4),id_jtva_coloana N(20),;
|
|
*!* proc_tvav N(20,4),cu_tva N(1),pretftva N(20,4),pretctva N(20,4),tip_valuta N(1),vpretftva N(20,4),vpretctva N(20,4),discountftva N(20,4))
|
|
*!* Endproc && creeaza_crsfactura_rate
|
|
*!* modificare v 2.0.67 ^
|
|
*********************************************************************************************************
|
|
Procedure creeaza_backup_cursoare_facturare
|
|
*!* modificare 03.06.2013
|
|
*!* *!* modificare v 2.0.56
|
|
*!* *!* Dimension laStructura(1,18),laStructura2(1,18)
|
|
*!* sterge_backup_cursoare_facturare()
|
|
*!* copiaza_structura_cursor([crsfactura],[bckpfactura])
|
|
*!* *!* Afields(laStructura,[crsfactura])
|
|
*!* *!* Create Cursor bckpfactura From Array laStructura
|
|
*!* *!* modificare v 2.0.56 ^
|
|
*!* Select * From crsfactura Into Cursor bckpfactura
|
|
*!* *!* If Used('crsfacturaset')
|
|
*!* *!* Afields(laStructura2,[crsfacturaset])
|
|
*!* *!* Create Cursor bckpfacturaset From Array laStructura2
|
|
*!* *!* Select * From crsfacturaset Into Cursor bckpfacturaset
|
|
*!* *!* Endif
|
|
*!* Release laStructura,laStructura2
|
|
creeaza_backup_cursoare([crsfactura]) && in oproceduri_comune.prg
|
|
*!* modificare 03.06.2013 ^
|
|
Endproc && creeaza_backup_cursoare_facturare
|
|
*********************************************************************************************************
|
|
Procedure repune_backup_cursoare_facturare
|
|
*!* modificare ROAFACTURARE v 2.0.46
|
|
*!* If Used('bckpfactura')
|
|
*!* Select * From bckpfactura Into Cursor crsfactura Readwrite
|
|
*!* Use In bckpfactura
|
|
*!* Endif
|
|
If Used('crsfacturaset')
|
|
Use In crsfacturaset
|
|
Endif
|
|
*!* modificare 03.06.2013
|
|
*!* If Used('bckpfactura')
|
|
*!* Select crsfactura
|
|
*!* lnRecno = Recno()
|
|
*!* Select * From bckpfactura Into Cursor crsfactura Readwrite
|
|
*!* Use In bckpfactura
|
|
*!* Select crsfactura
|
|
*!* If Reccount('crsfactura') > 0
|
|
*!* Go Min(lnRecno,Reccount('crsfactura'))
|
|
*!* Else
|
|
*!* Go Top
|
|
*!* Endif
|
|
*!* Endif
|
|
*!* *!* modificare ROAFACTURARE v 2.0.46 ^
|
|
*!* *!* If Used('bckpfacturaset')
|
|
*!* *!* Select * From bckpfacturaset Into Cursor crsfacturaset Readwrite
|
|
*!* *!* Use In bckpfacturaset
|
|
*!* *!* Endif
|
|
repune_backup_cursoare([crsfactura]) && in oproceduri_comune.prg
|
|
*!* modificare 03.06.2013 ^
|
|
Endproc && repune_backup_cursoare_facturare
|
|
*********************************************************************************************************
|
|
Procedure sterge_backup_cursoare_facturare
|
|
*!* modificare 03.06.2013
|
|
*!* If Used('bckpfactura')
|
|
*!* Use In bckpfactura
|
|
*!* Endif
|
|
*!* *!* If Used('bckpfacturaset')
|
|
*!* *!* Use In bckpfacturaset
|
|
*!* *!* Endif
|
|
sterge_backup_cursoare([crsfactura])
|
|
*!* modificare 03.06.2013 ^
|
|
Endproc && sterge_backup_cursoare_facturare
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
Procedure alege_banci_facturare
|
|
Local ofrmbanca
|
|
lcSql = [select 0 as ales,Nvl(b.banca,b.denumire) as banca,b.cont_banca as cont,b.reg_comert as swift,] + ;
|
|
[c.adresa from coresp_tip_part a ] + ;
|
|
[join nom_parteneri b on a.id_part = b.id_part and b.sters = 0 and b.inactiv = 0 ] + ;
|
|
[left join vadrese_parteneri c on a.id_part = c.id_part and c.principala = 1 ] + ;
|
|
[where a.id_tip_part = ] + Iif(poDate.in_valuta=0,[24],[25]) + ;
|
|
[ and b.cont_banca is not null order by 2]
|
|
lnSucces = goExecutor.oExecute(lcSql,[crsbanci])
|
|
If lnSucces < 0
|
|
AMESSAGEBOX(goExecutor.cEroare,16,"Eroare")
|
|
Return
|
|
Endif
|
|
gnButon = 1
|
|
If Reccount('crsbanci')>1
|
|
Select crsbanci
|
|
Go Top
|
|
ofrmbanca = Createobject('frm_alege_banca')
|
|
ofrmbanca.Show(1)
|
|
Release ofrmbanca
|
|
Endif
|
|
If gnButon = 1
|
|
Select banca,Cont,swift,adresa From crsbanci Where ales = 1 Into Array laArray
|
|
Dimension laArray(3,4)
|
|
poFirma.banca = Iif(!Empty(laArray(1,1)),laArray(1,1),Null)
|
|
poFirma.cont_banca = Iif(!Empty(laArray(1,2)),laArray(1,2),Null)
|
|
poFirma.b_swift = Iif(!Empty(laArray(1,3)),laArray(1,3),Null)
|
|
poFirma.b_adresa = Iif(!Empty(laArray(1,4)),laArray(1,4),Null)
|
|
poFirma.banca2 = Iif(!Empty(laArray(2,1)),laArray(2,1),Null)
|
|
poFirma.cont_banca2 = Iif(!Empty(laArray(2,2)),laArray(2,2),Null)
|
|
poFirma.b_swift2 = Iif(!Empty(laArray(2,3)),laArray(2,3),Null)
|
|
poFirma.b_adresa2 = Iif(!Empty(laArray(2,4)),laArray(2,4),Null)
|
|
poFirma.banca3 = Iif(!Empty(laArray(3,1)),laArray(3,1),Null)
|
|
poFirma.cont_banca3 = Iif(!Empty(laArray(3,2)),laArray(3,2),Null)
|
|
poFirma.b_swift3 = Iif(!Empty(laArray(3,3)),laArray(3,3),Null)
|
|
poFirma.b_adresa3 = Iif(!Empty(laArray(3,4)),laArray(3,4),Null)
|
|
Endif
|
|
Use In crsbanci
|
|
Endproc && alege_banci_facturare
|
|
*********************************************************************************************************
|
|
Procedure alege_optiuni_listare_facturare
|
|
Local loFrmOptiuniList,lcCursorSerii,lnVizibile
|
|
|
|
lnVizibile = 5
|
|
If Used('crsfactura')
|
|
lcCursorSerii = [crsverserartfact]
|
|
Select Recno() From crsfactura Where !Empty(Nvl(serie,'')) OR !EMPTY(NVL(lot, '')) Into Cursor (lcCursorSerii)
|
|
If Used(lcCursorSerii)
|
|
If Reccount(lcCursorSerii)=0
|
|
poDate.listare_serii = 0
|
|
lnVizibile = lnVizibile - 1
|
|
Endif
|
|
Use In (lcCursorSerii)
|
|
Endif
|
|
Endif
|
|
|
|
If !Used('crsfacturaset')
|
|
poDate.listare_componenta_set = 0
|
|
poDate.listare_recapitulatie = 0
|
|
lnVizibile = lnVizibile - 2
|
|
Else
|
|
If poDate.eProforma = 1
|
|
poDate.listare_recapitulatie = 0
|
|
lnVizibile = lnVizibile - 1
|
|
Endif
|
|
Endif
|
|
|
|
*!* modificare ROAFACTURARE v 2.0.67
|
|
*!* If !(Nvl(gnListaLivrare,0) = 1 And poDate.eProforma = 0 And !Inlist(pnTipFacturare,1,2) And !InList(poDate.tip,4,7))
|
|
If !(Nvl(gnListaLivrare,0) = 1 And poDate.eProforma = 0 And !Inlist(poDate.tip,4,7))
|
|
*!* modificare ROAFACTURARE v 2.0.67 ^
|
|
poDate.listare_lista_livrare = 0
|
|
poDate.listare_componenta_set_ll = 0
|
|
lnVizibile = lnVizibile - 2
|
|
Else
|
|
*!* modificare ROAFACTURARE v 2.0.61 : daca nu exista articole gestionabile,nu se mai listeaza
|
|
If Used('crsfactura')
|
|
lcCursorGest = [crsvergestartfact]
|
|
Select Recno() From crsfactura Where gestionabil = 1 Into Cursor (lcCursorGest)
|
|
If Used(lcCursorGest)
|
|
If Reccount(lcCursorGest)=0
|
|
poDate.listare_lista_livrare = 0
|
|
lnVizibile = lnVizibile - 1
|
|
Endif
|
|
Use In (lcCursorGest)
|
|
Endif
|
|
Endif
|
|
*!* If !Used('crsfacturaset')
|
|
If !Used('crsfacturaset') Or poDate.listare_lista_livrare = 0
|
|
*!* modificare ROAFACTURARE v 2.0.61 ^
|
|
poDate.listare_componenta_set_ll = 0
|
|
lnVizibile = lnVizibile - 1
|
|
Endif
|
|
Endif
|
|
|
|
If lnVizibile <> 0
|
|
loFrmOptiuniList = Createobject('frm_alege_optlistfact')
|
|
loFrmOptiuniList.Show(1)
|
|
Endif
|
|
Release loFrmOptiuniList,lcCursorSerii,lnVizibile
|
|
Endproc && alege_optiuni_listare_facturare
|
|
*********************************************************************************************************
|
|
Procedure completeaza_explicatie_tva
|
|
Lparameters tcCursor
|
|
Local lnNrCote,lnNrCote0,lcListaId,lcListaIdEx,lcSql,lnSucces
|
|
|
|
Use In (SELECT('crsproctvav'))
|
|
|
|
IF TYPE(tcCursor + '.id_jtva_coloana_ex') = 'N'
|
|
Select Distinct id_jtva_coloana,id_jtva_coloana_ex, proc_tva From (tcCursor) Into Cursor crsproctvav
|
|
else
|
|
Select Distinct id_jtva_coloana, 0 as id_jtva_coloana_ex, proc_tva From (tcCursor) Into Cursor crsproctvav
|
|
ENDIF
|
|
If Reccount('crsproctvav')>0
|
|
lnNrCote = Reccount('crsproctvav')
|
|
lnNrCote0 = 0
|
|
lcListaId = []
|
|
lcListaIdEx = [-9999]
|
|
Select crsproctvav
|
|
Scan For proc_tva = 1 And Nvl(id_jtva_coloana,-1)<>-1
|
|
lcListaId = lcListaId + [,] + Alltrim(Str(id_jtva_coloana))
|
|
IF !EMPTY(NVL(id_jtva_coloana_ex,0))
|
|
lcListaIdEx = lcListaIdEx + [,] + Alltrim(Str(id_jtva_coloana_ex))
|
|
ENDIF
|
|
lnNrCote0 = lnNrCote0 + 1
|
|
ENDSCAN
|
|
lcListaId = IIF(!EMPTY(m.lcListaId), Substr(lcListaId,2), '')
|
|
*lcListaIdEx = IIF(!EMPTY(m.lcListaIdEx), Substr(lcListaIdEx,2), '')
|
|
|
|
If lnNrCote0 > 0
|
|
*!* modificare ROAFACTURARE 2.0.80 : am adaugat NVL(explicatie,denumire) in loc de denumire
|
|
TEXT TO lcSql TEXTMERGE noshow
|
|
SELECT j.id_jtva_coloana, jex.id_jtva_coloana_ex, NVL(jex.denumire, j.denumire) as denumire from
|
|
(select id_jtva_coloana,NVL(explicatie,denumire) as denumire from jtva_coloane where id_jtva_coloana in (<<m.lcListaId>>)) j left join
|
|
(select id_jtva_coloana, id as id_jtva_coloana_ex, explicatie as denumire from jtva_coloane_explicatii where id in (<<m.lcListaIdEx>>)) jex on jex.id_jtva_coloana = j.id_jtva_coloana
|
|
ENDTEXT
|
|
lnSucces = goExecutor.oExecute(lcSql,[crsexpl])
|
|
If lnSucces < 0
|
|
AMESSAGEBOX(goExecutor.cEroare,16,"Eroare")
|
|
Else
|
|
If Reccount('crsexpl')=1 And lnNrCote = lnNrCote0
|
|
Select crsexpl
|
|
poDate.explicatie_tva = Alltrim(denumire)
|
|
ENDIF
|
|
|
|
Select crsexpl
|
|
Scan
|
|
lnIdJtva = NVL(id_jtva_coloana,0)
|
|
lnIdJtvaEx = NVL(id_jtva_coloana_ex,0)
|
|
lcDenumire = Alltrim(denumire)
|
|
Select (tcCursor)
|
|
IF TYPE(tcCursor + '.id_jtva_coloana_ex') = 'N' AND !EMPTY(m.lnIdJtvaEx)
|
|
Replace expltva With m.lcDenumire For NVL(id_jtva_coloana_ex,0) = m.lnIdJtvaEx
|
|
ELSE
|
|
Replace expltva With m.lcDenumire For NVL(id_jtva_coloana,0) = m.lnIdJtva
|
|
ENDIF
|
|
Select crsexpl
|
|
Endscan
|
|
|
|
Use In crsexpl
|
|
Endif
|
|
Endif
|
|
Endif
|
|
|
|
If Used('crsproctvav')
|
|
Use In crsproctvav
|
|
Endif
|
|
Endproc && completeaza_explicatie_tva
|
|
*********************************************************************************************************
|
|
Procedure completeaza_explicatie_contract
|
|
Lparameters tcCursor
|
|
Local lnPozI,lnPozF,lnIdCtr,lnIdCtrPrec,lnDimArray,lnIndex,lnIndexMax,lcNrContract,lnNrInreg
|
|
lnDimArray = 20
|
|
Dimension laContracte[lnDimArray,3] && 1 - id_ctr; 2 - numar si data contract; 3 - pozitiile din factura coresp.ctr.
|
|
lnIndexMax = 1
|
|
lnIdCtrPrec = Null
|
|
lcNrContract = []
|
|
lnNrInreg = 0
|
|
lnIndex = 1
|
|
Select (tcCursor)
|
|
Scan For cantitate <> 0
|
|
lnIdCtr = id_ctr
|
|
lnNrInreg = lnNrInreg+1
|
|
Do Case
|
|
Case Isnull(lnIdCtrPrec) And Isnull(lnIdCtr)
|
|
*!* nimic
|
|
Case Nvl(lnIdCtr,-1) = Nvl(lnIdCtrPrec,-1)
|
|
lnPozF = lnNrInreg && Recno()
|
|
Otherwise
|
|
If !Isnull(lnIdCtrPrec)
|
|
lnIndex = Ascan(laContracte,lnIdCtrPrec,1,lnIndexMax*3,1,8)
|
|
If lnIndex = 0
|
|
lnIndex = lnIndexMax
|
|
lnIndexMax = lnIndexMax + 1
|
|
laContracte[lnIndex,1] = lnIdCtrPrec
|
|
laContracte[lnIndex,2] = lcNrContract
|
|
laContracte[lnIndex,3] = []
|
|
Endif
|
|
If lnPozI = lnPozF
|
|
laContracte[lnIndex,3] = laContracte[lnIndex,3] + Alltrim(Str(lnPozI)) + [,]
|
|
Else
|
|
laContracte[lnIndex,3] = laContracte[lnIndex,3] + Alltrim(Str(lnPozI)) + [-] + Alltrim(Str(lnPozF)) + [,]
|
|
Endif
|
|
Endif
|
|
If !Isnull(lnIdCtr)
|
|
lnPozI = lnNrInreg && Recno()
|
|
lnPozF = lnNrInreg && Recno()
|
|
Else
|
|
lnPozI = 0
|
|
lnPozF = 0
|
|
Endif
|
|
Endcase
|
|
lnIdCtrPrec = lnIdCtr
|
|
lcNrContract = Alltrim(numar_contract)
|
|
Endscan
|
|
If !Isnull(lnIdCtrPrec)
|
|
lnIndex = Ascan(laContracte,lnIdCtrPrec,1,lnIndexMax*3,1,8)
|
|
If lnIndex = 0
|
|
lnIndex = lnIndexMax
|
|
laContracte[lnIndex,1] = lnIdCtrPrec
|
|
laContracte[lnIndex,2] = lcNrContract
|
|
laContracte[lnIndex,3] = []
|
|
Endif
|
|
If lnPozI = lnPozF
|
|
laContracte[lnIndex,3] = laContracte[lnIndex,3] + Alltrim(Str(lnPozI)) + [,]
|
|
Else
|
|
laContracte[lnIndex,3] = laContracte[lnIndex,3] + Alltrim(Str(lnPozI)) + [-] + Alltrim(Str(lnPozF)) + [,]
|
|
Endif
|
|
Endif
|
|
|
|
*!* modificare ROAFACTURARE v 2.0.77
|
|
&& 1-3 : conditia !Empty(Nvl(laContracte[lnIndex,2],[])) a fost adaugata pentru ca daca
|
|
&& pe contract nu e stipulat sa apara textul aditional, atunci pe factura nu aparea nr. contractului, ci doar
|
|
&& "Conform contractului nr. "
|
|
pcExplicatieContract = []
|
|
If lnIndexMax = 1
|
|
If !Empty(Nvl(laContracte[lnIndex,2],[])) && 1
|
|
pcExplicatieContract = [Conform contractului nr. ] + laContracte[lnIndex,2]
|
|
Endif && 2
|
|
Else
|
|
For lnIndex = 1 To lnIndexMax
|
|
If !Empty(laContracte[lnIndex,1]) And !Empty(Nvl(laContracte[lnIndex,2],[])) && 3
|
|
pcExplicatieContract = pcExplicatieContract + [;] + Substr(laContracte[lnIndex,3],1,Len(laContracte[lnIndex,3])-1) + [ cf. contractului nr. ] + laContracte[lnIndex,2]
|
|
Endif
|
|
Endfor
|
|
pcExplicatieContract = Substr(pcExplicatieContract,2)
|
|
Endif
|
|
Release lnPozI,lnPozF,lnIdCtr, lnIdCtrPrec, lnDimArray,lnIndex,lcNrContract,lnIndexMax
|
|
Endproc && completeaza_explicatie_contract
|
|
*********************************************************************************************************
|