Skip to content

Conceptos de Retención de Ganancia

Módulo: Compra Tipo: Resource Estado: Activo Fecha: 2025-12-18 Versión: 1.5


Descripción

Problema que resuelve

El módulo de compras requiere gestionar las retenciones de impuesto a las ganancias que se aplican sobre los pagos a proveedores. La empresa actúa como agente de retención según la normativa fiscal vigente, debiendo calcular, aplicar y documentar las retenciones correspondientes al momento de efectuar pagos a proveedores.

Sin un sistema centralizado, la gestión de retenciones presenta los siguientes desafíos:

  • Dificultad para configurar y mantener actualizados los diferentes conceptos de retención
  • Riesgo de errores en el cálculo de retenciones según la condición del proveedor
  • Imposibilidad de aplicar correctamente los montos no sujetos a retención
  • Complejidad en el manejo de escalas progresivas de cálculo
  • Falta de trazabilidad entre retenciones, órdenes de pago y acumulados

Solución propuesta

Se implementa un sistema completo para la gestión de Conceptos de Retención de Ganancia que permite:

  1. Configurar conceptos de retención: Definir los diferentes tipos de retenciones de ganancias con sus parámetros de cálculo diferenciados según la inscripción del proveedor
  2. Escalas de cálculo progresivo: Soportar escalas para el cálculo de retenciones basadas en rangos de montos acumulados
  3. Acumulados por proveedor: Registrar y consultar los acumulados de pagos y retenciones por proveedor, mes y año
  4. Detalles de retención: Vincular las retenciones aplicadas con las órdenes de pago y movimientos correspondientes
  5. Imputación contable: Asociar cada concepto con su cuenta contable para la correcta registración

Valor de negocio

  • Cumplimiento fiscal: Garantiza el correcto cálculo y aplicación de retenciones según normativa
  • Flexibilidad: Permite configurar múltiples conceptos con diferentes reglas de cálculo
  • Automatización: Reduce errores manuales en el cálculo de retenciones
  • Trazabilidad: Registra los acumulados y detalles de cada retención aplicada
  • Integración contable: Asegura la correcta imputación de las retenciones en el plan de cuentas

Contexto del sistema

Este recurso forma parte del módulo de Compras y se relaciona con:

  • Contabilidad: Imputaciones contables de las retenciones mediante la cuenta contable asociada
  • Tesorería: Órdenes de pago y movimientos de retención
  • Proveedores: Condición de inscripción en ganancias (insgana) que determina el porcentaje aplicable
  • Caja: Registro de movimientos de entrada (retenciones) y salida (órdenes de pago)

Proceso de Negocio

Flujo principal de aplicación de retenciones

El proceso de retención de ganancias se ejecuta durante el ciclo de pago a proveedores:

┌─────────────────────────────────────────────────────────────────────────────────┐
│                    FLUJO DE RETENCIÓN DE GANANCIAS                              │
├─────────────────────────────────────────────────────────────────────────────────┤
│                                                                                  │
│  1. CANCELACIÓN DE COMPROBANTES                                                  │
│     └── Se registra detalle de compra con cuenta contable                       │
│                    │                                                             │
│                    ▼                                                             │
│  2. BÚSQUEDA DE CONCEPTOS                                                        │
│     └── Sistema busca concepto de ganancia vinculado a la cuenta del detalle    │
│                    │                                                             │
│                    ▼                                                             │
│  3. GENERACIÓN DE ORDEN DE PAGO                                                  │
│     └── Se acumulan montos por régimen según cuenta del primer ítem             │
│         de cada factura que se cancela                                          │
│                    │                                                             │
│                    ▼                                                             │
│  4. EVALUACIÓN DE MONTO MÍNIMO                                                   │
│     ├── Si monto acumulado <= monto mínimo → No retener                         │
│     └── Si monto acumulado > monto mínimo → Calcular retención                  │
│                    │                                                             │
│                    ▼                                                             │
│  5. CÁLCULO DE RETENCIÓN                                                         │
│     ├── Seleccionar porcentaje según inscripción del proveedor                  │
│     ├── Calcular excedente: monto_acumulado - mínimo_no_imponible               │
│     └── Aplicar escala progresiva sobre el EXCEDENTE (no sobre monto bruto)     │
│                    │                                                             │
│                    ▼                                                             │
│  6. EMISIÓN DE CERTIFICADO                                                       │
│     └── Generar certificado de retención después de imprimir orden de pago      │
│                    │                                                             │
│                    ▼                                                             │
│  7. REGISTRO EN CAJA                                                             │
│     ├── Entrada: Retención aplicada                                             │
│     └── Salida: Orden de pago neta                                              │
│                    │                                                             │
│                    ▼                                                             │
│  8. ACTUALIZACIÓN DE ACUMULADOS                                                  │
│     └── Incrementar acumulado mensual del proveedor por concepto                │
│                                                                                  │
└─────────────────────────────────────────────────────────────────────────────────┘

Condiciones previas para el cálculo

Para que una retención de ganancias pueda calcularse, deben cumplirse las siguientes condiciones:

  1. Configuración del proveedor: El proveedor debe tener configurado el campo de inscripción en ganancias (insgana):

    • 'S' = Inscripto en ganancias
    • 'N' = No inscripto en ganancias
  2. Concepto de ganancia asociado: La cuenta contable del detalle de compra debe tener un concepto de ganancia relacionado

  3. Cuenta contable válida: El concepto de ganancia debe tener una cuenta contable existente en el plan de cuentas

Fórmulas de cálculo

Referencia normativa: RG AFIP 5423/2023 - Código de Régimen 119

  • Inscriptos: Retención según escala específica aplicada sobre el excedente del mínimo no imponible
  • No inscriptos: Retención fija (típicamente 28%)

Cálculo para proveedores INSCRIPTOS

Con escalas progresivas (ver RG_5423_Codigo_119_Calculo_Retenciones.md para detalles completos):

Conceptos clave de las escalas:

  1. Las escalas se aplican sobre el EXCEDENTE del mínimo no imponible: Primero se resta el mínimo no imponible del monto acumulado, y luego sobre ese excedente se busca la escala correspondiente.
  2. La primera escala comienza en 0: Representa los primeros pesos de excedente (de $0 a $71,000 de excedente con 5%).
  3. El monto fijo de la primera escala es 0: No hay retención acumulada de tramos anteriores.
  4. Monto Fijo: Es la retención acumulada máxima del tramo anterior. NO se recalcula, se suma directamente.
  5. % sobre excedente: El porcentaje se aplica SOLO sobre lo que excede el límite inferior del tramo.
  6. S/exc. de $: Campo que indica el límite inferior del tramo desde donde se calcula el excedente.

Fórmula:

Si proveedor.insgana = 'S' AND concepto tiene escalas:
    1. Calcular excedente del mínimo: base_escalas = monto_acumulado - minimo_no_imponible
    2. Si base_escalas <= 0 → No retener
    3. Si base_escalas > 0:
       a. Buscar escala donde: desde <= base_escalas <= hasta
       b. Calcular excedente del tramo: base_escalas - campo_"S/exc.de$"
       c. Aplicar: retencion = monto_fijo + (porcentaje / 100) × excedente_del_tramo

Ejemplo con tabla RG 5423 - Código 119:

IMPORTANTE: Las escalas deben configurarse representando el excedente sobre el mínimo no imponible, comenzando desde 0:

#Desde (excedente)Hasta (excedente)Monto Fijo $%S/exc. de $
1071,00005%0
271,000142,0003,5509%71,000
3142,000213,0009,94012%142,000
4213,000284,00018,46015%213,000

Desglose del Monto Fijo (cómo se calcula cada escalón):

Tramo 1 (excedente de $0 a $71,000):
  Monto fijo = $0 (no hay tramos anteriores)
  Retención máxima del tramo = $71,000 × 5% = $3,550
  ↓ Este $3,550 es el "monto fijo" del tramo 2

Tramo 2 (excedente de $71,000 a $142,000):
  Retención = $3,550 (del tramo anterior)
            + ($142,000 - $71,000) × 9%
            = $3,550 + ($71,000 × 9%)
            = $3,550 + $6,390
            = $9,940
  ↓ Este $9,940 es el "monto fijo" del tramo 3

Tramo 3 (excedente de $142,000 a $213,000):
  Retención = $9,940 (del tramo anterior)
            + ($213,000 - $142,000) × 12%
            = $9,940 + ($71,000 × 12%)
            = $9,940 + $8,520
            = $18,460

Aplicación práctica:

Datos:
- Mínimo no imponible del concepto: $450,000
- Monto acumulado del proveedor: $520,000

Paso 1: Calcular excedente sobre el mínimo
  base_escalas = $520,000 - $450,000 = $70,000

Paso 2: Identificar escala para el excedente
  $70,000 está en el tramo 1 (entre $0 y $71,000 de excedente)

Paso 3: Obtener datos del tramo:
  - Monto fijo: $0 (primera escala)
  - Porcentaje: 5%
  - S/exc. de $: $0

Paso 4: Calcular excedente del tramo: $70,000 - $0 = $70,000

Paso 5: Calcular retención:
  Retención = $0 + ($70,000 × 5%)
            = $0 + $3,500
            = $3,500

✓ El proveedor inscripto con $520,000 acumulado debe retener $3,500

Ejemplo con escala superior:

Datos:
- Mínimo no imponible: $450,000
- Monto acumulado del proveedor: $630,000

Paso 1: Calcular excedente sobre el mínimo
  base_escalas = $630,000 - $450,000 = $180,000

Paso 2: Identificar escala para el excedente
  $180,000 está en el tramo 3 (entre $142,000 y $213,000 de excedente)

Paso 3: Obtener datos del tramo:
  - Monto fijo: $9,940 (retención acumulada hasta $142,000 de excedente)
  - Porcentaje: 12%
  - S/exc. de $: $142,000

Paso 4: Calcular excedente del tramo: $180,000 - $142,000 = $38,000

Paso 5: Calcular retención:
  Retención = $9,940 + ($38,000 × 12%)
            = $9,940 + $4,560
            = $14,500

✓ El proveedor inscripto con $630,000 acumulado debe retener $14,500

Sin escalas (porcentaje simple):

Si proveedor.insgana = 'S' AND concepto NO tiene escalas:
    Si monto_acumulado > monto_minimo:
        base_imponible = monto_acumulado - monto_minimo
        retencion = base_imponible * (porcentaje_inscripto / 100)

Cálculo para proveedores NO INSCRIPTOS

Referencia normativa: RG AFIP 4546/2019 - No inscriptos en Ganancias

IMPORTANTE: Los no inscriptos NUNCA usan escalas, siempre porcentaje fijo

REGLA CRITICA: NO INSCRIPTOS NO VALIDAN MINIMO

Los proveedores NO INSCRIPTOS (insgana = 'N') NO contemplan monto mínimo no sujeto a retención. Se retiene sobre el TOTAL del monto desde el primer peso, sin validar mínimo no imponible.

Fundamento: RG AFIP 4546/2019 - Los sujetos no inscriptos están sujetos a una retención del 28% sobre el total de los pagos, sin considerar mínimos no imponibles.

Si proveedor.insgana = 'N':
    base_imponible = monto_total (SIN restar mínimo, TODO el monto)
    retencion = base_imponible * (porcentaje_no_inscripto / 100)

Notas:
- Típicamente 28% según RG AFIP 5423/2023
- Las escalas se IGNORAN aunque estén configuradas en el concepto
- El mínimo no imponible se IGNORA - se retiene desde el primer peso
- NO hay excedente, la base imponible es el monto COMPLETO

Ejemplos comparativos INSCRIPTO vs NO INSCRIPTO (mínimo $450,000):

Ejemplo 1: Pago de $100,000 (por debajo del mínimo)

INSCRIPTO (insgana = 'S'):
  - Monto: $100,000
  - Mínimo: $450,000
  - $100,000 <= $450,000 → NO RETENER
  - Retención: $0

NO INSCRIPTO (insgana = 'N'):
  - Monto: $100,000
  - NO valida mínimo
  - Base imponible: $100,000 (monto total)
  - Retención: $100,000 x 28% = $28,000

Ejemplo 2: Pago de $500,000 (supera el mínimo)

INSCRIPTO (insgana = 'S'):
  - Monto: $500,000
  - Mínimo: $450,000
  - $500,000 > $450,000 → RETENER sobre excedente
  - Base imponible: $500,000 - $450,000 = $50,000
  - Retención: $50,000 x % según escala

NO INSCRIPTO (insgana = 'N'):
  - Monto: $500,000
  - NO valida mínimo
  - Base imponible: $500,000 (monto TOTAL)
  - Retención: $500,000 x 28% = $140,000

Entidades y Datos

Concepto de Ganancia

Representa un tipo de retención de ganancias con sus parámetros de cálculo diferenciados por la inscripción fiscal del proveedor.

Datos del concepto:

DatoDescripciónRestricciones
Código de RégimenCódigo del régimen de ganancia (ej: 119 según RG AFIP 5423)Requerido, único, rango válido para small integer (-32768 a 32767). Puede ser código oficial AFIP o codificación interna de la empresa
NombreDescripción del concepto de retenciónRequerido, máximo 50 caracteres
Porcentaje para InscriptosAlícuota aplicable a proveedores inscriptos en gananciasEntre 0 y 100
Porcentaje para No InscriptosAlícuota aplicable a proveedores no inscriptos en ganancias (típicamente 28%)Entre 0 y 100
Monto MínimoMonto no sujeto a retención (mínimo no imponible)Mayor o igual a 0
Cuenta ContableCuenta del plan de cuentas para imputación contable de la retenciónDebe existir en el plan de cuentas

Escala de Ganancia

Define los tramos de cálculo progresivo para un concepto. Las escalas representan rangos sobre el excedente del mínimo no imponible. Solo aplican a proveedores inscriptos en ganancias.

DatoDescripciónRestricciones
Código de ConceptoReferencia al concepto de gananciaRequerido
DesdeLímite inferior del tramo (excedente sobre el mínimo)Mayor o igual a 0. Primera escala debe comenzar en 0
HastaLímite superior del tramo (excedente sobre el mínimo)Mayor que "Desde"
Monto FijoMonto fijo de retención acumulada hasta este tramoMayor o igual a 0. Primera escala debe tener 0
PorcentajeAlícuota a aplicar sobre el excedente del tramoEntre 0 y 100
Base para ExcedenteLímite inferior sobre el que se calcula el porcentajeDebe coincidir con "Desde"

Acumulado de Ganancia

Registra los montos acumulados y retenidos por proveedor y período para cada concepto de ganancia.

DatoDescripciónRestricciones
Código de ProveedorIdentificación del proveedorRequerido
MesMes del período de acumulación (1-12)Requerido
AñoAño del período de acumulaciónRequerido
Código de ConceptoReferencia al concepto de gananciaRequerido
Monto AcumuladoSuma de montos netos de pagos en el períodoRequerido, se actualiza con cada orden de pago
Monto RetenidoSuma de retenciones aplicadas en el períodoSe actualiza solo cuando hay retención efectiva

Restricción importante: Solo puede existir un registro por combinación de (Código de Proveedor + Mes + Año + Código de Concepto). Esta restricción asegura que no haya duplicados.

Detalle de Ganancia

Registra cada retención efectivamente aplicada, vinculando el concepto con la orden de pago y el movimiento de tesorería correspondiente.

DatoDescripciónRestricciones
Código de ConceptoReferencia al concepto de gananciaRequerido
Número de CertificadoNúmero correlativo del certificado de retención emitidoRequerido
Orden de PagoReferencia a la orden de pago en la que se aplicó la retenciónRequerido
Movimiento de RetenciónReferencia al movimiento registrado en tesorería por la retenciónRequerido

Relaciones entre entidades

Diagrama Entidad-Relación (ERD):

Para consultar la estructura técnica detallada de las tablas, campos y sus relaciones, ver: 📊 Diagrama de Entidad-Relación - Retenciones de Ganancias

Este diagrama muestra:

  • Estructura completa de tablas (congan, escgan, acugan, detgan)
  • Nombres técnicos de campos exactos
  • Relaciones y restricciones de integridad referencial
  • Tipos de datos y restricciones de cada campo

Reglas de Negocio

RN-001: Selección de método de cálculo según inscripción

Descripción: El método de cálculo de retención (escalas progresivas o porcentaje fijo) y la validación del mínimo no imponible dependen de la condición fiscal del proveedor en ganancias.

Condición: Al calcular una retención de ganancias sobre un pago.

Acción:

  • Si el proveedor tiene insgana = 'S' (inscripto):

    • Con escalas configuradas: Aplicar escala progresiva según tabla del RG 5423
    • Sin escalas: Aplicar el porcentaje para inscriptos del concepto
    • SIEMPRE: Validar el monto mínimo no imponible antes de retener
  • Si el proveedor tiene insgana = 'N' (no inscripto):

    • SIEMPRE: Aplicar el porcentaje fijo para no inscriptos (típicamente 28%)
    • NUNCA: Usar escalas progresivas, aunque estén configuradas en el concepto
    • NUNCA: Validar monto mínimo no imponible - se retiene desde el primer peso

Fundamento: Según RG AFIP 5423/2023, las escalas específicas solo aplican a inscriptos. Los no inscriptos tienen una retención fija independiente del monto acumulado y no contemplan mínimo no imponible.

Ejemplo:

ProveedorInscripciónConceptoMétodo de CálculoValida Mínimo% o Escala
Proveedor ASGanancias 4ta Cat.Escala progresivaSISegún tabla RG 5423
Proveedor BSGanancias ServiciosPorcentaje simpleSI15.00%
Proveedor CNGanancias 4ta Cat.Porcentaje fijoNO28.00% (ignora escalas y mínimo)
Proveedor DNGanancias ServiciosPorcentaje fijoNO28.00% (desde el primer peso)

RN-002: Monto mínimo no sujeto a retención (SOLO INSCRIPTOS)

Descripción: No se debe retener sobre montos que no superen el mínimo establecido para el concepto. Esta regla SOLO aplica a proveedores INSCRIPTOS en ganancias.

Condición: Al evaluar si corresponde aplicar retención a un proveedor INSCRIPTO (insgana = 'S').

Acción:

  • Si el monto acumulado es menor o igual al monto mínimo del concepto: No retener
  • Si el monto acumulado es mayor al monto mínimo: Calcular retención sobre el excedente

IMPORTANTE - Proveedores NO INSCRIPTOS:

  • Los proveedores con insgana = 'N' IGNORAN COMPLETAMENTE el monto mínimo no imponible
  • Se retiene desde el primer peso, sin validar mínimo
  • La base imponible es el monto total, no el excedente

Ejemplo para proveedores INSCRIPTOS (insgana = 'S'):

Monto MínimoMonto AcumuladoBase ImponibleRetener
$450,000$400,000-No
$450,000$450,000-No
$450,000$600,000$150,000

Ejemplo para proveedores NO INSCRIPTOS (insgana = 'N'):

Monto MínimoMonto AcumuladoBase ImponibleRetener
$450,000$400,000$400,000 (ignora mínimo)
$450,000$450,000$450,000 (ignora mínimo)
$450,000$600,000$600,000 (monto total)

RN-002-A: Mínimo no imponible NO aplica a NO INSCRIPTOS

Descripción: Los proveedores NO INSCRIPTOS en ganancias (insgana = 'N') NO contemplan monto mínimo no sujeto a retención. Para estos proveedores, TODO monto es retenido literalmente desde el primer peso.

Fundamento normativo: RG AFIP 4546/2019 - Los sujetos no inscriptos en el impuesto a las ganancias están sujetos a una retención del 28% sobre el total de los pagos realizados, sin considerar mínimos no imponibles.

Condición: Al calcular retención para un proveedor con insgana = 'N' (no inscripto).

Acción:

  • NO validar el monto mínimo del concepto
  • La base imponible es el monto total acumulado, no un excedente
  • Aplicar el porcentaje fijo para no inscriptos (28%) sobre el total
  • Retener desde el primer peso

Fundamento: Los proveedores no inscriptos en ganancias tienen un tratamiento diferenciado según la normativa. Al no estar inscriptos, no tienen derecho al beneficio del mínimo no imponible.

Fórmula:

Si proveedor.insgana = 'N':
    base_imponible = monto_total (SIN restar mínimo)
    retencion = base_imponible * (porcentaje_no_inscripto / 100)

Nota: Se retiene desde el primer peso. No hay mínimo no imponible.

Comparativa INSCRIPTOS vs NO INSCRIPTOS (mismo monto de pago):

EscenarioMonto PagoMínimoINSCRIPTO (retención)NO INSCRIPTO (retención)
Monto bajo$100,000$450,000$0 (no supera mínimo)$28,000 ($100,000 x 28%)
En el límite$450,000$450,000$0 (igual al mínimo)$126,000 ($450,000 x 28%)
Monto alto$500,000$450,000Sobre $50,000 (excedente)$140,000 ($500,000 x 28%)
Monto muy alto$1,000,000$450,000Sobre $550,000 (excedente)$280,000 ($1,000,000 x 28%)

RN-003: Aplicación de escalas progresivas sobre EXCEDENTE (SOLO INSCRIPTOS)

Descripción: Las escalas progresivas se aplican ÚNICAMENTE a proveedores inscriptos en ganancias (insgana='S') y sobre el excedente del mínimo no imponible, NO sobre el monto bruto acumulado.

Condición: El proveedor es inscripto, el concepto tiene escalas definidas y el monto acumulado supera el mínimo.

Acción:

  1. Verificar inscripción del proveedor:

    • Si insgana = 'N': IGNORAR escalas, usar porcentaje fijo (28%)
    • Si insgana = 'S': Continuar con escalas
  2. Para inscriptos con escalas:

    • Calcular excedente del mínimo: base_escalas = monto_acumulado - minimo_no_imponible
    • Si base_escalas <= 0: No retener
    • Si base_escalas > 0: Identificar la escala donde desde <= base_escalas <= hasta
    • Aplicar la fórmula: retención = fijo + (porcentaje × (base_escalas - excedente))

Referencia normativa: RG AFIP 5423/2023 - Código de Régimen 119

Ejemplo (Concepto con escalas para INSCRIPTOS, mínimo $450,000):

EscalaDesdeHastaFijo%Excedente
1$0$71,000$05%$0
2$71,000$142,000$3,5509%$71,000
3$142,000$213,000$9,94012%$142,000

Caso A: Proveedor INSCRIPTO con monto acumulado de $550,000:

  • Excedente del mínimo: $550,000 - $450,000 = $100,000
  • Escala aplicable: 2 (entre $71,000 y $142,000 de excedente)
  • Cálculo: $3,550 + 9% × ($100,000 - $71,000) = $3,550 + $2,610 = $6,160

Caso B: Proveedor NO INSCRIPTO con monto acumulado de $550,000:

  • Escalas NO SE APLICAN (se ignoran)
  • Base imponible: $550,000 - $450,000 = $100,000
  • Cálculo: $100,000 × 28% = $28,000
  • No importa la escala, siempre se usa el 28% fijo

RN-004: Acumulación mensual por proveedor

Descripción: Cada pago con retención debe actualizar el acumulado mensual del proveedor para el concepto correspondiente.

Condición: Se procesa un pago con retención de ganancias.

Acción:

  1. Buscar o crear registro de acumulado para la combinación proveedor + mes + año + concepto
  2. Incrementar el campo monto_acumulado con el valor neto del pago
  3. Incrementar el campo monto_retenido con el valor de la retención aplicada

Restricción: Solo puede existir un registro único por proveedor, mes, año y concepto.


RN-005: Búsqueda de conceptos por cuenta contable

Descripción: Los conceptos de ganancia se identifican a través de la cuenta contable registrada en el detalle de compra.

Condición: Al cancelar comprobantes de compra.

Acción:

  1. Obtener la cuenta contable del detalle de compra
  2. Buscar el concepto de ganancia que tenga esa cuenta asociada
  3. Si existe concepto: Acumular el monto para posible retención
  4. Si no existe concepto: El ítem no está sujeto a retención de ganancias

RN-006: Emisión de certificado de retención

Descripción: Cuando se aplica una retención, se debe generar un certificado con número correlativo.

Condición: El monto acumulado supera el mínimo y se aplica retención.

Acción:

  1. Generar el certificado de retención después de imprimir la orden de pago
  2. Asignar número correlativo único al certificado
  3. Registrar en la tabla de detalles vinculando:
    • Concepto de ganancia
    • Número de retención
    • Orden de pago
    • Movimiento de retención

RN-007: Registro en caja

Descripción: Las retenciones y órdenes de pago deben reflejarse correctamente en caja.

Condición: Se genera una orden de pago con retención.

Acción:

  • Registrar como entrada en caja: El monto de la retención aplicada
  • Registrar como salida en caja: El monto de la orden de pago (neto de retenciones)

RN-008: Consistencia de escalas

Descripción: Las escalas de un concepto deben mantener coherencia estructural.

Condición: Al crear o actualizar un concepto con escalas.

Acción:

  • El valor "desde" de la primera escala siempre debe ser 0 (representa el inicio del excedente sobre el mínimo)
  • Los rangos de las escalas no deben solaparse entre sí
  • Cada escala debe tener al menos un valor de cálculo (fijo, porcentaje o excedente)
  • El campo "excedente" de cada escala debe coincidir con el campo "desde"

RN-009: Validación de primera escala

Descripción: La primera escala de un concepto debe cumplir con validaciones específicas que garantizan el correcto cálculo de retenciones.

Condición: Al crear o actualizar escalas de un concepto de ganancia.

Acción:

  1. Desde = 0: La primera escala (ordenada por campo "desde" ascendente) debe tener desde = 0, representando el inicio del excedente sobre el mínimo no imponible
  2. Fijo = 0: El monto fijo de la primera escala debe ser 0 o nulo, ya que no hay retención acumulada de tramos anteriores
  3. Excedente = 0: El campo excedente de la primera escala debe ser 0 o nulo

Fundamento normativo: Las escalas de la RG AFIP 5423/2023 representan rangos sobre el excedente del mínimo no imponible. La primera escala (0 a $71,000 con 5%) cubre los primeros pesos de excedente, por lo tanto debe comenzar en 0 y no tener monto fijo acumulado.

Ejemplo válido:

#DesdeHastaFijo%Excedente
1071,00005%0
271,000142,0003,5509%71,000

Ejemplo inválido:

#DesdeHastaFijo%Excedente
171,000142,0003,5509%71,000

El ejemplo inválido falta la escala que cubre los excedentes desde $0 hasta $71,000.


RN-010: Actualización completa de escalas

Descripción: Al modificar un concepto, las escalas se reemplazan completamente.

Condición: Al actualizar un concepto que tiene escalas.

Acción:

  1. Eliminar todas las escalas anteriores del concepto
  2. Crear las nuevas escalas especificadas
  3. No se permite modificación parcial de escalas individuales

Casos de Uso

CU-001: Configurar nuevo concepto de retención

Actor: Usuario administrativo con permiso de acceso

Objetivo: Crear un nuevo concepto de retención de ganancias con sus parámetros de cálculo

Precondiciones:

  • Usuario autenticado con permiso COMPRAS_BASES_RET-GANANCIAS
  • Cuenta contable existente en el plan de cuentas

Flujo principal:

  1. El usuario accede al módulo de Compras -> Bases -> Conceptos de Ganancia
  2. El usuario selecciona la opción "Nuevo concepto"
  3. El sistema presenta el formulario de configuración
  4. El usuario completa los datos del concepto:
    • Nombre descriptivo (ej: "Ganancias 4ta Categoría")
    • Porcentaje para inscriptos (ej: 15.00%)
    • Porcentaje para no inscriptos (ej: 28.00%)
    • Monto no sujeto a retención (ej: $450,000)
    • Cuenta contable de imputación
  5. Opcionalmente, el usuario agrega escalas de cálculo progresivo
  6. El usuario confirma la creación
  7. El sistema valida los datos y crea el concepto
  8. El sistema confirma la operación exitosa

Postcondiciones:

  • Concepto de ganancia creado y disponible para uso
  • Escalas asociadas creadas (si se especificaron)

Flujos alternativos:

PasoCondiciónAcción
7aCuenta contable no existeMostrar error y solicitar corrección
7bEscalas se solapanMostrar error indicando rangos en conflicto
7cPrimera escala no comienza en 0Mostrar error: "La primera escala debe comenzar desde 0 (cero) ya que representa el excedente sobre el mínimo no imponible"
7dPrimera escala tiene fijo > 0Mostrar error: "El monto fijo de la primera escala debe ser 0 o vacío, ya que no hay tramos anteriores"

CU-002: Modificar concepto de retención existente

Actor: Usuario administrativo con permiso de acceso

Objetivo: Actualizar los parámetros de un concepto de retención

Precondiciones:

  • Usuario autenticado con permiso COMPRAS_BASES_RET-GANANCIAS
  • Concepto de ganancia existente

Flujo principal:

  1. El usuario accede al módulo de Compras > Conceptos de Ganancia
  2. El usuario selecciona el concepto a modificar
  3. El sistema presenta el formulario con los datos actuales y sus escalas
  4. El usuario modifica los campos necesarios
  5. El usuario puede agregar, modificar o eliminar escalas
  6. El usuario confirma los cambios
  7. El sistema valida los datos
  8. El sistema actualiza el concepto y reemplaza completamente las escalas
  9. El sistema confirma la operación exitosa

Postcondiciones:

  • Concepto actualizado con nuevos valores
  • Escalas anteriores eliminadas y nuevas escalas creadas

Flujos alternativos:

PasoCondiciónAcción
7aValidación fallaMostrar errores y mantener formulario
7bPrimera escala no comienza en 0Mostrar error de validación
7cPrimera escala tiene fijo > 0Mostrar error de validación

CU-003: Calcular retención en orden de pago

Actor: Sistema (proceso automático)

Objetivo: Determinar y aplicar la retención de ganancias correspondiente a una orden de pago

Precondiciones:

  • Orden de pago en proceso de generación
  • Proveedor con configuración de inscripción en ganancias
  • Comprobantes a cancelar con cuentas contables vinculadas a conceptos

Flujo principal:

  1. El sistema identifica las facturas a cancelar en la orden de pago
  2. Para cada factura, obtiene la cuenta contable de los ítems
  3. Busca el concepto de ganancia asociado a cada cuenta
  4. Agrupa los montos por concepto
  5. Para cada concepto: a. Obtiene el acumulado actual del proveedor para el período b. Suma el nuevo monto al acumulado c. Evalúa si supera el monto mínimo d. Si supera: calcula el excedente sobre el mínimo y aplica escalas sobre ese excedente
  6. Totaliza las retenciones a aplicar
  7. Registra los detalles de retención
  8. Actualiza los acumulados del proveedor
  9. Genera los certificados de retención

Postcondiciones:

  • Retenciones calculadas y aplicadas
  • Acumulados actualizados
  • Detalles registrados
  • Certificados generados

CU-004: Navegar entre conceptos

Actor: Usuario con permiso de acceso

Objetivo: Desplazarse entre los conceptos de ganancia configurados

Precondiciones:

  • Usuario autenticado con permiso COMPRAS_BASES_RET-GANANCIAS
  • Existen conceptos de ganancia en el sistema

Flujo principal:

  1. El usuario accede al módulo de Conceptos de Ganancia
  2. El sistema presenta el listado o el primer registro
  3. El usuario utiliza los controles de navegación:
    • Ir al primero
    • Ir al anterior
    • Ir al siguiente
    • Ir al último
  4. El sistema muestra el concepto correspondiente con sus escalas

Postcondiciones:

  • Usuario visualiza el concepto seleccionado

Validaciones de Negocio

Validaciones de datos del concepto

DatoValidaciónDescripción
Código de RégimenRequeridoDebe ser completado obligatoriamente
Código de RégimenÚnicoNo puede existir otro concepto con el mismo código
Código de RégimenRango válidoDebe estar entre -32768 y 32767
NombreRequeridoDebe ser completado obligatoriamente
NombreMáximo 50 caracteresLa descripción del concepto no puede exceder 50 caracteres
Porcentaje para InscriptosEntre 0 y 100La alícuota debe estar en el rango válido
Porcentaje para No InscriptosEntre 0 y 100La alícuota debe estar en el rango válido
Monto MínimoMayor o igual a 0El monto no sujeto a retención no puede ser negativo
Cuenta ContableRequeridaDebe ser asignada para imputación contable
Cuenta ContableDebe existirLa cuenta seleccionada debe existir en el plan de cuentas

Validaciones de escalas

ValidaciónMensaje de error
Rango válido"Escala N: El valor 'desde' no puede ser mayor que 'hasta'"
Sin solapamiento"Las escalas se solapan: Escala con rango [X, Y] se superpone con escala con rango [A, B]"
Valor de cálculo"Escala N: Debe especificar al menos un valor (fijo, porcentaje o excedente)"
Primera escala desde cero"La primera escala debe comenzar desde 0 (cero). Esta escala representa el cálculo sobre el excedente del mínimo no imponible."
Primera escala fijo cero"El monto fijo de la primera escala debe ser 0 o vacío, ya que no hay tramos anteriores."
Excedente igual a desde"El campo excedente de la escala con rango [{desde}, {hasta}] debe ser igual a {desde}."
Monto fijo coherente"El monto fijo de la escala con rango [{desde}, {hasta}] debería ser {valor_esperado} según los tramos anteriores."

Integraciones

Con módulo de Contabilidad

Integración: Plan de cuentas

Propósito: Validar existencia de cuenta contable y permitir imputación de retenciones

Interacciones:

  • Al crear/actualizar concepto: Verificar que la cuenta existe en el plan de cuentas
  • Al aplicar retención: Generar asiento contable con la cuenta del concepto

Con módulo de Compras

Integración: Detalles de compra

Propósito: Identificar conceptos de ganancia aplicables según cuentas contables

Interacciones:

  • Al cancelar comprobantes: Obtener cuenta contable del detalle de compra
  • Buscar concepto de ganancia vinculado a esa cuenta
  • Acumular montos para el régimen identificado

Con módulo de Proveedores

Integración: Condición de inscripción en ganancias

Propósito: Determinar el porcentaje de retención aplicable

Interacciones:

  • Campo insgana del proveedor indica su condición:
    • 'S': Inscripto en ganancias → usar porcentaje para inscriptos
    • 'N': No inscripto → usar porcentaje para no inscriptos

Con módulo de Cta Cte

Integración: Órdenes de pago y movimientos

Propósito: Vincular retenciones con operaciones de pago

Interacciones:

  • Al generar orden de pago: Calcular retenciones aplicables
  • Crear movimiento de retención en tesorería
  • Registrar detalle vinculando orden de pago y movimiento

Con módulo de Tesorería

Integración: Registro de movimientos

Propósito: Reflejar correctamente retenciones y pagos en caja

Interacciones:

  • Registrar retención como entrada (dinero que no sale de caja)
  • Registrar orden de pago como salida (monto neto efectivamente pagado)

Permisos

PermisoDescripciónAcciones permitidas
COMPRAS_BASES_RET-GANANCIASVer conceptos de gananciaListar, consultar detalle, navegar, consultar acumulados
COMPRAS_BASES_RET-GANANCIASModificar conceptosCrear, editar conceptos y escalas
COMPRAS_BASES_RET-GANANCIASEliminar conceptosEliminar conceptos (solo si no tienen uso)

Historial de cambios

FechaVersiónAutorDescripción
2025-12-121.0SistemaCreación del documento de requerimientos
2025-12-171.1SistemaFix de cálculo de escalas: Se corrigió la validación y cálculo de escalas progresivas. Cambios: (1) Las escalas ahora deben comenzar desde 0, representando el excedente sobre el mínimo no imponible. (2) La primera escala debe tener fijo=0. (3) El cálculo se aplica sobre (acumulado - mínimo), no sobre el acumulado bruto. Razón: Cumplimiento normativo RG AFIP 5423/2023 - las escalas se aplican al excedente del mínimo, no al monto bruto. Impacto: Los conceptos existentes con escalas inválidas deberán corregirse.
2025-12-171.2SistemaAclaracion sobre no inscriptos y minimo no imponible: Se agrego clarificacion de que los proveedores NO INSCRIPTOS (insgana='N') no contemplan minimo no imponible, reteniendose sobre el total del monto desde el primer peso. Cambios: (1) Se actualizo RN-001 para incluir la distincion de validacion de minimo segun inscripcion. (2) Se modifico RN-002 para aclarar que solo aplica a INSCRIPTOS. (3) Se agrego nueva regla RN-002-A especifica para NO INSCRIPTOS. (4) Se agregaron ejemplos comparativos en la seccion de formulas de calculo. Razon: Los NO INSCRIPTOS tienen tratamiento diferenciado y no tienen derecho al beneficio del minimo no imponible. Impacto: Los calculos de retencion para NO INSCRIPTOS deben aplicar el porcentaje sobre el monto total sin validar minimo.
2025-12-171.3SistemaReferencia normativa agregada: Se agregó la referencia normativa RG AFIP 4546/2019 que fundamenta el tratamiento diferenciado de los proveedores NO INSCRIPTOS. Esta resolución establece que los sujetos no inscriptos están sujetos a una retención del 28% sobre el total de los pagos, sin considerar mínimos no imponibles. La referencia se agregó en la sección de "Cálculo para proveedores NO INSCRIPTOS" y en la regla RN-002-A.
2025-12-171.4SistemaCambio de código auto-generado a manual: Se modificó el identificador del concepto de ganancia (codgan) de auto-generado (serial) a ingresado manualmente por el usuario. Cambios: (1) El código ahora es tipo smallint con rango -32768 a 32767. (2) El usuario debe ingresar manualmente un código único al crear/modificar conceptos. (3) Se valida unicidad del código. (4) Permite usar códigos oficiales de AFIP o numeración interna según necesidades administrativas. Razón: Flexibilidad para que las empresas utilicen los códigos de régimen que correspondan a normativas oficiales o su propia codificación interna. Impacto: Al crear nuevos conceptos, el usuario debe especificar el código manualmente con validación de unicidad y límites de smallint.
2025-12-181.5SistemaSeparación de identificadores: Se separaron los conceptos de ID técnico (autoincremental) y Código de Régimen (manual). Cambios: (1) Se agregó campo ID autoincremental como identificador técnico interno. (2) El campo Código de Régimen (codgan) se mantiene como smallint manual para uso de códigos oficiales. (3) Las relaciones con otras tablas utilizarán el ID técnico. (4) La API devuelve ambos campos: id (técnico) y cod_regimen (código manual). Razón: Separar identificadores técnicos de códigos de negocio permite mayor flexibilidad y claridad en el modelo de datos. Impacto: Las integraciones deben utilizar el ID técnico para relaciones, y el código de régimen para presentación y filtrado.