Cosmos.Types.IdentificacionesLegales
1.1.1
dotnet add package Cosmos.Types.IdentificacionesLegales --version 1.1.1
NuGet\Install-Package Cosmos.Types.IdentificacionesLegales -Version 1.1.1
<PackageReference Include="Cosmos.Types.IdentificacionesLegales" Version="1.1.1" />
<PackageVersion Include="Cosmos.Types.IdentificacionesLegales" Version="1.1.1" />
<PackageReference Include="Cosmos.Types.IdentificacionesLegales" />
paket add Cosmos.Types.IdentificacionesLegales --version 1.1.1
#r "nuget: Cosmos.Types.IdentificacionesLegales, 1.1.1"
#:package Cosmos.Types.IdentificacionesLegales@1.1.1
#addin nuget:?package=Cosmos.Types.IdentificacionesLegales&version=1.1.1
#tool nuget:?package=Cosmos.Types.IdentificacionesLegales&version=1.1.1
Cosmos.Types.IdentificacionesLegales
IdentificacionLegal — Value Object de identificación legal para el ERP Cosmos: tipo de documento
(país-scoped, catálogo embebido de 46 tipos), número y dígito de verificación. Implementa el
módulo-11 DIAN para el NIT colombiano. Viaja dentro de eventos event-sourced (JSONB) aguas abajo,
por lo que su forma serializada es un contrato estable.
Instalación
dotnet add package Cosmos.Types.IdentificacionesLegales
Construcción
Dos tipos, dos puertas distintas:
TipoDocumentoes un VO de catálogo país-scoped: se obtiene conTipoDocumento.Obtener(pais, codigo), que lanzaArgumentExceptionsi el código no existe/activo para ese país. SuCrearesinternal.IdentificacionLegales un VO compuesto: su factory públicaCrear(...) : Result<IdentificacionLegal>valida sin lanzar (EsExitoso/.Valor/.Errores).
using Cosmos.Types.IdentificacionesLegales;
using Cosmos.Types.Paises;
var colombia = Pais.Obtener("CO");
var nit = TipoDocumento.Obtener(colombia, "NIT"); // VO de catálogo: Obtener (lanza)
var resultado = IdentificacionLegal.Crear( // VO compuesto: Crear (Result)
tipo: nit,
numero: "900123456"); // el DV se calcula (módulo-11 DIAN)
if (resultado.EsExitoso)
UsarIdentificacion(resultado.Valor); // resultado.Valor.DigitoVerificacion == "8"
else
foreach (var error in resultado.Errores)
Console.WriteLine(error.Codigo); // V02 (tipo), V03 (número), V06 (DV)
Crear recibe el TipoDocumento tipado y deriva el país de él (un tipo de documento existe "para
un país"): no se pasa el país por separado. Para tipos con DV (NIT) el dígito se calcula (módulo-11
DIAN); si lo proveés (digitoVerificacion: "8") la politica controla el desajuste: Rechazo falla con
V06, Advertencia lo degrada. Ver el algoritmo en
docs/algoritmos-dv.md.
Forma serializada
{
"tipoDocumento": "NIT",
"numero": "900123456",
"pais": { "codigo": "CO" },
"digitoVerificacion": "8"
}
Las claves son camelCase ancladas con [JsonPropertyName]. Notá la asimetría deliberada: el
tipo de documento se aplana a un string ("tipoDocumento": "NIT", no un objeto), mientras que el
pais se anida como objeto ({ "codigo": "CO" }). Un consumidor que mapee a mano necesita
saberlo. La ClaveCanonica es un accessor derivado [JsonIgnore]: no viaja.
Rehidratación (deserialización)
No requiere setup: ni JsonConverter ni JsonSerializerContext registrados; basta el STJ por
defecto. Al deserializar un evento histórico el VO se rehidrata crudo ([JsonConstructor]), sin
validar — un tipo que ya no figura en el catálogo igual se rehidrata.
Listado
Para poblar un selector de tipos de documento de un país (frontends) usá TipoDocumento.ListarPorPais(pais)
— devuelve los mismos TipoDocumento que consume la escritura. El backend proyecta su propio DTO de API:
var tiposDto = TipoDocumento.ListarPorPais(colombia)
.Select(tipo => new { tipo.Codigo, tipo.Nombre });
Dependencias
Cosmos.Types.Abstractions(kernel:Result<T>)Cosmos.Types.Paises(validación del país)
Requiere net10.0. Solo está implementado el módulo-11 DIAN (NIT colombiano); otros algoritmos de DV quedan diferidos.
Documentación
Licencia
Uso interno del ERP Cosmos.
| Product | Versions 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. |
-
net10.0
- Cosmos.Types.Abstractions (>= 1.1.1)
- Cosmos.Types.Paises (>= 1.1.1)
NuGet packages (4)
Showing the top 4 NuGet packages that depend on Cosmos.Types.IdentificacionesLegales:
| Package | Downloads |
|---|---|
|
ObligacionesPorPagar.Entradas.Contratos
Contratos de reconocimiento expuestos a terceros. |
|
|
Cosmos.Impuestos.Contratos
Eventos públicos de integración de Cosmos Impuestos (IPublicEvent) para consumidores en otros bounded contexts. |
|
|
Cosmos.Contabilidad.Contratos
Package Description |
|
|
ObligacionesPorPagar.Reconocimiento.Contratos
Contratos de reconocimiento expuestos a terceros. |
GitHub repositories
This package is not used by any popular GitHub repositories.