Skip to content

Regímenes, operación y excepciones de IVA#1848

Closed
daniel89fg wants to merge 14 commits intoNeoRazorX:masterfrom
daniel89fg:regimenes
Closed

Regímenes, operación y excepciones de IVA#1848
daniel89fg wants to merge 14 commits intoNeoRazorX:masterfrom
daniel89fg:regimenes

Conversation

@daniel89fg
Copy link
Copy Markdown
Contributor

@daniel89fg daniel89fg commented Dec 17, 2025

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:

  • es-tax-operation-added-value
  • es-tax-operation-ceuta-melilla
  • es-tax-operation-igic
  • es-tax-operation-other
  • es-tax-exception-e1
  • es-tax-exception-e2
  • es-tax-exception-e3
  • es-tax-exception-e4
  • es-tax-exception-e5
  • es-tax-exception-e6
  • es-tax-exception-passive-subject
  • es-tax-exception-art-7
  • es-tax-exception-art-14
  • es-tax-exception-location-rules
  • es-tax-exception-other-not-subject
  • es-tax-regime-agrarian
  • es-tax-regime-cash-criteria
  • es-tax-regime-general
  • es-tax-regime-gold
  • es-tax-regime-group-entities
  • es-tax-regime-distance-sales
  • es-tax-regime-simplified
  • es-tax-regime-surcharge
  • es-tax-regime-travel
  • es-tax-regime-used-goods

Hay que añadir estás nuevas traducciones

  • es-tax-operation-01: España: Impuesto sobre el Valor Añadido (IVA)
  • es-tax-operation-02: España: Impuesto sobre la Producción, los Servicios y la Importación (IPSI) de Ceuta y Melilla
  • es-tax-operation-03: España: Impuesto General Indirecto Canario (IGIC)
  • es-tax-operation-99: España: Otros
  • es-tax-exception-20: España: Exenta Art. 20 LIVA – Exenciones interiores (sanidad, enseñanza, seguros, banca…)
  • es-tax-exception-21: España: Exenta Art. 21 LIVA – Exportaciones a países terceros
  • es-tax-exception-22: España: Exenta Art. 22 LIVA – Operaciones asimiladas a exportaciones
  • es-tax-exception-23-24: España: Exenta Arts. 23–24 LIVA – Zonas francas y depósitos aduaneros
  • es-tax-exception-25: España: Exenta - Art. 25 LIVA – Entregas intracomunitarias
  • es-tax-exception-other: España: Exenta - Otras exenciones (oro de inversión, regímenes especiales, organismos internacionales, etc.)
  • es-tax-exception-84: España: Sujeta - Inversión del sujeto pasivo Art. 84 LIVA (obras, inmuebles, residuos, oro de inversión no exento…)
  • es-tax-exception-art-7: España: No sujeta – Art. 7 LIVA (aportaciones, transmisión de UEA, muestras, autoconsumo exterior, etc.)
  • es-tax-exception-art-14: España: No sujeta – Art. 14 LIVA (regímenes aduaneros, depósitos, zonas francas, operaciones en tránsito)
  • es-tax-exception-68-70: España: No sujeta – Arts. 68–70 LIVA (reglas de localización de bienes y servicios, B2B a UE/extranjero)
  • es-tax-exception-other-not-subject: España: // No sujeta – Otros supuestos no sujetos (OTAN, convenios internacionales, fuerzas armadas UE…)
  • es-intra-community: España: Intracomunitaria
  • es-operation-export: España: Exportación
  • es-operation-import: España: Importación
  • es-work-certification: España: Certificación de obra
  • es-benefit-3-parties: España: Beneficio de tercero
  • es-successive-tract: España: Tracto sucesivo
  • es-tax-regime-agrarian: España: Régimen especial de la agricultura, ganadería y pesca
  • es-tax-regime-cash-criteria: España: Régimen especial de criterio de caja
  • es-tax-regime-general: España: Régimen general
  • es-tax-regime-gold: España: Régimen especial del oro de inversión
  • es-tax-regime-group-entities: España: Régimen especial del grupo de entidades
  • es-tax-regime-distance-sales: España: Régime especial de ventas a distancia
  • es-tax-regime-simplified: España: Régime especial simplificado
  • es-tax-regime-surcharge: España: Régime especial de recargo de equivalencia
  • es-tax-regime-travel: España: Régimen especial de agencias de viajes
  • es-tax-regime-used-goods: España: Régimen especial de los bienes usados, objetos de arte, antigüedades y objetos de colección

¿Cómo has probado los cambios?

Toda modificación debe haber sido mínimamente probada. Marca o describe las pruebas que has realizado:

  • He revisado mi código antes de enviarlo.
  • He probado que funciona correctamente en mi PC.
  • He probado que funciona correctamente con una base de datos vacía.
  • He ejecutado los tests unitarios.

Daniel Fernández Giménez added 12 commits December 10, 2025 08:36
… clientes y proveedores. Copiado de datos a los documentos y nuevas clases para estos datos.
…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.
…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.
Copilot AI review requested due to automatic review settings December 17, 2025 12:00
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
@vandark25
Copy link
Copy Markdown
Contributor

Gran trabajo, Ahora queda el trabajo que nadie quiere, hacer, la documentacion jajaja

# Conflicts:
#	Core/Controller/EditCliente.php
@daniel89fg daniel89fg closed this Apr 9, 2026
@daniel89fg daniel89fg deleted the regimenes branch April 9, 2026 08:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants