@ -1,5 +1,10 @@
using System.Globalization ;
using CORRESPONSALBackend.Contracts ;
using CORRESPONSALBackend.Contracts.Catalogos ;
using CORRESPONSALBackend.Contracts.Corresponsalias ;
using CORRESPONSALBackend.Contracts.Corresponsalias.Services ;
using CORRESPONSALBackend.Contracts.Utils ;
using CORRESPONSALBackend.Models ;
using CORRESPONSALBackend.Models.Utils ;
namespace CORRESPONSALBackend.Services.Corresponsalias.Traficos {
@ -7,12 +12,29 @@ namespace CORRESPONSALBackend.Services.Corresponsalias.Traficos{
{
private readonly IFileManagerRepository _f ileManagerRepo ;
private readonly IFilePaths4ProcessRepository _ RepoRelativePath ;
private readonly ICorresponsaliasTraficosRepository _ Repo ;
private readonly IProveedoresRepository _ proveedoresRepository ;
private readonly ICorresponsaliasFacturasRepository _f acturasRepository ;
private readonly ICorresponsaliasContenedoresRepository _ contenedoresRepository ;
private readonly IClientesRepository _ clientesRepository ;
private readonly ICatCentrosCostosRepository _ centrosCostosRepository ;
private readonly ITiposMercanciaRepository _ tiposMercanciaRepository ;
private readonly IConfiguration _ config ;
private readonly string RootPathCorresponsales ;
public CorresponsaliasTraficosService ( IFileManagerRepository fileManagerRepo , IFilePaths4ProcessRepository RepoRelativePath , IConfiguration config ) {
public CorresponsaliasTraficosService ( IFileManagerRepository fileManagerRepo , IFilePaths4ProcessRepository RepoRelativePath , IConfiguration config ,
ICorresponsaliasTraficosRepository Repo , IClientesRepository clientesRepository ,
IProveedoresRepository proveedoresRepository , ICorresponsaliasFacturasRepository facturasRepository , ICorresponsaliasContenedoresRepository contenedoresRepository ,
ICatCentrosCostosRepository centrosCostosRepository , ITiposMercanciaRepository tiposMercanciaRepository ) {
_f ileManagerRepo = fileManagerRepo ;
_ RepoRelativePath = RepoRelativePath ;
_ Repo = Repo ;
_ proveedoresRepository = proveedoresRepository ;
_f acturasRepository = facturasRepository ;
_ contenedoresRepository = contenedoresRepository ;
_ clientesRepository = clientesRepository ;
_ centrosCostosRepository = centrosCostosRepository ;
_ tiposMercanciaRepository = tiposMercanciaRepository ;
_ config = config ;
RootPathCorresponsales = _ config . GetValue < string > ( "AllFiles" ) ;
}
@ -39,5 +61,47 @@ namespace CORRESPONSALBackend.Services.Corresponsalias.Traficos{
return new List < string [ ] > ( ) ;
}
}
public async Task < string > GetTxtFacturacionData ( int idTrafico )
{
try {
var trafico = await _ Repo . Get ( idTrafico ) ;
var tiposMercancia = await _ tiposMercanciaRepository . GetAll ( ) ;
var tipoMercancia = tiposMercancia . First ( x = > x . id = = trafico . idTipoMercancia ) ;
var facturas = await _f acturasRepository . GetAll ( idTrafico ) ;
string NombreProveedor = "" ;
var proveedores = await _ proveedoresRepository . GetAll ( 0 ) ;
var contenedores = await _ contenedoresRepository . GetAll ( idTrafico ) ;
var clientes = await _ clientesRepository . getAllClientes ( 0 ) ;
var cliente = clientes . First ( x = > x . sClave = = trafico . IdCliente ) ;
var centroCostos = await _ centrosCostosRepository . Get ( trafico . IdCliente ) ;
int IdCteFacturacion = centroCostos . ClienteFacturacion ;
var cteFacturacion = clientes . FirstOrDefault ( x = > x . sClave = = IdCteFacturacion , new IClientes ( ) ) ;
string fileData = $"\" { trafico . FolioGemco } \ "|{(IdCteFacturacion == trafico.IdCliente || IdCteFacturacion == 0 ? trafico.IdCliente : IdCteFacturacion)}|{trafico.Patente}|{trafico.Pedimento}|{trafico.TipoCambio}|" ;
fileData + = $"{DateTime.ParseExact(trafico.FechaPago, " MM / dd / yyyy hh : mm : ss ",CultureInfo.InvariantCulture).ToString(" yyyy - MM - dd ")}|0|0|0|0|0|0|0.00|\"{trafico.Aduana}\"|\"{trafico.Clave}\"|{trafico.TipoOperacion}|" ;
fileData + = $"\" C \ "|{trafico.ValorFacturaDls}|{trafico.ValorFacturaDls! * trafico.TipoCambio!}|{trafico.ValorAduanaMN}|\"{(trafico.DescripcionMercancia.Length >= 100 ? trafico.DescripcionMercancia.Substring(0,100): trafico.DescripcionMercancia)}\"|" ;
fileData + = $"{trafico.Kilos}|{trafico.Kilos! * 2.20462}|{trafico.CantidadFracciones}|\" { ( trafico . SemaforoFiscal = = 0 ? "R" : "V" ) } \ "|" ;
if ( facturas . Count ( ) > 0 ) {
var factura = facturas . First ( x = > x . IdTrafico = = idTrafico ) ;
NombreProveedor = proveedores . First ( x = > x . id = = factura . Proveedor ) . Nombre ;
NombreProveedor = NombreProveedor . Length > = 1 2 0 ? NombreProveedor . Substring ( 0 , 1 2 0 ) : NombreProveedor ;
string [ ] foliosArray = facturas . Select ( x = > x . Factura ) . ToArray ( ) ;
string folios = string . Join ( "," , foliosArray ) ;
string [ ] pedidosArray = facturas . Where ( x = > x . Pedido ! = "" ) . Select ( x = > x . Pedido ) . ToArray ( ) ;
string pedidos = pedidosArray . Length > 0 ? string . Join ( "," , pedidosArray ) : "" ;
fileData + = $"{facturas.Count()}|\" { ( folios . Length > = 2 5 ? folios . Substring ( 0 , 2 5 ) : folios ) } \ "|0|\"{NombreProveedor}\"|\"{(pedidos.Length >= 60 ? pedidos.Substring(0,60) : pedidos)}\"|" ;
} else {
fileData + = $"0|\" \ "|0|\"\"|\"\"|" ;
}
fileData + = $"{trafico.Bultos}|0|0|{trafico.FechaDesaduanamiento.Substring(0,10)}|{contenedores.Count()}|0|\" \ "|{trafico.FechaDesaduanamiento.Substring(0,10)}|{tipoMercancia.Clave}|0|0|\"\"|\"\"|\"\"|\"\"|/ /|F|F|F|F|0|0|F|0.00|F|0|\"\"|\"\"|" ;
fileData + = $"{DateTime.ParseExact(trafico.FechaPago, " MM / dd / yyyy hh : mm : ss ",CultureInfo.InvariantCulture).ToString(" yyyy - MM - dd ")}|\"\"|\"\"|0|\"{(IdCteFacturacion == trafico.IdCliente || IdCteFacturacion == 0 ? cliente!.sRazonSocial.Split(" | ")[0].Trim() : cteFacturacion!.sRazonSocial.Split(" | ")[0].Trim())}\"|" ;
fileData + = $"{(IdCteFacturacion == trafico.IdCliente || IdCteFacturacion == 0 ? cliente!.sRFC : cteFacturacion.sRFC)}|\" \ "|\"\"|\"\"|\"\"|\"\"|\"\"|\"\"|\"{NombreProveedor}\"|" ;
fileData + = $"0|\" \ "|\"\"|\"\"|\"\"|\"\"|\"\"|\"\"|\"\"|{trafico.ValorFacturaDls}|\"\"|\"\"|336|\"\"|/ / : :|{DateTime.Now.ToString(" MM / dd / yyyy hh : mm : ss ")}|{DateTime.Now.ToString(" MM / dd / yyyy hh : mm : ss ")}|" ;
fileData + = $"0|\" \ "|\"\"|\"\"|0|0|0|F|\"\"|0|\"\"|\"\"|0|0|0|0|\"\"|\"{centroCostos.CentroCostos.Trim()}\"" ;
return fileData ;
} catch ( Exception ex ) {
throw new Exception ( ex . Message ) ;
}
}
}
}