Regímenes, operación y excepciones de IVA#1848
Regímenes, operación y excepciones de IVA#1848daniel89fg wants to merge 14 commits intoNeoRazorX:masterfrom
Conversation
… clientes y proveedores. Copiado de datos a los documentos y nuevas clases para estos datos.
…, pedidos y presupuestos.
…caracteres en múltiples archivos XML y actualizado el manejo de excepciones fiscales en la clase RegimenIVA.
…imeniva' a 50 caracteres en las pruebas de cliente, proveedor, albarán, factura y presupuesto.
…de impuestos y ajustado el comentario para mayor claridad.
…ado código comentado innecesario.
…ime, TaxException y TaxOperation a '?string'. Añadido manejo de excepciones en Calculator y creado el interfaz CalculatorModInterface2026. Eliminadas pruebas redundantes en AlbaranClienteTest, PedidoClienteTest y PresupuestoClienteTest.
…' de CalculatorModSpain. Añadidos filtros para operaciones y excepciones fiscales en ListCliente y ListProveedor. Eliminadas pruebas redundantes en PedidoProveedorTest, AlbaranProveedorTest y PresupuestoProveedorTest.
# Conflicts: # Core/Base/AjaxForms/CommonLineHTML.php # Core/Base/Calculator.php
…a reflejar los cálculos correctos de total y totalrecargo.
…xException para seguir la convención de nomenclatura adecuada.
…TaxOperation para seguir la convención de nomenclatura adecuada.
There was a problem hiding this comment.
Pull request overview
This PR restructures Spanish VAT (IVA) regime handling by adding an "operacion" (operation) field to companies, customers, and suppliers. The field is automatically copied to documents, and the "excepcioniva" field is copied to each new document line. The CalculatorModSpain class has been refactored to handle all possible regime combinations between companies and customers/suppliers, with additional validations for the operation field moved from real-time checks to save-time validations for improved performance.
Key Changes:
- Separates VAT regime from operation type (exento moved from regime to operation)
- Adds operation and excepcioniva fields to Cliente, Proveedor, and Empresa models
- Creates new library classes: TaxRegime, TaxException, TaxOperation, InvoiceOperation
- Deprecates RegimenIVA and OperacionIVA classes
- Implements comprehensive tax regime logic in CalculatorModSpain
- Adds extensive test coverage for sales and purchase documents
Reviewed changes
Copilot reviewed 82 out of 82 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| Core/Table/*.xml | Schema changes: increased field lengths (20→50 chars), added operacion/excepcioniva columns |
| Core/Lib/TaxRegime.php | New class defining Spanish tax regimes (General, Surcharge, Used Goods, etc.) |
| Core/Lib/TaxException.php | New class defining tax exceptions (Art. 20, 21, 22, 23-24, 25, 68-70, 84, etc.) |
| Core/Lib/InvoiceOperation.php | Enhanced operations with ES_ prefixes (intra-community, export, import, etc.) |
| Core/Model/*.php | Added operacion/excepcioniva fields to Cliente, Proveedor, Empresa; updated getNewLine logic |
| Core/Mod/CalculatorModSpain.php | Complete refactoring with regime-specific logic for sales/purchases |
| Core/Migrations.php | Migration logic to convert old regime values to new structure |
| Test/Core/Model/*.php | Comprehensive test suite for all tax regime combinations |
| Core/XMLView/*.xml | UI updates to display new fields |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…orSpainPurchasesTest y CalculatorSpainSalesTest respectivamente. Mejorada la lógica de configuración para omitir pruebas si el país por defecto no es España. Actualizados los valores esperados en CalculatorTest para reflejar los cálculos correctos.
|
Gran trabajo, Ahora queda el trabajo que nadie quiere, hacer, la documentacion jajaja |
# Conflicts: # Core/Controller/EditCliente.php
Este PR añade el campo operación a la empresa, cliente y proveedor, de este modo dicho campo se copia al crear un documento, también el campo excepcioniva se copia a cada línea nueva del documento.
Además, se ha reestructurado la clase CalculatorModSpain para contemplar todos los casos posibles de regímenes entre la empresa y el cliente o proveedor, y comprobaciones extra para el campo operación.
Ahora los avisos cuando creamos un documentos y te sugiere marcar el documento como intracomunitaria o lo que sea ya no aparecen, en su lugar dichas comprobaciones se hacen al guardar el documento y no en cada cambio, mucho mejor y más rápido.
Hay que eliminar todas estás traducciones:
Hay que añadir estás nuevas traducciones
¿Cómo has probado los cambios?
Toda modificación debe haber sido mínimamente probada. Marca o describe las pruebas que has realizado: