Cuestionarios
iDynamics Warehouse incluye la funcionalidad de creación de cuestionarios asociados a documentos de almacén, venta, compra, o transferencia. Este documento pretende ayudar a los desarrolladores que vayan a ampliar esta funcionalidad, o integrarla con el Business Central del cliente, con ejemplos e instrucciones de como implementar algunas de las personalizaciones más habituales.
Modificar el cuestionario asignado a un documento o línea
Por omisión, iDynamics Warehouse asignará a cada documento o línea el cuestionario que se haya configurado en las tablas de asignaciones de cuestionarios. No obstante, puede querer condicionar la asignación a otros parámetros que no hayan sido contemplados de serie en iDynamics Warehouse.
El evento OnBeforeFindQuestionnaire, emitido por la codeunit IDPWHS Questionnaire Management, le permite modificar el cuestionario que se asigna por omisión a un documento o línea:
OnBeforeFindQuestionnaire(DocumentType, DocumentNo, LineNo, QuestionnaireType, QuestionnaireCode, Handled);
Los parámetros del evento son:
- DocumentType. El tipo de documento al que se va a asignar el cuestionario.
- DocumentNo. El número de documento.
- LineNo. Si el cuestionario se va a asignar a una línea, el número de línea.
- QuestionnaireType. Nos indica si se está asignando un cuestionario a la cabecera o a una línea del documento.
- QuestionnaireCode. Si se captura el evento, se puede indicar en esta variable el cuestionario a aplicar.
- Handled. Si se indica verdadero, se asignará el código de cuestionario especificado en la variable anterior.
Validar por código las respuestas introducidas por los usuarios
Cuando los usuarios intentan registrar un documento desde la aplicación móvil, esta acción se realiza en dos pasos: primero se envían todos los datos de lecturas y respuestas a cuestionarios, y una vez guardados se llama a la acción de registro.
Al ser servicios web, cada uno de estos pasos se ejecuta en una transacción independiente, lo cuál significa que cancelar el registro mantendrá los datos recibidos en Business Central (esto es intencionado para poder resolver cualquier problema desde el propio Business Central).
Si se quieren validar los datos introducidos por el usuario, recomendamos hacerlo en los eventos estándar de registro de los propios documentos, o usando el evento OnBeforePostFromDevice, en caso de que queramos que la validación se realice sólo cuando se envían los datos desde la aplicación móvil (este último evento se lanzará además en caso de confirmar el documento sin registrar).
Cabe mencionar que, cualquier error que se devuelva usando el método Error en estos eventos, se le mostrará al usuario en la aplicación móvil.
Procesar las respuestas
Puede ser interesante aprovechar los valores introducidos por los usuarios y aplicarlos a ciertos campos/registros de Business Central, por ejemplo trasladando los valores de las respuestas de seguimiento a la información de lote correspondiente, o a cualquier otro documento.
La respuestas están almacenadas en la tabla IDPWHS Questionnaire Answer, y para obtener las respuestas de un documento será necesario filtrar por los campos Document Type, Document No. y Activity Type (si es una actividad de almacén).
El campo Document Line No. nos permite filtrar además por la línea especifica del documento, en el caso de cuestionarios a nivel de línea (las respuestas asociadas a la cabecera se identifican porque este campo contiene un cero como valor). Pudiendo además filtrar por "Lot No." o "Serial No." en caso de querer obtener la información particular asociada a un número de seguimiento.
Todas las respuestas tienen una descripción visible de la respuesta en el campo de texto Answer, pero los campos Numeric Value, Date Value y Time Value estarán también rellenos en función del tipo de campo configurado. Además, en el caso de preguntas de sí/no, el campo numérico contendrá un cero o un uno en función de la opción seleccionada.
En caso de querer aplicar las respuestas al documento o sus líneas, recomendamos tratarlas en el evento OnAfterProcessReadBuffer. Si queremos aplicarlas a los movimientos/documentos resultantes de registrar el documento, el evento OnBeforeArchiveQuestionnairesAnswers se ejecuta una vez el documento ya se ha registrado, pero antes de archivar sus respuestas.