TPV - CONECTIVIDAD - Tableta de firma

Creado por David Miralpeix, Modificado el Tue, 12 Mar 2024 a las 09:45 AM por Aitor del Prado

TABLA DE CONTENIDOS


Introducción


Este dispositivo se utiliza en AHORA TPV, para firmar albaranes de crédito, la firma del cliente se recibe en el listado de Crystal Reports estándar Albaran con Firma.rpt.este listado se encuentra en la carpeta de listados dentro de la estructura de documentos en el directorio CLIENTES desde la v.4.4.2200.4.



NOTA: 

El listado debe estar asignado al objeto Albarán en la configuración de la caja. Si quieres ampliar información, consulta este artículo.



La tableta de firma permite capturar datos biométricos avanzados para una verificación más exacta. 

 

 

Para el desarrollo de esta funcionalidad se ha utilizado la marca Wacom y el modelo STU-530/G. 


Según la documentación de Wacom, a fecha 24/03/2023, la lista de dispositivos compatibles con el driver utilizado (STU SDK) es la siguiente




Antes de empezar a utilizar la tableta, es necesario activar esta funcionalidad, establecer a ON el valor del parámetro TPV_PEDIRFIRMA -> Se activará la captura de firmas de la TPV para los objetos marcados en la caja. 



Una vez activado el parámetro e instalados los controladores, se conecta el dispositivo tableta de firma al pc donde está instalada AHORA TPV

El primer paso es generar un albarán de crédito en AHORA TPV.



La tableta se activa y se pulsa capturar para recibir la firma del cliente. Al visualizar la firma en pantalla se puede guardar o borrar para firmar de nuevo.



En este vídeo se muestra como se firma un albarán de crédito en AHORA TPV mediante el dispositivo tableta de firma.



 


NOTA:

Consulta el siguiente artículo para conocer el proceso de generación de un albarán de crédito.


Personalizaciones

A partir de la versión 5.0.0.24 se incluye la posibilidad de usar la ventana de petición de firma a través de personalizaciones. Esto permite que se pueda utilizar la ventana de petición de firma, que de forma estándar se utiliza en la firma de albaranes de crédito, en otras partes de la aplicación.

En este apartado se dará un ejemplo práctico con las cosas básicas que se podrían necesitar para realizar cualquier personalización para añadir la petición de firma. En este caso, vamos a pedir la firma antes de crear el cliente, para que el cliente no se pueda crear si no se ha firmado.

Empezaremos añadiendo los campos configurables Pers_FirmaB64 y Pers_FirmaBiometria a Conf_Clientes:



El campo Pers_FirmaB64 requiere de más espacio del que se permite configurar a través del ERP, así que tendremos que modificarlo desde base de datos:



No podremos modificar el campo desde el ERP tras haberlo configurado, para realizar cambios, necesitaremos eliminarlo y volverlo a crear con los cambios necesarios, incluyendo el cambio de longitud por base de datos tras su creación.

Una vez hecho esto, desde el personalizador, clonaremos el subproceso 'Ventana de firma digital', y le añadiremos una condición específica para nuestro caso:



Esta condición la añadimos, en este ejemplo, porque el botón de guardado, donde utilizaremos este nuevo subproceso, se comparte en el alta y en la edición del cliente, y en este caso no nos interesa que la ventana de firma aparezca al realizar una edición de un cliente ya existente.


NOTA:

En este caso, clonamos el subproceso ya que, como el subproceso de 'Ventana de firma digital' es genérico, como tendremos que modificarlo, para asegurarnos de que no vayamos a interferir con su funcionamiento estándar u otras personalizaciones.



Después, añadiremos el subproceso que acabamos de clonar al proceso estándar de guardado del cliente, y guardamos:




NOTA:

La ventana de petición de firma no obliga a firmar, las validaciones deberán realizarse o por procedimiento almacenado o con condiciones en los subprocesos.


Una vez personalizado, tras intentar guardar el cliente, y haber firmado, la ventana nos pasará los datos de la firma, pero para poder guardarlos necesitaremos un procedimiento almacenado de guardado personalizado.


Vamos a crear 'pPersTPV_Cliente_Guardar'


CREATE PROCEDURE [dbo].[pPersTPV_Cliente_Guardar]
@iXML XML,
@oXML XML OUTPUT
AS

DECLARE @CatchError NVARCHAR(MAX)
DECLARE @oXMLPers XML

DECLARE @FirmaB64 VARCHAR(MAX)
DECLARE @FirmaBiometria VARCHAR(MAX)

DECLARE @IdCliente T_Id_Cliente
DECLARE @Param_TPV_PEDIRFIRMA BIT = (SELECT Activo FROM dbo.[funTblParametroActivo] ('TPV_PEDIRFIRMA'))

BEGIN TRY
BEGIN TRAN

SELECT
@FirmaB64 = T.C.value('FirmaB64[1]','VARCHAR(MAX)'),
@FirmaBiometria = T.C.value('FirmaBiometria[1]','VARCHAR(MAX)'),
@IdCliente = T.C.value('IdCliente[1]','T_Id_Cliente')
FROM @iXML.nodes('./data') T(C)

IF(@Param_TPV_PEDIRFIRMA = 1 AND (ISNULL(@FirmaB64,'') = '' OR ISNULL(@FirmaBiometria,'') = '') AND @IdCliente = -1) RAISERROR('La firma es obligatoria',12,1)

EXEC pTPV_Cliente_Guardar @iXML, @oXMLPers OUTPUT

IF(@Param_TPV_PEDIRFIRMA = 1) BEGIN

SELECT
@IdCliente = T.C.value('IdCliente[1]','T_Id_Cliente')
FROM @oXMLPers.nodes('./Resultado/data') T(C)

UPDATE Conf_Clientes SET Pers_FirmaB64 = @FirmaB64, Pers_FirmaBiometria = @FirmaBiometria WHERE IdCliente = @IdCliente

END

SET @oXML = @oXMLPers

COMMIT TRAN
RETURN -1
END TRY

BEGIN CATCH
IF @@TRANCOUNT>0 ROLLBACK TRAN

SET @CatchError = CASE
WHEN ERROR_NUMBER()=3609 OR ERROR_NUMBER()=266 THEN ''
ELSE dbo.funImprimeError(ERROR_MESSAGE(), ERROR_NUMBER(), ERROR_PROCEDURE(), @@PROCID, ERROR_LINE())
END

SELECT @oXML = '<Resultado>
<Respuesta>
<Estado>error</Estado>
<Mensaje>' + @CatchError + '</Mensaje>
</Respuesta>
<data />
<view />
</Resultado>'
RETURN -1
END CATCH
GO

zpermisos 'pPersTPV_Cliente_Guardar'


Una vez creado, vamos a personalizar el origen de datos del guardado de cliente para que use el procedimiento personalizado:



Con estos cambios, se guardarán los datos del cliente sólo si se realiza la firma, y esta se guardará en los datos del cliente.



¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo