Script para reflejar en el calculo de ganancias la devolución del Aguinaldo

– Actualización 28/9/2016 –

Se adjunta script v1.4 para abarcar tanto los diferidos en 6 como en 7 partes.
Les recordamos que en el caso de tener MAS de una liquidación de SAC (incluso en diferentes periodos) pueden invocar la función actualizando los parámetros de la misma. Vale aclarar que es necesario identificar a los agentes que están en dicha situación y cambiarle el valor de la novedad1 a cero nuevamente (luego de ejecutar el script para una primera liquidación) para que sea contemplado en la próxima ejecución del script con la nueva liquidación.
Otra aclaración importante es que si tienen algún concepto de aguinaldo liquidado junto con el sueldo del mes no tenemos como identificar los valores de los conceptos deducibles ya que están junto con el sueldo. En estos caso se deberá intervenir manualmente para subsanar estos valores.
En esta oportunidad vamos a estar adjuntando otro archivo sql (comparacion.sql) el cual tiene unos comandos que les pueden llegar a ser utiles para comparar los valores en la tabla dh41 (antes y después de ejecutar el script). Para poder hacer la comparativa, antes de correr el script se debe ejecutar el comando que crea una copia de la tabla dh41 (del año 2016), luego correr el script y finalmente comparar los resultados.

Saludos, Equipo SIU-Mapuche.


El “script” que se va a utilizar para realizar la denominada Parte III (como se refleja en el calculo anual de ganancias la devolución del aguinaldo) consta de un store procedure que deberá ser incluido en la base donde se encuentran los datos del sistema SIU-Mapuhce. Basta con incluirlo una sola vez. Luego, esté podrá ser invocado sucesivas veces con los mismos (o diferentes) parámetros.
El funcionamiento del store procedure es transaccional, esto indica que si se produce un error durante la ejecución del mismo se deshacen las operaciones dejando la Base de Datos en el mismo estado en que se encontraba antes de la invocación. Si nos da un resultado “0” esto indica que finalizo sin errores.
Para poder realizar un control y verificación mas minuciosa, durante el proceso se emiten mensajes con valores intermedios sobre operaciones que se van realizando. Los mismos salen en el Log de Postgresql como “NOTICE”. Dependiendo del cliente con que se ejecute el store los mismos podrán ser observados por pantalla sin tener que mirar el Log.

El procesamiento interno consta de recorrer todos los agente que tiene devolución (novedad informada por SIRADIG o cargada de forma manual - con valor cero). A esos agentes se les mira los conceptos pasados como parámetro de la liquidación de SAC y se realizan los cálculos para la exención del SAC en el impuesto a las ganancias. Por ultimo, se marca la novedad del agente con el valor 1 para indicar que dicha persona ya fue procesada.

Algunos controles que se realizan durante la ejecución son:

  • Que exista la Liquidación del SAC ingresada como parámetro
     - Que el mes ingresado como parámetro se encuentre entre 6 y 12
  • Que los conceptos ingresados como parámetro tenga orden de impresión > 0 y el tipo de ganancia sea > 1
  • Que se tenga configurado el concepto que indica que un agente tiene devolución (Configuración → Entidades Externas → SIRADIG → Concepto)
  • Que el agente tenga registros de ganancias (dh41)

Parámetros:

  • (1) Nro. liquidación SAC
  • (2) MES del Periodo donde esta el SAC en dh41
  • (3) Lista de conceptos a evaluar. Formato: ‘{123,456,789}’
  • (4) Indica si el SAC fue diferido o no (diferido: true / NO diferido: false)

Store Procedure:

  • exencionSAC( (1) , (2) , (3) , (4) );

Ejemplo de utilización:

  • SELECT exencionSAC(2423,6,‘{30,391,374,310,356,325}’::int,true);

Backup:

  • Si bien el Store Procedure es transaccional, es muy recomendable realizar un resguardo del sistema antes de ejecutar el mismo. Ya que modifica datos.
  • Las tablas afectadas son: 1) dh41 (valores de Ganancias de los agentes. 2) dh20 (novedades de legajos).

El SCRIPT con extensión SQL se encuentra adjunto al pie de este mensaje.

Saludos, Equipo SIU-Mapuche.


Mail que hace referencia al siguiente script (20/9/2016):

Estimada Comunidad Mapuche, como venimos comentando en mails anteriores hemos centrado nuestros esfuerzos en trabajar sobre las partes I y III, o sea:

Parte I - Información via SIRADIG de los agentes a los que hay que devolverle el aguinaldo: La versión 2.4.3 con la modificación en la importación del SIRADIG publicada el 9 de Septiembre.

Parte III - Como se refleja en el calculo anual de ganancias la devolución del Aguinaldo: Script que trabaja sobre la tabla DH41 para volver el tiempo atras y corregir los montos de la tabla DH41 para que la misma “luzca” como si el aguinaldo hubiera sido exceptuado desde un primer momento. Hoy 20 de Septiembre estamos publicando la primera versión del mismo.En un rato vamos a publicar por la lista una dirección del foro para poder bajar el script.

El script funciona para los casos de:

  • Aguinaldo impactado en un solo mes de ganancias (6 o 7)
  • Aguinaldo diferido en 6 partes desde el mes 7 al 12

Nos queda por resolver:

  • Aguinaldo diferido en 7 partes desde el mes 6 al 12 (estamos trabajando)

Nos queda probar:

  • Casos de mas de una liquidación de aguinaldo en el mismo mes
  • Casos de liquidaciones de aguinaldo en meses posteriores (8,9, etc.)

A continuación distintos escenarios para correr el script:

  • Usando concepto de devolución

    • Caso de Aguinaldo impactado en un solo mes de ganancias (6 o 7)

      • Usando el mismo concepto de ganancias: Siempre realizar primero el calculo general de ganancias y la generación de la novedad (con la existencia del aguinaldo en DH41) de tal manera de que ese monto a retener se reste con el monto del concepto de devolución y luego de generar el SICORE se pise el retenido con el valor real retenido. Recien luego de esto se debe correr el script que corrigue el aguinaldo para el grupo de agentes de ese mes (y si fuera necesario anteriores) antes del cierre de mes. Si la operación fuera inversa la novedad generada para retener desde el sistema ya de por si no tendría en cuenta el aguinaldo y encima se restaría con el monto de devolución lo que redundaría en una doble devolución del monto.

      • Usando otro concepto:Existen muchas variantes pero en general en estos casos el calculo del sistema va por un lado y las devoluciones por otro. Es un mecanismo mas manual

    • Caso de Aguinaldo diferido en 6 o 7 meses:Este caso es el mas complicado ya que se deberían devolver solamente las diferencias comparativas correspondientes a las cuotas diferidas ya cobradas para luego correr el script que corrigue el resto de los diferimientos hasta fin de año sin necesidad de futuras devoluciones.

      • Usando el mismo concepto de ganancias: Siempre realizar primero el calculo general de ganancias y la generación de la novedad (con la existencia del aguinaldo en DH41) de tal manera de que ese monto a retener se reste con el monto del concepto de devolución y luego de generar el SICORE se pise el retenido con el valor real retenido. Recien luego de esto se debe correr el script que corrigue el aguinaldo para el grupo de agentes de ese mes (y si fuera necesario anteriores) antes del cierre de mes. Si la operación fuera inversa la novedad generada para retener desde el sistema ya de por si no tendría en cuenta el aguinaldo y encima se restaría con el monto de devolución lo que redundaría en una doble devolución del monto.

      • Usando otro concepto:Existen muchas variantes pero en general en estos casos el calculo del sistema va por un lado y las devoluciones por otro. Es un mecanismo mas manual

  • Sin Usar concepto de devolución

Se corre el script para corregir los montos de la tabla DH41 para que la misma “luzca” como si el aguinaldo hubiera sido exceptuado desde un primer momento.Esto generará un recalculo que en el caso de los que impactaron el aguinaldo en un solo mes de ganancias (6 o 7) hará que se vaya traslandando una merma en el monto a retener. Para los casos que hayan realizado un diferimiento de los mismos tanto en 6 como en 7 veces tambien se generará en el recalculo una merma del valor a retener tanto desde los meses 6 (o 7) hasta diciembre ya que los montos diferidos ya no estarán.

Los distintos escenarios planteados anteriormente que creemos pueden existir para la combinación de la Parte III con la Parte II (Liquidación de la devolución usando concepto de devolución) tendrán que ser evaluados por cada uno de los equipos de las instituciones para lo que aconsejamos realizar pruebas en bases alternativas pero con los datos reales. Todo aporte a la Comunidad será bienvenido a traves del foro para que todos podamos ayudarnos actuando de este modo como nos caracteriza de una manera solidaria y colaborativa.

Saludos para todos,
Ariel


comparacion.sql (399 Bytes)

script_sac_ganancias_v1.4.sql (13 KB)