FoxPro/Visual FoxPro - AYUDAAA GENERAR MESES RUTINAS VFP8

 
Vista:

AYUDAAA GENERAR MESES RUTINAS VFP8

Publicado por AYUDAAAA (297 intervenciones) el 24/04/2006 20:43:10
Estoy en la etapa de finalizacion de un Software.

pero tengo un inconveniente que este para calcular la mora tiene un defecto que tengo que corregirlos.

Esto esta asi:

PARAMETROS

FECHA DE INICIO 01/12/2006
LA REGLA ES QUE SOLO SE GENERE EL MES ANTERIOR
SI FUESE EL CASO DE QUE
FECHA DE INICIO 01/01/2006
NO GENERA EL 5 % DE MORA

AHORA LA FECHA TOPE ES: 15/01/2006
COMO SE SE CUMPLIO 15 DIAS HABILES PARA PAGAR

ME GENERA EL 5% MORA EN LSO PRIMERO 15 DIAS DEL MES SIGUIENTE
ASI SUCESIVAMENTE.

AHORA EL IMPUESTO SOLO SE ENERA EN ENERO DE CADA AÑO. CUANDO LLEGUE EL MES SIGUIENTE SERA ASI SI YO LO GENERA HASTA DESDE 01/12/2006 AL 01/01/2007
SER VERIA ASI
NO. MES MESES AÑO IMPUESTO MORA
01 ENERO 2006 100 120
01 ENERO 2007 100 5

CUANDO YO CONSULTO DIGO QUE SOLO ME

SELECT * FROM ESTADOCUENTA WHERE IMPUESTO+MORA >0 PARA QUE NO ME MUESTRE LOS MESES QUE ESTAN ENTRE LAS FECHA QUE ME SIRVEN PARA CALCULAR LA MORA.

PREGUNTO:

COMO HACER PARA ESTAR GENERANDO LOS MESES SIN QUE ME BORRE LOS REGISTROS QUE TENGO EN ENERO Y AL MISMO TIEMPO CALCULAR LA MORA QUE ES 5 % MENSUAL. Y NO GUARDAR ESTOS MESES INECESARIOS.
YA QUE SE LLENA MAS RAPIDO LA BASE DE DATOS.

YA QUE EN LA TABLAS ESTA ASI

NO. MES MESES AÑO IMPUESTO MORA
01 ENERO 2006 100 15
02 FEB 2006 0 10
03 MARZO 2006 0 5

GENERO LOS MESES PARA CALCULAR 5 PORCIENTO MENSUAL. UNA IDEA PARA HACERLO.

gRACIAS
DOUGLAS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:AYUDAAA GENERAR MESES RUTINAS VFP8

Publicado por saul (2 intervenciones) el 25/04/2006 01:59:53
PUES TE DIGO LA VERDAD NO TE ENTENDI QUE REALMENTE NECESITAS
PERO TE MUESTO COMO CALCULO YO LA MORA MENSUAL
CON 15 DIAS DE GRACIA

xDate = Date() &&Fecha Recibo
xDate2 = fecha que le toca que pagar por la cuota

xDif_AMD(xDate,xDate2)

las variables dias de gracia, fecha de inicio mora, son datos que traigo desde
el inicio

Su no entiendes me comentas y te ayudo

bye

Saludos desde guatemala..


*-----------------------------------------------------
* FUNCTION Dif_AMD(tdIni, tdFin)
*-----------------------------------------------------
* Calcula la diferencia entre dos fechas en:
* años, meses y días
* Usa la función DiasDelMes()
*-----------------------------------------------------
FUNCTION Dif_AMD(tdIni, tdFin)
LOCAL ldAux, lnAnio, lnMes, lnDia, lcRet
* tdIni = Fecha de Pago
* ndiasG = Dias de Gracias para Mora
* dfMora = Fecha Inicio cobro de Mora
tdIni = tdIni + ndiasG

IF tdIni < dfMora &&La Fecha es menor a la activacion de Mora
tdIni = dfMora
*!* lnMes = 0
*!* RETURN lnMes
ENDIF
*--- Fecha inicial siempre menor
IF tdIni>tdFin
ldAux = tdIni
tdIni = tdFin
tdFin = ldAux
ENDIF
lnAnio = YEAR(tdFin) - YEAR(tdIni)
ldAux = GOMONTH(tdIni, 12 * lnAnio)
*--- No cumplio el año aun
IF ldAux > tdFin
lnAnio = lnAnio - 1
ENDIF
lnMes = MONTH(tdFin) - MONTH(tdIni)
IF lnMes < 0
lnMes = lnMes + 12
ENDIF
lnDia = DAY(tdFin) - DAY(tdIni)
IF lnDia < 0
lnDia = lnDia + DiasDelMes(tdIni)
ENDIF
*--- Si el dia es mayor, no cumplio el mes
IF (DAY(tdFin) < DAY(tdIni))
IF lnMes = 0
lnMes = 11
ELSE
*lnMes = lnMes - 1
ENDIF
ENDIF
IF lnAnio > 0
lnMes = lnMes + (lnAnio*12)
ENDIF
RETURN lnMes
ENDFUNC

*-----------------------------------------------------
* FUNCTION DiasDelMes(dFecha)
*------------------------------------------------
* Retorna los días de un mes. Usada por Dif_AMD
*------------------------------------------------
FUNCTION DiasDelMes(dFecha)
LOCAL ld
ld = GOMONTH(dFecha,1)
RETURN DAY(ld - DAY(ld))
ENDFUNC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar