En este caso práctico vamos a modificar la tabla de líneas de ticket de venta del entorno clásico para permitir la edición dentro de la misma sin necesidad de pasar por la ventana de edición.


Para facilitar la personalización desde fábrica se ha incluido, de forma estándar, el procedimiento de guardado de las líneas así como el origen de datos asociado al mismo. 


A rasgos generales, vamos a necesitar: 

  • Un Procedimiento Almacenado de guardado o edición. 
  • Un Origen de Datos para asignarlo en el nuevo apartado del editor de Grids.
  • Edición de Grid de la tabla de líneas de Ticket de venta no táctil.


Procedimiento Almacenado


Antes de comenzar con el personalizador sería necesario crear el procedimiento almacenado que se va a encargar del guardado de los datos. Como hemos comentado, en este caso en concreto ya existe tal procedimiento (pTPV_EG_TicketLinea), sin embargo es necesario explicar el proceso para aquellas personalizaciones nuevas que se vayan a acometer.


El procedimiento almacenado debe respetar la estructura de entrada y salida de datos estándar de Ahora TPV, es decir, utilizar parámetros de tipo XML.


Los campos que por defecto se enviarán desde Ahora TPV, son todas aquellas columnas que estén incluidas en la definición de la tabla (GRID). Si, por ejemplo, en la tabla se han incluido las propiedades IdLinea, IdArticulo, Descrip, serán estas las que entren como datos en la variable XML, estén o no estén marcadas como columnas visibles desde el personalizador. Cualquier otro campo que no esté incluido en esta definición no llegará al procedimiento almacenado y, por tanto, no podrá ser ni leído ni utilizado en la actualización del registro de la tabla SQL.



El procedimiento creado debe ser el encargado de realizar todas las validaciones que se estimen oportunas antes de la edición. Puesto que se está dando la libertad total de modificar datos desde una tabla, será el implantador de la solución el que conozca y aplique las restricciones funcionales necesarias para cumplir con todos los requisitos de la edición. Por ejemplo, no es lo mismo modificar la descripción del artículo que la cantidad o el precio del mismo, en cuyo caso se debe decidir si se seguirá aplicando la política de listas de precios, ofertas, asignación de conjuntos de artículos, etc.


Todos estos pasos, que de forma estándar ya realizan los procesos estándar de la TPV o el código de la propia aplicación, debe ser conocido y respetado por el usuario que personalice la edición para evitar comportamiento anómalos o errores en datos.


De forma estándar, ateniéndonos al caso de este ejemplo, el procedimiento pTPV_EG_TicketLinea, recibe y tiene en cuenta las propiedades IdTicket, IdLinea, Cantidad, DtoLP1, DtoLP2, DtoLP3, DtoLP4, DtoLP5, PrecioParametroIVA, Descrip y PermitirEdicionLinea. Con estos datos (y sólo estos) se recuperan el resto de datos de la línea y se llaman al procedimiento estándar de guardado de la línea PTickets_Lineas_U, previo cálculo de los importes totales teniendo en cuenta la parametría de trabajo con precios a PVP.


Por tanto, para permitir la edición de línea con el procedimiento estándar, hay que asegurarse que estos campos estén incluidos en la definición de la tabla. 



IMPORTANTE:

El campo de precio esperado es PrecioParametroIVA. Se podría incluir en la tabla otros campos de precios, pero por mucho que se establezcan esos campos como editables y visualmente se llamen Precio, ni se leerán ni se utilizarán en el guardado dando como resultado que el precio quede siempre a 0.


Origen de Datos


El siguiente paso en una personalización nueva sería crear el Origen de Datos que gestionará la ejecución del anterior procedimiento almacenado.


Para acceder al origen de datos y crearlo, no obstante, se debe entrar en el Personalizador, en la opción de Edición de Grid, y seleccionar la tabla que se va a personalizar.



Una vez dentro de la edición de grid, buscamos y seleccionamos la tabla "Líneas ticket ventas".



En este diseñador, desde la versión 4.4.2400.60, se incluye una nueva sección Acciones desde la que se puede incluir el origen de datos que se utilizará en el modo edición de la tabla.



Desde el campo Origen de Datos se puede seleccionar un origen existente, o crear un nuevo con el botón situado a la derecha del campo.


Para crear un nuevo origen de datos es recomendable consultar la documentación TPV - Orígenes de datos, en el caso que nos atañe en este ejemplo práctico, el origen de datos ya esta creado y, por tanto, es seleccionable desde el propio combo.




Para modificar el origen existente, una vez seleccionado, se mostrará un nuevo botón con forma de pieza de puzle naranja que permite abrir el origen seleccionado.



Es en la ventana mostrada donde se puede modificar los datos asociados al origen, permitiendo su personalización o clonarlo para generar un nuevo sin relación con el origen estándar.




Edición de Grid


Una vez creado el procedimiento almacenado y el origen de datos, se pasa al último paso necesario del proceso: la edición de la tabla para incluir los campos que se quieran poder editar.


Puesto que ya hemos entrado en la edición del grid para poder asignar el origen de datos, la cuestión ahora es decidir qué campos y en qué orden se van a añadir a la tabla.


La definición estándar de la tabla incluye una serie de campos visibles y ocultos (que no se deben eliminar, algunos de los cuales se van a aprovechar para el modo edición, mientras que otros como los descuentos se deberán incluir desde el propio editor.


Seguiremos los siguientes pasos:



1. Incluir el campo IdTicket, oculto, para que le llegue al procedimiento almacenado y pueda modificar la línea del ticket correcto sin errores. Cualquier parámetro nuevo incluido entra con el campo Filtrable habilitado, en el caso de la tabla de ticket no hay filtros y, por tanto, debe deshabilitarse manualmente.



2. Marcar como Editables los campos que se deseen poder editar desde la tabla. Para este ejemplo los campos Descrip, Cantidad, PrecioParametroIva. Marcamos estos y no otros porque el procedimiento almacenado creado está esperando estos nombres de campo dentro del XML de entrada. Aunque marquemos otros campos como editables, los datos editados llegarán al procedimiento almacenado pero no se guardarán al no ser procesados en el mismo.



3. Si trabajamos con descuentos, incluimos tantos campos de descuento como estemos usando. Puesto que dependiendo del cliente puede trabajar con hasta 5 campos de descuento (DtoLP1, DtoLP2, DtoLP3, DtoLP4, DtoLP5) será decisión del usuario que personalice la tabla qué campos se añadirán para poder editar. En nuestro ejemplo añadiremos los cinco. 


Importante tener en cuenta que los campos de descuentos, al incluirse como nuevos, entran como tipo de dato Texto. Hay que cambiarlos a tipo Porcentaje para que la tabla, en modo edición, controle de forma correcta el dato introducido como numérico. En caso contrario podría dar error de conversión en el procedimiento almacenado al recibir un campo mal formateado.


Podemos, por economizar espacio, ocultar el campo DescuentoAgrupado que no es más que un campo de texto que visualiza todos los descuento de línea aplicados. 


4. Al añadir nuevos campos sería recomendable cambiar la anchura de los mismos para adaptarla a la interfaz y resolución concreta del cliente y que se puedan visualizar sin problemas. Para ello disponemos del campo anchura en el que se puede introducir tanto el valor como la unidad de medido. En nuestro caso utilizaremos porcentajes para que siempre llegue al 100% del ancho de la tabla, con independencia de la resolución, dejando el campo Descripción a 0% para que utilice el total restante no empleado por el resto de campo.


También de puede cambiar la descripción (DtoLP1 por Dto 1, por ejemplo), o la alineación de los datos a Derecha para que la visualización final en la tabla sea más clara para el empleado.



Una vez personalizada la tabla, se guarda la misma y se reinicia Ahora TPV para que aplique los cambios.



Para saber cómo se comporta la tabla en modo edición, consultar el artículo TPV - Entorno - Edición en Tabla



IMPORTANTE:

Se detectó un error que provocaba que los totales de línea y ticket no se actualizarán correctamente, que fue corregido en las versiones 4.4.2400.113 y 5.0.0.8.