Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Calcular la fecha de vencimiento de una factura (https://www.clubdelphi.com/foros/showthread.php?t=36392)

jjaen26 10-10-2006 19:39:08

Calcular la fecha de vencimiento de una factura
 
Saludos tengo una pregunta no se si alguien me pudiera ayudar, tengo que hacer una aplicación de gestión de documentos donde cada documento vence a los diez días hábiles, a partir de una fecha dada, mi pregunta es como se puede calcular con SQL la fecha de vencimiento de cada documento tomando en cuenta lo siguiente:

1) Los sábados y domingos no se trabaja.
2) Hay días festivos que solo lo son cada 6 años ó cada determinado número de años.

Me gustaría tener en una tabla los datos de los días festivos, de manera de no tener que capturar las mismas fechas para todos los años

Día,
Mes
Periodo (o sea cada cuando es festivo, 1= cada año, 4 = cada 4 años, 6 = cada 6 años, n = cada n años.)

3) Si un día festivo cae en domingo se recorre hasta el siguiente (Deseable).

Si alguien me pudiera dar una pista por favor se los agradecería.

Caral 10-10-2006 19:47:38

Hola
No se si sera tarea o que pero, por que no poner la fecha de vencimiento de la factura a la hora de hacerla y ya.?
No se seria mucho mas facil que calcular todo lo que quieres, no te parece.?
Saludos

marcoszorrilla 10-10-2006 20:10:46

Como muy bien te han explicado ya, lo mejor es tener un campo vencimiento de tipo fecha y ahí guardar el vencimiento. Otra cosa es calcularlo.

Para contar los días inhábiles, sería preciso tener un calendario, una tabla, en la que se guarden los días que no van a contar para este cálculo.

Una idea del cálculo puede ser contar los días feriados entre las fechas y luego ejecutar el cálculo.

Vcto:=Fecha + 10 + Dias_Feriados

Un Saludo.

kyke_mx 10-10-2006 20:25:38

Opcion
 
Dependiendo del motor de bases de dtos, yo te aconsejo que uses la clusula Not in de SQL:

Este operador devuelve aquellos registros cuyo campo indicado coincide con alguno de los indicados en una lista. Su sintaxis es:
expresión [Not] In(valor1, valor2, . . .)

SELECT * FROM Pedidos WHERE Provincia
In ('Madrid', 'Barcelona', 'Sevilla');

Caral 10-10-2006 20:36:33

Bueno
Creo e insisto que nada mas facil que poner un par de DateTimePicker en el from de facturacion y ya, tengo la fecha de creacion e indico la fecha de vencimiento.
Que pasa si por X razon el dia de vencimiento decido que va a ser otro, por ejemplo: Doy credito a 30 dias, pero a X cliente se lo voy a cambiar a 60 por que me cae bien, tengo que cambiar datos en la tabla ect..
Mientras pienso como hacer esto ya deje de facturar varios pedidos.
Por eso indique en mi primera nota si esto era una tarea, por que de lo contrario, nada a lo rapido y simple ademas 100% FUNCIONAL.
En la simpleza esta la virtud.
Saludos

jjaen26 10-10-2006 20:38:00

No me quiero atener a los posibles errores de los usuarios al calcular estas fechas, a demas bien vale la pena hacer este calculo por el tiempo que les ahorra a los usuario al calcularlo automaticamente y no tener que andar haciendo cuentas con un calendario ala mano cada vez que registren un documento.

Gracias

Lepe 10-10-2006 21:27:05

jjaen26 y Caral llevan razón.

Lo deseable, es tener 2 DateTimePickers y además proponer automáticamente la fecha de Vencimiento, así el usuario siempre es el que decide.

Intuyo que eres español jjaen26, En este truco tienes una rutina para calcular el domingo de Pascua (semana santa). Seguro que te sirve ;).

La rutina DayOfTheWeek(now) de la unidad Dateutils, te devuelve 7 si hoy es domingo, así que puedes sumarle 1 para cambiar al siguiente día.

Por cierto....
Cita:

Empezado por jjaen26
3) Si un día festivo cae en domingo se recorre hasta el siguiente (Deseable).

¿hasta el siguiente domingo?, oye, ¿tú donde trabajas? ¡¡que me voy para allá!!

Saludos

Caral 10-10-2006 21:33:01

:D :D :D
Coincido con esto:
Cita:

¿hasta el siguiente domingo?, oye, ¿tú donde trabajas? ¡¡que me voy para allá!!
Que ya estoy haciendo maletas.:D
Saludos Lepe que sin conocerte e oido tanto que ya asta te extrañaba.
Saludos


La franja horaria es GMT +2. Ahora son las 19:51:32.

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