Files
roacont/Programe/penalitati.prg

114 lines
4.8 KiB
Plaintext

Procedure penalitati
Lparameters tlEvaluare
*!* 10.03.2010
*** tlEvaluare : .T. daca se doreste un calcul al penalitatilor in functie de o data de referinta
*** tlEvaluare : .F. (default) daca se doreste facturare penalitati la momentul incasarii facturilor restante
*!* 10.03.2010 ^
Private pdDataReferinta
pdDataReferinta = Date()
Private pcNumeFiltru, pcContractFiltru, pcExplicatiaFiltru
Store "" To pcNumeFiltru, pcContractFiltru, pcExplicatiaFiltru
*!* selectez incasarile din registrul jurnal care s-au incasat dupa data scadenta a facturilor corespondente
*!* left join cCurs ci on c.id_tipv = ci.id_tipv AND i.dataact = ci.datacurs ;
*!* LEFT JOIN tipv tv ON c.id_tipv = tv.id ;
If !tlEvaluare
*!* 14.03.2011
SELECT NUME, NRACT, DATAACT, PERECHE2, SUM(SUMA) as suma, SUM(SUMA_2) as suma_2 ;
FROM act ;
WHERE INLIST(SCC,'411','461') AND SCD <> '4118' ;
GROUP BY NUME, NRACT, DATAACT, PERECHE2 ;
INTO CURSOR cAct
Select F.Id As FACT_ID, Cl.Id As clie_id, F.PL_CLIE_ID As ctr_id, F.NRFACT, F.DATAFACT, F.DATASCAD, F.VALCTVA, F.TOTVAL, F.Curs, F.VALUTA, F.INTERN, ;
F.EXPLICATIA, C.contract, ;
I.NUME, I.nract, I.DATAACT, I.SUMA, I.SUMA_2 AS SUMAVAL, I.PERECHE2, C.PPENZI, I.DATAACT - F.DATASCAD As NR_ZILE, ;
round(Round(PPENZI/100*SUMA,GNZ)*(I.DATAACT - F.DATASCAD), GNZ) As penalitati ;
from FACTURARE F Join ACNCONTRACTE C On F.PL_CLIE_ID = C.Id ;
join ACNCLIENTI Cl On C.clie_id = Cl.Id ;
join cAct I On F.NRFACT = I.PERECHE2 And Padr(Cl.NUME,30,' ') = Padr(I.NUME,30,' ') ;
where F.TIP <> 6 AND I.DATAACT > F.DATASCAD ;
order By I.NUME, F.DATAFACT, F.NRFACT, I.DATAACT, I.nract ;
into Cursor cFiordTemp Readwrite
*!* 14.03.2011 ^
Select penalitati
Scan For Year(DATAACT)*12 + Month(DATAACT) = Val(m.gcAn) * 12 + Val(m.gcNl)
Scatter Name loRec
Delete From cFiordTemp Where FACT_ID = loRec.FACT_ID And nract = loRec.nract And DATAACT = loRec.DATAACT
Endscan
&& nu facturez facturile/incasarile pe care utilizatorul le-a sters
Select penalitati_sters
Scan For Year(DATAACT)*12 + Month(DATAACT) = Val(m.gcAn) * 12 + Val(m.gcNl)
Scatter Name loRec
Delete From cFiordTemp Where FACT_ID = loRec.FACT_ID And nract = loRec.nract And DATAACT = loRec.DATAACT And SUMA = loRec.SUMA
Endscan
Select * From cFiordTemp Into Cursor CFIORD NOFILTER Readwrite
Use In (Select('cFiordTemp'))
Else
loPenalitatiInfo = Createobject("frm_penalitati_info")
loPenalitatiInfo.Show(1)
If gnButon = 2
Return
ENDIF
*!* 14.03.2011
*** SELECTEZ FACTURILE DIN FACTURARE (EMISE DE COMERCIAL) DAR CU SOLD IN VANZLUN SI DEBLUN IN LUNA CURENTA
*!* 12.09.2011
Select i.id_fact, i.id_part, c.id_ctr, i.nract as nrfact, i.dataact as datafact, i.datascad, (i.precdeb+i.debit) as valctva, ;
(i.precvaldeb+i.valdebit) as totval, i.Curs, i.id_valuta, i.nume_val as valuta, ;
i.explicatia, c.contract, ;
i.nume, 0 As nract, pdDataReferinta As DATAACT, ;
(i.precdeb+i.debit)-(i.preccred+i.credit) As suma, ;
(i.precvaldeb+i.valdebit)-(i.precvalcred+i.valcredit) AS sumaval, ;
0 As PERECHE2, c.ppenzi, pdDataReferinta - i.datascad As nr_zile, ;
round(Round(c.ppenzi/100*((i.precdeb+i.debit)-(i.preccred+i.credit)), gnPA)*(pdDataReferinta - i.datascad), gnPA) As penalitati ;
from vireg_parteneri i Join contracte C On i.id_part = c.id_part ;
where i.an = gnAn AND i.luna = gnLuna AND F.TIP <> 6 AND pdDataReferinta > F.DATASCAD And ;
V.TOTCTVA - V.ACHITAT > 0 ;
order By Cl.NUME, F.DATAFACT, F.NRFACT ;
into Cursor CFIORD Readwrite
*!* 12.09.2011 ^
*!* 14.03.2011 ^
Endif
*!* 14.03.2011
UPDATE cFiord SET valuta = "", totval = 0, sumaval = 0 WHERE intern
GO TOP IN cFiord
*!* 14.03.2011 ^
Select NUME Where .F. From CFIORD Into Cursor cClientiTemp Readwrite
Select Distinct NUME From CFIORD Order By NUME Into Cursor cClientiTemp2
If _Tally > 1 && daca vreau facturile pentru toti client nu mai adaug <TOTI> pentru filtrarea facturilor
Insert Into cClientiTemp (NUME) Values ('<TOTI>')
Endif
Select cClientiTemp
Append From Dbf('cClientiTemp2')
Use In (Select('cClientiTemp2'))
Select CFIORD
*!*Do Form frm_penalitati Name loPenalitati Noshow
loPenalitati = Createobject("frm_penalitati")
*!* 10.03.2010
loPenalitati.lEvaluare = .T.
loPenalitati.dDataReferinta = pdDataReferinta
If tlEvaluare
loPenalitati.lb_titlu_alb_b121.Caption = 'Penalitati - evaluare la ' + Dtoc(m.pdDataReferinta)
loPenalitati.grdPenalitati.cNrDoc.Visible = .F.
loPenalitati.grdPenalitati.cSuma.Header1.Caption = 'Sold restant'
loPenalitati.grdPenalitati.cDataDoc.Header1.Caption = 'Data referinta'
loPenalitati.cmd_Executa1.Visible = .F.
loPenalitati.cmd_Executa1.Visible = .F.
Endif
*!* 10.03.2010 ^
loPenalitati.Show(1)
Use In (Select('cFiord'))
Endproc && Penalitati