[firebase-br] datas com dias FIXO
Cleiton Maciel
cleitonmaciell em gmail.com
Qui Maio 28 09:59:22 -03 2009
Olá pessoal, tudo na paz?
Galera fiz uma SP pra gerar contratos de reparcelamento de débitos de
clientes, já fiz e deu tudo certo.
Parcelou na quantidade de vezes que eu pedi, já contando os dias de
vencimento etc.
Mas meu caso é o seguinte, eu quero fixar a data de vencimento. Por exemplo
quero que todos os vencimentos
sejam sempre no dia 5 de cada mês, existe alguma função interna que faz algo
do tipo? Abaixo minha procedure caso alguém possa me da um help.
Tem só mais uma coisinha, quando executo a procedure direto pelo banco de
dados, ele me abre o retorno me mostrando
o resultado do processo. Só que ele não grava no banco até eu dar o commit,
que é o correto. Mas um mistério me assola, quando eu
executo a procedure via programa usando o componente TMDOStoredProc ele
grava fisicamente. Bom teoricamente é pra ocorre como
foi executado no banco e apenas dar o retorno solicitado.
Muito estranho isso não?
CREATE PROCEDURE GERA_CONTRATOS (
contrato integer,
numero integer,
serie char(3),
cliente integer,
conta_fin integer,
vendedor integer,
plano integer,
valor_primeira numeric(15,2),
valor_outras numeric(15,2),
desconto numeric(15,2),
vencimento date,
tipo char(1),
obs varchar(80),
parcela integer,
empresa integer,
emissao date,
data_atual date)
returns (
xcontrato integer,
xserie char(3),
xpar integer,
xemissao date,
xvencim date,
xnome_plano varchar(30),
xvalor numeric(12,2))
as
declare variable xparcela integer;
declare variable nome_plano varchar(30);
declare variable valor_parcela numeric(15,2);
declare variable dias_atrazo integer;
begin
xparcela = 0;
dias_atrazo = 0;
select descricao from planos where plano = :plano into :nome_plano;
-- gera contrato de reparcelamento de clientes
if (tipo = 'R') then
begin
while (xparcela <= :parcela - 1) do
begin
xparcela = xparcela + 1 ;
if (xparcela = 1) then
begin
valor_parcela = :valor_primeira;
dias_atrazo = :emissao - :vencimento;
end
else
begin
valor_parcela = :valor_outras;
vencimento = :vencimento + 30;
dias_atrazo = :emissao - :vencimento;
end
insert into DUPLICATAS_RECEBER
(NUMERO,DOCUMENTO, PARCELA, SERIE, EMISSAO, VENCIMENTO, PREVISAO,
VALOR,
TIPO_DOCUMENTO, AGENTE, VALOR_PAGO, DATA_PAGAMENTO, JUROS, SALDO,
HISTORICO,BAIXA,TIPO,COD_TIPO_DOCUMENTO, VENDEDOR,
conta,DESCPREVI,DESCONTO,
EMPRESA, dias_atrazo)
values (gen_id(duplicatas_receber_gen,1), :contrato, :xparcela,
:serie, :emissao,
:vencimento, :vencimento, :valor_parcela, :nome_plano, :cliente, 0,
null, 0, :valor_parcela, :obs, 'N', 'R', :plano, :vendedor,
:conta_fin,
0,0, :EMPRESA, :dias_atrazo);
xcontrato = :contrato;
xserie = :serie;
xpar = :xparcela;
xemissao = :emissao;
xvencim = vencimento;
xnome_plano = :nome_plano;
xvalor = valor_parcela;
suspend;
end
end
end
_____________________________________
Cleiton Maciel.
www.qualisoft.inf.br
Barreiras - Bahia
Mais detalhes sobre a lista de discussão lista