Fórum parcelas do carnê #58118
03/04/2007
0
nesta miha SP abaixo, eu estou gerando umas parcelas de um determinado carne, só quando inclemento um novo :PERIODO (proxima data de vencimento) não consigo fazer com que as datas fiquem com periodos de 30 dias.... por exemplo um carne em 12 pagamentos com aprimeira para dia ( 01/04/2007 ) fica assim:
01/05/2007
31/05/2007
30/06/2007
30/07/2007
29/08/2007
28/09/2007
28/10/2007
27/11/2007
27/12/2007
26/01/2007
25/02/2007
26/03/2007
eu tambem precisaria de uma outra forma para fixar por data de vencimento e não por periodo, por exemplo vencimento todo dia 30 de cada mês...
Erivando
Erivando
Curtir tópico
+ 0Posts
03/04/2007
Dmenin
pege o mes com um ´extract month´ ae some 1...nem q vc tenha q concatenar strings..ah, e cuidado que 12 +1 = 01 e aumenta um ano, não 13 :D
Gostei + 0
03/04/2007
Erivando
o fato é que em uma Sp dentro do banco de dados pode ´extract month´ ????
Gostei + 0
03/04/2007
Erivando
01/05/2007
31/05/2007
30/06/2007
30/07/2007
29/08/2007
28/09/2007
28/10/2007
27/11/2007
27/12/2007
26/01/2008
25/02/2008
26/03/2008
Gostei + 0
04/04/2007
Dmenin
Gostei + 0
04/04/2007
Erivando
vc teria um exemplo de como fazer isot?
Gostei + 0
08/04/2007
Rodolpho123
Meu exemplo não é bem um [b:7ea9dda350]extract[/b:7ea9dda350], mais mostra o que vc pode fazer dentro de uma procedure. Dá uma olhada no filtro e veja o trabalho com datas:
for select m.idassociado from mensatraso m inner join associados a on (a.idassociado = m.idassociado) inner join controlmensorg c on (a.idorgao = c.idorgao) where cast(´01.´ || m.mes || ´.´ || m.ano as date) >= cast(:DATAINIBLOQ as date) group by m.idassociado having count(m.idassociado) >= :MESESCONTROLE into :IDASSOCIADOMENS do begin
Este método é para selecionar a galera inadimplente por um período de [i:7ea9dda350]n[/i:7ea9dda350] meses em atraso...
Gostei + 0
08/04/2007
Sremulador
CREATE PROCEDURE "GERARPARCELA" ( "PCCL" INTEGER, "PCPL" INTEGER, "PCFC" INTEGER, "PCDV" DATE, "PCFB" INTEGER ) AS DECLARE VARIABLE I INTEGER; DECLARE VARIABLE D INTEGER; DECLARE VARIABLE M INTEGER; DECLARE VARIABLE A INTEGER; DECLARE VARIABLE C VARCHAR(10); DECLARE VARIABLE S DATE; DECLARE VARIABLE R DECIMAL(18, 4); DECLARE VARIABLE P DECIMAL(18, 4); DECLARE VARIABLE O DECIMAL(18, 4); DECLARE VARIABLE T DECIMAL(18, 4); DECLARE VARIABLE U INTEGER; DECLARE VARIABLE N INTEGER; DECLARE VARIABLE W INTEGER; DECLARE VARIABLE TR DATE; DECLARE VARIABLE CF INTEGER; DECLARE VARIABLE CC INTEGER; DECLARE VARIABLE DA INTEGER; BEGIN SELECT MAX(PCDV) FROM PARCELAS WHERE PCCL=:PCCL INTO :TR; if (PCDV <= TR) then BEGIN EXCEPTION A001; EXIT; END I=0; --Passa os parametros do plano SELECT PLVP, PLVI, PLIS, PLNP, PLPF FROM PLANOS WHERE PLCD=:PCPL INTO P, O, U, N, CF; SELECT FCCO FROM FUNCIONARIOS WHERE FCCD=:PCFC INTO R; T= (R / 100) * P; --SEPARA OS DIAS MESES E ANO S =PCDV; D = CAST (EXTRACT (DAY FROM (:PCDV)) AS INTEGER); M = CAST (EXTRACT (MONTH FROM (:PCDV)) AS INTEGER); A = CAST (EXTRACT (YEAR FROM (:PCDV)) AS INTEGER); I = 1; W = 0; --Vefifica se a parela e a 1º e se e uma inscrição if ((U=1) AND (:TR IS NULL)) then begin N=N+1; W=1; end DA=D; WHILE (I <= N) DO BEGIN INSERT INTO PARCELAS (PCCL, PCPL, PCDV, PCFC, PCRP, PCVL, PCVI, PCTP, PCFT, PCFB) VALUES (:PCCL, :PCPL, :S, :PCFC, :T, :P - :T, :O, :W, 0, :PCFB); if (CF=0) then M = M + 1; ELSE A = A + 1; I = I + 1; IF (M=13) THEN BEGIN M=1; A= A + 1; END IF ((D > 28) AND (M=2)) THEN D=28; C = CAST (M AS VARCHAR(2)) ||´/´|| CAST (D AS VARCHAR(2)) ||´/´|| CAST (A AS VARCHAR(4)); S = CAST (C AS DATE); W = 0; D = DA; END SUSPEND;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)