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
<PackageReference Include="Pacioli.Localization.Common" Version="1.2.0" />
<PackageVersion Include="Pacioli.Localization.Common" Version="1.2.0" />
<PackageReference Include="Pacioli.Localization.Common" />
paket add Pacioli.Localization.Common --version 1.2.0
#r "nuget: Pacioli.Localization.Common, 1.2.0"
#:package Pacioli.Localization.Common@1.2.0
#addin nuget:?package=Pacioli.Localization.Common&version=1.2.0
#tool nuget:?package=Pacioli.Localization.Common&version=1.2.0
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→ soloAbstractions.Frameworks.*→AbstractionsyCommon. Independientes entre sí.Jurisdictions.*→AbstractionsyCommon. Independientes entre sí.Pacioli.Accounting.Kernel→ cero dependencia conLocalization.*. El kernel sigue puro (regla 8 del proyecto).Pacioli.Master.Application→ soloAbstractions. 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):
IAccountingFrameworkPackaporta 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.IJurisdictionPackaporta 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.Common—Modulo11(helpers compartidos para dígito verificador). -
Pacioli.Localization.Frameworks.IfrsSme— umbrella + plantilla CoA NIIF para PYMES (estructura agrupadora con codificación alineada aCoaAccountsController.DownloadTemplatedel Core: primer dígito =AccountType, formato1.01.01) +RecognitionPoliciescon seis tópicos NIIF para PYMES + esquemas de Balance Sheet e Income Statement. -
Pacioli.Localization.Jurisdictions.EC— umbrella +EcIdentificationValidatorcon 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, conMinimumBaseinformativo para SRI 312/309/310 —Calculateaú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 EC —
tests/Pacioli.Localization.Jurisdictions.EC.Testscon xUnit 2.5.3. CubreEcIdentificationValidator(cédula con módulo-10, RUC natural / público / privado con módulo-11, pasaporte, normalización y todos losIdentificationErrorCodes) yEcTaxEngine(versionado IVA 12% → 15% en 2024-04-01, retenciones de renta sobreTaxableBase, retenciones de IVA sobre elVatAmountcalculado, banker's rounding,RuleSnapshotpara auditoría, determinismo). Casos válidos verificados manualmente antes de codificarse: cédulas1700000019y0912345675; RUCs1700000019001,1760000150001,0992345675001.
Trabajo pendiente fuera de esta solución
- Fase 0 sobre Master: agregar
Company.CountryCode+Company.AccountingFrameworkCodeCompany.FunctionalCurrencyCodecon migración EF, refactor delCreateCompanyValidator.cs(hoy hardcoded a EC), registrarIJurisdictionPackResolveren composition root, refactorizarAccountingPeriodSettingsseparando lo agnóstico de lo fiscal-EC, mover los enums fiscales EC desdePacioli.Contracts/Enums/ySriService.cshaciaPacioli.Localization.Jurisdictions.EC.
- Fase 0 — multi-moneda: tabla
Currenciescon seed ISO 4217, eliminar enumBaseCurrencycerrado, mecánica de revaluación al cierre.
| Product | Versions 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. |
-
net8.0
- Pacioli.Localization.Abstractions (>= 1.2.0)
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.