Pacioli.Localization.Common 1.2.0

dotnet add package Pacioli.Localization.Common --version 1.2.0
                    
NuGet\Install-Package Pacioli.Localization.Common -Version 1.2.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Pacioli.Localization.Common" Version="1.2.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Pacioli.Localization.Common" Version="1.2.0" />
                    
Directory.Packages.props
<PackageReference Include="Pacioli.Localization.Common" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Pacioli.Localization.Common --version 1.2.0
                    
#r "nuget: Pacioli.Localization.Common, 1.2.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Pacioli.Localization.Common@1.2.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Pacioli.Localization.Common&version=1.2.0
                    
Install as a Cake Addin
#tool nuget:?package=Pacioli.Localization.Common&version=1.2.0
                    
Install as a Cake Tool

Pacioli.Localization

Solución de localización contable y fiscal del producto Pacioli. Aísla del kernel contable y de Pacioli.Master todo lo que cambia por país (jurisdicción) o por marco contable (NIIF Plenas, NIIF para PYMES, NIF mexicanas, etc.).

Esta solución forma parte del repositorio mono-repo OCELOT-PACIOLI. Las decisiones arquitectónicas se registran en ASESORIA_CONTABLE.md (raíz del repo), sección 14 — Bitácora de decisiones.


Estructura

Pacioli.Localization/
├── Pacioli.Localization.sln
└── src/
    ├── Pacioli.Localization.Abstractions/   ← contratos puros (interfaces + records)
    │   ├── IJurisdictionPack.cs                       (umbrella por país)
    │   ├── IAccountingFrameworkPack.cs                (umbrella por marco contable)
    │   ├── IJurisdictionPackResolver.cs               (composition root)
    │   ├── Identification/                            (validador de identificación)
    │   ├── Catalogs/                                  (catálogos regulatorios)
    │   ├── Numbering/                                 (numeración fiscal)
    │   ├── ExchangeRates/                             (fuente oficial de tipo de cambio)
    │   ├── ChartOfAccounts/                           (plantillas + localización)
    │   ├── Taxes/                                     (motor tributario)
    │   ├── Documents/                                 (documentos electrónicos)
    │   ├── Reports/                                   (reportes fiscales oficiales)
    │   └── Recognition/                               (reglas de reconocimiento + EEFF)
    │
    └── Pacioli.Localization.Common/         ← helpers compartidos (módulo 11, etc.)

Próximos proyectos a crear (en fases posteriores):

src/Frameworks/
├── Pacioli.Localization.Frameworks.IfrsFull/
├── Pacioli.Localization.Frameworks.IfrsSme/
├── Pacioli.Localization.Frameworks.NifMx/
└── Pacioli.Localization.Frameworks.LocalSimple/

src/Jurisdictions/
├── Pacioli.Localization.Jurisdictions.EC/   ← Fase 0
├── Pacioli.Localization.Jurisdictions.CO/   ← Fast-follow
├── Pacioli.Localization.Jurisdictions.PE/
├── Pacioli.Localization.Jurisdictions.CL/
├── Pacioli.Localization.Jurisdictions.AR/
├── Pacioli.Localization.Jurisdictions.CR/
└── Pacioli.Localization.Jurisdictions.MX/

Reglas de dependencia (no negociables)

  • Abstractions → cero dependencias del repo. Solo BCL.
  • Common → solo Abstractions.
  • Frameworks.*Abstractions y Common. Independientes entre sí.
  • Jurisdictions.*Abstractions y Common. Independientes entre sí.
  • Pacioli.Accounting.Kernelcero dependencia con Localization.*. El kernel sigue puro (regla 8 del proyecto).
  • Pacioli.Master.Application → solo Abstractions. No conoce ningún país concreto.
  • Pacioli.Master.API → único lugar que conoce y registra implementaciones concretas (composition root).

Conceptos clave

Doble eje de localización

Una Company se ata a una combinación (CountryCode, AccountingFramework):

  • IAccountingFrameworkPack aporta el plan de cuentas base y las reglas de reconocimiento según la norma contable (NIIF Plenas, NIIF PYMES, NIF MX...). Una sola implementación cubre todos los países que adoptan ese marco.
  • IJurisdictionPack aporta lo fiscal y lo local: validadores de identificación, catálogos regulatorios, motor tributario, generadores de documentos electrónicos, reportes oficiales, numeración fiscal.

Umbrella compuesto

IJurisdictionPack agrupa sub-abstracciones intercambiables. Las implementaciones opcionales (generador electrónico, reportes fiscales) pueden quedar null mientras un pack está en construcción, sin romper el resto del producto.

Versionado interno

Las reglas mutables (tasas de IVA, retenciones, mapeos a códigos fiscales, políticas de numeración) llevan ValidFrom / ValidTo. Cuando una ley cambia se agrega una nueva fila — no se publica una versión nueva del pack. El motor consulta la regla vigente a la fecha de la transacción y persiste un snapshot en el movimiento.

Carga estática

Las implementaciones se registran en el composition root de Pacioli.Master.API vía DI. No hay descubrimiento dinámico de plugins.


Estado actual

  • Pacioli.Localization.Abstractions — contratos completos (Fase 0 + Fase 1+).
  • Pacioli.Localization.CommonModulo11 (helpers compartidos para dígito verificador).
  • Pacioli.Localization.Frameworks.IfrsSme — umbrella + plantilla CoA NIIF para PYMES (estructura agrupadora con codificación alineada a CoaAccountsController.DownloadTemplate del Core: primer dígito = AccountType, formato 1.01.01) + RecognitionPolicies con seis tópicos NIIF para PYMES + esquemas de Balance Sheet e Income Statement.
  • Pacioli.Localization.Jurisdictions.EC — umbrella + EcIdentificationValidator con lógica real (cédula EC con módulo-10, RUC EC para personas naturales / sector público / sociedad privada con módulo-11) + esqueleto de catálogos SRI + numeración de comprobantes SRI + config BCE + once especializaciones representativas de CoA + motor tributario con IVA 12% histórico, IVA 15% actual y catálogo Phase-0 de retenciones (16 conceptos del Formulario 103 / Renta + 5 del Formulario 104 / IVA, con MinimumBase informativo para SRI 312/309/310 — Calculate aún no lo aplica).
  • Pacioli.Localization.Frameworks.LocalSimple — pendiente (régimen simplificado base para CL, AR, CR sin PUC oficial).
  • Pacioli.Localization.Frameworks.IfrsFull — pendiente.
  • Pacioli.Localization.Frameworks.NifMx — pendiente (México).
  • Pacioli.Localization.Jurisdictions.CO — pendiente (fast-follow: NIT con módulo-11 DIAN, IVA 19%, ReteFuente / ReteIVA / ReteICA, factura electrónica UBL DIAN).
  • Pacioli.Localization.Jurisdictions.PE — pendiente (RUC PE 11 dígitos, IGV 18%, PLE).
  • Pacioli.Localization.Jurisdictions.CL — pendiente (RUT con DV K, IVA 19%, DTE SII).
  • Pacioli.Localization.Jurisdictions.AR — pendiente (CUIT, IVA 21%, IIBB, CAE AFIP).
  • Pacioli.Localization.Jurisdictions.CR — pendiente.
  • Pacioli.Localization.Jurisdictions.MX — pendiente.
  • Tests del pack ECtests/Pacioli.Localization.Jurisdictions.EC.Tests con xUnit 2.5.3. Cubre EcIdentificationValidator (cédula con módulo-10, RUC natural / público / privado con módulo-11, pasaporte, normalización y todos los IdentificationErrorCodes) y EcTaxEngine (versionado IVA 12% → 15% en 2024-04-01, retenciones de renta sobre TaxableBase, retenciones de IVA sobre el VatAmount calculado, banker's rounding, RuleSnapshot para auditoría, determinismo). Casos válidos verificados manualmente antes de codificarse: cédulas 1700000019 y 0912345675; RUCs 1700000019001, 1760000150001, 0992345675001.

Trabajo pendiente fuera de esta solución

  • Fase 0 sobre Master: agregar Company.CountryCode + Company.AccountingFrameworkCode
    • Company.FunctionalCurrencyCode con migración EF, refactor del CreateCompanyValidator.cs (hoy hardcoded a EC), registrar IJurisdictionPackResolver en composition root, refactorizar AccountingPeriodSettings separando lo agnóstico de lo fiscal-EC, mover los enums fiscales EC desde Pacioli.Contracts/Enums/ y SriService.cs hacia Pacioli.Localization.Jurisdictions.EC.
  • Fase 0 — multi-moneda: tabla Currencies con seed ISO 4217, eliminar enum BaseCurrency cerrado, mecánica de revaluación al cierre.
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Pacioli.Localization.Common:

Package Downloads
Pacioli.Localization.Jurisdictions.EC

Jurisdiction pack for Ecuador. Provides identification validation (RUC, Cédula), SRI regulatory catalogs, fiscal numbering, BCE exchange-rate source config, IVA & retenciones rules, country-specific chart-of-accounts specializations, and SRI public-registry taxpayer lookup.

Pacioli.Localization.Frameworks.IfrsSme

Accounting framework pack for IFRS for Small and Medium-sized Entities (NIIF para PYMES). Provides the canonical chart-of-accounts template, recognition guidance and financial-statement schemas. Country-specific specializations are added by jurisdiction packs.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.2.0 139 5/5/2026
1.1.0 132 5/5/2026
1.0.0 138 5/5/2026