Appearance
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:
- 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
- Escalas de cálculo progresivo: Soportar escalas para el cálculo de retenciones basadas en rangos de montos acumulados
- Acumulados por proveedor: Registrar y consultar los acumulados de pagos y retenciones por proveedor, mes y año
- Detalles de retención: Vincular las retenciones aplicadas con las órdenes de pago y movimientos correspondientes
- 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:
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
Concepto de ganancia asociado: La cuenta contable del detalle de compra debe tener un concepto de ganancia relacionado
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:
- 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.
- La primera escala comienza en 0: Representa los primeros pesos de excedente (de $0 a $71,000 de excedente con 5%).
- El monto fijo de la primera escala es 0: No hay retención acumulada de tramos anteriores.
- Monto Fijo: Es la retención acumulada máxima del tramo anterior. NO se recalcula, se suma directamente.
- % sobre excedente: El porcentaje se aplica SOLO sobre lo que excede el límite inferior del tramo.
- 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_tramoEjemplo 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 $ |
|---|---|---|---|---|---|
| 1 | 0 | 71,000 | 0 | 5% | 0 |
| 2 | 71,000 | 142,000 | 3,550 | 9% | 71,000 |
| 3 | 142,000 | 213,000 | 9,940 | 12% | 142,000 |
| 4 | 213,000 | 284,000 | 18,460 | 15% | 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,460Aplicació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,500Ejemplo 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,500Sin 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 COMPLETOEjemplos 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,000Ejemplo 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,000Entidades 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:
| Dato | Descripción | Restricciones |
|---|---|---|
| Código de Régimen | Có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 |
| Nombre | Descripción del concepto de retención | Requerido, máximo 50 caracteres |
| Porcentaje para Inscriptos | Alícuota aplicable a proveedores inscriptos en ganancias | Entre 0 y 100 |
| Porcentaje para No Inscriptos | Alícuota aplicable a proveedores no inscriptos en ganancias (típicamente 28%) | Entre 0 y 100 |
| Monto Mínimo | Monto no sujeto a retención (mínimo no imponible) | Mayor o igual a 0 |
| Cuenta Contable | Cuenta del plan de cuentas para imputación contable de la retención | Debe 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.
| Dato | Descripción | Restricciones |
|---|---|---|
| Código de Concepto | Referencia al concepto de ganancia | Requerido |
| Desde | Límite inferior del tramo (excedente sobre el mínimo) | Mayor o igual a 0. Primera escala debe comenzar en 0 |
| Hasta | Límite superior del tramo (excedente sobre el mínimo) | Mayor que "Desde" |
| Monto Fijo | Monto fijo de retención acumulada hasta este tramo | Mayor o igual a 0. Primera escala debe tener 0 |
| Porcentaje | Alícuota a aplicar sobre el excedente del tramo | Entre 0 y 100 |
| Base para Excedente | Límite inferior sobre el que se calcula el porcentaje | Debe coincidir con "Desde" |
Acumulado de Ganancia
Registra los montos acumulados y retenidos por proveedor y período para cada concepto de ganancia.
| Dato | Descripción | Restricciones |
|---|---|---|
| Código de Proveedor | Identificación del proveedor | Requerido |
| Mes | Mes del período de acumulación (1-12) | Requerido |
| Año | Año del período de acumulación | Requerido |
| Código de Concepto | Referencia al concepto de ganancia | Requerido |
| Monto Acumulado | Suma de montos netos de pagos en el período | Requerido, se actualiza con cada orden de pago |
| Monto Retenido | Suma de retenciones aplicadas en el período | Se 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.
| Dato | Descripción | Restricciones |
|---|---|---|
| Código de Concepto | Referencia al concepto de ganancia | Requerido |
| Número de Certificado | Número correlativo del certificado de retención emitido | Requerido |
| Orden de Pago | Referencia a la orden de pago en la que se aplicó la retención | Requerido |
| Movimiento de Retención | Referencia al movimiento registrado en tesorería por la retención | Requerido |
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:
| Proveedor | Inscripción | Concepto | Método de Cálculo | Valida Mínimo | % o Escala |
|---|---|---|---|---|---|
| Proveedor A | S | Ganancias 4ta Cat. | Escala progresiva | SI | Según tabla RG 5423 |
| Proveedor B | S | Ganancias Servicios | Porcentaje simple | SI | 15.00% |
| Proveedor C | N | Ganancias 4ta Cat. | Porcentaje fijo | NO | 28.00% (ignora escalas y mínimo) |
| Proveedor D | N | Ganancias Servicios | Porcentaje fijo | NO | 28.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ínimo | Monto Acumulado | Base Imponible | Retener |
|---|---|---|---|
| $450,000 | $400,000 | - | No |
| $450,000 | $450,000 | - | No |
| $450,000 | $600,000 | $150,000 | Sí |
Ejemplo para proveedores NO INSCRIPTOS (insgana = 'N'):
| Monto Mínimo | Monto Acumulado | Base Imponible | Retener |
|---|---|---|---|
| $450,000 | $400,000 | $400,000 | Sí (ignora mínimo) |
| $450,000 | $450,000 | $450,000 | Sí (ignora mínimo) |
| $450,000 | $600,000 | $600,000 | Sí (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):
| Escenario | Monto Pago | Mínimo | INSCRIPTO (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,000 | Sobre $50,000 (excedente) | $140,000 ($500,000 x 28%) |
| Monto muy alto | $1,000,000 | $450,000 | Sobre $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:
Verificar inscripción del proveedor:
- Si
insgana = 'N': IGNORAR escalas, usar porcentaje fijo (28%) - Si
insgana = 'S': Continuar con escalas
- Si
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 dondedesde <= base_escalas <= hasta - Aplicar la fórmula:
retención = fijo + (porcentaje × (base_escalas - excedente))
- Calcular excedente del mínimo:
Referencia normativa: RG AFIP 5423/2023 - Código de Régimen 119
Ejemplo (Concepto con escalas para INSCRIPTOS, mínimo $450,000):
| Escala | Desde | Hasta | Fijo | % | Excedente |
|---|---|---|---|---|---|
| 1 | $0 | $71,000 | $0 | 5% | $0 |
| 2 | $71,000 | $142,000 | $3,550 | 9% | $71,000 |
| 3 | $142,000 | $213,000 | $9,940 | 12% | $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:
- Buscar o crear registro de acumulado para la combinación proveedor + mes + año + concepto
- Incrementar el campo
monto_acumuladocon el valor neto del pago - Incrementar el campo
monto_retenidocon 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:
- Obtener la cuenta contable del detalle de compra
- Buscar el concepto de ganancia que tenga esa cuenta asociada
- Si existe concepto: Acumular el monto para posible retención
- 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:
- Generar el certificado de retención después de imprimir la orden de pago
- Asignar número correlativo único al certificado
- 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:
- 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 - Fijo = 0: El monto fijo de la primera escala debe ser 0 o nulo, ya que no hay retención acumulada de tramos anteriores
- 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:
| # | Desde | Hasta | Fijo | % | Excedente |
|---|---|---|---|---|---|
| 1 | 0 | 71,000 | 0 | 5% | 0 |
| 2 | 71,000 | 142,000 | 3,550 | 9% | 71,000 |
Ejemplo inválido:
| # | Desde | Hasta | Fijo | % | Excedente |
|---|---|---|---|---|---|
| 1 | 71,000 | 142,000 | 3,550 | 9% | 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:
- Eliminar todas las escalas anteriores del concepto
- Crear las nuevas escalas especificadas
- 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:
- El usuario accede al módulo de Compras -> Bases -> Conceptos de Ganancia
- El usuario selecciona la opción "Nuevo concepto"
- El sistema presenta el formulario de configuración
- 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
- Opcionalmente, el usuario agrega escalas de cálculo progresivo
- El usuario confirma la creación
- El sistema valida los datos y crea el concepto
- El sistema confirma la operación exitosa
Postcondiciones:
- Concepto de ganancia creado y disponible para uso
- Escalas asociadas creadas (si se especificaron)
Flujos alternativos:
| Paso | Condición | Acción |
|---|---|---|
| 7a | Cuenta contable no existe | Mostrar error y solicitar corrección |
| 7b | Escalas se solapan | Mostrar error indicando rangos en conflicto |
| 7c | Primera escala no comienza en 0 | Mostrar error: "La primera escala debe comenzar desde 0 (cero) ya que representa el excedente sobre el mínimo no imponible" |
| 7d | Primera escala tiene fijo > 0 | Mostrar 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:
- El usuario accede al módulo de Compras > Conceptos de Ganancia
- El usuario selecciona el concepto a modificar
- El sistema presenta el formulario con los datos actuales y sus escalas
- El usuario modifica los campos necesarios
- El usuario puede agregar, modificar o eliminar escalas
- El usuario confirma los cambios
- El sistema valida los datos
- El sistema actualiza el concepto y reemplaza completamente las escalas
- El sistema confirma la operación exitosa
Postcondiciones:
- Concepto actualizado con nuevos valores
- Escalas anteriores eliminadas y nuevas escalas creadas
Flujos alternativos:
| Paso | Condición | Acción |
|---|---|---|
| 7a | Validación falla | Mostrar errores y mantener formulario |
| 7b | Primera escala no comienza en 0 | Mostrar error de validación |
| 7c | Primera escala tiene fijo > 0 | Mostrar 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:
- El sistema identifica las facturas a cancelar en la orden de pago
- Para cada factura, obtiene la cuenta contable de los ítems
- Busca el concepto de ganancia asociado a cada cuenta
- Agrupa los montos por concepto
- 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
- Totaliza las retenciones a aplicar
- Registra los detalles de retención
- Actualiza los acumulados del proveedor
- 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:
- El usuario accede al módulo de Conceptos de Ganancia
- El sistema presenta el listado o el primer registro
- El usuario utiliza los controles de navegación:
- Ir al primero
- Ir al anterior
- Ir al siguiente
- Ir al último
- El sistema muestra el concepto correspondiente con sus escalas
Postcondiciones:
- Usuario visualiza el concepto seleccionado
Validaciones de Negocio
Validaciones de datos del concepto
| Dato | Validación | Descripción |
|---|---|---|
| Código de Régimen | Requerido | Debe ser completado obligatoriamente |
| Código de Régimen | Único | No puede existir otro concepto con el mismo código |
| Código de Régimen | Rango válido | Debe estar entre -32768 y 32767 |
| Nombre | Requerido | Debe ser completado obligatoriamente |
| Nombre | Máximo 50 caracteres | La descripción del concepto no puede exceder 50 caracteres |
| Porcentaje para Inscriptos | Entre 0 y 100 | La alícuota debe estar en el rango válido |
| Porcentaje para No Inscriptos | Entre 0 y 100 | La alícuota debe estar en el rango válido |
| Monto Mínimo | Mayor o igual a 0 | El monto no sujeto a retención no puede ser negativo |
| Cuenta Contable | Requerida | Debe ser asignada para imputación contable |
| Cuenta Contable | Debe existir | La cuenta seleccionada debe existir en el plan de cuentas |
Validaciones de escalas
| Validación | Mensaje 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
insganadel 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
| Permiso | Descripción | Acciones permitidas |
|---|---|---|
COMPRAS_BASES_RET-GANANCIAS | Ver conceptos de ganancia | Listar, consultar detalle, navegar, consultar acumulados |
COMPRAS_BASES_RET-GANANCIAS | Modificar conceptos | Crear, editar conceptos y escalas |
COMPRAS_BASES_RET-GANANCIAS | Eliminar conceptos | Eliminar conceptos (solo si no tienen uso) |
Historial de cambios
| Fecha | Versión | Autor | Descripción |
|---|---|---|---|
| 2025-12-12 | 1.0 | Sistema | Creación del documento de requerimientos |
| 2025-12-17 | 1.1 | Sistema | Fix 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-17 | 1.2 | Sistema | Aclaracion 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-17 | 1.3 | Sistema | Referencia 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-17 | 1.4 | Sistema | Cambio 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-18 | 1.5 | Sistema | Separació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. |