Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
funcionesreportes [2020/07/29 23:32] aolanofuncionesreportes [2024/09/26 18:29] (actual) – [Filtrado de fechas] aolano
Línea 1: Línea 1:
 ====== Funciones especiales para reportes ====== ====== Funciones especiales para reportes ======
- 
-//En construcción// 
  
 En esta sección se podrá encontrar información sobre funciones especiales para creación de reportes En esta sección se podrá encontrar información sobre funciones especiales para creación de reportes
Línea 22: Línea 20:
        caso.FECHACREACION        caso.FECHACREACION
 FROM caso FROM caso
-WHERE caso.FECHACREACION BETWEEN {{FECHADESDE}} AND {{FECHAHASTA}}+WHERE caso.FECHACREACION BETWEEN '{{FECHADESDE}}AND '{{FECHAHASTA}}'
 </code> </code>
  
Línea 35: Línea 33:
 === Función CONVERT_TZ === === Función CONVERT_TZ ===
  
-La función **Convert_TZ** es propia de mysql y permite convertir una fecha desde una zona horaria a otra diferente. Un ejemplo de uso es el siguiente, donde la fecha actual se convierte de la zona horaria UTC a la zona horaria 'América/Bogota'+La función **Convert_TZ** es propia de mysql y permite convertir una fecha desde una zona horaria a otra diferente. Un ejemplo de uso es el siguiente, donde la fecha actual se convierte de la zona horaria UTC a 'América/Bogota'
  
 <code mysql> <code mysql>
Línea 45: Línea 43:
 === Función GET_VALUE === === Función GET_VALUE ===
  
-La función **GET_VALUE** permite obtener el valor correspondiente a la zona horaria especificada en el sistema, el cual obtendremos mediante el parámetro 'TIME_ZONE'. Su uso es el siguiente:+La función **GET_VALUE** permite obtener el valor correspondiente a la zona horaria especificada en el sistema, el cual requiere el parámetro 'TIME_ZONE'. Su uso es el siguiente:
  
 <code mysql> <code mysql>
Línea 80: Línea 78:
  
 {{:ejemplofechas.png?800|}} {{:ejemplofechas.png?800|}}
 +
 +
 +===== Extracción de campos personalizados (CF) =====
 +
 +Los campos personalizados pueden ser creados y asociados casos, cuentas, contactos y usuarios, de tal forma que se pueden añadir datos adicionales a los que el formulario estándar permite, como por ejemplo agregar la edad del contacto, el número de hijos de un usuario, la placa\matrícula\patente de un vehículo para un caso, entre otros. Todos estos datos, conocidos como Custom Fields (CF) se encuentran en la tabla del objeto (caso, contacto, cuenta, usuario) y se almacenan en formato JSON. Por ejemplo al obtener la información del caso 200501-000001
 +(un caso de prueba) podemos ver que la columna CF contiene los datos personalizados que se ingresaron al ticket.
 +
 +La consulta normal sería:
 +
 +<code mysql>
 + SELECT caso.REFNUM, caso.CF
 +FROM caso
 +where caso.REFNUM = '200501-000001'
 +</code>
 +
 +Y el resultado entregado por el sistema se vería de la siguiente forma:
 +
 +^ REF_NUM ^ CF ^
 +| 200501-000001 | {"guia": "00000000", "nombre": "Andres", "hobbie_principal": "Baloncesto"} |
 +
 +=== Función JSON_EXTRACT ===
 +
 +Los datos son visibles, pero en algunos casos se requiere que además los campos en CF se encuentren separados por columnas; la función **JSON_EXTRACT** de SQL permite obtener los datos puntales del campo CF recibiendo como parámetro el nombre del campo en la tabla ( por ejemplo caso.CF) y el nombre del campo personalizado (Ejemplo "$.guia"). 
 +
 +La consulta anterior modificada quedaría de la siguiente manera:
 +
 +<code mysql>
 + SELECT caso.REFNUM, 
 + JSON_EXTRACT(caso.CF, "$.guia") AS "Guia",
 + JSON_EXTRACT(caso.CF, "$.nombre" AS "Nombre",
 + JSON_EXTRACT(caso.CF, "$.hobbie_principal") as "Hobbie Principal"
 +FROM caso
 +where caso.REFNUM = '200501-000001'
 +</code>
 +
 +Ahora el resultado entregado por el sistema se verá así:
 +
 +^ REF_NUM ^ Guia ^ Nombre ^ Hobbie Principal ^
 +| 200501-000001 | "00000000" | "Andres" | "Baloncesto" |
 +
 +=== Función CONVERT ===
 +
 +Los datos guardados en campos personalizados que contengan acentos pueden visualizarse de forma incorrecta al momento de llevarlos a un reporte. La siguiente sentencia SQL obtiene los datos de un caso cuyos CF contienen datos con acentos:
 +
 +<code mysql>
 + SELECT caso.REFNUM, 
 + JSON_EXTRACT(caso.CF, "$.guia") AS "Guia",
 + JSON_EXTRACT(caso.CF, "$.nombre" AS "Nombre",
 + JSON_EXTRACT(caso.CF, "$.hobbie_principal") as "Hobbie Principal"
 +FROM caso
 +where caso.REFNUM ="200724-000001"
 +</code>
 +
 +El resultado arrojado es el siguiente:
 +
 +
 +^ REF_NUM ^ Guia ^ Nombre ^ Hobbie Principal ^
 +| 200724-000001 | Estación | Andrés | Nadar |
 +
 +
 +Con el fin de dar un formato adecuado a los textos con acentos se usa la función de SQL **CONVERT** usando además el parámetro **UTF8**, de esta forma: **CONVERT(Texto using UTF8)**. El siguiente ejemplo usa la función **CONVERT** en la consulta anterior para corregir el texto y mostrar correctamente el acento:
 +
 +<code mysql>
 + SELECT caso.REFNUM, 
 + JSON_EXTRACT(caso.CF, "$.guia") AS "Guia",
 + CONVERT(JSON_EXTRACT(caso.CF, "$.nombre") using UTF8)  AS "Nombre",
 + CONVERT(JSON_EXTRACT(caso.CF, "$.hobbie_principal") using UTF8) as "Hobbie Principal"
 +FROM caso
 +where caso.REFNUM ="200724-000001"
 +</code>
 +
 +Ahora el resultado mostrado en el reporte será el siguiente:
 +
 +
 +^ REF_NUM ^ Guia ^ Nombre ^ Hobbie Principal ^
 +| 200724-000001 | Estación | Andrés | Nadar |
 +