aeat.application.aggregation._retencion_rate_advisory module

Statutory-rate advisory for administrador/consejero retención observations.

Modelo 111 aggregates operator-supplied per-perceptor retención rows: each RetencionObservation carries both the taxable_base and the withheld retencion_amount. For ordinary empleados (WORK_INCOME) the withholding is a personalised progressive computation (LIRPF art. 101.1), so no single rate can be asserted. For administradores y miembros de consejos de administración (WORK_INCOME_DIRECTOR) the law fixes the rate: LIRPF art. 101.2 (Ley 35/2006, BOE-A-2006-20764), developed by RIRPF art. 80.1.3.º (RD 439/2007), sets a general 35 % that drops to 19 % when the paying entity’s importe neto de la cifra de negocios is below 100.000 euros.

The engine does not compute the withheld amount (the operator enters it from their payroll), so the fixed rate could previously go unverified: an administrador row carrying, say, the ordinary empleado rate would fold into the trabajo block and file silently. This module surfaces that as a non-blocking CalculationSourceDiagnostic on the calculate path, grounded in the statutory WorkIncomeRetencionTreatment descriptor (no-silent-under-declaration). Because the engine cannot always know the paying entity’s INCN, a row whose effective rate matches EITHER statutory figure (35 % or 19 %) is treated as conforming; only a row consistent with neither raises the advisory, so a legitimate reduced-rate filing never false-fires.

ADMINISTRADOR_RETENCION_RATE_SOURCE_KIND

Diagnostic source_kind for an administrador/consejero retención whose withheld amount matches neither statutory art. 101.2 fixed rate.

administrador_retencion_rate_advisory_observations(observations)[source]

Return advisories for administrador rows inconsistent with art. 101.2.

A CalculationSourceDiagnostic (reason administrador_retencion_rate_mismatch) is emitted for each WORK_INCOME_DIRECTOR observation with a strictly-positive taxable_base whose withheld retencion_amount matches neither the general 35 % nor the reduced 19 % fixed rate of LIRPF art. 101.2. Rows on any other scheme (empleados follow the progressive art. 101.1 procedure, so no single rate applies; actividades, premios, capital, and arrendamiento are not art. 101 trabajo), and administrador rows with a non-positive base, are out of scope and never fire.

Parameters:

observations (Iterable[RetencionObservation]) – The per-perceptor retención rows feeding the calculation.

Return type:

tuple[CalculationSourceDiagnostic, ...]

Returns:

A tuple of non-blocking rate-mismatch diagnostics, in input order.