Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema al Sumar Días a cierta Fecha (https://www.clubdelphi.com/foros/showthread.php?t=32765)

AGAG4 15-06-2006 17:45:43

Problema al Sumar Días a cierta Fecha
 
Buen día tengan compañeros, platico mi Gran Problema, tengo la siguiente función:
Código Delphi [-]
function SumaFechaD(Fecha:TDate; x:integer):string;
var
  Present: TDate;
begin
  Present:=Fecha+x;

  {Fecha = 08-Jun-2006
  X= 30
  Present = 22-Jun-2006
  if 22Jun2006 Menos 08Jun2006 <> 30 días entonces
                                           14 días
    Present = 22Jun2006 + (30 días - (22Jun2006 - 08Jun2006))
                        +  16 Días
    Present := 08Jul2006
   }
  {Condición para Asegurarnos de que el Vencimiento este correcto}
  if Present-Fecha <> X then
    Present:=Present+(X-(Present-Fecha));
    
  result:=DateToStr(Present);
end;

La finalidad de esta función es de sumar días a cierta Fecha, la uso para determinar los días de vencimiento de una factura de crédito, TODO funciona de maravilla si hago pruebas, pero en ocasiones me reportan que sale el vencimiento incorrecto es decir la fecha de vencimiento se determina dependiendo de los días de crédito del cliente, yo guardo en el Maestro de la Factura la Fecha de la Factura, Fecha de Vecimiento y Días de Crédito del Cliente, y aprox. de 2 a 4 facturas por semana salen de que teniendo el cliente 30 días de crédito, el vencimiento lo determina por 11,14,16,26,27 ó 28 días, asi sale impreso en la factura y asi se guarda en el maestro de la Factura, no se si tengo algun error en la función que presento arriba, la forma de calcular la fecha de vencimiento es:
Código Delphi [-]
Vecimiento := SumaFechaD(StrToDate(maFecEmision.text),tClientesDIASCRED.AsInteger);
Agredezco cualquier opinion.

Yosuun 15-06-2006 18:18:13

Hola No se si entiendo lo que quieres decir pero yo para sumar dias o meses a una fecha utilizo las funciones de delphi.

IncMonth (sumar Meses)
IncDay (sumar dias)

Extraido de la ayuda delphi.
---------------------------
function IncDay(const AValue: TDateTime; const ANumberOfDays: Integer = 1): TDateTime;
Description
IncDay returns the value of the AValue parameter, incremented by ANumberOfDays days. ANumberOfDays can be negative, to return a date N days previous.
The time of day specified by the AValue parameter is copied to the result.


Un saludo.

Mick 15-06-2006 18:28:49

No entiendo porque haces y deshaces lo hecho dentro de esa funcion, del mismo modo el if que pones es absurdo, que se pretende comprobar con eso ?? si el procesador a sumado mal ?? Si esto pudiese darse y para ello pusieses esa comprobacion, las sumas y restas que haces despues en el if:
Present:=Present+(X-(Present-Fecha));
Tambien pondrian fallar, de modo que tendrias que poner otro if para comprobar esta nuevas sumas y restas, y lo mismo con las operaciones del nuevo if, lo que significaria que tendrias que poner IFs infinitos. Es mas la misma condicion del if podria fallar de modo que no sirve para nada.

Adicionalmente la operacion,
Present:=Present+(X-(Present-Fecha));
Se simplifica en lo siguiente:
Present:= X+Fecha;
Que es lo mismo que tienes puesto en la primera linea.

En definitiva para sumar fechas no necesitas siquiera hacer ninguna funcion, pon simplemente:

NuevaFecha= Int(Fecha) + Dias;

O si tienes un delphi moderno llama a la siguiente funcion (la funcion hace lo mismo que arriba, simplemente suma los dias y listo):

NuevaFecha:= IncDay(Fecha,Dias);

Y NADA MAS.


Saludos
Miguel

AGAG4 15-06-2006 21:56:29

Gracias!!!!
 
Gracias Compañeros, yo se que el IF que tengo no es necesario y es absurdo de que el procesador no sume correctamente, pero no me da otra alternativa que ponerlo, pero espero no me suceda lo mismo con el IncDay

Gracias por sus respuestas.


La franja horaria es GMT +2. Ahora son las 21:38:42.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi