[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