Commit 45b458c4 authored by Cristian Cubillos Torres's avatar Cristian Cubillos Torres
Browse files

First Commit

parents
{}
\ No newline at end of file

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConvertToDTE", "ConvertToDTE\ConvertToDTE.csproj", "{D94843CA-1389-4C4A-93CF-25E3A6C01B1D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D94843CA-1389-4C4A-93CF-25E3A6C01B1D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D94843CA-1389-4C4A-93CF-25E3A6C01B1D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D94843CA-1389-4C4A-93CF-25E3A6C01B1D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D94843CA-1389-4C4A-93CF-25E3A6C01B1D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AutoMapper" Version="13.0.1" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Xml" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.7" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
</ItemGroup>
</Project>
@ConvertToDTE_HostAddress = http://localhost:5228
GET {{ConvertToDTE_HostAddress}}/weatherforecast/
Accept: application/json
###
<?xml version="1.0"?>
<DTE version="1.0">
<Documento ID="ID_001840826">
<Encabezado>
<IdDoc>
<Ambiente>2</Ambiente>
<TipoServicio>10</TipoServicio>
<Tipo>01</Tipo>
<Serie>SETT</Serie>
<Numero>1003</Numero>
<NumeroInterno>02622</NumeroInterno>
<FechaEmis>2023-12-21T08:22:20</FechaEmis>
<MedioPago>1</MedioPago>
<FechaVenc>2023-06-30</FechaVenc>
<TipoNegociacion>1</TipoNegociacion>
<Plazo>30</Plazo>
</IdDoc>
<Emisor>
<TipoContribuyente>1</TipoContribuyente>
<RegimenContable>05</RegimenContable>
<IDEmisor>901197448</IDEmisor>
<NmbEmisor>Scania Finance Colombia S.A.S.</NmbEmisor>
<NombreEmisor>
<PrimerNombre>Scania Finance Colombia S.A.S.</PrimerNombre>
</NombreEmisor>
<CodigoEmisor>
<TpoCdgIntEmisor>TpoObl</TpoCdgIntEmisor>
<CdgIntEmisor>O-23</CdgIntEmisor>
</CodigoEmisor>
<DomFiscal>
<Calle>Calle 17 No. 68 24 Bogota -Colombia</Calle>
<Departamento>11</Departamento>
<Ciudad>11001</Ciudad>
<Pais>CO</Pais>
<CodigoPostal>110111</CodigoPostal>
</DomFiscal>
<LugarExped>
<Calle>Calle 17 No. 68 24 Bogota -Colombia</Calle>
<Departamento>11</Departamento>
<Ciudad>11001</Ciudad>
<Pais>CO</Pais>
<CodigoPostal>110111</CodigoPostal>
</LugarExped>
<ContactoEmisor>
<Nombre>PJ - 901197448 - Scania Finance Colombia S.A.S</Nombre>
<eMail>facturacionscaniaf@scania.comt</eMail>
</ContactoEmisor>
</Emisor>
<Receptor>
<RegimenContableR>05</RegimenContableR>
<TipoContribuyenteR>1</TipoContribuyenteR>
<DocRecep>
<TipoDocRecep>31</TipoDocRecep>
<NroDocRecep>901538070</NroDocRecep>
</DocRecep>
<NmbRecep>GRUPO LOGÍSTICO DE TRANSPORTE Y MINERALES GLTM S.A.S</NmbRecep>
<NombreRecep>
<PrimerNombre>GRUPO LOGÍSTICO DE TRANSPORTE Y MINERALES GLTM S.A.S</PrimerNombre>
</NombreRecep>
<CodigoReceptor>
<TpoCdgIntRecep>TpoObl</TpoCdgIntRecep>
<CdgIntRecep>R-99-PN</CdgIntRecep>
</CodigoReceptor>
<CdgSucursal>90518</CdgSucursal>
<DomFiscalRcp>
<Calle>CR 9 A N0 99 - 07 OF 802</Calle>
<Departamento>11</Departamento>
<Ciudad>11001</Ciudad>
<Pais>CO</Pais>
<CodigoPostal>110111</CodigoPostal>
</DomFiscalRcp>
<LugarRecep>
<Calle>CARRERA 8 No 20-14/40</Calle>
<Departamento>11</Departamento>
<Ciudad>11001</Ciudad>
<Pais>CO</Pais>
<CodigoPostal>110111</CodigoPostal>
</LugarRecep>
<ContactoReceptor>
<Nombre>GRUPO LOGÍSTICO DE TRANSPORTE Y MINERALES GLTM S.A.S</Nombre>
<eMail>transmineralesas@gmail.com</eMail>
<Telefono>3102699486</Telefono>
</ContactoReceptor>
</Receptor>
<Totales>
<Moneda>COP</Moneda>
<FctConv>0</FctConv>
<SubTotal>100.00</SubTotal>
<MntBase>100.00</MntBase>
<MntImp>19.00</MntImp>
<VlrPagar>119.00</VlrPagar>
</Totales>
<Impuestos>
<TipoImp>01</TipoImp>
<TasaImp>19.00</TasaImp>
<MontoBAseImp>100.00</MontoBAseImp>
<MontoImp>19.00</MontoImp>
</Impuestos>
<Retenciones>
<TipoRet>06</TipoRet>
<TasaRet>7.00</TasaRet>
<MontoBaseRet>100.00</MontoBaseRet>
<MontoRet>7.00</MontoRet>
</Retenciones>
<Retenciones>
<TipoRet>07</TipoRet>
<TasaRet>7.00</TasaRet>
<MontoBaseRet>100.00</MontoBaseRet>
<MontoRet>7.00</MontoRet>
</Retenciones>
</Encabezado>
<Detalle>
<NroLinDet>1</NroLinDet>
<CdgItem>
<TpoCodigo>999</TpoCodigo>
<VlrCodigo>66000000-0</VlrCodigo>
</CdgItem>
<DscItem>Intereses Corrientes Op: 1087, Cuota 3, Ev: SCA13</DscItem>
<QtyItem>1</QtyItem>
<UnmdItem>NIU</UnmdItem>
<PrcBrutoItem>774349.00</PrcBrutoItem>
<ImpuestosDet>
<TipoImp>01</TipoImp>
<TasaImp>19.00</TasaImp>
<MontoBaseImp>100.00</MontoBaseImp>
<MontoImp>19.00</MontoImp>
</ImpuestosDet>
<MontoTotalItem>100.00</MontoTotalItem>
</Detalle>
<CAE>
<Tipo>01</Tipo>
<Serie>SETT</Serie>
<NumeroInicial>1</NumeroInicial>
<NumeroFinal>5000000</NumeroFinal>
<NroResolucion>18760000001</NroResolucion>
<FechaResolucion>2019-01-19</FechaResolucion>
<ClaveTC>fc8eac422eba16e22ffd8c6f94b3f40a6e38162c</ClaveTC>
<Plazo>2030-01-19</Plazo>
</CAE>
</Documento>
</DTE>
\ No newline at end of file
using System;
using System.Xml.Serialization;
namespace ConvertToDTE
{
[XmlRoot("DTE")]
public class DTE
{
[XmlAttribute("version")]
public string Version { get; set; }
[XmlElement("Documento")]
public Documento Documento { get; set; }
}
public class Documento
{
[XmlAttribute("ID")]
public string ID { get; set; }
[XmlElement("Encabezado")]
public Encabezado Encabezado { get; set; }
[XmlElement("Detalle")]
public Detalle Detalle { get; set; }
[XmlElement("CAE")]
public CAE CAE { get; set; }
}
public class Encabezado
{
[XmlElement("IdDoc")]
public IdDoc IdDoc { get; set; }
[XmlElement("Emisor")]
public Emisor Emisor { get; set; }
[XmlElement("Receptor")]
public Receptor Receptor { get; set; }
[XmlElement("Totales")]
public Totales Totales { get; set; }
[XmlElement("Impuestos")]
public Impuestos Impuestos { get; set; }
[XmlElement("Retenciones")]
public Retencion[] Retenciones { get; set; }
}
public class IdDoc
{
public string Ambiente { get; set; }
public string TipoServicio { get; set; }
public string Tipo { get; set; }
public string Serie { get; set; }
public string Numero { get; set; }
public string NumeroInterno { get; set; }
public string FechaEmis { get; set; }
public string MedioPago { get; set; }
public string FechaVenc { get; set; }
public string TipoNegociacion { get; set; }
public string Plazo { get; set; }
}
public class Emisor
{
public string TipoContribuyente { get; set; }
public string RegimenContable { get; set; }
public string IDEmisor { get; set; }
public string NmbEmisor { get; set; }
public NombreEmisor NombreEmisor { get; set; }
public CodigoEmisor CodigoEmisor { get; set; }
public Direccion DomFiscal { get; set; }
public Direccion LugarExped { get; set; }
public ContactoEmisor ContactoEmisor { get; set; }
}
public class NombreEmisor
{
public string PrimerNombre { get; set; }
}
public class CodigoEmisor
{
public string TpoCdgIntEmisor { get; set; }
public string CdgIntEmisor { get; set; }
}
public class Direccion
{
public string Calle { get; set; }
public string Departamento { get; set; }
public string Ciudad { get; set; }
public string Pais { get; set; }
public string CodigoPostal { get; set; }
}
public class ContactoEmisor
{
public string Nombre { get; set; }
public string eMail { get; set; }
}
public class Receptor
{
public string RegimenContableR { get; set; }
public string TipoContribuyenteR { get; set; }
public DocRecep DocRecep { get; set; }
public string NmbRecep { get; set; }
public NombreRecep NombreRecep { get; set; }
public CodigoReceptor CodigoReceptor { get; set; }
public string CdgSucursal { get; set; }
public Direccion DomFiscalRcp { get; set; }
public Direccion LugarRecep { get; set; }
public ContactoReceptor ContactoReceptor { get; set; }
}
public class DocRecep
{
public string TipoDocRecep { get; set; }
public string NroDocRecep { get; set; }
}
public class NombreRecep
{
public string PrimerNombre { get; set; }
}
public class CodigoReceptor
{
public string TpoCdgIntRecep { get; set; }
public string CdgIntRecep { get; set; }
}
public class ContactoReceptor
{
public string Nombre { get; set; }
public string eMail { get; set; }
public string Telefono { get; set; }
}
public class Totales
{
public string Moneda { get; set; }
public string FctConv { get; set; }
public string SubTotal { get; set; }
public string MntBase { get; set; }
public string MntImp { get; set; }
public string VlrPagar { get; set; }
}
public class Impuestos
{
public string TipoImp { get; set; }
public string TasaImp { get; set; }
public string MontoBaseImp { get; set; }
public string MontoImp { get; set; }
}
public class Retencion
{
public string TipoRet { get; set; }
public string TasaRet { get; set; }
public string MontoBaseRet { get; set; }
public string MontoRet { get; set; }
}
public class Detalle
{
public string NroLinDet { get; set; }
public CdgItem CdgItem { get; set; }
public string DscItem { get; set; }
public string QtyItem { get; set; }
public string UnmdItem { get; set; }
public string PrcBrutoItem { get; set; }
public Impuestos ImpuestosDet { get; set; }
public string MontoTotalItem { get; set; }
}
public class CdgItem
{
public string TpoCodigo { get; set; }
public string VlrCodigo { get; set; }
}
public class CAE
{
public string Tipo { get; set; }
public string Serie { get; set; }
public string NumeroInicial { get; set; }
public string NumeroFinal { get; set; }
public string NroResolucion { get; set; }
public string FechaResolucion { get; set; }
public string ClaveTC { get; set; }
public string Plazo { get; set; }
}
}
\ No newline at end of file
using System;
namespace ConverterDTE.Model.Dtos.Response;
public class DTE_MediPiel
{
//TODO implmentar Dto para MediPiel
}
using System;
namespace ConvertToDTE.Model;
public class SourceClass
{
public string SourceVersion { get; set; }
public SourceDocumento SourceDocumento { get; set; }
}
public class SourceDocumento
{
public string ID { get; set; }
public SourceEncabezado Encabezado { get; set; }
public SourceDetalle Detalle { get; set; }
public SourceCAE CAE { get; set; }
}
public class SourceEncabezado
{
public SourceIdDoc IdDoc { get; set; }
public SourceEmisor Emisor { get; set; }
public SourceReceptor Receptor { get; set; }
public SourceTotales Totales { get; set; }
public SourceImpuestos Impuestos { get; set; }
public SourceRetencion[] Retenciones { get; set; }
}
public class SourceIdDoc
{
public string Ambiente { get; set; }
public string TipoServicio { get; set; }
public string Tipo { get; set; }
public string Serie { get; set; }
public string Numero { get; set; }
public string NumeroInterno { get; set; }
public string FechaEmis { get; set; }
public string MedioPago { get; set; }
public string FechaVenc { get; set; }
public string TipoNegociacion { get; set; }
public string Plazo { get; set; }
}
public class SourceEmisor
{
public string TipoContribuyente { get; set; }
public string RegimenContable { get; set; }
public string IDEmisor { get; set; }
public string NmbEmisor { get; set; }
public SourceNombreEmisor NombreEmisor { get; set; }
public SourceCodigoEmisor CodigoEmisor { get; set; }
public SourceDireccion DomFiscal { get; set; }
public SourceDireccion LugarExped { get; set; }
public SourceContactoEmisor ContactoEmisor { get; set; }
}
public class SourceNombreEmisor
{
public string PrimerNombre { get; set; }
}
public class SourceCodigoEmisor
{
public string TpoCdgIntEmisor { get; set; }
public string CdgIntEmisor { get; set; }
}
public class SourceDireccion
{
public string Calle { get; set; }
public string Departamento { get; set; }
public string Ciudad { get; set; }
public string Pais { get; set; }
public string CodigoPostal { get; set; }
}
public class SourceContactoEmisor
{
public string Nombre { get; set; }
public string eMail { get; set; }
}
public class SourceReceptor
{
public string RegimenContableR { get; set; }
public string TipoContribuyenteR { get; set; }
public SourceDocRecep DocRecep { get; set; }
public string NmbRecep { get; set; }
public SourceNombreRecep NombreRecep { get; set; }
public SourceCodigoReceptor CodigoReceptor { get; set; }
public string CdgSucursal { get; set; }
public SourceDireccion DomFiscalRcp { get; set; }
public SourceDireccion LugarRecep { get; set; }
public SourceContactoReceptor ContactoReceptor { get; set; }
}
public class SourceDocRecep
{
public string TipoDocRecep { get; set; }
public string NroDocRecep { get; set; }
}
public class SourceNombreRecep
{
public string PrimerNombre { get; set; }
}
public class SourceCodigoReceptor
{
public string TpoCdgIntRecep { get; set; }
public string CdgIntRecep { get; set; }
}
public class SourceContactoReceptor
{
public string Nombre { get; set; }
public string eMail { get; set; }
public string Telefono { get; set; }
}
public class SourceTotales
{
public string Moneda { get; set; }
public string FctConv { get; set; }
public string SubTotal { get; set; }
public string MntBase { get; set; }
public string MntImp { get; set; }
public string VlrPagar { get; set; }
}
public class SourceImpuestos
{
public string TipoImp { get; set; }
public string TasaImp { get; set; }
public string MontoBaseImp { get; set; }
public string MontoImp { get; set; }
}
public class SourceRetencion
{
public string TipoRet { get; set; }
public string TasaRet { get; set; }
public string MontoBaseRet { get; set; }
public string MontoRet { get; set; }
}
public class SourceDetalle
{
public string NroLinDet { get; set; }
public SourceCdgItem CdgItem { get; set; }
public string DscItem { get; set; }
public string QtyItem { get; set; }
public string UnmdItem { get; set; }
public string PrcBrutoItem { get; set; }
public SourceImpuestos ImpuestosDet { get; set; }
public string MontoTotalItem { get; set; }
}
public class SourceCdgItem
{
public string TpoCodigo { get; set; }
public string VlrCodigo { get; set; }
}
public class SourceCAE
{
public string Tipo { get; set; }
public string Serie { get; set; }
public string NumeroInicial { get; set; }
public string NumeroFinal { get; set; }
public string NroResolucion { get; set; }
public string FechaResolucion { get; set; }
public string ClaveTC { get; set; }
public string Plazo { get; set; }
}
using AutoMapper;
using ConvertToDTE.Model;
namespace ConvertToDTE.Profiles;
public class DTEProfile : Profile
{
public DTEProfile()
{
//TODO AUTOMATICO
CreateMap<SourceClass, DTE>()
.ForMember(dest => dest.Version, opt => opt.MapFrom(src => src.SourceVersion))
.ForMember(dest => dest.Documento, opt => opt.MapFrom(src => src.SourceDocumento));
CreateMap<SourceDocumento, Documento>()
.ForMember(dest => dest.ID, opt => opt.MapFrom(src => src.ID))
.ForMember(dest => dest.Encabezado, opt => opt.MapFrom(src => src.Encabezado))
.ForMember(dest => dest.Detalle, opt => opt.MapFrom(src => src.Detalle))
.ForMember(dest => dest.CAE, opt => opt.MapFrom(src => src.CAE));
CreateMap<SourceEncabezado, Encabezado>()
.ForMember(dest => dest.IdDoc, opt => opt.MapFrom(src => src.IdDoc))
.ForMember(dest => dest.Emisor, opt => opt.MapFrom(src => src.Emisor))
.ForMember(dest => dest.Receptor, opt => opt.MapFrom(src => src.Receptor))
.ForMember(dest => dest.Totales, opt => opt.MapFrom(src => src.Totales))
.ForMember(dest => dest.Impuestos, opt => opt.MapFrom(src => src.Impuestos))
.ForMember(dest => dest.Retenciones, opt => opt.MapFrom(src => src.Retenciones));
CreateMap<SourceIdDoc, IdDoc>();
CreateMap<SourceEmisor, Emisor>();
CreateMap<SourceNombreEmisor, NombreEmisor>();
CreateMap<SourceCodigoEmisor, CodigoEmisor>();
CreateMap<SourceDireccion, Direccion>();
CreateMap<SourceContactoEmisor, ContactoEmisor>();
CreateMap<SourceReceptor, Receptor>();
CreateMap<SourceDocRecep, DocRecep>();
CreateMap<SourceNombreRecep, NombreRecep>();
CreateMap<SourceCodigoReceptor, CodigoReceptor>();
CreateMap<SourceContactoReceptor, ContactoReceptor>();
CreateMap<SourceTotales, Totales>();
CreateMap<SourceImpuestos, Impuestos>();
CreateMap<SourceRetencion, Retencion>();
CreateMap<SourceDetalle, Detalle>();
CreateMap<SourceCdgItem, CdgItem>();
CreateMap<SourceCAE, CAE>();
}
}
\ No newline at end of file
using AutoMapper;
using Microsoft.AspNetCore.Mvc.Formatters.Xml;
using ConvertToDTE;
using ConvertToDTE.Model;
using System.Xml.Serialization;
using System.IO;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddAutoMapper(typeof(Program));
// Agrega soporte para XML
builder.Services.AddControllers()
.AddXmlSerializerFormatters();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.MapPost("/Dte", (SourceClass request, IMapper mapper) =>
{
// Mapea el SourceClass a la entidad DTE
var dte = mapper.Map<DTE>(request);
// Serializa el objeto DTE a XML
var xmlContent = SerializeToXml(dte);
// Retorna el XML como respuesta
return Results.Text(xmlContent, "application/xml");
})
.WithName("Post DTE")
.WithOpenApi();
app.Run();
static string SerializeToXml(DTE dto)
{
XmlSerializer serializer = new XmlSerializer(typeof(DTE));
XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
namespaces.Add("", ""); // Eliminar los prefijos de los namespaces
using (StringWriter writer = new StringWriter())
{
serializer.Serialize(writer, dto, namespaces);
return writer.ToString();
}
}
\ No newline at end of file
{
"$schema": "http://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:24561",
"sslPort": 44309
}
},
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "http://localhost:5228",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "https://localhost:7095;http://localhost:5228",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
This diff is collapsed.
{
"runtimeOptions": {
"tfm": "net8.0",
"frameworks": [
{
"name": "Microsoft.NETCore.App",
"version": "8.0.0"
},
{
"name": "Microsoft.AspNetCore.App",
"version": "8.0.0"
}
],
"configProperties": {
"System.GC.Server": true,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment