Árvore de páginas

01. DATOS GENERALES


Producto

TOTVS Backoffice

Línea de producto: 

Línea Protheus

Segmento:

Backoffice

Módulo:Financiero - SIGAFIN
Función:
RutinaNombre TécnicoFecha
F887FINARG.PRWEventos del modelo para Argentina.01/08/2023
F887FINPER.PRWEventos del modelo para Perú.01/08/2023
F887RETARG.PRWEventos del modelo para retenciones en Argentina01/08/2023
FINA887ARG.PRWModelo para Argentina en Totvs Recibo10/08/2023
FINA887PAR.PRWModelo para Paraguay en Totvs Recibo01/08/2023
FINA887PER.PRWModelo para Perú en Totvs Recibo01/08/2023
PAYMENTFORM.CONTROLLER.TLPPControlador del servicio de formas de pago01/08/2023
PAYMENTFORM.SERVICE.TLPPServicio de formas de pago16/08/2023
SAVERECEIPT.SERVICE.TLPPServicio para guardar los recibos01/08/2023
VALIDPAYMENTFORM.SERVICE.TLPPServicio para validar las formas de pago01/08/2023
FINA998.PRWTOTVS Recibo11/08/2023
FINA998.appAplicativo Totvs Recibo18/08/2023
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.

  1. Eventos del modelo para Argentina (F887FINARG.PRW):
    1. 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.
    2. Se eliminaron lineas de código que no son utilizadas.
  2. Eventos del modelo para Perú.(F887FINPER.PRW):
    1. 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.
  3. Eventos del modelo para retenciones en Argentina(F887RETARG.PRW):
    1. Se eliminaron líneas que no son utilizadas.
  4. Modelo para Argentina en Totvs Recibo (FINA887ARG.PRW):
    1. Para el país de Argentina se agregó en la definición del modelo reglas de dependencia, whens, inicializadores y  campos son obligatorios.
    2. Se agregaron disparadores para los campos valor, alícuota y base cuando son retenciones.
    3. Se agregaron funciones para determinar si un campo es bloqueado o no dependiendo el resultado del when.
    4. Se agregó la función blocAStr() el cual retorna una parte de código de una instrucción de tipo bloque (codeblock).
  5. Modelo para Paraguay en Totvs Recibo (FINA887PAR.PRW):
    1. Para el país de Paraguay se agregaron reglas de dependencia, campos obligatorios, y when´s.
    2. Se agregaron funciones para determinar si un campo es bloqueado o no dependiendo el resultado del when.
    3. Se agregaron disparadores para los campos valor, alícuota y base cuando son retenciones.
  6. Modelo para Perú en Totvs Recibo (FINA887PER.PRW):
    1. Para el país de Perú se agregaron reglas de dependencia, campos obligatorios, y whens.
    2. Se agregaron funciones para determinar si un campo es bloqueado o no dependiendo el resultado del when.
  7. Controlador del servicio de formas de pago (PAYMENTFORM.CONTROLLER.TLPP):
    1. 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().
  8. Servicio de formas de pago (PAYMENTFORM.SERVICE.TLPP):
    1. Se separó la lógica de campos físicos en la base de datos a los campos virtuales generados por medio del modelo.
    2. Se agregaron cambios para obtener propiedades de los campos por medio del metodo GETPROPERTY() en vez del GETSX3CACHE().
    3. Se determinaron los campos que deben ser bloqueados al momento de abrir la forma de pago dependiendo el país.
    4. 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).
    5. Se agregaron consultas estándares a campos virtuales.
    6. 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.
    7. 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).
    8. 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),
    9. Se corrigió el error de que los campos creados por el usuario de tipo fecha no son grabados correctamente en  la base de datos.
    10. 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).
  9. Servicio para guardar los recibos (SAVERECEIPT.SERVICE.TLPP):
    1. 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.
  10. Servicio para validar las formas de pago(VALIDPAYMENTFORM.SERVICE.TLPP):
    1. Se eliminaron validaciones que estaban en duro para los países de Argentina, Paraguay y Perú, las validaciones se encuentran ya en el modelo.
  11. Totvs Recibo(FINA998.PRW):
    1.  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.
    2.  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.


  1. Realizar un respaldo del repositorio (RPO).
  2. Aplicar el parche correspondiente al issue DMINA-19603.
  3. Validar que las rutinas actualizadas en el repositorio, coincidan con las descritas en el encabezado del presente Documento Técnico.
  4. A través de la rutina “Productos”, ubicada en el módulo de SIGAFIN (Actualizaciones | Archivos), incluir un producto.
  5. A través de la rutina “Bancos”, ubicada en el módulo de SIGAFIN (Actualizaciones | Archivos), incluir un banco.
  6. A través de la rutina “Clientes”, ubicada en el módulo de SIGAFIN (Actualizaciones | Archivos), incluir un cliente.

  7. 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.
  8. 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.


  1. Por medio del Módulo Configurador (SIGACFG) :
    1. Crear el campo con las siguientes características :
      1. Sección campo 
        1. Campo = EL_DOMINIO
        2. Tipo = 1-Caracter
        3. Tamaño = 5
        4. Formato = @!
        5. Contexto = 1 - Si
        6. Propiedad = 1 - Modificar
      2. Sección informaciones
        1. Tit. Español = Retención
        2. Desc. Español = Retención
      3. Sección Opciones
        1. Inic. Estándar = ""
        2. Modo Edición = U_WHENRET()
      4. Sección Uso
        1. Usado (x)
        2. Browse (x)
    2. Agregar regla de dependencia en el campo Tipo Tit. (EL_TIPO) por medio del Módulo configurador >> Editar Campo  >> Pestaña "Reglas de dependencia"
      1. Sección Reglas de dependencia
        1. Secuencia = 500
        2. Contra Dominio = EL_DOMINIO
        3. Tipo = Pre y Post Validación
        4. Descripción = Dominio
  2. Compilar la siguiente función de usuario:
    1. 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)

  1. Se ingresa a la opción de "Nuevo recibo".
  2. Capturar los datos del encabezado .
    1. Cliente: Indicar el cliente configurado en la sección Pre-condiciones.
  3. Seleccionar la Factura de Venta generada en la sección Pre-condiciones.
  4. 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:
    1. Verificar que el campo Tipo Valor (EL_TIPODOC) se cambie automáticamente a Retención IVA.
    2. Verificar que los campos Valor Base (EL_VALBASE) y Alícuota (EL_ALIQ) se encuentren antes del campo Valor (EL_VALOR).
    3. 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.
    4. 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.
    5. 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).
    6. Verificar que el campo Cod Fiscal (EL_CFO) y el campo virtual Estado (EL_EST) sean requeridos.
    7. 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.
  5. Agregar una forma de pago por un valor parcial al valor total de la Factura de venta, seleccionando una forma de pago tipo CHD:
    1. Verificar que el campo Tipo Valor (EL_TIPODOC) se cambie automáticamente a Cheque.
    2. 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.
    3. 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).
    4. 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).
    5. 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.
    6. Dar clic en Confirmar forma de pago.
    7. Verificar que se muestre el mensaje "La fecha de vencimiento informada no es valida para el modo de pago utilizado"
    8. En el campo Vencimiento (EL_DTVCTO) cambiar la fecha y que esta fecha sea mayor  a la Fecha de Emisión (EL_EMISSAO).
    9. Dar clic en Confirmar forma de pago.
  6. Agregar una forma de pago por el valor restante de la Factura de venta, seleccionando una forma de pago tipo PGR:
    1. Verificar que el campo Tipo Valor (EL_TIPODOC) se cambie automáticamente a Documento.
    2. Verificar que el campo Prefijo (EL_PREFIXO) sea bloqueado y de manera automática se llene con el valor PGR.
    3. 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.
    4. 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).
    5. 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.
    6. Verificar que el campo ID. Contrib (EL_CGC) se encuentre como obligatorio.
    7. Dar clic en Confirmar forma de pago.
  7. Guardar el recibo.


04. INFORMACIÓN ADICIONAL

¡IMPORTANTE!

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.


05. ASUNTOS RELACIONADOS

  • N/A