ÍNDICE

Nota

Esta rutina se ajustó para cumplir con la Ley general de protección de datos (Ley n° 13.70), siendo que algunos campos que presentan información considerada como datos sensibles y/o personales se ocultarán, dejando de ser legibles.

01. VISIÓN GENERAL

Esta rutina permite que se ejecuten las compensaciones de títulos por pagar con títulos por cobrar, efectuando de esta manera el encuentro de cuentas entre el proveedor y el cliente.

Los títulos que se considerarán en este proceso son:

  • Títulos de débito - ejemplo:  NF (Factura), BOL (Boleta), etc.
  • Títulos de crédito - ejemplo: PA (Pago anticipado), RA (Cobranza anticipada) y títulos de devolución (NDF y NCC).

02. EJECUCIÓN

  • Manual

Procedimiento efectuado de forma manual vía rutina Compensación entre carteras (FINA450), con exhibición de las pantallas involucradas en el proceso y necesitando de acciones/comandos del usuario.

  • Automática

Procedimiento realizado de forma automática en la rutina Compensación entre carteras (FINA450), sin exhibición de pantallas o necesidad de interacción del usuario.

Se utiliza en personalizaciones donde el proceso no necesita de interacciones del usuario (MSEXECAUTO)

Ejemplo de rutina automática
#include "rwmake.ch"
#include 'tbiconn.ch'
   
User Function Auto450()
    Local aAutoCab := {}
    Local aArea    := GetArea()
    Local cTabSe1  := "TMPSE1A"
    Local cTabSe2  := "TMPSE2A"
    Local aSE1450  := {}
    Local aSE2450  := {}
    Local aFilCmp  := {}
 
    Private lMsHelpAuto := .F.
    Private lMsErroAuto := .F.
 
    BeginSql Alias cTabSe1
        SELECT R_E_C_N_O_ as RECNO
            FROM %Table:SE1% SE1
            WHERE SE1.E1_FILIAL = 'D MG 01 '
                AND SE1.E1_PREFIXO = 'CPT'
                AND SE1.E1_NUM = 'VT001'
                AND SE1.E1_TIPO = 'NF'
                AND SE1.E1_CLIENTE = 'FIN001'
                AND SE1.E1_LOJA    = '01'
                AND SE1.%NotDel%
    EndSql
 
    While (cTabSe1)->(!EOF())
        SE1->(DbGoto((cTabSe1)->RECNO))
        AAdd(aSE1450, {SE1->E1_FILIAL+SE1->E1_PREFIXO+SE1->E1_NUM+SE1->E1_PARCELA+SE1->E1_TIPO})
        If ascan(aFilCmp,SE1->E1_FILIAL) == 0
            Aadd(aFilCmp, SE1->E1_FILIAL)
        EndIf   
        (cTabSe1)->(DbSkip()) 
    Enddo
 
    (cTabSe1)->(DbCloseArea())
 
    BeginSql Alias cTabSe2
        SELECT R_E_C_N_O_ as RECNO
            FROM %Table:SE2% SE2
            WHERE SE2.E2_FILIAL = 'D MG 02 '
                AND SE2.E2_PREFIXO = 'CPT'
                AND SE2.E2_NUM = 'VT001'
                AND SE2.E2_TIPO = 'NF'
                AND SE2.E2_FORNECE = 'FIN001'
                AND SE2.E2_LOJA    = '01'
                AND SE2.%NotDel%
    EndSql
 
    While (cTabSe2)->(!EOF())
        SE2->(DbGoto((cTabSe2)->RECNO))
        AAdd(aSE2450, {SE2->E2_FILIAL+SE2->E2_PREFIXO+SE2->E2_NUM+SE2->E2_PARCELA+SE2->E2_TIPO+SE2->E2_FORNECE+SE2->E2_LOJA})
        If ascan(aFilCmp,SE2->E2_FILIAL) == 0
            Aadd(aFilCmp, SE2->E2_FILIAL)
        EndIf   
        (cTabSe2)->(DbSkip()) 
    Enddo
     
    (cTabSe2)->(DbCloseArea())
 
    aAutoCab :={  {"AUTDVENINI450", cTod('27/08/19') , nil},;
                {"AUTDVENFIM450", cTod('27/08/19') , nil},;
                {"AUTNLIM450" ,8000, nil},;
                {"AUTCCLI450" , "FIN001" , nil},;
                {"AUTCLJCLI" , "01" , nil},;
                {"AUTCFOR450" , "FIN001" , nil},;
                {"AUTCLJFOR" , "01" , nil},;
                {"AUTCMOEDA450" , "01" , nil},;
                {"AUTNDEBCRED" , 1 , nil},;
                {"AUTLTITFUTURO", .F. , nil},;
                {"AUTARECCHAVE" ,aSE1450, nil},;
                {"AUTAPAGCHAVE" , aSE2450 , nil},;
                {"AUTAFILCOMP" , aFilCmp , nil}} //Parámetro opcional, solamente debe informarse si hubiera una compensación multisucursales 
 
    MSExecAuto({|x,y,z| Fina450(x,y,z)}, nil , aAutoCab , 3 )
 
    If !lMsErroAuto
        ConOut("¡Incluido con éxito! ")
        confirmsx8()
    Else
        ConOut("¡Error en la inclusión!")
        rollbacksx8()
        MostraErro()
    EndIf
 
    RestArea(aArea)
Return

Observación

Importante:

  • Para que la compensación funcione entre sucursales, es necesario el uso del parámetro AUTAFILCOMP, en caso contrario no hay necesidad de informarlo.
  • Si las tiendas del Cliente y Proveedor se informan sin contenido (vacías), el sistema considerará todas las tiendas del mismo código de cliente y proveedor.  (Disponible a partir del 01/06/2023)

Para más información, acceda a la documentación de la rutina automática.

Compensación entre carteras automática


03. OPERACIONES

  • Compensar

Operación que permite realizar la compensación entre carteras pagar/cobrar. 

 

  • Anular

Operación que permite realizar la anulación del movimiento generado por la compensación.

 

  • Reversión 

Operación que permite realizar la reversión del movimiento generado por la compensación.

 

  • Leyenda

Muestra el cuadro de leyendas y sus significados referidos de la situación del título por pagar.


  • Búsqueda

Busca el título dentro del archivo Cuentas por pagar, teniendo como resultado el título marcado y resaltado en la browse.


  • Visualizar

Operación que permite visualizar el título marcado, pudiendo verificar su saldo y valor.


04. PARÁMETROS APLICADOS

Lista de parámetros aplicados al FINA450 y su procesamiento

    Pregunta

    Descripción

    ¿Agrupa asiento?

    Informe la opción "Sí" para que los asientos contables generados por medio de la compensación se agrupen en un único asiento 

    ¿Muestra asientos?

    Informe la opción "Sí" para que los asientos contables generados por medio de la compensación se muestren en pantalla, o "No", en caso contrario. 

    ¿Comp. Títulos transferidos?

    Informe la opción "Sí" si permite la compensación de títulos transferidos al banco (Borderó) o "No", en caso contrario.

    ¿Selecciona sucursales? 

    Si fuera "Sí", aparecerá en la pantalla de selección de sucursales para el proceso de compensación multisucursales.

    Pregunta

    Descripción 

    Estándar

    MV_BX10925

    Define momento del tratamiento de la retención de los impuestos Pis Cofins y Csll, 1 = En la baja o 2 = En la emisión.  

    1

    MV_BP10925

    Define si en el valor de pago debe considerar el valor bruto de la baja parcial o el valor neto, considerando los impuestos.(1=Val Bruto/2=Val Neto)

    1

    MV_CC10925

    Configura el cálculo y retención de PCC en la Compensación entre carteras. 1. (Estándar) No calcula PCC 2. Calcula PCC.  

    1

    MV_NUMCOMP

    Numeración secuencial para Compensación entre carteras.  

    000000

    MV_CTLIPAG

    Controla las bajas por pagar por medio de la fecha de liberación completada, si fuera .T. el sistema verifica si se completó el campo E2_DATALIB, en caso contrario no controla 

    F

    MV_VLMINPG

    Valor mínimo para ejecutar la baja del título, aunque el campo E2_DATALIB no se hubiera completado y el parámetro MV_CTLIPAG fuera .T.  

    0

    MV_JURTIPO

    El interés de los títulos por cobrar puede ser: (S)imple, solamente (C)ompuesto o (M)ixto = Simple hasta 30 días de atraso y posteriormente Compuesto.  

    M

    MV_LJINTFS

    Indica integración con el Financial Services.

    .F.

    MV_JURXFIN

    Habilita la integración entre los módulos SIGAFIN - Financiero y SIGAPFS - Jurídico - Estándar deshabilitado.  

    .F.

    MV_CTBFLAG Indica si la marcación de los flags de contabilidad de las rutinas se realizará en la transacción del asiento contable  .F.


    05. PRINCIPALES PROCESOS


      Procedimientos

      Cómo realizar la compensación entre carteras:

      1. Tener un título por pagar disponible para compensación.
      2. Tener un título por cobrar disponible para compensación.
      3. En el browse de la compensación entre carteras, pulse la tecla (F12) para realizar la configuración de los parámetros de la rutina
      4. Configure los parámetros y confirme.
      5. A continuación, haga clic en la opción Compensar, se abrirá la pantalla de parametrización.

      Obs: en esta pantalla complete la información referente a los títulos de los pasos 1 y 2.

      6. A continuación realice el marcado del título registrado en el paso 1 y 2, seleccione la opción Grabar en el canto derecho de la pantalla.

       

      Información

      La compensación entre carteras utiliza una numeración secuencial utilizando el parámetro MV_NUMCOMP, que es controlada por el campo IDENTEE en las tablas SE1, SE2 y SE5, y por el campo IDPROC en las tablas FK1 y FK2

      Procedimiento

      Cómo realizar una anulación de compensación entre carteras:

      1. Tener una compensación entre carteras.
      2. En el browse de la compensación entre carteras, pulse la tecla (F12) para realizar la configuración de los parámetros de la rutina.
      3. Configure los parámetros y confírmelos.
      4. Marcar sobre el título compensado y seleccionar la opción Anular.

      5. Pulse la opción  OK


      Importante

      La operación de anulación de la compensación entre carteras se realiza con base en las tablas FK1 y FK2 utilizando el campo IDPROC para ubicar los registros compensados, es imprescindible la integridad de estas tablas para esta operación

      Importante

      Al intentar efectuar la anulación de compensación por el valor del aumento con saldo del título en cero, se mostrará un help informando que es necesario anular o revertir otro proceso de compensación antes.


      Importante

      Los usuarios que no estén autorizados para editar los registros de otras sucursales en el browse (Permissão 115), no podrán anular o revertir registros en que el origen de la compensación difiera de la sucursal accedida. Es decir, si la compensación originó otra sucursal, puede ser que los registros de la baja no se encuentren para hacer la reversión.


      El mensaje presentado de acuerdo con la siguiente imagen solamente es informativa, es decir, si los títulos involucrados en el proceso de compensación estén dentro de las reglas establecidas con relación al uso compartido y permisos de acceso, la anulación/reversión ocurrirá normalmente después de mostrar el help A450PERM.

      Procedimiento

      Cómo realizar la reversión entre carteras:

      1. Tener una compensación entre carteras.
      2. En el browse de la compensación entre carteras, pulse la tecla (F12) para realizar la configuración de los parámetros de la rutina.
      3. Configure los parámetros y confírmelos.
      4. Marcar sobre el título compensado y seleccionar la opción Revertir.

      5. Pulse la opción OK


      Importante

      La operación de anulación de la compensación entre carteras se realiza con base en las tablas FK1 y FK2 utilizando el campo IDPROC para ubicar los registros compensados, es imprescindible la integridad de estas tablas para esta operación

      Importante

      Al intentar efectuar la reversión de compensación por el valor del aumento con saldo del título en cero, se mostrará un help informando que es necesario anular o revertir otro proceso de compensación antes.


      Importante

      Los usuarios que no tengan autorización para editar los registros de otras sucursales en el browse (Permissão 115), no podrán anular o revertir registros en que el origen de la compensación difiera de la sucursal accedida. Es decir, si la compensación se originó de otra sucursal, puede ser que los registros de la baja no se encuentren para realizar la reversión.


      El mensaje presentado de acuerdo con la siguiente imagen solamente es informativo, es decir, si los títulos involucrados en el proceso de compensación estuvieran dentro de las reglas establecidas con relación al uso compartido y permisos de acceso, la anulación/reversión ocurrirá normalmente después de presentar el help A450PERM.

      La rutina Compensación entre carteras realiza la retención de PIS, Cofins y CSLL cuando la empresa usuaria del Protheus efectúa la retención de estos impuestos, pues es posible controlar la retención por medio de la generación de los títulos del tipo 'TX'.


      Importante

      La rutina de compensación entre carteras efectuará la retención de los impuestos de PIS, Cofins y CSLL tanto para el cuentas por pagar como para el cuentas por cobrar, a partir de fuentes con versión superior a diciembre de 2021. 


      Para realizar la retención de los impuestos PIS , COFINS y CSLL en la rutina Compensación entre carteras es necesario configurar los parámetros de acuerdo con lo siguiente:

      MV_BX10925 = 1 (retención del PCC en la baja)
      MV_BR10925 = 1 (retención del PCC en la baja)
      MV_CC10925 = 2 o 3 (habilita la retención del PCC en la compensación entre carteras)
      MV_BP10925 = 1 o 2 (Neto o Bruto)
      MV_BQ10925 = 1 o 2 (Neto o Bruto)

      Para la correcta retención de los impuestos PIS , COFINS y CSLL en la Compensación entre carteras, los parámetros MV_BP10925 y MV_BQ10925 deben estar con el contenido coherente (Neto o Bruto para ambos). De lo contrario, el sistema mostrará el siguiente mensaje:

      Otro punto referente a la configuración de los parámetros MV_BP10925 y MV_BQ10925, dependiendo de la configuración seleccionada (Neto o Bruto), en la pantalla de selección de títulos que se compensarán, los títulos se mostrarán con su valor neto o bruto. 


      Información importante

      • Para la retención del PCC de los Títulos por pagar en la rutina Compensación entre carteras es necesaria la utilización del parámetro MV_BX10925 = 1 (en la baja).
      • Esta implementación abarca solamente la retención de PCC, no considera IR ni ISS.
      • Si el valor del título por cobrar fuera menor que el valor neto del título por pagar, el PCC se calculará sobre el valor compensado (valor del título por cobrar).

      La rutina Compensación entre carteras realiza la retención de IR en la baja tanto para títulos por pagar como para títulos por cobrar.


      Importante

      La rutina de compensación entre carteras efectuará la retención de IR en la baja considerando la acumulación tanto para el cuentas por pagar como para el cuentas por cobrar, a partir de fuentes con versión superior a diciembre de 2021. 


      06. CONTABILIDAD

      La contabilidad de los procesos aplicados a la compensación cuentas por pagar vía módulo Financiero se realiza por medio de los siguientes asientos estándar:

      LP

      Hecho generador

      ON

      OFF (CTBAFIN)

      535Anulación de la Compensación de títulos por Pagar / por CobrarX
      594Cuentas por Pagar/Cobrar - Compensación entre carterasX



      07. TABLAS UTILIZADAS

      • SE2 - Archivo del cuentas por pagar.
      • SE1 - Títulos del cuentas por cobrar.
      • SE5 - Movimiento bancario.
      • SED - Archivo Modalidades.
      • SA1 - Archivo de clientes.
      • SA2 - Archivo de proveedores.
      • FK2 - Bajas por pagar.
      • FK1 - Bajas por cobrar.
      • FK6 - Valores adicionales.
      • FK7 - Tabla auxiliar.
      • FKA - Rastreo de movimiento.


      08. PUNTOS DE ENTRADA

      Punto de entrada

      Observación

      F450BROW

      Punto de entrada que permite manejar el contenido de los campos, y qué campos compondrán el browser en la rutina de compensación entre carteras.

      Documentación: https://tdn.totvs.com/x/p6Rc

      lFA450BU

      El punto de entrada lFA450BU permite que el cliente realice la inclusión de un botón.

      Documentación: https://tdn.totvs.com/x/E6Vc

      F450ValCon

      El punto de entrada F450ValCon, permite la validación de los datos referentes a los títulos seleccionados y controla la confirmación del proceso de compensación, en la rutina de Compensación de carteras. Se ejecuta en la función FA450CMP().

      Documentación: https://tdn.totvs.com/x/haVc

      F450SE5

      El punto de entrada F450SE5 se ejecuta después de la compensación de todos los títulos seleccionados en la pantalla.

      Documentación: https://tdn.totvs.com/x/GqNc

      F450OWN

       Elabora la expresión de filtro del archivo SE1 en IndRegua. 

      Documentación: https://tdn.totvs.com/x/FqNc

      F450FIL

      Realiza la personalización del filtro de IndRegua 

      Documentación: https://tdn.totvs.com/x/nwtRCg

      F450OWN1

      Elabora la expresión del filtro del archivo SE2 en IndRegua. 

      Documentación: https://tdn.totvs.com/x/9GASCw

      F450FIL1

      Realiza la personalización del filtro de IndRegua 

      Documentación: https://tdn.totvs.com/x/ogtRCg

      F450ORDEM


      F450GRAVA

      Permite manejar los datos de la tabla temporal responsable por la compensación.

      Documentación: https://tdn.totvs.com/x/k422C

      F450Conf

      El punto de entrada F450CONF tiene como finalidad validar el marcado del título para compensación.

      Documentación: https://tdn.totvs.com/x/FaNc

      F450valid

      Punto de entrada que permite la validación de información de la pantalla de compensación.

      Documentación: https://tdn.totvs.com/x/iaVc

      F450CAES

      El punto de entrada F450CAES se utiliza para validar o ejecutar algún procedimiento después que el usuario confirme la Anulación/Reversión de la compensación entre carteras.

      Documentación: https://tdn.totvs.com/x/FKNc

      F450SE1C

      El punto de entrada F450SE1C se utiliza para grabaciones complementarias en el archivo SE1; no necesita devolución ni pasa ningún parámetro.

      Documentación: https://tdn.totvs.com/x/GKNc

      F450SE2C

      El punto de entrada F450SE2C se utiliza para grabaciones complementarias en el archivo SE2; no necesita devolución ni pasa ningún parámetro.

      Documentación: https://tdn.totvs.com/x/GaNc

      FA450BUT

      El punto de entrada FA450BUT se utilizará en la inclusión de opciones en la barra de herramientas. La devolución debe ser el array de las opciones.

      Documentación: https://tdn.totvs.com/x/vaNc

      FILEMOT

      Punto de entrada para lectura del archivo de texto de motivos de baja del cuentas por cobrar.

      Documentación: https://tdn.totvs.com/x/IF1NDQ