Cosmos.Types.UnidadesDeMedida 1.0.0

dotnet add package Cosmos.Types.UnidadesDeMedida --version 1.0.0
                    
NuGet\Install-Package Cosmos.Types.UnidadesDeMedida -Version 1.0.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="Cosmos.Types.UnidadesDeMedida" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Cosmos.Types.UnidadesDeMedida" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Cosmos.Types.UnidadesDeMedida" />
                    
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 Cosmos.Types.UnidadesDeMedida --version 1.0.0
                    
#r "nuget: Cosmos.Types.UnidadesDeMedida, 1.0.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 Cosmos.Types.UnidadesDeMedida@1.0.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=Cosmos.Types.UnidadesDeMedida&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Cosmos.Types.UnidadesDeMedida&version=1.0.0
                    
Install as a Cake Tool

Cosmos.Types.UnidadesDeMedida

NuGet

UnidadDeMedida — Value Object de la unidad en que se expresa una cantidad, por su código UN/ECE Recomendación 20 (GLL galón, LTR litro, KGM kilogramo, C62 uno). Catálogo embebido de 1.095 unidades: las que admiten las facturas electrónicas de Colombia (DIAN), República Dominicana (DGII) y Panamá (DGI). Viaja dentro de eventos event-sourced (JSONB), por lo que su forma serializada es un contrato estable. No convierte entre unidades.

Instalación

dotnet add package Cosmos.Types.UnidadesDeMedida

Uso

using Cosmos.Types.Paises;
using Cosmos.Types.UnidadesDeMedida;

var galon = UnidadDeMedida.Obtener("GLL");      // lanza ArgumentException si no existe/activo
galon.Nombre;                                  // "Galón"
galon.Simbolo;                                 // "gal (US)"  (null si la Rec. 20 no le asigna símbolo)
galon.EstadoRec20;                             // EstadoRec20.Vigente

UnidadDeMedida.Existe("gll");                  // false: los códigos distinguen mayúsculas
UnidadDeMedida.Listar();                       // las 1.095 unidades activas

UnidadDeMedida.DesdeAutoridad(Pais.Obtener("DO"), "15");   // GLL («Galones» de la Tabla IV DGII)
UnidadDeMedida.DesdeAutoridad(Pais.Obtener("PA"), "gal");  // GLL (Tabla 29 DGI)
UnidadDeMedida.DesdeAutoridad(Pais.Obtener("CO"), "94");   // 94 («unidad» para la DIAN)
UnidadDeMedida.DesdeAutoridad(Pais.Obtener("DO"), "18");   // null («granel» no tiene equivalente)
  • Sin normalización: el código se compara tal cual (gll y " GLL" no son válidos): Existe devuelve false y Obtener lanza ArgumentException.
  • DesdeAutoridad devuelve null cuando no puede traducir: país sin tabla, unidad sin equivalente en la Rec. 20, mapeo aún por validar o código que la autoridad no tiene. Nunca lanza. Con null, el consumidor conserva el texto de la autoridad sin traducirlo.
  • Ausencia: un concepto que no mide cantidad no lleva unidad. No existe una unidad «no especificada» ni se usa ZZ como comodín.

Forma serializada

{ "codigo": "GLL" }

Clave camelCase anclada con [JsonPropertyName]. Nombre, Simbolo y EstadoRec20 son accessors derivados del catálogo ([JsonIgnore]): no viajan en el evento. La rehidratación no valida: un evento con un código que ya no figura se carga igual y sus accessors devuelven null.

Datos embebidos

Archivo Contenido
unidades-de-medida.json 1.095 unidades UN/ECE Rec. 20 Rev. 17, nombre en español de la lista DIAN
unidades-de-medida-equivalencias-co.json DIAN: identidad salvo 23 excepciones
unidades-de-medida-equivalencias-do.json DGII Tabla IV: 57 unidades
unidades-de-medida-equivalencias-pa.json DGI Tabla 29: 165 unidades

Se copian sin modificar de erp-definiciones/compartido/datos-referencia/catalogos/. La regla de traducción de cada país se lee del campo regla de su archivo.

Diferencias con la especificación del Nugget (v0.1)

  1. nombre(), simbolo() y estadoRec20() son propiedades (Nombre, Simbolo, EstadoRec20), según la convención de accessors derivados del repo.
  2. DesdeAutoridad devuelve null también para un país sin tabla y para un código que la autoridad no tiene.
  3. Las equivalencias marcadas porValidar (22 de CO, 26 de DO y 41 de PA; de ellas, 18 de DO y 11 de PA traen un código candidato) no se traducen hasta que se confirmen. Al confirmarlas en Datos de Referencia, se actualiza el JSON y se publica una versión menor.
  4. Se agregan Existe y Listar, que la especificación no nombra, al estilo de los demás nuggets.
  5. El ejemplo MTK/mtk de la especificación no existe en el catálogo (no hay códigos en minúscula). La regla de no normalizar se mantiene.

Pendientes de la especificación que no bloquean la API: revisión editorial de nombres (P1), confirmación de equivalencias porValidar (P2) y Rec. 21 para empaques (P3).

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  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 (3)

Showing the top 3 NuGet packages that depend on Cosmos.Types.UnidadesDeMedida:

Package Downloads
Cosmos.Impuestos.Contratos

Eventos públicos de integración de Cosmos Impuestos (IPublicEvent) para consumidores en otros bounded contexts.

ObligacionesPorPagar.Entradas.Contratos

Contratos de reconocimiento expuestos a terceros.

ObligacionesPorPagar.Reconocimiento.Contratos

Contratos de reconocimiento expuestos a terceros.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 637 10/12/2026