22 diciembre 2009

Fórmula de Fecha

Las fórmulas de fecha se utilizan en multitud de sitios en Navision (para el cálculo de fechas de vencimiento en facturas, para el cálculo de fechas de caducidad y de garantía en productos, para el cálculo de fecha de entrega de productos según el plazo de entrega de los proveedores, para establecer la periodicidad de los diarios periódicos, etc.).

Por norma general utilizamos fórmulas de fecha simples (2D para indicar que el proveedor tiene un plazo de entrega de 2 días, 60D para calcular una fecha de vencimiento a 60 días, o 1M para indicar que la periodicidad de un diario periódico es de 1 mes). Las fórmulas de fecha, pero, pueden ser más complejas.

Empezaremos por enumerar las diferentes expresiones que se pueden utilizar en un campo de tipo Fórmula de Fecha. Posteriormente las combinaremos para obtener expresiones complejas y para acabar, daremos algunos ejemplos de cálculos de fecha que pueden ser de interés.



Accede al curso de Dynamics NAV



Sintaxis de la expresión de una Fórmula de Fecha

ExpresionDeFecha = < SubExpresión >
< SubExpresión > = [< Signo >]< Término >
         dónde < SubExpresión > = +|-
                  < Término > se desglosa a continuación 

< Término > = < Número >< UnidadTiempo >|< UnidadTiempo >< Número >|< Prefijo >
         dónde < Número > = número entero positivo
                  < UnidadTiempo >  = D|DS|S|M|T|A
                        (D = Día, DS = Día de la semana, S = Semana, M = Mes, T = Trimestre, A = Año) 
                  < Prefijo > = P
                        (P =  Presente)

Puede parecer complicado, pero no lo es en absoluto.

ExpresionDeFecha = < SubExpresión > significa que una Expresión de Fecha puede estar formada por ninguna o más subexpresiones.
Una SubExpresión puede o no tener Signo (+ o -) y tiene un Término.
Un Término puede ser un Número y una Unidad de Tiempo, una Unidad de Tiempo y un Número, o un Prefijo y una Unidad de Tiempo.

Por ejemplo, 30D (30 días) correspondería a un Número y una Unidad de Tiempo.
DS2 (día de la semana 2, martes) correspondería a una Unidad de Tiempo y un Número
PM (presente mes) correspondería a un Prefijo y una Unidad de Tiempo

Ejemplos

Las fórmulas de fecha se aplican a una Fecha de referencia, para obtener una fecha resultado

Fecha Referencia
Fórmula de Fecha
Descripción
Fecha resultado
Comentarios
21/12/2009
30D
30 días
20/01/2010
Suma 30 días a la fecha de referencia
21/12/2009
-30D
Menos 30 días
21/11/2009
Resta 30 días a la fecha de referencia
21/12/2009
1M
1 mes
21/01/2010
Suma un mes a la fecha de referencia
21/12/2009
1S
1 semana
28/12/2009
Suma una semana a la fecha de referencia
21/12/2009
1T
1 trimestre
21/03/2010
Suma un trimestre a la fecha de referencia
21/12/2009
1 año
21/12/2010
Suma un año a la fecha de referencia
21/12/2009
PS
Presente semana
27/12/2010
Último día de la presente semana
21/12/2009
PM
Presente mes
31/12/2009
Último día del presente mes
21/12/2009
-PM
Menos presente mes
01/12/2009
Primer día del presente mes
05/01/2010
PA
Presente año
31/12/2010
Último día del presente año
05/01/2010
-PA
Menos presente año
01/01/2010
Primer día del presente año
05/01/2010
PT
Presente trimestre
31/03/2010
Último día del presente trimestre
21/12/2009
DS1
Día de la semana 1 (lunes)
28/12/2209
Aunque 21/12/2009 es lunes, el cálculo busca el siguiente lunes desde una fecha dada
21/12/2009
DS2
Día de la semana 2 (martes)
22/12/2009
Siguiente martes
21/12/2009
-DS2
Menos día de la semana 2
14/12/2009
Anterior martes
21/12/2009
S1
Semana 1
04/01/2010
Primer día de la próxima semana 1



































Estas fórmulas de fecha se pueden combinar obteniendo fórmulas con más de una subexpresión. Las subexpresiones se evalúan una a una, de izquierda a derecha. Cada vez que se calcula una subexpresión, se obtiene una nueva de fecha de referencia a la que se aplicará la siguiente subexpresión.

Fecha Referencia
Fórmula de Fecha
Descripción
Fecha resultado
Comentarios
21/12/2009
PM+45D
Presente mes + 45 días
14/02/2010
Última fecha del mes + 45 días
21/12/2009
2M-PM
2 meses menos presente mes
01/02/2010
Primer día de dentro de dos meses







Algunas fechas importantes siguen reglas que también podemos poner en una Fórmula de Fecha.
Por ejemplo, en mi ciudad, la Fiesta Mayor empieza el primer viernes del mes de Setiembre. Veamos cómo podemos calcular esta fecha.

Fecha Referencia
Fórmula de Fecha
Descripción
Fecha resultado
Comentarios
21/12/2009
M8+PM+DS5
Mes 8 más presente mes más día de la semana 5
03/09/2010
Mes 8 nos da la primera fecha del próximo mes de agosto, posteriormente   le aplicamos la siguiente subexpresión (PM), para obtener la última fecha del mes de agosto, y posteriormente buscamos el siguiente viernes
13/06/2017
M8+PM+DS5
Mes 8 más presente mes más día de la semana 5
01/09/2017
Notad que en el 2017, el primer viernes del mes de setiembre es precisamente el día 1
21/12/2009
M9+DS5
Mes 9 más día de la semana 5
03/09/2010
Una fórmula de fecha más simple que la primera, buscamos el primer día del mes de setiembre y posteriormente buscamos el siguiente viernes
13/06/2017
M9+DS5
Mes 9 más día de la semana 5
08/09/2017
Pero que no funciona cuando casualmente el primer día del mes es el día que buscamos, puesto que desde el día 01/09 (que ya es viernes), calcula el siguiente viernes.
13/06/2017
M9-1D+DS5
Mes 9 menos un día más día de la semana 5
01/09/2017
Para que funcione, nos tenemos que situar primero en el día anterior (que es lo mismo que habíamos conseguido con M8+PM)


































Si queréis probar vuestras propias fórmulas de fecha y el resultado obtenido con varias fechas de referencia, buscad en Navision una fórmula de fecha que posteriormente sepáis donde se utiliza y con qué fecha de referencia, y empezad a hacer pruebas.



Accede al curso de Dynamics NAV


Por ejemplo, cread un nuevo pedido de compra. Para el pedido, cread una línea de compra (de cualquier tipo, no es necesario informar de ningún campo, con tener la línea de compra es suficiente). En la línea de compra, visualizad y fijaos en los campos "Fecha Pedido" y "Fecha recepción esperada".

En la pestaña Recepción de la cabecera del pedido de compra, hay un campo llamado "Plazo entrega (días)", donde podéis poner vuestra fórmula de fecha (se informa con el valor del mismo campo en la ficha del proveedor, pero se puede cambiar en el pedido).
La fecha de referencia que se utilizará es la que aparece en el campo "Fecha Pedido" de la línea de compra.
La fecha que se calcula y por tanto en donde podréis ver el resultado, es "Fecha recepción esperada".

Id modificando el valor de "Plazo entrega (días)" y de "Fecha Pedido" para ver el resultado del cálculo de la nueva fecha.

Cuando hayáis acabado con las pruebas, recordad de eliminar el pedido de compra creado, o si habéis utilizado uno existente, recordad de dejarlo todo como estaba. 




Cristina Nicolàs