Cosmos.Impuestos.Contratos
0.1.2-beta
See the version list below for details.
dotnet add package Cosmos.Impuestos.Contratos --version 0.1.2-beta
NuGet\Install-Package Cosmos.Impuestos.Contratos -Version 0.1.2-beta
<PackageReference Include="Cosmos.Impuestos.Contratos" Version="0.1.2-beta" />
<PackageVersion Include="Cosmos.Impuestos.Contratos" Version="0.1.2-beta" />
<PackageReference Include="Cosmos.Impuestos.Contratos" />
paket add Cosmos.Impuestos.Contratos --version 0.1.2-beta
#r "nuget: Cosmos.Impuestos.Contratos, 0.1.2-beta"
#:package Cosmos.Impuestos.Contratos@0.1.2-beta
#addin nuget:?package=Cosmos.Impuestos.Contratos&version=0.1.2-beta&prerelease
#tool nuget:?package=Cosmos.Impuestos.Contratos&version=0.1.2-beta&prerelease
Cosmos.Impuestos.Contratos
Stubs gRPC, mensajes Protobuf y tipos compartidos para integrarse con los servicios de Cosmos Impuestos desde otro bounded context.
El paquete incluye los clientes y el servidor generados (GrpcServices="Both"), los archivos .proto originales y la conversión implícita decimal ↔ DecimalValue. El consumidor no necesita Grpc.Tools ni compilar protos.
Instalación
<PackageReference Include="Cosmos.Impuestos.Contratos" Version="0.1.2-beta" />
<PackageReference Include="Grpc.Net.Client" Version="2.71.0" />
Namespace único
using Cosmos.Impuestos.Contratos;
Todos los tipos generados, clientes gRPC y DecimalValue viven en este namespace.
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)
{
// FuenteDeAutoridad es optional: verificar HasFuenteDeAutoridad antes de leer
string fuente = atributo.HasFuenteDeAutoridad ? atributo.FuenteDeAutoridad.Tipo : "sin fuente";
Console.WriteLine($"{atributo.Nombre} = {atributo.Valor} ({fuente})");
}
DecimalValue
Conversiones implícitas bidireccionales incluidas — no se necesita código adicional:
decimal monto = lineaAplicada.Valor; // DecimalValue → decimal
request.Monto = 500_000.50m; // decimal → DecimalValue
Tipos de referencia
| 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 |
Archivos .proto
Los .proto fuente se incluyen en el paquete bajo build/native/include/Protos/ para referencia.
La variable MSBuild $(CosmosImpuestosContratosProtoPath) apunta a ese directorio si se requiere reutilizar tipos en un proto propio.
| 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)
- Google.Protobuf (>= 3.31.1)
- Grpc.AspNetCore (>= 2.71.0)
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 |