Modelo 303: corregir redondeo y mapear todas las operaciones (tarea 4542)#24
Merged
Merged
Conversation
El reparto a casillas se decidía solo por la cuenta especial y el tipo impositivo, ignorando la operación de la factura. Así, una compra con inversión del sujeto pasivo caía en las casillas de ventas nacionales (07/09) en lugar de 12/13 + 28/29, y las intracomunitarias no se separaban correctamente. - PartidaImpuestoResumen aporta la operación (JOIN por idasiento mediante subconsultas que solo exponen idasiento y operacion, para no crear columnas ambiguas) y el tipo de documento (compra/venta). - Modelo303 enruta por operación: ISP -> 12/13 + 28/29; intracomunitarias y servicios -> 10/11 + 36/37; importación -> 32/33; ventas exentas (intracom 59, exportación 60, ISP 122) desde las facturas. Las partidas de autorrepercusión de ventas intracomunitarias (neto cero) se excluyen del régimen general. - casillaMap con comodín para que ninguna tasa se pierda y avisos cuando un importe no encaja en ninguna casilla. - La vista muestra las casillas informativas 59, 60 y 122. - Test unitario del reparto de casillas para todos los casos. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Las pestañas Resumen, Compras/Ventas y Cuentas no cuadraban porque usaban tres consultas distintas, con filtros y cálculo de la cuota diferentes. - EditRegularizacionImpuesto: nuevo criterio común (commonTaxWhere) usado por las tres consultas (misma empresa+ejercicio+fechas, exclusión de todos los asientos de regularización, series.siniva=false, exclusión de apertura/cierre y selección de cuentas por grupo de cuenta especial en lugar del LIKE 477%/472%). Además carga las bases exentas de ventas y muestra los avisos del resumen. - PartidaImpuesto: la cuota es siempre el importe contable real (debe/haber con corrección de signo en bases negativas), nunca un recálculo base*tipo; el destino IVA/recargo lo decide la cuenta especial. - VatRegularizationToAccounting: getSubtotals se alinea con el mismo criterio (idempresa, siniva y exclusión de regularizaciones). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…a presentación de datos
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Descripción
Resuelve dos problemas relacionados del Modelo 303 que comparten los mismos archivos:
Sustituye al PR #21, corrigiendo además el mapeo de intracomunitarias que aquel resolvía mal (las enviaba a 12/13 + 28/29 cuando deben ir a 10/11 + 36/37), siguiendo las indicaciones del revisor en ese PR.
Tarea relacionada
Tarea #4542
Cambios realizados
Unificación de datos y redondeo:
EditRegularizacionImpuesto: criterio comúncommonTaxWherepara las tres consultas (misma empresa+ejercicio+fechas, exclusión de todos los asientos de regularización,series.siniva=false, exclusión de apertura/cierre y selección de cuentas por grupo de cuenta especial en vez deLIKE 477%/472%).PartidaImpuesto: la cuota es siempre el importe contable real (debe/habercon corrección de signo en bases negativas), nunca un recálculobase×tipo.VatRegularizationToAccounting::getSubtotals: alineado con el mismo criterio.Mapeo por tipo de operación:
PartidaImpuestoResumen: añadeoperacion(JOIN poridasientomediante subconsultas que solo exponenidasientoyoperacion, evitando columnas ambiguas) ytipodoc(compra/venta).Modelo303: enrutado por operación → ISP12/13 + 28/29; intracomunitarias/servicios10/11 + 36/37; importación32/33; ventas exentas (intracom59, exportación60, ISP122) desde las facturas. Las partidas net-zero de ventas intracomunitarias se excluyen del régimen general. Comodines encasillaMapy avisos cuando un importe no encaja en ninguna casilla.Cómo probar
vendor/bin/phpunit Plugins/Modelo303/Test(incluyeModelo303SquaresTestque cubre nacional, ISP, intracomunitaria genérica y específica, importación, venta intracom que no contamina, recargo, tasa no mapeada y avisos).Notas
🤖 Generated with Claude Code