Cosmos.Impuestos.Contratos
0.1.3-beta
See the version list below for details.
dotnet add package Cosmos.Impuestos.Contratos --version 0.1.3-beta
NuGet\Install-Package Cosmos.Impuestos.Contratos -Version 0.1.3-beta
<PackageReference Include="Cosmos.Impuestos.Contratos" Version="0.1.3-beta" />
<PackageVersion Include="Cosmos.Impuestos.Contratos" Version="0.1.3-beta" />
<PackageReference Include="Cosmos.Impuestos.Contratos" />
paket add Cosmos.Impuestos.Contratos --version 0.1.3-beta
#r "nuget: Cosmos.Impuestos.Contratos, 0.1.3-beta"
#:package Cosmos.Impuestos.Contratos@0.1.3-beta
#addin nuget:?package=Cosmos.Impuestos.Contratos&version=0.1.3-beta&prerelease
#tool nuget:?package=Cosmos.Impuestos.Contratos&version=0.1.3-beta&prerelease
Cosmos.Impuestos.Contratos
Mensajes y servicios gRPC públicos de Cosmos Impuestos: distribuye los archivos .proto (impuestos.proto, perfil_fiscal.proto) para que un consumidor compile sus propios stubs y se integre con los servicios desde otro bounded context.
Este paquete distribuye
.protofuente, no stubs precompilados. El consumidor compila los protos en su propio proyecto.
Instalación
Ambos paquetes son obligatorios:
<PackageReference Include="Cosmos.Impuestos.Contratos" Version="0.1.3-beta" />
<PackageReference Include="Cosmos.Impuestos.Grpc.Types" Version="0.1.0-beta" />
<PackageReference Include="Grpc.Net.Client" Version="2.80.0" />
<PackageReference Include="Grpc.Tools" Version="2.80.0">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
Cosmos.Impuestos.Grpc.Types provee DecimalValue (con conversión implícita a/desde decimal) y los enums comunes (PaisProto, MonedaProto, etc.). No se hereda transitivamente desde Contratos — debe declararse explícitamente.
Compilar los .proto consumidos
<ItemGroup>
<Protobuf Include="$(CosmosImpuestosContratosProtoPath)Protos\impuestos.proto"
GrpcServices="Client" />
<Protobuf Include="$(CosmosImpuestosContratosProtoPath)Protos\perfil_fiscal.proto"
GrpcServices="Client" />
</ItemGroup>
Las variables MSBuild $(CosmosImpuestosContratosProtoPath) y $(CosmosImpuestosGrpcTypesProtoPath) apuntan al directorio de los .proto empaquetados. El .props de Cosmos.Impuestos.Grpc.Types añade automáticamente su path como AdditionalImportDirs, así que import "Protos/tipos_comunes.proto" resuelve sin configuración adicional.
Namespaces
using Cosmos.Impuestos.Comandos.Grpc; // ImpuestosService, SolicitudCalculoRequest, etc.
using Cosmos.Impuestos.Consultas.Grpc; // PerfilFiscalService, PerfilTributarioResponse, etc.
using Cosmos.Impuestos.Grpc.Types; // DecimalValue, PaisProto, MonedaProto, enums
Servicios
| Servicio | Métodos | Endpoint |
|---|---|---|
ImpuestosService |
Calcular, ObtenerClasificacionesVigentes, Confirmar |
Comandos.Grpc |
PerfilFiscalService |
ResolverPerfilFiscal |
Consultas.Grpc |
Registro en DI
builder.Services
.AddGrpcClient<ImpuestosService.ImpuestosServiceClient>(o =>
o.Address = new Uri("https://impuestos-comandos:PORT"))
.AddGrpcClient<PerfilFiscalService.PerfilFiscalServiceClient>(o =>
o.Address = new Uri("https://impuestos-consultas:PORT"));
Inicio rápido — flujo Calcular → Confirmar
Calcular
var request = new SolicitudCalculoRequest
{
IdentificacionEmisora = new IdentificacionFiscalCalculoProto { Numero = "900123456", TipoDocumento = "NIT", Pais = PaisProto.Co },
IdentificacionContraparte = new IdentificacionFiscalCalculoProto { Numero = "800987654", TipoDocumento = "NIT", Pais = PaisProto.Co },
Ubicaciones = new UbicacionesTransaccionProto { SedeEmisora = "SEDE-001", SedeContraparte = "SEDE-002" },
DireccionFiscal = DireccionFiscalProto.Gasto,
FechaTransaccion = "2026-05-07", // ISO 8601
Moneda = MonedaProto.Cop
};
request.Conceptos.Add(new ConceptoCalculoProto
{
Id = Guid.CreateVersion7().ToString(),
ClasificacionTributaria = "BIEN",
Monto = 1_000_000m // decimal → DecimalValue implícito
});
var resultado = await _impuestosClient.CalcularAsync(request, cancellationToken: ct);
Leer resultado
foreach (var linea in resultado.Aplicados)
{
decimal valor = linea.Valor; // DecimalValue → decimal implícito
Console.WriteLine($"{linea.NombreTributo}: {valor:C}");
}
LineaDescartadaProto.TarifayValorsonoptional: verificarHasTarifa/HasValorantes de leer cuando el motivo de exclusión puede no tener tarifa asociada.
Confirmar
var confirmar = new ConfirmarRegistroRequest
{
Contexto = new ContextoTransaccionalProto
{
SubDominio = SubDominioProto.Oxp,
TransaccionId = Guid.CreateVersion7().ToString(),
DireccionFiscal = DireccionFiscalProto.Gasto,
EfectoFiscal = EfectoFiscalProto.Gravamen
},
FechaTransaccion = "2026-05-07",
Moneda = MonedaProto.Cop,
IdentificacionEmisora = request.IdentificacionEmisora,
IdentificacionContraparte = request.IdentificacionContraparte,
Ubicaciones = request.Ubicaciones
};
confirmar.DesgloseConfirmado.AddRange(resultado.Aplicados);
confirmar.Conceptos.AddRange(request.Conceptos);
await _impuestosClient.ConfirmarAsync(confirmar, cancellationToken: ct);
Perfil fiscal
var perfil = await _perfilClient.ResolverPerfilFiscalAsync(
new ResolverPerfilFiscalRequest { Numero = "900123456", TipoDocumento = "NIT", Pais = PaisProto.Co },
cancellationToken: ct);
foreach (var atributo in perfil.Atributos)
{
string fuente = atributo.HasFuenteDeAutoridad ? atributo.FuenteDeAutoridad.Tipo : "sin fuente";
Console.WriteLine($"{atributo.Nombre} = {atributo.Valor} ({fuente})");
}
Tipos de referencia (provistos por Cosmos.Impuestos.Grpc.Types)
| Tipo | Valores |
|---|---|
PaisProto |
Co, Do, Pa |
MonedaProto |
Cop, Usd, Eur |
DireccionFiscalProto |
Gasto, Ingreso |
EfectoFiscalProto |
Gravamen, Desgravamen |
SubDominioProto |
Oxp, Cxc |
TipoTarifaProto |
Porcentaje, Especifica |
NaturalezaProto |
Aditivo, Sustractivo |
CaracterRetencionProto |
Anticipado, Definitivo |
MotivoExclusionProto |
CuantiaMinima, PerfilNoAplica, ClasificacionExcluida, JurisdiccionNoAplica, DependenciaPadre, PadreNoAplicado |
TipoEntidadProto |
Empresa, Tercero |
ConfiguracionProto |
Estandar, Personalizado |
| 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.EventDriven.Abstractions (>= 0.0.8)
- Cosmos.Types (>= 1.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.2.0-beta | 118 | 5/13/2026 |
| 0.1.3-beta | 70 | 5/8/2026 |
| 0.1.2-beta | 49 | 5/7/2026 |
| 0.1.1-beta | 43 | 5/5/2026 |
| 0.1.0-beta | 44 | 5/5/2026 |
| 0.0.9-beta | 53 | 5/5/2026 |
| 0.0.8-beta | 46 | 4/30/2026 |
| 0.0.7-beta | 45 | 4/30/2026 |
| 0.0.6-beta | 47 | 4/29/2026 |
| 0.0.5-beta | 56 | 4/23/2026 |
| 0.0.4-beta | 70 | 4/18/2026 |
| 0.0.3-beta | 49 | 4/17/2026 |
| 0.0.2-beta | 62 | 4/8/2026 |
| 0.0.1-beta | 58 | 4/6/2026 |