[firebase-br] parcelamento

Forum ASR & Associados forum em asreassociados.com.br
Sáb Mar 8 11:26:01 -03 2008


SET TERM !!;
CREATE PROCEDURE SP_PARCELAMENTO
(VALOR_TOTAL NUMERIC(13,2)
,DT_INI      DATE
,QTD_PARCELA SMALLINT)
RETURNS
(PARC_NUM   SMALLINT
,PARC_DT_VENC DATE
,PARC_VALOR  NUMERIC(13,2))
AS
DECLARE VARIABLE V_QTD_PARCELA  SMALLINT DEFAULT 1;
DECLARE VARIABLE V_VALOR_CONTROLE NUMERIC(13,2) DEFAULT 0;
BEGIN
  PARC_VALOR   = (VALOR_TOTAL / QTD_PARCELA);
  PARC_DT_VENC = DT_INI;
  WHILE (V_QTD_PARCELA <= QTD_PARCELA) DO
  BEGIN
    PARC_NUM = V_QTD_PARCELA;

    -- QUALQUER DIFERENÇA POR CAUSA DO CÁLCULO, IREMOS JOGAR NA ÚLTIMA 
PARCELA
    IF (PARC_NUM = QTD_PARCELA) THEN
      PARC_VALOR = PARC_VALOR + (VALOR_TOTAL - (PARC_VALOR * QTD_PARCELA ));

    SUSPEND;

    V_QTD_PARCELA = V_QTD_PARCELA + 1;
    PARC_DT_VENC  = PARC_DT_VENC  + 30;
  END
END !!
SET TERM ; !!

Exemplo:
SELECT * FROM SP_PARCELAMENTO(50000,CAST('04/01/2008' AS DATE),30)

Resultado:

PARC_NUM    PARC_DT_VENC    PARC_VALOR

1    01.04.2008    1.666,66
2    01.05.2008    1.666,66
3    31.05.2008    1.666,66
4    30.06.2008    1.666,66
5    30.07.2008    1.666,66
6    29.08.2008    1.666,66
7    28.09.2008    1.666,66
8    28.10.2008    1.666,66
9    27.11.2008    1.666,66
10    27.12.2008    1.666,66
11    26.01.2009    1.666,66
12    25.02.2009    1.666,66
13    27.03.2009    1.666,66
14    26.04.2009    1.666,66
15    26.05.2009    1.666,66
16    25.06.2009    1.666,66
17    25.07.2009    1.666,66
18    24.08.2009    1.666,66
19    23.09.2009    1.666,66
20    23.10.2009    1.666,66
21    22.11.2009    1.666,66
22    22.12.2009    1.666,66
23    21.01.2010    1.666,66
24    20.02.2010    1.666,66
25    22.03.2010    1.666,66
26    21.04.2010    1.666,66
27    21.05.2010    1.666,66
28    20.06.2010    1.666,66
29    20.07.2010    1.666,66
30    19.08.2010    1.666,86

Espero ter ajudado !!!

Atenciosamente,

Airton Salviano
Analista de Sistemas
www.asrtecnologia.com.br
www.pedeborracha.com

maria silva escreveu:
> alguem pode me ajudar por favor?
> quero dividir um valor em parcelas iguais e com vencimento mensal. Por ex.
> tenho 50.000,00 e que dividir em 30 meses.
> agradeco a ajuda.
> ______________________________________________
> 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