01. DATOS GENERALES
Producto | TOTVS Backoffice | |||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | |||||||||||||||||||||||||||||||||||||||
Segmento: | Backoffice | |||||||||||||||||||||||||||||||||||||||
Módulo: | Financiero - SIGAFIN | |||||||||||||||||||||||||||||||||||||||
Función: |
| |||||||||||||||||||||||||||||||||||||||
País: | Todos | |||||||||||||||||||||||||||||||||||||||
Ticket: | 17047926 | |||||||||||||||||||||||||||||||||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-19603 |
02. SITUACIÓN/REQUISITO
Se necesitan los siguientes cambios en el aplicativo de TOTVS Recibo (FINA998)
- Obtener los campos que se muestran en las “formas de pago” por medio del modelo, ya que actualmente se obtienen por diccionario, esto ayudara a tener un mantenimiento más eficiente a las validaciones, disparadores , when’s y otras funcionalidades que ofrecen los modelos.
- Implementar la funcionalidad de las reglas de dependencia (Tabla XXA) para bloquear y desbloquear campos (Contra dominio) dependiendo un valor (Dominio).
- Dar tratamiento para que la funcionalidad de los Disparadores (Tabla SX7) no se vea afectada.
- Codificar en el modelo localizado por país las validaciones que se encuentran en duro en el servicio de “Validaciones formas de pago” (VALIDPAYMENTFORM.SERVICE.TLPP) .
- Codificar en back-end la lógica de la base, alícuota y valor que se encuentra actualmente en el front-end en la sección de “Formas de pago” y verificar su funcionamiento correctamente .
03. SOLUCIÓN
Se realizarán los respectivos cambios en las rutinas, modelos localizados y eliminación de código innecesario.
- Eventos del modelo para Argentina (F887FINARG.PRW):
- Se realizó una validación de países para los campos Banco Cheque (EL_BCOCHQ) para que este no este vacío cuando la forma de pago sea CH o CHD.
- Se eliminaron lineas de código que no son utilizadas.
- Eventos del modelo para Perú.(F887FINPER.PRW):
- Para el país de Perú se agrego una validación la cual verifica que al seleccionar una forma de pago tipo Retención de IVA el campo Banco no puede ir vacío.
- Eventos del modelo para retenciones en Argentina(F887RETARG.PRW):
- Se eliminaron líneas que no son utilizadas.
- Modelo para Argentina en Totvs Recibo (FINA887ARG.PRW):
- Para el país de Argentina se agregó en la definición del modelo reglas de dependencia, whens, inicializadores y campos son obligatorios.
- Se agregaron disparadores para los campos valor, alícuota y base cuando son retenciones.
- Se agregaron funciones para determinar si un campo es bloqueado o no dependiendo el resultado del when.
- Se agregó la función blocAStr() el cual retorna una parte de código de una instrucción de tipo bloque (codeblock).
- Modelo para Paraguay en Totvs Recibo (FINA887PAR.PRW):
- Para el país de Paraguay se agregaron reglas de dependencia, campos obligatorios, y when´s.
- Se agregaron funciones para determinar si un campo es bloqueado o no dependiendo el resultado del when.
- Se agregaron disparadores para los campos valor, alícuota y base cuando son retenciones.
- Modelo para Perú en Totvs Recibo (FINA887PER.PRW):
- Para el país de Perú se agregaron reglas de dependencia, campos obligatorios, y whens.
- Se agregaron funciones para determinar si un campo es bloqueado o no dependiendo el resultado del when.
- Controlador del servicio de formas de pago (PAYMENTFORM.CONTROLLER.TLPP):
- Se modificó la manera de obtener el BodyRequest que envía el Front-End para aplicar la regla de negocio, anteriormente se obtenía el BodyRequest() por el método JSTOADVPL().
- Servicio de formas de pago (PAYMENTFORM.SERVICE.TLPP):
- Se separó la lógica de campos físicos en la base de datos a los campos virtuales generados por medio del modelo.
- Se agregaron cambios para obtener propiedades de los campos por medio del metodo GETPROPERTY() en vez del GETSX3CACHE().
- Se determinaron los campos que deben ser bloqueados al momento de abrir la forma de pago dependiendo el país.
- Se realizó un tratamiento para que los campos de valor base (EL_VALBASE) y alícuota (EL_ALIQ) siempre se muestren antes del campo valor (EL_VALOR).
- Se agregaron consultas estándares a campos virtuales.
- Se generó un proceso en el cual si un campo tiene configurado una regla de dependencia y este a su vez tiene un When (X3_WHEN) este sea ejecutado para verificar si el campo es bloqueado o desbloqueado.
- Se agregó un metodo el cual verifica por país cuales campos son obligatorios dependiendo los campos Tipo Tit. (EL_TIPO) y Tipo Valor (EL_TIPODOC).
- Se agregó un metodo el cual verifica por país cuales campos son deshabilitados dependiendo los campos Tipo Tit. (EL_TIPO) y Tipo Valor (EL_TIPODOC),
- Se corrigió el error de que los campos creados por el usuario de tipo fecha no son grabados correctamente en la base de datos.
- Se corrigió el valor mínimo que se le puede asignar al campo Fecha de Vencimiento (EL_DTVCTO), el cual no puede ser menor a la Fecha de Emisión (EL_EMISAO).
- Servicio para guardar los recibos (SAVERECEIPT.SERVICE.TLPP):
- Se eliminaron lineas de código que no son utilizadas y en Argentina se eliminó la lógica que se tenía planteada sobre las retenciones.
- Servicio para validar las formas de pago(VALIDPAYMENTFORM.SERVICE.TLPP):
- Se eliminaron validaciones que estaban en duro para los países de Argentina, Paraguay y Perú, las validaciones se encuentran ya en el modelo.
- Totvs Recibo(FINA998.PRW):
- Se agregó una función SetValores () el cual es ejecutado cuando se ejecutan los disparadores de alícuota, base y valor, esta función ayuda a setear los valores en los respectivos campos.
- Se agregó la función docsReten () el cual es ejecutado cuando en Paraguay y/o Perú es seleccionado un titulo con Serie, documento y cuota y la forma de pago es una retención.
- Realizar un respaldo del repositorio (RPO).
- Aplicar el parche correspondiente al issue DMINA-19603.
- Validar que las rutinas actualizadas en el repositorio, coincidan con las descritas en el encabezado del presente Documento Técnico.
- A través de la rutina “Productos”, ubicada en el módulo de SIGAFIN (Actualizaciones | Archivos), incluir un producto.
- A través de la rutina “Bancos”, ubicada en el módulo de SIGAFIN (Actualizaciones | Archivos), incluir un banco.
A través de la rutina “Clientes”, ubicada en el módulo de SIGAFIN (Actualizaciones | Archivos), incluir un cliente.
- A través de la rutina "Tipo de Entrada y Salida", ubicada en el módulo Facturación – SIGAFAT (Actualizaciones | Archivos), se debe tener una TES de salida configurada.
- A través de la rutina "Factura de Venta", ubicada en el módulo Facturación – SIGAFAT (Actualizaciones | Movimientos), capturamos una Factura para el Cliente con el producto y la TES previamente configurados.
Aviso
La siguiente configuración es solamente un ejemplo para verificar el correcto funcionamiento de la solución, no es necesario configurarlo.
- Por medio del Módulo Configurador (SIGACFG) :
- Crear el campo con las siguientes características :
- Sección campo
- Campo = EL_DOMINIO
- Tipo = 1-Caracter
- Tamaño = 5
- Formato = @!
- Contexto = 1 - Si
- Propiedad = 1 - Modificar
- Sección informaciones
- Tit. Español = Retención
- Desc. Español = Retención
- Sección Opciones
- Inic. Estándar = ""
- Modo Edición = U_WHENRET()
- Sección Uso
- Usado (x)
- Browse (x)
- Sección campo
- Agregar regla de dependencia en el campo Tipo Tit. (EL_TIPO) por medio del Módulo configurador >> Editar Campo >> Pestaña "Reglas de dependencia"
- Sección Reglas de dependencia
- Secuencia = 500
- Contra Dominio = EL_DOMINIO
- Tipo = Pre y Post Validación
- Descripción = Dominio
- Sección Reglas de dependencia
- Crear el campo con las siguientes características :
- Compilar la siguiente función de usuario:
- Esta función tiene la funcionalidad de determinar si se bloquea o no un campo dependiendo el valor del campo Tipo Documento (EL_TIPODOC)
Se realiza la captura de un recibo de cobro en TOTVS Recibo (SIGAFIN >> Movimientos | Cuentas por Cobrar | TOTVS Recibo)
- Se ingresa a la opción de "Nuevo recibo".
- Capturar los datos del encabezado .
- Cliente: Indicar el cliente configurado en la sección Pre-condiciones.
- Seleccionar la Factura de Venta generada en la sección Pre-condiciones.
- Agregar una forma de pago por un valor parcial al valor total de la Factura de venta, seleccionando una forma de pago tipo Retención IVA:
- Verificar que el campo Tipo Valor (EL_TIPODOC) se cambie automáticamente a Retención IVA.
- Verificar que los campos Valor Base (EL_VALBASE) y Alícuota (EL_ALIQ) se encuentren antes del campo Valor (EL_VALOR).
- Verificar que sean habilitados y requeridos los campos Valor Base (EL_VALBASE) y Alícuota (EL_ALIQ) se encuentren antes del campo Valor (EL_VALOR) solamente cuando la forma de pago es tipo Retención.
- Verificar que el funcionamiento de los campos Valor Base (EL_VALBASE) y Alícuota (EL_ALIQ) sea el correcto para calcular el Valor de la forma de pago.
- Verificar que los campos Banco (EL_BANCO), Agencia (EL_AGENCIA) y Cuenta Banco (EL_CONTA) sean llenados de manera automática al momento de seleccionar un banco en el campo virtual Busc. Bancos (EL_BANCOS).
- Verificar que el campo Cod Fiscal (EL_CFO) y el campo virtual Estado (EL_EST) sean requeridos.
- Verificar que el campo creado por el usuario en el módulo configurador (SIGACFG) Retención (EL_DOMINIO) sea desbloqueado dadas las condiciones en la función de usuario compilada en la sección de Pre-Condiciones.
- Agregar una forma de pago por un valor parcial al valor total de la Factura de venta, seleccionando una forma de pago tipo CHD:
- Verificar que el campo Tipo Valor (EL_TIPODOC) se cambie automáticamente a Cheque.
- Verificar que los campos Valor Base (EL_VALBASE) y Alícuota (EL_ALIQ) se encuentren bloqueados y no requeridos para agregar la forma de pago.
- Verificar que los campos Banco (EL_BANCO), Agencia (EL_AGENCIA) y Cuenta Banco (EL_CONTA) sean llenados de manera automática al momento de seleccionar un banco en el campo virtual Busc. Bancos (EL_BANCOS).
- Verificar que los campos Banco Cheque (EL_BCOCHQ), Ag. Cheque (EL_AGECHQ) y Código postal (EL_POSTAR) sean llenados de manera automática al momento de seleccionar un banco en el campo virtual Busc. Bco Cheque (EL_BCOCHQS).
- Verificar que el campo creado por el usuario en el módulo configurador (SIGACFG) Retención (EL_DOMINIO) sea bloqueado dadas las condiciones en la función de usuario compilada en la sección de Pre-Condiciones.
- Dar clic en Confirmar forma de pago.
- Verificar que se muestre el mensaje "La fecha de vencimiento informada no es valida para el modo de pago utilizado"
- En el campo Vencimiento (EL_DTVCTO) cambiar la fecha y que esta fecha sea mayor a la Fecha de Emisión (EL_EMISSAO).
- Dar clic en Confirmar forma de pago.
- Agregar una forma de pago por el valor restante de la Factura de venta, seleccionando una forma de pago tipo PGR:
- Verificar que el campo Tipo Valor (EL_TIPODOC) se cambie automáticamente a Documento.
- Verificar que el campo Prefijo (EL_PREFIXO) sea bloqueado y de manera automática se llene con el valor PGR.
- Verificar que los campos Valor Base (EL_VALBASE) y Alícuota (EL_ALIQ) se encuentren bloqueados y no requeridos para agregar la forma de pago.
- Verificar que los campos Banco (EL_BANCO), Agencia (EL_AGENCIA) y Cuenta Banco (EL_CONTA) sean llenados de manera automática al momento de seleccionar un banco en el campo virtual Busc. Bancos (EL_BANCOS).
- Verificar que el campo creado por el usuario en el módulo configurador (SIGACFG) Retención (EL_DOMINIO) sea bloqueado dadas las condiciones en la función de usuario compilada en la sección de Pre-Condiciones.
- Verificar que el campo ID. Contrib (EL_CGC) se encuentre como obligatorio.
- Dar clic en Confirmar forma de pago.
- Guardar el recibo.
04. INFORMACIÓN ADICIONAL
La presente solución aplica para versión 12.1.33 o superior, siempre y cuando se tengan las rutinas actualizadas a la fecha indicada en la sección 01 - Datos Generales.¡IMPORTANTE!
05. ASUNTOS RELACIONADOS
- N/A