Una de las nuevas funcionalidades que nos ofrece la nueva versión de CRM es la posibilidad de trabajar con campos de tipo fecha que sean independientes a la zona horaria del usuario que la introduce o consulta y la posibilidad de trabajar con campos de tipo fecha de solo fecha (sin horas).
Para entender mejor esto, lo ideal sería explicar como funciona hasta ahora Dynamics CRM en relación con los campos de tipo Fecha/Hora. Hasta ahora, los campos siempre tenían en cuenta la zona horaria del usuario que la introduce. Al introducirse un valor en un campo de fecha hora, este se almacena en la base de datos interna de CRM como en formato UTC, aplicando el desplazamiento horario de la zona horaria del usuario. Al volver a consultar este valor nuevamente ya sea por FilteredViews, SDK, vistas, formularios… Dynamics CRM aplica el desplazamiento horario del usuario nuevamente. Es decir, para los usuarios es transparente el tema de los desplazamientos horarios, simplemente rellenan valores y se los enseña transformados para su zona horaria local.
La zona horaria de los usuarios de define en las opciones personales del usuario:
Con esta funcionalidad estándar se disponía por ejemplo de la posibilidad de que si se crea una Cita internacional, cada usuario lo vea en su horario local, lo cual es perfecto.
A pesar de esto, se “perdían” ciertas situaciones de negocio que debían ser tratadas de otras maneras por ejemplo:
- Si hay un usuario de Argentina introduce una fecha/hora de una reserva de hotel en España por ejemplo a las 10:00, un usuario ubicado España que en entre a consultar esta fecha, vería que la reserva es a las 14:00 porque Dynamics CRM aplica el desplazamiento horario que se le aplica.
- Si se introducen datos legales de Contactos por ejemplo de sus fecha de Nacimiento, estas fechas en realidad no deberían almacenarse con un horario determinado, ya que solamente tienen una fecha. Si se mantenía esto, podía darse la situación que una persona tenga distintas fechas de nacimiento, al aplicarse los desplazamientos horarios de los diferentes usuarios.
Estos dos son solo dos ejemplos de situaciones que podían darse antes, y que la solución no era sencilla. Muchas veces se ignoran estos problemas en la actualidad simplemente porque todos los usuarios del CRM están en el mismo país o en la misma zona horaria, pero en caso de cambiar las opciones personales, podrían tener problemas. Seguramente si miráis en vuestras implementaciones, si cambiáis la zona horaria del usuario, verías que muchos de los datos de fechas que se introducen, cambian sin tener que hacerlo.
Ok, en la nueva versión de CRM, podemos crear estos tres tipos de campos fecha:
- Local del usuario: es el funcionamiento que se tiene en la acualidad
- Solo fecha: solo almacena la fecha, sin conversión horaria. En la parte de la hora será siempre 12:00AM
- Independiente de la zona horaria: se almacena fecha y hora, y todos los usuarios lo verán exactamente igual, sin conversión horaria.
Ahora vamos a ver como funcionan estos 3 campos. Primero me he creado un campo con cada tipo de comportamiento en el formulario de contactos:
Introducimos unos valores iguales en los tres campos:
Cambiamos la zona horaria del usuario en las opciones personales:
y lo que obtengo es lo siguiente:
Como se puede ver, el que aplica la hora del usuario, no solo ha cambiado de horario por el desplazamiento, sino que incluso ha cambiado de día!
Mientras tanto, los otros dos, han quedado igual. Este simple ejemplo muestra el potencial de este tipo de comportamientos nuevos en los campos de fecha.
Desde hoy, empezar a pensar que tipo de comportamiento vais a introducir en vuestros campos de tipo fecha, ya que es una decisión que no se puede cambiar después y que tiene muchas consecuencias.
un saludo!
@demian_rasko