[firebase-br] datas com dias FIXO
Zottis
zottissistemas em brturbo.com.br
Qui Maio 28 10:15:25 -03 2009
no Caso de datas Fixas, vc terá que manipular apenas o mes e o ano das
parcelas
extract(Day from Data_Inicial)....into :Dia
extract(Month from Data_Inicial)....into :Mes
extract(Year from Data_Inicial)....into :Ano
depois Você soma mais 1 ao Mes
verifica se o resultado (mês) é Menor ou igual a 12
se ele for maior que 12 entao mes = 1
ano = ano + 1;
depois formata o vencimento com o dia, o mes e o ano
cuidado com o mes 2 (fevereiro) com dias maiores que 28
espero que ajude.
Primeira parcela
Zottis(TeamFB Users)
Zottis Sistemas - 2009 Ano XII
Programação Delphi/PHP/Firebird/MySQL
"Um homem só tem o direito de olhar
a um outro de cima para baixo, quando
vai ajuda-lo a levantar-se".
Gabriel Garcia Marquez
----- Original Message -----
From: "Cleiton Maciel" <cleitonmaciell em gmail.com>
To: "'FireBase'" <lista em firebase.com.br>
Sent: Thursday, May 28, 2009 9:59 AM
Subject: [firebase-br] datas com dias FIXO
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
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista