Ver Mensaje Individual
  #3  
Antiguo 05-11-2004
mosorio mosorio is offline
Miembro
 
Registrado: may 2003
Posts: 159
Reputación: 22
mosorio Va por buen camino
Lightbulb

Hola, Ya he logrado hacerlo, y por si a alguien le sirve, lo coloco aquí, creo que es importante para alguien que quiera hacer un programa donde se calcular el número de cuotas que se deben pagar en un crédito. Claro que la pega que tengo hasta ahora y que aún no he realizado es el calcular la cuota a partir de una formula dada, que sería lo optimo para el funcionamiento del mismo. Si alguien tiene una idea para completar el procedure que lo ponga aqui.
Ahí va:
Cita:
/* Procedure para generar el número de cuotas de un crédito
04/11/2004 : mosorio
Ver 1.0
*/

CREATE PROCEDURE GENERARCUOTAS (
IDOBLIGA INTEGER, INICIOPAGO DATE, CUOTAS INTEGER,
VALORCUOTA NUMERIC(12,2))
/* Retorna la última fecha de pago */
RETURNS ( FINALIZAPAGO TIMESTAMP)
AS
DECLARE VARIABLE INC INTEGER;
DECLARE VARIABLE DIA INTEGER;
DECLARE VARIABLE MES INTEGER;
DECLARE VARIABLE ANYO INTEGER;
DECLARE VARIABLE FECHACUOTA TIMESTAMP;
BEGIN
DIA = EXTRACT(DAY FROM :INICIOPAGO);
MES = EXTRACT(MONTH FROM :INICIOPAGO);
ANYO = EXTRACT(YEAR FROM :INICIOPAGO);
INC = 1;
FECHACUOTA = CAST(DIA||'/'||MES||'/'||ANYO AS TIMESTAMP);
WHILE (INC <= :CUOTAS) DO
BEGIN
INSERT INTO
DETALLEOBLIGACION (IDOBLIGACION, CUOTANUM, VALOR, FECHA, ESTADO)
VALUES
(:IDOBLIGA, :INC, :VALORCUOTA, :FECHACUOTA, 'PENDIENTE');

MES = MES + 1;
IF (MES = 13) THEN
BEGIN
ANYO = ANYO + 1;
MES = 1;
END
INC = INC + 1;
FECHACUOTA = CAST(DIA||'/'||MES||'/'||ANYO AS TIMESTAMP);
END
FINALIZAPAGO = :FECHACUOTA;
END
Habrán algunas cosas que no le serviran, pero la idea general es esta.
Lo he implementado en Firebird 1.5.1 y funciona correctamente.
El campo de VALORCUOTA, se puede asignar mediante una formula que la genere, esto es lo que aún no se como implementar, ya que como todos los comercios implementan operaciones distintas y porcentajes dif., no se como
hacerlo, es por tanto si alguien tiene aportaciones bienvenida sean.
También se le pueden adicionar cosas, para eso esta o mejorar, a ver que opinan los expertos en SQL, yo soy novato hago lo que puedo.

Saludos

Hago la anotación que he utilizado algún codigo de este mismo foro que me dio la idea y complementarlo.

Última edición por mosorio fecha: 05-11-2004 a las 09:43:19.
Responder Con Cita