[firebase-br] PROCEDURE PARA GERAR PARCELAS ( COM OPÇÃO DE SOMENTE DIAS ÚTEIS)

Joao Marcos unixkiller em gmail.com
Sáb Mar 31 01:20:22 -03 2012


Li outro dia alguém precisando, precisei hoje e fiz.
Resolvi compartilhar com os colegas..

Obs: É necessário ter a tbUdf.dll instalada.

os parâmetros são
    DATA_INICIAL  = DATA DA PRIMEIRA PARCELA
    NUMERO_PARCELAS = QUANTAS PARCELAS GERAR
    PRAZO_DIAS =  INTERVALO EM DIAS ENTRE AS PARCELAS
    APENAS_UTEIS =  SE  FOR =1 GERA APENAS EM DIAS ÚTEIS.


Usem da forma que for preciso.
Abraço,




SET TERM ^ ;

CREATE PROCEDURE GERA_PARCELAS (
    DATA_INICIAL DATE,
    NUMERO_PARCELAS INTEGER,
    PRAZO_DIAS INTEGER,
    APENAS_UTEIS SMALLINT)
RETURNS (
    DATAVENCIMENTO DATE)
AS
DECLARE VARIABLE CTPARCELAS INTEGER;
begin

  ctParcelas=0;
  dataVencimento = :data_inicial;
  suspend;
  dataVencimento = :dataVencimento + :PRAZO_DIAS;


  while (ctParcelas < :NUMERO_PARCELAS-1) do
   begin
      if (:apenas_uteis = 1) then   --se forem apenas dias úteis...
       begin
         achouDiaUtil=0;
            if (  (udf_weekday(:dataVencimento) = 0) or
(udf_weekday(:dataVencimento) = 6))  then
              begin
                achouDiaUtil=0;
                dataVencimento=:dataVencimento + 1;
              end
            else
              begin
                suspend;
                dataVencimento=:dataVencimento + :PRAZO_DIAS;
                ctParcelas = :ctParcelas+1;
              end

       end
      else  /* se não for dias úteis */
       begin
         suspend;
         dataVencimento=:dataVencimento + :PRAZO_DIAS;
         ctParcelas = :ctParcelas +1;
       end
   end

 end
^

SET TERM ; ^













-- 
Real Softwares Tecnologia da Informação
João Marcos Santos da Silva - Software Engineer
(71) 9988-2928 , (71) 9267-9641,  (71) 3313-8730



Mais detalhes sobre a lista de discussão lista