cadrumo.application.filing._m296_projection module

Project modelo 296’s repeated detail rows.

Modelo 296 is the IRNR annual summary of retenciones e ingresos a cuenta, and four of its five records are lists in AEAT’s own design: the Tipo 2 perceptor record and its intereses hoja are emitted once per payee, and the two valores-negociables anexos are relaciones, one row per pago and one per certificado.

All four were published as single non-repeating records, so each could hold exactly ONE row. That failure is silent – the emitted file is structurally valid and simply under-declares by every row after the first – and their fields were declared as header producers that nothing resolved, so even the one row each could hold rendered blank.

Row identity is the render OCCURRENCE, not a slot on the reference. Unlike modelo 200’s party blocks, which AEAT prints a fixed number of times, none of these has a ceiling in the design: the number of rows is the number of payees, pagos and certificados. That is why none of the modelo-296 projection references carries a slot – one would be a second row axis always equal to 1, and at worst an invitation to cap the rows at whatever was declared.

A filing with no rows of a family emits no occurrence of that record, which is what AEAT expects of an anexo a filer has nothing to put on; whether that absence is admissible is the record’s own required flag, checked by the renderer.

build_m296_filing_projection_plan(*, registry_snapshot, layout, producer_snapshot)[source]

Project one record occurrence per row, for every modelo 296 detail family.

Core types: RegistrySnapshot.

Return type:

FilingProjectionPlan

Parameters: