El personalizador de detalles de artículos de TecnoCRM (avanzado) es una versión mejorada de nuestro “Personalizador de detalles de artículos de TecnoCRM” estándar que permite a los usuarios personalizar los detalles de artículos (productos/servicios) para presupuestos, facturas, órdenes de compra y ventas. Los usuarios también pueden especificar nuevas fórmulas para cada columna, así como personalizar fórmulas para Totales.
Es completamente flexible y permite múltiples diseños de la sección de detalles del artículo para Cotizaciones, Facturas, Órdenes de Compra y Venta. Compatible con PDF Maker y Document Designer .
Configuración
Los detalles de las facturas, las cotizaciones, las órdenes de venta y los artículos de las órdenes de compra se pueden modificar yendo a Configuración de CRM > Otras configuraciones > Personalizador de detalles del artículo (avanzado). Están disponibles las columnas que aparecen en los módulos por defecto. Las columnas/totales para cada módulo se pueden personalizar, lo que significa que puede tener diferentes columnas/totales de detalles de artículos para facturas, cotizaciones, órdenes de venta y órdenes de compra.
Así es como se ve el Panel de Configuración en TecnoCRM.

1. Pestañas de módulos: Todos los módulos que se pueden personalizar se encuentran como pestañas en la parte superior de la página. Debería ver Cotizaciones, Factura, Orden de venta, Orden de compra
2. Artículos: Área para agregar/quitar/modificar columnas de detalles del artículo.
3. Total: Área para agregar/quitar/modificar sección total.
4. Secciones: Área para crear secciones que se utilizarán al crear el registro.
5. Seleccione Opciones: Lista de selección de campos existentes para el módulo seleccionado (pestaña). Estos campos personalizados/estándar se pueden utilizar en fórmulas para totales/columnas.
6. + Agregar nueva columna: Para crear un nuevo cuadro que se convierte en columna en la interfaz del módulo; se puede encontrar en la parte inferior derecha de la página.
Guardar: Para aplicar los ajustes configurados, se puede encontrar en la parte inferior izquierda de la página.
Modificación de columnas existentes y adición de nuevas
En el área Elementos, puede activar/desactivar columnas predeterminadas, agregar nuevas, establecer ancho, fórmulas y moverlas. Cada cuadro representa un campo de columna en la sección Detalles del artículo.

Descripción general: Columnas existentes
Columnas existentes: Cuando la extensión se instala por primera vez, preconfigura el sistema para tener columnas predeterminadas. Las columnas predeterminadas son idénticas a las que tiene TecnoCRM estándar (producto/servicio, descripción, cantidad, precio, etc.). Algunas cosas a tener en cuenta:
- Las columnas existentes no se pueden eliminar. Puede configurarlos como “Inactivos” y la columna no aparecerá. También verá que el encabezado de la columna se vuelve gris, lo que significa que ya no está activo.
- Solo puede actualizar el “Activo”, “Ancho” o “Fórmula” para las columnas existentes.
Básicamente, si no le gusta la columna existente, por ejemplo, Descripción, simplemente configúrela como inactiva y cree una nueva columna personalizada y configúrela a su gusto.
Fórmulas de columna existentes: Como parte de la configuración inicial, todas las fórmulas estándar se predefinirán utilizando la lógica TecnoCRM estándar. Podrá ajustar esas fórmulas.
Descripción general: Nuevas columnas
1. +Agregar nueva columna: Para agregar una nueva columna/cuadro. Una vez agregado, las siguientes opciones de configuración están disponibles:
2. Nombre: Deberá especificar el nombre de la columna. El nombre se puede cambiar más adelante.
3. Producto: Debe mapear un campo de un producto. Esto autocompletará el valor de la columna cuando esté creando un nuevo registro (por ejemplo, el precio se autocompletará al agregar el producto al registro, lo mismo con esto).
- Si no desea que el campo se complete automáticamente, la solución consiste en crear un campo personalizado en los productos y nombrarlo, por ejemplo, “Marcador de posición” y asignar la columna a este campo. Siempre que el campo “Marcador de posición” esté vacío en sus productos, la solución funcionará.
4. Servicio: Debe asignar un campo de un servicio. Esto autocompletará el valor de la columna cuando esté creando un nuevo registro (por ejemplo, el precio se autocompletará al agregar el servicio al registro, lo mismo con esto).
- Si no desea que el campo se complete automáticamente, la solución consiste en crear un campo personalizado en los servicios y nombrarlo, por ejemplo, “Marcador de posición” y asignar la columna a este campo. Siempre que el campo “Marcador de posición” esté vacío en sus servicios, la solución funcionará.
5. Obligatorio: La columna se puede establecer como obligatoria al crear Cotización/Factura/SO/PO
6. Activo: Elija entre las opciones activo/inactivo para ocultar/mostrar la columna en Cotización/Factura/SO/PO
7. Ancho: Cambie el ancho de la columna para acomodar los datos.
- Puedes usar píxeles, por ejemplo: 50px
- También puede usar %, por ejemplo: 15%
8. Fórmula: Defina la fórmula que se utilizará para calcular los valores de los campos. Esta es la característica de mayor valor.
Métodos matemáticos admitidos:
Suma: +
Resta: –
División: /
Multiplicar: *
Paréntesis: ( y )
Números: 1-9999 (Puede usar cualquier número en la fórmula)
Variables de campo admitidas:
Columnas existentes y personalizadas: se puede incluir cualquier valor de columna en la fórmula. Si hace clic en (i) en la columna (Ver #9) se le proporcionará una variable para usar la fórmula. Ejemplo “Total” – $total$.
Campos estándar y personalizados en Cotización/Factura/OC/SO: puede utilizar campos del registro, lo que significa que si crea un campo en Cotización y lo denomina “Marcado”, puede incluir el valor de marcado como parte de los cálculos de la columna. (Consulte el n. ° 10: aquí es donde se encuentra la lista de todos los campos disponibles que puede incluir en la fórmula).
Ejemplos de fórmulas de columna:
Ya puede ver fórmulas generadas automáticamente según la funcionalidad estándar de VTiger, por ejemplo:
“Total” = $cantidad$*$precio de lista$
“Precio neto” = $total$-$discount_amount$-($total$*$discount_percent$/100)
No hay limitaciones en cuanto a qué fórmulas pueden ser, realmente depende de su proceso comercial.
Modificación de existentes y adición de nuevos totales
En el área Totales, puede eliminar columnas predeterminadas, agregar nuevas, establecer fórmulas y moverlas. Cada fila representa un total en el campo Detalles del artículo: Sección de totales.

Descripción general: Totales existentes
Totales existentes: Cuando la extensión se instala por primera vez, preconfigura el sistema para tener columnas predeterminadas. Las columnas predeterminadas son idénticas a las que tiene vtiger estándar (Total, Gran Total, Ajuste, Total antes de impuestos, etc.). Algunas cosas a tener en cuenta:
- Los totales existentes se pueden eliminar. Si elimina el total, no hay forma de restaurarlo. Tendrías que crear uno nuevo.
- Puede actualizar fórmulas, convertirlas a entrada de datos y configurarlas para ejecutar subtotales (consulte a continuación).
Fórmulas totales existentes: Como parte de la configuración inicial, todas las fórmulas estándar se predefinirán utilizando la lógica TecnoCRM estándar. Podrá ajustar esas fórmulas.
Descripción general: Nuevos totales
1. +Agregar nuevo campo: Para agregar un nuevo total. Una vez agregado, las siguientes opciones de configuración están disponibles:
2. Nombre: Deberá especificar el nombre del total. El nombre se puede cambiar más adelante.
3. Fórmulas: Las fórmulas son opcionales para los totales. La misma lógica (de Fórmulas de columna) también se aplica a los totales. Admite sumas, restas, divisiones, multiplicaciones, paráfrasis y números. Consulte Fórmulas de columna para obtener más información.
Hay algunas características únicas en las fórmulas de totales:
Las fórmulas totales admiten SUM{} , lo que significa que puede SUMAR{} los valores de las columnas. Por ejemplo, para el total de artículos: tenemos la fórmula “SUM{$net_price$}+$s_h_amount$”, lo que significa que tomará todos los artículos en la Cotización/Factura/OC/SO y sumará (Agregará) el campo $net_price $ para calcular el total adecuado. SUM{} se puede aplicar a cualquier campo de columna.
Nota: la sintaxis es: SUM{$field_goes_here} . Debe utilizar estos corchetes { }.
Otro ejemplo fácil de entender sería, supongamos que desea conocer la cantidad total de productos pedidos, por lo que podría crear un nuevo total, por ejemplo, “CANTIDAD TOTAL” y usar la fórmula “SUM{$cantidad$}” y obtendrá la cantidad total ordenada como una de los totales (Ver #6)
4. Entrada de datos: El campo total se puede configurar como entrada de datos, lo que significa que en lugar de calcular el campo usando fórmulas, puede ingresar manualmente el valor en el total. Esto es muy similar al “Ajuste” estándar o “Tarifas de envío y manejo” de TecnoCRM: básicamente puede ingresar el valor.
Nota: Los totales marcados para “Entrada de datos” todavía se pueden usar en fórmulas.
5. Subtotales continuos: Cada total se puede marcar como subtotal continuo, lo que significa que podrá agregar un subtotal continuo al crear una Cotización/Factura/PO/SO y ver el total de los productos/servicios que están POR ENCIMA de la sección del subtotal continuo. (Consulte la interfaz de usuario – sección de subtotales).
Secciones (agrupación)
Secciones es una característica muy agradable que permite crear secciones y productos/servicios separados en diferentes secciones en la Cotización/Factura/PO/SO.
Puede crear secciones yendo a “Secciones” y haciendo clic en “+ Agregar nuevo valor”.
La sección debe agregarse antes de que pueda usarse.
El orden de las secciones se puede cambiar arrastrando y soltando.
Las secciones se pueden eliminar.

Integración de PDF Maker (its4you)
El personalizador de detalles de elementos (avanzado) se integra a la perfección con PDF Maker by its4you. Podrás incluir:
Columnas personalizadas
Totales personalizados
Secciones
Ejecución de subtotales
Vista anidada del producto padre/hijo
Para crear correctamente la salida a PDF, deberá asegurarse de que se hayan agregado las “Funciones personalizadas de VTE” a PDF Maker. Para hacerlo, abra la plantilla de PDF Maker y vaya a la pestaña “Otra información” y abra la lista de selección “funciones personalizadas” . Debes asegurarte de ver (en la parte inferior):
getFieldValueOfItem
getFieldValueOfTotal
getLevelOfItem
getQuoterSectionName
getQuoterRunningItemName
Si no ve estos valores, debe agregarlos aquí. Para agregar, deberá descargar vte_QuoterFunctions.php y colocarlo en /your/vtigercm/modules/PDF/Maker/resources/functions/ .
Enlace para descargar vte_QuoterFunctions.php (tenga en cuenta que es un archivo .zip, deberá extraerlo).
Una vez que el archivo se haya colocado en la carpeta adecuada, aparecerán los personalizados (en la lista de selección).

getFieldValueOfItem (columna personalizada)
Esta función se utiliza para fusionar el valor de la columna personalizada de la sección Detalles del artículo.
Sintaxis: [FUNCIÓN PERSONALIZADA|getFieldValueOfItem| nombre de campo | ID de registro |
artículo No | módulo |FUNCIÓN PERSONALIZADA]
Deberá ajustar los siguientes valores dentro de la sintaxis:
fieldName : obtenido del área de configuración del personalizador de detalles del artículo (ver captura de pantalla)
recordId: reemplácelo con el valor apropiado según el módulo en el que se encuentre:
$ORDENDEVENTAS_CRMID$
$ORDEN DE COMPRA_CRMID$
$FACTURA_CRMID$
$QUOTES_CRMID$
ItemNo : reemplace con $PRODUCTPOSITION$ (esto siempre permanece igual).
módulo : reemplácelo con el valor apropiado según el módulo en el que se encuentre:
Factura
Cotizaciones
Orden de venta Orden de
compra
Ejemplo : [FUNCIÓN PERSONALIZADA|getFieldValueOfItem| cf_quotes_color | $QUOTES_CRMID$ |
$POSICIÓN DEL PRODUCTO$ | Cotizaciones |FUNCIÓN PERSONALIZADA]
Nota: En la captura de pantalla (configuración) la variable tiene $ $, sin embargo, en la función NO incluimos $ $. Esto solo se aplica a fieldName.
Nota: Debe insertar la función personalizada en la misma área que si estuviera insertando una columna estándar.


getFieldValueOfTotal (Total personalizado)
Esta función se utiliza para fusionar el valor de los totales personalizados de la sección de totales Detalles del artículo.
Sintaxis: [FUNCIÓN PERSONALIZADA | getFieldValueOfTotal | nombre de campo | ID de registro | módulo |FUNCIÓN PERSONALIZADA]
Deberá ajustar los siguientes valores dentro de la sintaxis:
fieldName : obtenido del área de configuración del personalizador de detalles del artículo (ver captura de pantalla)
recordId: reemplácelo con el valor apropiado según el módulo en el que se encuentre:
$ORDENDEVENTAS_CRMID$
$ORDEN DE COMPRA_CRMID$
$FACTURA_CRMID$
$QUOTES_CRMID$
módulo : reemplácelo con el valor apropiado según el módulo en el que se encuentre:
Factura
Cotizaciones
Orden de venta Orden de
compra
Ejemplo : [FUNCIÓN PERSONALIZADA|getFieldValueOfTotal| cf_quotes_test_total | $QUOTES_CRMID$ |
Cotizaciones |FUNCIÓN PERSONALIZADA]
Nota: En la captura de pantalla (configuración) la variable tiene $ $, sin embargo, en la función NO incluimos $ $. Esto solo se aplica a fieldName.
Nota: debe insertar la función personalizada en la misma área que si estuviera insertando el total estándar.



getQuoterSectionName (Sección)
Esta función se utiliza para incluir secciones personalizadas en el PDF.
Sintaxis: [FUNCIÓN PERSONALIZADA | getQuoterSectionName | ID de registro | secuencia | numOfColumn |
color de fondo | FUNCIÓN PERSONALIZADA]
Deberá ajustar los siguientes valores dentro de la sintaxis:
recordId: reemplácelo con el valor apropiado según el módulo en el que se encuentre:
$ORDENDEVENTAS_CRMID$
$ORDEN DE COMPRA_CRMID$
$FACTURA_CRMID$
$QUOTES_CRMID$
secuencia : reemplace con $PRODUCTPOSITION$ (esto siempre permanece igual).
numOfColumn : reemplace con un número total de columnas en el bloque de productos. En este ejemplo tenemos 8 columnas (ver captura de pantalla), así que solo ponemos 8.
backgroundColor : este es el color O el código de color que se usará para establecer el color de fondo de la sección (una vez combinado en PDF). Acepta colores como palabra, por ejemplo, ‘amarillo, ‘verde’, ‘azul’ O códigos de color #123456, #785544, etc.
Ejemplo : [FUNCIÓN PERSONALIZADA|getQuoterSectionName| $QUOTES_CRMID$ | $POSICIÓN DEL PRODUCTO$ | 8 |
verde |FUNCIÓN PERSONALIZADA]
Nota: debe insertar la función personalizada DESPUÉS de #PRODUCT_START# (en la misma celda).



getQuoterRunningItemName (subtotales en ejecución)
Esta función se utiliza para incluir subtotales continuos en el PDF.
Sintaxis: [FUNCIÓN PERSONALIZADA | getQuoterRunningItemName | Nombre del módulo | ID de registro | secuencia | numOfColumn |
color de fondo | FUNCIÓN PERSONALIZADA]
Deberá ajustar los siguientes valores dentro de la sintaxis:
moduleName : reemplácelo con el valor apropiado según el módulo en el que se encuentre:
Factura
Cotizaciones
Orden de venta Orden de
compra
recordId: reemplácelo con el valor apropiado según el módulo en el que se encuentre:
$ORDENDEVENTAS_CRMID$
$ORDEN DE COMPRA_CRMID$
$FACTURA_CRMID$
$QUOTES_CRMID$
secuencia : reemplace con $PRODUCTPOSITION$ (esto siempre permanece igual).
numOfColumn : reemplace con un número total de columnas en el bloque de productos. En este ejemplo tenemos 8 columnas (ver captura de pantalla), así que solo ponemos 8.
backgroundColor : este es el color O el código de color que se usará para establecer el color de fondo de la sección (una vez combinado en PDF). Acepta colores como palabra, por ejemplo, ‘amarillo, ‘verde’, ‘azul’ O códigos de color #123456, #785544, etc.
Ejemplo : [FUNCIÓN PERSONALIZADA | getQuoterRunningItemName | Cotizaciones | $QUOTES_CRMID$ | $POSICIÓN DEL PRODUCTO$ | 8 |
verde |FUNCIÓN PERSONALIZADA]
Nota: debe insertar la función personalizada en la ÚLTIMA columna, junto a la variable ÚLTIMAS columnas (en la misma columna). En la captura de pantalla, puede ver que tiene $net_price$, que es la última variable de la columna y, justo al lado, insertamos una función personalizada. No importa cuál sea la última columna, lo único que importa es que la función personalizada se inserta después de la variable de las últimas columnas.



getLevelOfItem (hijo anidado/productos de paquete)
Esta función se utiliza para mostrar correctamente la vista anidada de productos secundarios/empaquetados en el PDF.
Sintaxis: [FUNCIÓN PERSONALIZADA | obtenerNivelDeElemento | recordId |i temNo| FUNCIÓN PERSONALIZADA]
Deberá ajustar los siguientes valores dentro de la sintaxis:
itemNo : reemplace con $PRODUCTPOSITION$ (esto siempre permanece igual).
recordId: reemplácelo con el valor apropiado según el módulo en el que se encuentre:
$ORDENDEVENTAS_CRMID$
$ORDEN DE COMPRA_CRMID$
$FACTURA_CRMID$
$QUOTES_CRMID$
Ejemplo : [FUNCIÓN PERSONALIZADA | obtenerNivelDeElemento | $POSICIÓN DEL PRODUCTO$ | $QUOTES_CRMID$ |FUNCIÓN PERSONALIZADA]
Nota: debe insertar la función personalizada en la PRIMERA columna, ANTES de la variable variable (en la misma columna). En la captura de pantalla, puede ver que tiene $PRODUCTTITLE$, que es la variable de la primera columna y justo antes, insertamos una función personalizada.

