Diferencia entre revisiones de «CALCULO RETENCIONES/PROCEDIMIENTO»

De Pragma Wiki
Ir a la navegación Ir a la búsqueda
(Página creada con «==Introducción== El cálculo de impuestos se realiza casi íntegramente usando la base de datos. Los objetos que participan de este cálculo se describen en este artículo pero la mayor información vendrá de la lectura de esos objetos en SQL por parte de personal especializado. ==Inicialización de parámetros de cálculo== Category:MANUAL/USUARIO Category:CALCULO IMPUESTOS Category:PORTAL Durante la edición de una factura de compras o de ventas, ca…»)
 
Sin resumen de edición
 
(No se muestran 5 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
==Introducción==
==Introducción==


El cálculo de impuestos se realiza casi íntegramente usando la base de datos. Los objetos que participan de este cálculo se describen en este artículo pero la mayor información vendrá de la lectura de esos objetos en SQL por parte de personal especializado.
El cálculo de retenciones se realiza casi íntegramente usando la base de datos. Los objetos que participan del cálculo se describen en este artículo pero la mayor información vendrá del análisis de esos objetos en SQL por parte de personal especializado.


==Inicialización de parámetros de cálculo==
==Inicialización de parámetros de cálculo==
[[Category:MANUAL/USUARIO]]
[[Category:MANUAL/USUARIO]]
[[Category:CALCULO IMPUESTOS]]
[[Category:CALCULO RETENCIONES]]
[[Category:PORTAL]]
[[Category:PORTAL]]


Durante la edición de una factura de compras o de ventas, cada vez que se registra una línea en el detalle (artículo y demás datos), el sistema (Delphi, objeto: TcmpDETALLE_ART_CalculoImpuestos, procedimiento CalcularImpuestoClick) automáticamente graba los registros de detalle en '''[[CALCULO IMPUESTOS/PARAMETROS|Parámetros de facturas (impIMPCMPIMP_PARAMS)]]'''. Esta tabla guarda datos de facturas de compra y de venta y habitualmente es borrada una vez que se han calculado los impuestos.
Las ordenes de pago admiten la carga de:


Una vez hecho eso llama al procedimiento '''prx_impIMPCMPIMP_CALX_Actualizar_FAST''' que se ocupar de hacer el cálculo de los impuestos sobre esa factura.
*Facturas.
*Notas de débito.
*Notas de crédito.
*Anticipos.


El resultado de ese cálculo se graba en '''[[CALCULO IMPUESTOS/IMPUESTOS|Impuestos calculados (impIMPCMPIMP)]]''' que es la tabla desde la que se consultan los impuestos calculados en el sistema. Esta tabla guarda datos de facturas de compra y de venta.
(Las ordenes de pago se explican en su propia sección).
 
Una vez cargada la información necesaria (y con las aprobaciones que correspondan) la orden de pago se puede '''liquidar'''. Cuando se liquida se ejecuta un procedimiento de Delphi '''TOPCAB_implemented.CalcularRetenciones''' que inserta los comprobantes de la orden de pago en [[CALCULO RETENCIONES/PARAMETROS|Retenciones, parámetros de ordenes de pago (impIMPCMPRET_PARAMS)]] dando inicio al proceso de cálculo de retenciones.
 
Esta tabla tiene un trigger '''impIMPCMPRET_PARAMS_TR_impIMPCMPRET_INS''' que llama a un procedimiento '''prx_impIMPCMPRET_Actualizar_FAST''' que calcula las retenciones.


==Vistas requeridas para el cálculo, impuestos distintos a IIBB C.A.B.A.==
==Vistas requeridas para el cálculo, impuestos distintos a IIBB C.A.B.A.==


Las siguientes vistas son requeridas por el procedimiento de cálculo.
Las siguientes vistas son requeridas por el procedimiento de cálculo de impuestos distintos a IIBB C.A.B.A.


===impIMPCMPIMP_CALX_ImpuestosPorArticulo_NUEVO===
===1. impIMPCMPRET_FACTURAS_FAST===
Para cada línea de la tabla '''[[CALCULO IMPUESTOS/PARAMETROS|Parámetros de facturas (impIMPCMPIMP_PARAMS)]]''' arma la lista de impuestos que corresponden al artículo ingresado y los compara con la situación fiscal del proveedor o cliente ante cada uno de esos impuestos. Con esto arma la lista de impuestos que gravan al artículo, y que alcanzan al proveedor o cliente.
Para cada línea de la tabla '''[[CALCULO RETENCIONES/PARAMETROS|Retenciones, parámetros de ordenes de pago (impIMPCMPRET_PARAMS)]]''' arma la lista de impuestos que corresponden a cada comprobante y toda información adicional necesaria (exenciones, comportamientos fiscales, etc.).


===impIMPCMPIMP_CALX===
===2. impIMPCMPRET_AGRUP===
Tiene tres zonas de cálculo, éstas son:
Agrupa las facturas de la orden de pago cuyas retenciones estamos calculando según la definición de la familia de comprobantes. Por ejemplo la familia de Ganancias agrupa todas las facturas en un solo registro (denominado '''<AGRUP>''') pero la familia de IVA no, dejando que cada comprobante sea una agrupación de sí mismo.


*'''Registros normales''': usa el resultado de la vista '''impIMPCMPIMP_CALX_ImpuestosPorArticulo_NUEVO''' para tomar los artículos que gravan la operación, busca sus alícuotas y demás datos necesarios y completa el cálculo.
===3. impIMPCMPRET_ACUMULADOS===
Acumula según la definición de la familia de impuestos. Por ejemplo la familia de Ganancias acumula los pagos mensuales pero las otras familias consideran siempre cada comprobante sin tomar montos previos.


*'''IVA Exento''': cuando el cálculo corresponde a la familia de IVA, y el detalle de la factura está marcado como '''exento''' toma el impuesto asociado a '''[[IMPUESTOS/PARAMETROS|Impuestos, parametros generales (impPARAMS)]]'''  en el campo '''IVA_Exento''' y lo retorna como único impuesto calculado.
===4. impIMPCMPRET_AGRUP===
Suma los montos y retenciones agrupadas según la definición de la familia del impuesto, por ejemplo la familia de Ganancias agrupa por mes pero la de IVA no.


*'''Monotributo''': cuando el cálculo corresponde a la familia de IVA, y la condición coincide con el campo '''IVA_Monotributo''' de '''[[IMPUESTOS/PARAMETROS|Impuestos, parametros generales (impPARAMS)]]''' toma el impuesto asociado a esa condición en la tabla de condiciones '''[[IMPUESTOS/CONDICIONES|Impuestos, condiciones (IMPCON)]]'''. Tener en cuenta que cuando se le asocia un impuesto a una condición impositiva el cálculo considera únicamente ese impuesto. La condición de monotributo tiene precedencia por sobre la de '''exento'''.
===5. impIMPCMPRET_CALCULO_FAST===
Usa las vistas descriptas para calcular las retenciones que corresponda. En aquellos casos donde no se calcula retención por el motivo que sea, y la familia usa acumulados, los registros se guardan con el importe en retención en 0.


*'''impIMPCMPIMP_CALX_ImpuestosPorArticulo_NUEVO''': para cada línea de la tabla '''[[CALCULO IMPUESTOS/PARAMETROS|Parámetros de facturas (impIMPCMPIMP_PARAMS)]]''' arma la lista de impuestos que corresponden al artículo ingresado y los compara con la situación fiscal del proveedor o cliente ante cada uno de esos impuestos. Con esto arma la lista de impuestos que gravan al artículo, y que alcanzan al proveedor o cliente.
Este resultado se inserta en '''[[CALCULO RETENCIONES/RETENCIONES|Retenciones, detalle de montos retenidos (impIMPCMPRET_RETENCION)]]''' en el procedimiento '''prx_impIMPCMPRET_Actualizar_FAST'''.


*'''impIMPCMPIMP_CALX''': 
==Vistas requeridas para el cálculo, IIBB C.A.B.A.==
El cálculo de retenciones de IIBB C.A.B.A. requiere de una sola vista.


Las siguientes vistas arman los datos de base para el procedimiento de cálculo.
===1. impIMPCMPRET_CALCULO_IBCABA===
Junta los datos necesarios para poder realizar el cálculo de retenciones. Como el cálculo de retenciones de IIBB C.A.B.A. se basa en el padrón '''[[CALCULO IMPUESTOS/PADRON IBCABA|Padrón de Regimenes generales por publicación (IBCABA_PRG)]]''' el procedimiento es mucho más sencillo y esta vista proporciona todo lo necesario.


==Vistas requeridas para el cálculo, IIBB C.A.B.A.==
El resultado de esta vista se inserta en '''[[CALCULO RETENCIONES/RETENCIONES|Retenciones, detalle de montos retenidos (impIMPCMPRET_RETENCION)]]''' en el procedimiento '''prx_impIMPCMPRET_Actualizar_FAST'''.
 
==Procedimiento '''prx_impIMPCMPRET_Actualizar_FAST'''==


*'''impIMPCMPIMP_CALX_IIBB_POR_PADRON''' toma directamente el dato de '''[[CALCULO IMPUESTOS/PADRON IBCABA|Padrón de Regimenes generales por publicación (IBCABA_PRG)]]'''.
Este procedimiento es llamado por el trigger '''impIMPCMPRET_PARAMS_TR_impIMPCMPRET_INS''' sobre la tabla '''[[CALCULO RETENCIONES/PARAMETROS|Retenciones, parámetros de ordenes de pago (impIMPCMPRET_PARAMS)]]''' y ejecuta el proceso completo de calcular y generar las retenciones.


==Procedimiento '''prx_impIMPCMPIMP_CALX_Actualizar_FAST'''==
*Elimina registros de cualquier cálculo previo.
*Inserta en '''[[CALCULO RETENCIONES/FACTURAS|Retenciones, detalle de facturas (impIMPCMPRET)]]''' y '''[[CALCULO RETENCIONES/RETENCIONES|Retenciones, detalle de montos retenidos (impIMPCMPRET_RETENCION)]]''' lo calculado en '''5. impIMPCMPRET_CALCULO_FAST'''.


Este procedimiento es llamado por el sistema (Delphi, objeto: TcmpDETALLE_ART_CalculoImpuestos, procedimiento CalcularImpuestoClick) una vez que ha insertado todas las líneas de detalle de la factura en '''[[IMPUESTOS/PARAMETROS|Impuestos, parametros generales (impPARAMS)]]'''. El detalle del procedimiento es:
*Inserta en '''[[CALCULO RETENCIONES/FACTURAS|Retenciones, detalle de facturas (impIMPCMPRET)]]''' y '''[[CALCULO RETENCIONES/RETENCIONES|Retenciones, detalle de montos retenidos (impIMPCMPRET_RETENCION)]]''' lo calculado en '''1. impIMPCMPRET_CALCULO_IBCABA'''.


*Elimina cualquier cálculo previo de '''impIMPCMPIMP'''.
Finalmente el trigger '''IMPCMPRET''' que ha llamado al procedimiento '''prx_impIMPCMPRET_Actualizar_FAST''' inserta los registros calculados de '''[[CALCULO RETENCIONES/RETENCIONES|Retenciones, detalle de montos retenidos (impIMPCMPRET_RETENCION)]]''' en '''[[CALCULO RETENCIONES/CERTIFICADO DETALLE|Certificado retenciones, detalle de retenciones (IMPCMPRET)]]''' que es la tabla de detalle del certificado.
*Inserta en esa tabla el cálculo realizado en '''impIMPCMPIMP_CALX'''.
*Inserta en esa tabla el cálculo realizado en '''impIMPCMPIMP_CALX_IIBB_POR_PADRON'''.


Una vez que el procedimiento ha sido ejecutado tendremos los impuestos calculados en la tabla '''[[CALCULO IMPUESTOS/IMPUESTOS|Impuestos calculados (impIMPCMPIMP)]]'''.
==Emisión de los certificados de retención==
Cuando las ordenes de pago se registran emiten los '''[[CALCULO RETENCIONES/CERTIFICADO|Certificado de retenciones (RTCAB)]]''' necesarios, a través del trigger '''OPCAB_TR_RTCAB_UPDATE''' pero eso se explica en el artículo correspondiente a las ordenes de pago.

Revisión actual - 20:09 3 ene 2025

Introducción

El cálculo de retenciones se realiza casi íntegramente usando la base de datos. Los objetos que participan del cálculo se describen en este artículo pero la mayor información vendrá del análisis de esos objetos en SQL por parte de personal especializado.

Inicialización de parámetros de cálculo

Las ordenes de pago admiten la carga de:

  • Facturas.
  • Notas de débito.
  • Notas de crédito.
  • Anticipos.

(Las ordenes de pago se explican en su propia sección).

Una vez cargada la información necesaria (y con las aprobaciones que correspondan) la orden de pago se puede liquidar. Cuando se liquida se ejecuta un procedimiento de Delphi TOPCAB_implemented.CalcularRetenciones que inserta los comprobantes de la orden de pago en Retenciones, parámetros de ordenes de pago (impIMPCMPRET_PARAMS) dando inicio al proceso de cálculo de retenciones.

Esta tabla tiene un trigger impIMPCMPRET_PARAMS_TR_impIMPCMPRET_INS que llama a un procedimiento prx_impIMPCMPRET_Actualizar_FAST que calcula las retenciones.

Vistas requeridas para el cálculo, impuestos distintos a IIBB C.A.B.A.

Las siguientes vistas son requeridas por el procedimiento de cálculo de impuestos distintos a IIBB C.A.B.A.

1. impIMPCMPRET_FACTURAS_FAST

Para cada línea de la tabla Retenciones, parámetros de ordenes de pago (impIMPCMPRET_PARAMS) arma la lista de impuestos que corresponden a cada comprobante y toda información adicional necesaria (exenciones, comportamientos fiscales, etc.).

2. impIMPCMPRET_AGRUP

Agrupa las facturas de la orden de pago cuyas retenciones estamos calculando según la definición de la familia de comprobantes. Por ejemplo la familia de Ganancias agrupa todas las facturas en un solo registro (denominado <AGRUP>) pero la familia de IVA no, dejando que cada comprobante sea una agrupación de sí mismo.

3. impIMPCMPRET_ACUMULADOS

Acumula según la definición de la familia de impuestos. Por ejemplo la familia de Ganancias acumula los pagos mensuales pero las otras familias consideran siempre cada comprobante sin tomar montos previos.

4. impIMPCMPRET_AGRUP

Suma los montos y retenciones agrupadas según la definición de la familia del impuesto, por ejemplo la familia de Ganancias agrupa por mes pero la de IVA no.

5. impIMPCMPRET_CALCULO_FAST

Usa las vistas descriptas para calcular las retenciones que corresponda. En aquellos casos donde no se calcula retención por el motivo que sea, y la familia usa acumulados, los registros se guardan con el importe en retención en 0.

Este resultado se inserta en Retenciones, detalle de montos retenidos (impIMPCMPRET_RETENCION) en el procedimiento prx_impIMPCMPRET_Actualizar_FAST.

Vistas requeridas para el cálculo, IIBB C.A.B.A.

El cálculo de retenciones de IIBB C.A.B.A. requiere de una sola vista.

1. impIMPCMPRET_CALCULO_IBCABA

Junta los datos necesarios para poder realizar el cálculo de retenciones. Como el cálculo de retenciones de IIBB C.A.B.A. se basa en el padrón Padrón de Regimenes generales por publicación (IBCABA_PRG) el procedimiento es mucho más sencillo y esta vista proporciona todo lo necesario.

El resultado de esta vista se inserta en Retenciones, detalle de montos retenidos (impIMPCMPRET_RETENCION) en el procedimiento prx_impIMPCMPRET_Actualizar_FAST.

Procedimiento prx_impIMPCMPRET_Actualizar_FAST

Este procedimiento es llamado por el trigger impIMPCMPRET_PARAMS_TR_impIMPCMPRET_INS sobre la tabla Retenciones, parámetros de ordenes de pago (impIMPCMPRET_PARAMS) y ejecuta el proceso completo de calcular y generar las retenciones.

Finalmente el trigger IMPCMPRET que ha llamado al procedimiento prx_impIMPCMPRET_Actualizar_FAST inserta los registros calculados de Retenciones, detalle de montos retenidos (impIMPCMPRET_RETENCION) en Certificado retenciones, detalle de retenciones (IMPCMPRET) que es la tabla de detalle del certificado.

Emisión de los certificados de retención

Cuando las ordenes de pago se registran emiten los Certificado de retenciones (RTCAB) necesarios, a través del trigger OPCAB_TR_RTCAB_UPDATE pero eso se explica en el artículo correspondiente a las ordenes de pago.