aeat.application.modelo._projection module¶
Projection and year-comparison services for modelo calculations.
The Modelo 100 projection path reads persisted CalculationRevision
rows from quarterly Modelo 130 work units, resolves the annual
RegistrySnapshot, injects the latest cumulative Modelo 130 income at
the annual Renta input leaf, threads pagos fraccionados through the relation
channel, overlays decimal, enum, and date profile facts from
resolve_profile_sourced_bindings(), and runs
calculate_registry_snapshot() without persisting the synthetic result.
The comparison path selects the best draft or verified
CalculationRevision for each requested year, grounds each delta row in
the compared registry snapshots, and returns either a
ModeloProjectServiceResult or ModeloCompareServiceResult.
- exception ModeloProjectionError(message=None, *, context=None, suggestion=None, translated_message=None)[source]¶
Bases:
AeatErrorBase class for application-level projection failures.
- Parameters:
- Return type:
None
- code: ClassVar[ErrorCode]¶
- exception ModeloProjectNoM130UnitsError(message=None, *, context=None, suggestion=None, translated_message=None)[source]¶
Bases:
ModeloProjectionErrorRaised when a year-end projection has no quarterly Modelo 130 work units.
- Parameters:
- Return type:
None
- code: ClassVar[ErrorCode]¶
- exception ModeloProjectNoM130RevisionsError(message=None, *, context=None, suggestion=None, translated_message=None)[source]¶
Bases:
ModeloProjectionErrorRaised when Modelo 130 work units exist but have no calculation revisions.
- Parameters:
- Return type:
None
- code: ClassVar[ErrorCode]¶
- exception ModeloProjectInvalidDecimalOverrideError(message=None, *, context=None, suggestion=None, translated_message=None)[source]¶
Bases:
ModeloProjectionErrorRaised when a projection override cannot be parsed as a decimal.
- Parameters:
- Return type:
None
- code: ClassVar[ErrorCode]¶
- exception ModeloCompareNeedTwoYearsError(message=None, *, context=None, suggestion=None, translated_message=None)[source]¶
Bases:
ModeloProjectionErrorRaised when comparison is not addressed to exactly two filing years.
- Parameters:
- Return type:
None
- code: ClassVar[ErrorCode]¶
- exception ModeloCompareNoWorkUnitsError(message=None, *, context=None, suggestion=None, translated_message=None)[source]¶
Bases:
ModeloProjectionErrorRaised when comparison finds no work units for a filing year.
- Parameters:
- Return type:
None
- code: ClassVar[ErrorCode]¶
- exception ModeloCompareNoRevisionsError(message=None, *, context=None, suggestion=None, translated_message=None)[source]¶
Bases:
ModeloProjectionErrorRaised when comparison finds work units but no calculation revisions.
- Parameters:
- Return type:
None
- code: ClassVar[ErrorCode]¶
- exception ModeloCompareNoUsableRevisionsError(message=None, *, context=None, suggestion=None, translated_message=None)[source]¶
Bases:
ModeloProjectionErrorRaised when comparison finds no verified or draft revisions.
- Parameters:
- Return type:
None
- code: ClassVar[ErrorCode]¶
- class ModeloProjectionCasillaObservation(**data)[source]¶
Bases:
BaseModelOne computed casilla emitted by a projection service.
- Parameters:
- casilla_id: CasillaId¶
- value: Decimal¶
- formula_id: FormulaId | None¶
- legal_refs: tuple[LegalRefId, ...]¶
- source_refs: tuple[SourceRefId, ...]¶
- class ModeloProjectM130Accumulated(**data)[source]¶
Bases:
BaseModelAccumulated Modelo 130 source values for a Modelo 100 projection.
- Parameters:
- ingresos: Decimal¶
- gastos: Decimal¶
- rendimiento_neto: Decimal¶
- pagos_fraccionados: Decimal¶
- class ModeloProjectM100Projection(**data)[source]¶
Bases:
BaseModelProjected Modelo 100 output values.
- Parameters:
- base_liquidable_general_0505: Decimal¶
- pagos_fraccionados_0604: Decimal¶
- cuota_integra_estatal_0545: Decimal¶
- cuota_integra_autonomica_0546: Decimal¶
- cuota_liquida_estatal_0595: Decimal¶
- cuota_liquida_autonomica_0596: Decimal¶
- cuota_resultante_0597: Decimal¶
- class ModeloProjectServiceResult(**data)[source]¶
Bases:
BaseModelYear-end Modelo 100 projection from quarterly Modelo 130 revisions.
- Parameters:
year (int)
ccaa (str)
quarters_filed (int)
is_extrapolated (bool)
m130_accumulated (ModeloProjectM130Accumulated)
casilla_observations (tuple[ModeloProjectionCasillaObservation, ...])
m100_projection (ModeloProjectM100Projection)
- year: int¶
- ccaa: str¶
- quarters_filed: int¶
- quarters_available: tuple[str, ...]¶
- is_extrapolated: bool¶
- m130_accumulated: ModeloProjectM130Accumulated¶
- casilla_observations: tuple[ModeloProjectionCasillaObservation, ...]¶
- m100_projection: ModeloProjectM100Projection¶
- class ModeloCompareDeltaRow(**data)[source]¶
Bases:
BaseModelOne casilla delta row in a modelo year comparison.
- Parameters:
- casilla_id: CasillaId¶
- label: str¶
- section: str¶
- year_a_value: Decimal¶
- year_b_value: Decimal¶
- delta: Decimal¶
- pct_change: Decimal | None¶
- formula_id: FormulaId | None¶
- legal_refs: tuple[LegalRefId, ...]¶
- source_refs: tuple[SourceRefId, ...]¶
- class ModeloCompareSection(**data)[source]¶
Bases:
BaseModelOne section grouping for a modelo comparison.
- Parameters:
section (str)
rows (tuple[ModeloCompareDeltaRow, ...])
- section: str¶
- rows: tuple[ModeloCompareDeltaRow, ...]¶
- class ModeloCompareServiceResult(**data)[source]¶
Bases:
BaseModelYear-over-year comparison result for one modelo.
- Parameters:
- modelo: str¶
- year_a: int¶
- year_b: int¶
- year_a_revision_id: str¶
- year_b_revision_id: str¶
- year_a_is_draft: bool¶
- year_b_is_draft: bool¶
- sections: tuple[ModeloCompareSection, ...]¶
- delta_rows: tuple[ModeloCompareDeltaRow, ...]¶
- project_modelo_100_from_m130(*, year, ccaa, casilla_overrides=None, binding_overrides=None)[source]¶
Project annual Modelo 100 values from quarterly M130 revisions.
The service reads stored
CalculationRevisionrows, uses the latest cumulative Modelo 130 figures for annual income, sums casilla 19 as the paid instalment relation, resolves the annualRegistrySnapshot, and returns aModeloProjectServiceResultwithout writing a new revision.
- compare_modelo_years(*, modelo, years)[source]¶
Compare the best persisted revision for two filing years.
Verified
CalculationRevisionrows win over drafts. Each emittedModeloCompareDeltaRowis grounded against the comparedRegistrySnapshotmetadata or the revision’s recorded observation provenance before theModeloCompareServiceResultis returned.- Return type:
- Parameters: