Compare commits
45 Commits
@ -0,0 +1,9 @@ |
|||||||
|
using CORRESPONSALBackend.DTO.ArchivoElectronico; |
||||||
|
using GEMCO.Backend.Models.Reportes; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Contracts.ArchivoElectronico{ |
||||||
|
public interface IArchivoElectronicoRepository |
||||||
|
{ |
||||||
|
public Task<List<RptPedimentosPagadosAEO>> getRptPedimentoPagadosAEO(DTOAEPeriodo dTOData); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,5 @@ |
|||||||
|
namespace CORRESPONSALBackend.Contracts.ArchivoElectronico{ |
||||||
|
public interface IArchivoElectronicoService{ |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
using CORRESPONSALBackend.Models.Catalogos; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Contracts.Catalogos{ |
||||||
|
public interface ICatTiposContenedoresRepository{ |
||||||
|
public Task<IEnumerable<CatTiposContenedores>> Get(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
using CORRESPONSALBackend.DTO.Corresponsales; |
||||||
|
using CORRESPONSALBackend.Models.Corresponsales; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Contracts.Corresponsalias{ |
||||||
|
public interface ICorresponsaliasSolicitudesRepository{ |
||||||
|
public Task<ITraficoSolicitud> AppendSolicitudReapertura(ITraficoSolicitud solicitud); |
||||||
|
public Task<DTOTraficoSolicitud> GetSolicitudReapertura(int idTrafico); |
||||||
|
public Task<ITraficoSolicitud> AppendSolicitudEliminarReferencia(ITraficoSolicitud solicitud); |
||||||
|
public Task<DTOTraficoSolicitud> GetSolicitudEliminarReferencia(int idTrafico); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,6 @@ |
|||||||
|
namespace CORRESPONSALBackend.Contracts.Corresponsalias.Services{ |
||||||
|
public interface ICorresponsaliasTraficosService{ |
||||||
|
public Task<List<string[]>> ReadTxtFacturasAlen(int fileId); |
||||||
|
public Task<string> GetTxtFacturacionData(int idTrafico); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
using CORRESPONSALBackend.DTO.Reportes.Alen; |
||||||
|
using CORRESPONSALBackend.Models.Clientes.Alen; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Contracts.Reportes.Alen{ |
||||||
|
public interface IEstadosCuentaAlenRepository{ |
||||||
|
public Task ClearData(); |
||||||
|
public Task<IEnumerable<DTOEstadosCuentaAlen>> GetAll(DTOEstadosCuentaAlenFilters filters); |
||||||
|
public Task<EstadosCuenta> Append (EstadosCuenta data); |
||||||
|
|
||||||
|
public Task<EstadosCuenta> GetByFolio (string Folio); |
||||||
|
|
||||||
|
public Task<EstadosCuenta> MarkAsProgramado (string NoMovimiento, string NoSerie); |
||||||
|
public Task<EstadosCuenta> AppendOrdenCompra(DTOEstadosCuentaAlen data); |
||||||
|
public Task<EstadosCuenta> AppendObservaciones(DTOEstadosCuentaAlen data); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,5 @@ |
|||||||
|
namespace CORRESPONSALBackend.Contracts.Reportes.Alen{ |
||||||
|
public interface IReportesAlenRepository{ |
||||||
|
public Task<IEnumerable<DTOReporteFacturasTraficosConsolidados>> GetFacturasTraficoConsolidado(int idTrafico, string referencia); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
using CORRESPONSALBackend.Models.Corresponsales; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Contracts.Reportes.Alen{ |
||||||
|
public interface IReportesAlenService{ |
||||||
|
public Task<MemoryStream> GetRelacionFacturas(ITrafico trafico, IEnumerable<CorresponsalFacturas> facturas, IEnumerable<CorresponsalesContenedores> contenedores); |
||||||
|
public Task<MemoryStream> GetReporteFacturasTraficoConsolidado(string referencia); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
using CORRESPONSALBackend.DTO.Reportes.CuentasCerradas; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Contracts.Reportes.CuentasCerradas{ |
||||||
|
public interface IReporteCuentasCerradasRepository{ |
||||||
|
public Task<IEnumerable<DTOCuentasCerradas>> GetCuentasCerradas(string Inicio, string Fin, int TipoOperacion, int NoCliente, int IdCorresponsal); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
using CORRESPONSALBackend.DTO.Reportes.CuentasCerradas; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Contracts.Reportes.CuentasCerradas{ |
||||||
|
public interface IReporteCuentasCerradasService{ |
||||||
|
public Task<MemoryStream> GetExcel(IEnumerable<DTOCuentasCerradas> cuentas); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
using CORRESPONSALBackend.DTO.Reportes; |
||||||
|
using CORRESPONSALBackend.DTO.Reportes.Facturacion; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Contracts.Reportes.Facturacion{ |
||||||
|
public interface IReportesFacturacionRepository{ |
||||||
|
public Task<IEnumerable<DTOReporteGeneralFacturacion>> GetCuentasFacturadas(DTOReporteCorresponsales data); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
using CORRESPONSALBackend.DTO.Corresponsales; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Contracts.Reportes{ |
||||||
|
public interface ITraficosClientesService{ |
||||||
|
public Task<MemoryStream> GetExcel(IEnumerable<DTOCorresponsalTrafico> traficos); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,22 @@ |
|||||||
|
using CORRESPONSALBackend.Contracts.Catalogos; |
||||||
|
using CORRESPONSALBackend.Models.Catalogos; |
||||||
|
using Microsoft.AspNetCore.Authorization; |
||||||
|
using Microsoft.AspNetCore.Mvc; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Controllers.Catalogos{ |
||||||
|
[Authorize] |
||||||
|
[Route("api/Catalogos/[controller]")]
|
||||||
|
public class CatTiposContenedoresController : Controller{ |
||||||
|
private readonly ICatTiposContenedoresRepository _repo; |
||||||
|
|
||||||
|
public CatTiposContenedoresController(ICatTiposContenedoresRepository repo){ |
||||||
|
_repo = repo; |
||||||
|
} |
||||||
|
|
||||||
|
[HttpGet] |
||||||
|
public async Task<IEnumerable<CatTiposContenedores>> Get(){ |
||||||
|
var tipos = await _repo.Get(); |
||||||
|
return tipos; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,57 @@ |
|||||||
|
using CORRESPONSALBackend.Contracts.Corresponsalias; |
||||||
|
using CORRESPONSALBackend.Models.Corresponsales; |
||||||
|
using Microsoft.AspNetCore.Authorization; |
||||||
|
using Microsoft.AspNetCore.Mvc; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Controllers.Corresponsalias{ |
||||||
|
[Authorize] |
||||||
|
[Route("api/Corresponsalias/[controller]")]
|
||||||
|
[ApiController] |
||||||
|
public class SolicitudesController : ControllerBase |
||||||
|
{ |
||||||
|
private readonly ICorresponsaliasSolicitudesRepository _Repo; |
||||||
|
public SolicitudesController(ICorresponsaliasSolicitudesRepository Repo){ |
||||||
|
_Repo = Repo; |
||||||
|
} |
||||||
|
|
||||||
|
[HttpPost("Reapertura/Append")] |
||||||
|
public async Task<IActionResult> AppendSolicitudReapertura([FromBody] ITraficoSolicitud solicitud){ |
||||||
|
try{ |
||||||
|
var response = await _Repo.AppendSolicitudReapertura(solicitud); |
||||||
|
return Ok(response); |
||||||
|
}catch(Exception ex){ |
||||||
|
return BadRequest(ex.Message); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
[HttpGet("Reapertura/Get")] |
||||||
|
public async Task<IActionResult> GetSolicitudReapertura([FromQuery] int idTrafico){ |
||||||
|
try{ |
||||||
|
var solicitud = await _Repo.GetSolicitudReapertura(idTrafico); |
||||||
|
return Ok(solicitud); |
||||||
|
}catch(Exception ex){ |
||||||
|
return BadRequest(ex.Message); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
[HttpPost("EliminarCuenta/Append")] |
||||||
|
public async Task<IActionResult> AppendSolicitudEliminarCuenta([FromBody] ITraficoSolicitud solicitud){ |
||||||
|
try{ |
||||||
|
var response = await _Repo.AppendSolicitudEliminarReferencia(solicitud); |
||||||
|
return Ok(response); |
||||||
|
}catch(Exception ex){ |
||||||
|
return BadRequest(ex.Message); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
[HttpGet("EliminarCuenta/Get")] |
||||||
|
public async Task<IActionResult> GetSolicitudEliminarCuenta([FromQuery] int idTrafico){ |
||||||
|
try{ |
||||||
|
var solicitud = await _Repo.GetSolicitudEliminarReferencia(idTrafico); |
||||||
|
return Ok(solicitud); |
||||||
|
}catch(Exception ex){ |
||||||
|
return BadRequest(ex.Message); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,252 @@ |
|||||||
|
using System.Globalization; |
||||||
|
using CORRESPONSALBackend.Contracts.Reportes.Alen; |
||||||
|
using CORRESPONSALBackend.Contracts.Utils; |
||||||
|
using CORRESPONSALBackend.DTO.Reportes.Alen; |
||||||
|
using CORRESPONSALBackend.Models.Clientes.Alen; |
||||||
|
using CORRESPONSALBackend.Models.Utils; |
||||||
|
using Microsoft.AspNetCore.Authorization; |
||||||
|
using Microsoft.AspNetCore.Mvc; |
||||||
|
using OfficeOpenXml; |
||||||
|
using OfficeOpenXml.Style; |
||||||
|
using OfficeOpenXml.Table; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Controllers.Reportes.Alen{ |
||||||
|
[Authorize] |
||||||
|
[ApiController] |
||||||
|
[Route("api/[controller]")]
|
||||||
|
public class ReporteEstadosCuentaAlenController : ControllerBase{ |
||||||
|
|
||||||
|
private readonly IFileManagerRepository _Repo; |
||||||
|
private readonly IFilePaths4ProcessRepository _RepoRelativePath; |
||||||
|
private readonly IConfiguration _config; |
||||||
|
private readonly string RootPathCorresponsales; |
||||||
|
private readonly IEstadosCuentaAlenRepository _EstadosCuentaAlenRepo; |
||||||
|
public ReporteEstadosCuentaAlenController(IFilePaths4ProcessRepository RepoRelativePath, IConfiguration config, IFileManagerRepository Repo, IEstadosCuentaAlenRepository EstadosCuentaAlenRepo){ |
||||||
|
_Repo = Repo; |
||||||
|
_RepoRelativePath = RepoRelativePath; |
||||||
|
_config = config; |
||||||
|
RootPathCorresponsales = _config.GetValue<string>("AllFiles"); |
||||||
|
_EstadosCuentaAlenRepo = EstadosCuentaAlenRepo; |
||||||
|
} |
||||||
|
|
||||||
|
[HttpPost("Append")] |
||||||
|
public async Task<IActionResult> Append(IFormFile file){ |
||||||
|
try{ |
||||||
|
await _EstadosCuentaAlenRepo.ClearData(); |
||||||
|
//Obtener la ruta del archivo |
||||||
|
//Se obtiene la ruta del archivo |
||||||
|
//FileManager recFound = await _Repo.getFileById(45); |
||||||
|
FilePaths4Process RelativePath = await _RepoRelativePath.getPaths4ProcessById(45); |
||||||
|
|
||||||
|
if(!System.IO.Directory.Exists(RootPathCorresponsales + RelativePath.Path)){ |
||||||
|
System.IO.Directory.CreateDirectory(RootPathCorresponsales + RelativePath.Path); |
||||||
|
} |
||||||
|
|
||||||
|
string filePath = RootPathCorresponsales + RelativePath.Path + file.FileName; |
||||||
|
if(System.IO.File.Exists(filePath)){ |
||||||
|
System.IO.File.Delete(filePath); |
||||||
|
} |
||||||
|
//Si es un archivo nuevo se guarda |
||||||
|
using(var stream = System.IO.File.Create(filePath)){ |
||||||
|
await file.CopyToAsync(stream); |
||||||
|
} |
||||||
|
//Leer el archivo con epplus |
||||||
|
ExcelPackage.LicenseContext = LicenseContext.NonCommercial; |
||||||
|
using(ExcelPackage package = new ExcelPackage(filePath)){ |
||||||
|
var worksheet = package.Workbook.Worksheets.FirstOrDefault(); |
||||||
|
int rowCount = 2; |
||||||
|
worksheet.Column(18).Style.Numberformat.Format = "yyyy-mm-dd"; |
||||||
|
worksheet.Column(19).Style.Numberformat.Format = "yyyy-mm-dd"; |
||||||
|
worksheet.Column(20).Style.Numberformat.Format = "yyyy-mm-dd"; |
||||||
|
while(string.IsNullOrWhiteSpace(worksheet?.Cells[rowCount, 4].Value?.ToString()) == false){ |
||||||
|
EstadosCuenta estadoCuenta = new EstadosCuenta(){ |
||||||
|
id=0, |
||||||
|
TipoMovimiento = worksheet.Cells[rowCount, 1].Value != null ? worksheet.Cells[rowCount, 1].Value?.ToString() : "", |
||||||
|
NoSerie = worksheet.Cells[rowCount, 2].Value != null ? worksheet.Cells[rowCount, 2].Value?.ToString() : "", |
||||||
|
NoMovimiento = worksheet.Cells[rowCount, 3].Value != null ? worksheet.Cells[rowCount, 3].Value?.ToString() : "", |
||||||
|
Trafico = worksheet.Cells[rowCount, 4].Value != null ? worksheet.Cells[rowCount, 4].Value?.ToString() : "", |
||||||
|
Impexp = worksheet.Cells[rowCount, 5].Value != null ? worksheet.Cells[rowCount, 5].Value?.ToString() : "", |
||||||
|
Aduana = worksheet.Cells[rowCount, 6].Value != null ? worksheet.Cells[rowCount, 6].Value?.ToString() : "", |
||||||
|
Patente = worksheet.Cells[rowCount, 7].Value != null ? worksheet.Cells[rowCount, 7].Value?.ToString() : "", |
||||||
|
Pedimento = worksheet.Cells[rowCount, 8].Value != null ? worksheet.Cells[rowCount, 8].Value?.ToString() : "", |
||||||
|
Clave = worksheet.Cells[rowCount, 9].Value != null ? worksheet.Cells[rowCount, 9].Value?.ToString() : "", |
||||||
|
NoCliente = worksheet.Cells[rowCount, 10].Value != null ? worksheet.Cells[rowCount, 10].Value?.ToString() : "", |
||||||
|
NoCentro = worksheet.Cells[rowCount, 11].Value != null ? worksheet.Cells[rowCount, 11].Value?.ToString() : "", |
||||||
|
SubCentro = worksheet.Cells[rowCount, 12].Value != null ? worksheet.Cells[rowCount, 12].Value?.ToString() : "", |
||||||
|
Nombre = worksheet.Cells[rowCount, 13].Value != null ? worksheet.Cells[rowCount, 13].Value?.ToString() : "", |
||||||
|
SubCtaNombre = worksheet.Cells[rowCount, 14].Value != null ? worksheet.Cells[rowCount, 14].Value?.ToString() : "", |
||||||
|
TipoRangos = worksheet.Cells[rowCount, 15].Value != null ? worksheet.Cells[rowCount, 15].Value?.ToString() : "", |
||||||
|
Cargos = worksheet.Cells[rowCount, 16].Value != null ? worksheet.Cells[rowCount, 16].Value?.ToString() : "", |
||||||
|
Abonos = worksheet.Cells[rowCount, 17].Value != null ? worksheet.Cells[rowCount, 17].Value?.ToString() : "", |
||||||
|
Fecha = worksheet.Cells[rowCount, 18].Value != null ? StringToDateTime(worksheet.Cells[rowCount, 18].Value?.ToString().Substring(0,10)) : "", |
||||||
|
FechaPedimento = worksheet.Cells[rowCount, 19].Value != null ? StringToDateTime(worksheet.Cells[rowCount, 19].Value?.ToString().Substring(0,10)) : "", |
||||||
|
FechaRev = worksheet.Cells[rowCount, 20].Value != null ? StringToDateTime(worksheet.Cells[rowCount, 20].Value?.ToString().Substring(0,10)) : "", |
||||||
|
DiasPedimCta = worksheet.Cells[rowCount, 21].Value != null ? worksheet.Cells[rowCount, 21].Value?.ToString() : "", |
||||||
|
DiasCtaRev = worksheet.Cells[rowCount, 22].Value != null ? worksheet.Cells[rowCount, 22].Value?.ToString() : "", |
||||||
|
DiasRev = worksheet.Cells[rowCount, 23].Value != null ? worksheet.Cells[rowCount, 23].Value?.ToString() : "", |
||||||
|
IvaAl = worksheet.Cells[rowCount, 24].Value != null ? worksheet.Cells[rowCount, 24].Value?.ToString() : "", |
||||||
|
TotalFacturado = worksheet.Cells[rowCount, 25].Value != null ? worksheet.Cells[rowCount, 25].Value?.ToString() : "", |
||||||
|
SaldoFinal = worksheet.Cells[rowCount, 26].Value != null ? worksheet.Cells[rowCount, 26].Value?.ToString() : "", |
||||||
|
Anticipo = worksheet.Cells[rowCount, 27].Value != null ? worksheet.Cells[rowCount, 27].Value?.ToString() : "", |
||||||
|
UUID = worksheet.Cells[rowCount, 28].Value != null ? worksheet.Cells[rowCount, 28].Value?.ToString() : "", |
||||||
|
Descripcion = worksheet.Cells[rowCount, 29].Value != null ? worksheet.Cells[rowCount, 29].Value?.ToString() : "", |
||||||
|
Remitente = worksheet.Cells[rowCount, 30].Value != null ? worksheet.Cells[rowCount, 30].Value?.ToString() : "", |
||||||
|
Pedido = worksheet.Cells[rowCount, 31].Value != null ? worksheet.Cells[rowCount, 31].Value?.ToString() : "", |
||||||
|
TipoMercancia = worksheet.Cells[rowCount, 32].Value != null ? worksheet.Cells[rowCount, 32].Value?.ToString() : "", |
||||||
|
CampoAdicional5 = worksheet.Cells[rowCount, 33].Value != null ? worksheet.Cells[rowCount, 33].Value?.ToString() : "", |
||||||
|
}; |
||||||
|
var resp = await _EstadosCuentaAlenRepo.Append(estadoCuenta); |
||||||
|
rowCount++; |
||||||
|
} |
||||||
|
} |
||||||
|
return Ok(); |
||||||
|
}catch(Exception ex){ |
||||||
|
return BadRequest(ex.Message); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private string StringToDateTime(string s){ |
||||||
|
return DateTime.ParseExact(s, "dd/MM/yyyy",CultureInfo.InvariantCulture).ToString("yyyy-MM-dd"); |
||||||
|
} |
||||||
|
|
||||||
|
[HttpGet("GetAll")] |
||||||
|
public async Task<IActionResult> GetAll([FromQuery] DTOEstadosCuentaAlenFilters filters){ |
||||||
|
try{ |
||||||
|
var estados = await _EstadosCuentaAlenRepo.GetAll(filters); |
||||||
|
return Ok(estados); |
||||||
|
}catch(Exception ex){ |
||||||
|
return BadRequest(ex.Message); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
[HttpPost("Export")] |
||||||
|
public async Task<IActionResult> Export([FromBody] DTOEstadosCuentaAlen[] estados){ |
||||||
|
try{ |
||||||
|
ExcelPackage.LicenseContext = LicenseContext.NonCommercial; |
||||||
|
using (ExcelPackage excelPackage = new ExcelPackage()){ |
||||||
|
var worksheet = excelPackage.Workbook.Worksheets.Add("sheet1"); |
||||||
|
int rowCount = 2; |
||||||
|
worksheet.Cells[$"A1"].Value = "Serie"; |
||||||
|
worksheet.Cells[$"B1"].Value = "Movimiento"; |
||||||
|
worksheet.Cells[$"C1"].Value = "Fecha"; |
||||||
|
worksheet.Cells[$"D1"].Value = "Trafico"; |
||||||
|
worksheet.Cells[$"E1"].Value = "Aduana"; |
||||||
|
worksheet.Cells[$"F1"].Value = "Patente"; |
||||||
|
worksheet.Cells[$"G1"].Value = "Pedimento"; |
||||||
|
worksheet.Cells[$"H1"].Value = "Cve. Pedim."; |
||||||
|
worksheet.Cells[$"I1"].Value = "Impo/Expo"; |
||||||
|
worksheet.Cells[$"J1"].Value = "No. Cte."; |
||||||
|
worksheet.Cells[$"K1"].Value = "Nombre Cliente"; |
||||||
|
worksheet.Cells[$"L1"].Value = "Cargos"; |
||||||
|
worksheet.Cells[$"M1"].Value = "Abonos"; |
||||||
|
worksheet.Cells[$"N1"].Value = "SaldoFinal"; |
||||||
|
worksheet.Cells[$"O1"].Value = "% IVA"; |
||||||
|
worksheet.Cells[$"P1"].Value = "Descripcion"; |
||||||
|
worksheet.Cells[$"Q1"].Value = "Remitente"; |
||||||
|
worksheet.Cells[$"R1"].Value = "Pedido"; |
||||||
|
worksheet.Cells[$"S1"].Value = "Orden Compra"; |
||||||
|
worksheet.Cells[$"T1"].Value = "Tipo Mcia"; |
||||||
|
foreach (var estado in estados){ |
||||||
|
worksheet.Cells[$"A{rowCount}"].Value = estado.Serie; |
||||||
|
worksheet.Cells[$"B{rowCount}"].Value = estado.NoMovimiento; |
||||||
|
worksheet.Cells[$"C{rowCount}"].Value = estado.Fecha; |
||||||
|
worksheet.Cells[$"D{rowCount}"].Value = estado.Trafico; |
||||||
|
worksheet.Cells[$"E{rowCount}"].Value = estado.Aduana; |
||||||
|
worksheet.Cells[$"F{rowCount}"].Value = estado.Patente; |
||||||
|
worksheet.Cells[$"G{rowCount}"].Value = estado.Pedimento; |
||||||
|
worksheet.Cells[$"H{rowCount}"].Value = estado.Clave; |
||||||
|
worksheet.Cells[$"I{rowCount}"].Value = estado.Impexp; |
||||||
|
worksheet.Cells[$"J{rowCount}"].Value = estado.NoCliente; |
||||||
|
worksheet.Cells[$"K{rowCount}"].Value = estado.Nombre; |
||||||
|
worksheet.Cells[$"L{rowCount}"].Value = estado.Cargos; |
||||||
|
worksheet.Cells[$"M{rowCount}"].Value = estado.Abonos; |
||||||
|
worksheet.Cells[$"N{rowCount}"].Value = estado.SaldoFinal; |
||||||
|
worksheet.Cells[$"O{rowCount}"].Value = estado.IvaAl; |
||||||
|
worksheet.Cells[$"P{rowCount}"].Value = estado.Descripcion; |
||||||
|
worksheet.Cells[$"Q{rowCount}"].Value = estado.Remitente; |
||||||
|
worksheet.Cells[$"R{rowCount}"].Value = estado.Pedido; |
||||||
|
worksheet.Cells[$"S{rowCount}"].Value = estado.OrdenCompra; |
||||||
|
worksheet.Cells[$"T{rowCount}"].Value = estado.TipoMercancia; |
||||||
|
rowCount++; |
||||||
|
} |
||||||
|
ExcelRange range = worksheet.Cells[1, 1,estados.Count() + 1, 20]; |
||||||
|
ExcelTable tab = worksheet.Tables.Add(range, "Table1"); |
||||||
|
tab.TableStyle = TableStyles.Light1; |
||||||
|
worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns(); |
||||||
|
worksheet.Cells[worksheet.Dimension.Address].Style.VerticalAlignment = ExcelVerticalAlignment.Center; |
||||||
|
excelPackage.Workbook.Calculate(); |
||||||
|
var stream = new MemoryStream(); |
||||||
|
excelPackage.SaveAs(stream); |
||||||
|
if(stream.Length > 0){ |
||||||
|
stream.Position = 0; |
||||||
|
return File(stream,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml", $"Reporte_Operaciones.xlsx"); |
||||||
|
}else{ |
||||||
|
throw new Exception("Ocurrio un error al generar el reporte, intentelo de nuevo"); |
||||||
|
} |
||||||
|
} |
||||||
|
}catch(Exception ex){ |
||||||
|
return BadRequest(ex.Message); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
[HttpPost("AppendProgramacionesPago")] |
||||||
|
public async Task<IActionResult> AppendProgramacionesPago(IFormFile file){ |
||||||
|
try{ |
||||||
|
FilePaths4Process RelativePath = await _RepoRelativePath.getPaths4ProcessById(46); |
||||||
|
|
||||||
|
if(!System.IO.Directory.Exists(RootPathCorresponsales + RelativePath.Path)){ |
||||||
|
System.IO.Directory.CreateDirectory(RootPathCorresponsales + RelativePath.Path); |
||||||
|
} |
||||||
|
|
||||||
|
string filePath = RootPathCorresponsales + RelativePath.Path + file.FileName; |
||||||
|
if(System.IO.File.Exists(filePath)){ |
||||||
|
System.IO.File.Delete(filePath); |
||||||
|
} |
||||||
|
//Si es un archivo nuevo se guarda |
||||||
|
using(var stream = System.IO.File.Create(filePath)){ |
||||||
|
await file.CopyToAsync(stream); |
||||||
|
} |
||||||
|
//Leer el archivo con epplus |
||||||
|
ExcelPackage.LicenseContext = LicenseContext.NonCommercial; |
||||||
|
using(ExcelPackage package = new ExcelPackage(filePath)){ |
||||||
|
var worksheet = package.Workbook.Worksheets.FirstOrDefault(); |
||||||
|
int rowCount = 3; |
||||||
|
while(string.IsNullOrWhiteSpace(worksheet?.Cells[rowCount, 2].Value?.ToString()) == false){ |
||||||
|
//Quitar el prefijo de la serie del numero de cuenta. |
||||||
|
string folio = worksheet.Cells[rowCount, 2].Value != null ? worksheet.Cells[rowCount, 2].Value?.ToString().Substring(1,5) : ""; |
||||||
|
//Buscar el registro de la cuenta |
||||||
|
var cuenta = await _EstadosCuentaAlenRepo.GetByFolio(folio); |
||||||
|
if(cuenta.id != 0){ |
||||||
|
//Hacer la llamada a al base de datos para actualizar el registro |
||||||
|
cuenta = await _EstadosCuentaAlenRepo.MarkAsProgramado(cuenta.NoMovimiento, cuenta.NoSerie); |
||||||
|
} |
||||||
|
rowCount++; |
||||||
|
} |
||||||
|
} |
||||||
|
return Ok(); |
||||||
|
}catch(Exception ex){ |
||||||
|
return BadRequest(ex.Message); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
[HttpPost("AppendOrdenCompra")] |
||||||
|
public async Task<IActionResult> AppendOrdenCompra([FromBody] DTOEstadosCuentaAlen data){ |
||||||
|
try{ |
||||||
|
var trafico = await _EstadosCuentaAlenRepo.AppendOrdenCompra(data); |
||||||
|
return Ok(trafico); |
||||||
|
}catch(Exception ex){ |
||||||
|
return BadRequest(ex.Message); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
[HttpPost("AppendObservaciones")] |
||||||
|
public async Task<IActionResult> AppendObservaciones([FromBody] DTOEstadosCuentaAlen data){ |
||||||
|
try{ |
||||||
|
var trafico = await _EstadosCuentaAlenRepo.AppendObservaciones(data); |
||||||
|
return Ok(trafico); |
||||||
|
}catch(Exception ex){ |
||||||
|
return BadRequest(ex.Message); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,54 @@ |
|||||||
|
using CORRESPONSALBackend.Contracts.Reportes.Facturacion; |
||||||
|
using CORRESPONSALBackend.DTO.Reportes; |
||||||
|
using Microsoft.AspNetCore.Authorization; |
||||||
|
using Microsoft.AspNetCore.Mvc; |
||||||
|
using OfficeOpenXml; |
||||||
|
using OfficeOpenXml.Table; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Controllers.Reportes.Facturacion{ |
||||||
|
[Authorize] |
||||||
|
[ApiController] |
||||||
|
[Route("api/[controller]")]
|
||||||
|
public class ReportesFacturacionController : ControllerBase{ |
||||||
|
private readonly IReportesFacturacionRepository _cuentasRepo; |
||||||
|
|
||||||
|
public ReportesFacturacionController(IReportesFacturacionRepository cuentasRepo){ |
||||||
|
_cuentasRepo = cuentasRepo; |
||||||
|
} |
||||||
|
|
||||||
|
[HttpGet("CuentasFacturadas")] |
||||||
|
public async Task<IActionResult> GetCuentasFacturadas([FromQuery] DTOReporteCorresponsales data){ |
||||||
|
try{ |
||||||
|
var cuentas = await _cuentasRepo.GetCuentasFacturadas(data); |
||||||
|
return Ok(cuentas); |
||||||
|
}catch(Exception ex){ |
||||||
|
return BadRequest(ex.Message); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
[HttpGet("FacturacionExcel")] |
||||||
|
public async Task<IActionResult> GetFacturacionExcel([FromQuery] DTOReporteCorresponsales data ){ |
||||||
|
try{ |
||||||
|
var traficos = await _cuentasRepo.GetCuentasFacturadas(data); |
||||||
|
var today = DateTime.Now; |
||||||
|
ExcelPackage.LicenseContext = LicenseContext.NonCommercial; |
||||||
|
using (ExcelPackage excelPackage = new ExcelPackage()){ |
||||||
|
var worksheet = excelPackage.Workbook.Worksheets.Add("sheet1"); |
||||||
|
worksheet.Cells["A1"].LoadFromCollection(traficos, true); |
||||||
|
//Se crea la tabla en el rango de celdas donde se mostrara la inforamcion. |
||||||
|
ExcelRange range = worksheet.Cells[1, 1,traficos.Count() + 1, 27]; |
||||||
|
ExcelTable tab = worksheet.Tables.Add(range, "Table1"); |
||||||
|
tab.TableStyle = TableStyles.Light1; |
||||||
|
worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns(); |
||||||
|
excelPackage.Workbook.Calculate(); |
||||||
|
var stream = new MemoryStream(); |
||||||
|
excelPackage.SaveAs(stream); |
||||||
|
stream.Position = 0; |
||||||
|
return File(stream, "application/octet-stream", $"ReporteFacturacion_{today.Day}-{today.Month}-{today.Year}.xlsx"); |
||||||
|
} |
||||||
|
}catch(Exception ex){ |
||||||
|
return BadRequest(ex.Message); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,30 @@ |
|||||||
|
using CORRESPONSALBackend.Contracts.Reportes.CuentasCerradas; |
||||||
|
using Microsoft.AspNetCore.Authorization; |
||||||
|
using Microsoft.AspNetCore.Mvc; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Controllers.Reportes{ |
||||||
|
[Authorize] |
||||||
|
[Route("api/[controller]")]
|
||||||
|
[ApiController] |
||||||
|
public class ReporteCuentasCerradasController : ControllerBase{ |
||||||
|
private readonly IReporteCuentasCerradasService _service; |
||||||
|
private readonly IReporteCuentasCerradasRepository _repository; |
||||||
|
public ReporteCuentasCerradasController(IReporteCuentasCerradasService service, IReporteCuentasCerradasRepository repository){ |
||||||
|
_service = service; |
||||||
|
_repository = repository; |
||||||
|
} |
||||||
|
|
||||||
|
[HttpGet("GetExcel")] |
||||||
|
public async Task<IActionResult> ReporteCuentasCerradas([FromQuery] string Inicio, string Fin, int TipoOperacion, int NoCliente, int IdCorresponsal){ |
||||||
|
try{ |
||||||
|
var cuentas = await _repository.GetCuentasCerradas(Inicio, Fin, TipoOperacion, NoCliente, IdCorresponsal); |
||||||
|
var stream = await _service.GetExcel(cuentas); |
||||||
|
stream.Position = 0; |
||||||
|
return File(stream, "application/octet-stream", $"Reporte.xlsx"); |
||||||
|
}catch(Exception ex){ |
||||||
|
return BadRequest(ex.Message); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,58 @@ |
|||||||
|
using CORRESPONSALBackend.Contracts.Corresponsalias; |
||||||
|
using CORRESPONSALBackend.Contracts.Reportes.Alen; |
||||||
|
using Microsoft.AspNetCore.Authorization; |
||||||
|
using Microsoft.AspNetCore.Mvc; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Controllers.Reportes{ |
||||||
|
[Authorize] |
||||||
|
[Route("api/[controller]")]
|
||||||
|
[ApiController] |
||||||
|
public class ReportesAlenController : ControllerBase{ |
||||||
|
|
||||||
|
private readonly ICorresponsaliasTraficosRepository _traficosRepository; |
||||||
|
private readonly ICorresponsaliasFacturasRepository _facturasRepository; |
||||||
|
private readonly ICorresponsaliasContenedoresRepository _contenedoresRepository; |
||||||
|
private readonly IReportesAlenService _reportesAlenService; |
||||||
|
public ReportesAlenController(ICorresponsaliasTraficosRepository traficosRepository, ICorresponsaliasFacturasRepository facturasRepository, |
||||||
|
IReportesAlenService reportesAlenService, ICorresponsaliasContenedoresRepository contenedoresRepository){ |
||||||
|
_traficosRepository = traficosRepository; |
||||||
|
_facturasRepository = facturasRepository; |
||||||
|
_contenedoresRepository = contenedoresRepository; |
||||||
|
_reportesAlenService = reportesAlenService; |
||||||
|
} |
||||||
|
|
||||||
|
[HttpGet("RelacionFacturas")] |
||||||
|
public async Task<IActionResult> GetRelacionFacturas([FromQuery] string referencia){ |
||||||
|
try{ |
||||||
|
var trafico = await _traficosRepository.GetByReferencia(referencia); |
||||||
|
var facturas = await _facturasRepository.GetAll(trafico.id); |
||||||
|
var contenedores = await _contenedoresRepository.GetAll(trafico.id); |
||||||
|
var stream = await _reportesAlenService.GetRelacionFacturas(trafico, facturas, contenedores); |
||||||
|
if(stream.Length > 0){ |
||||||
|
stream.Position = 0; |
||||||
|
return File(stream,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml", $"RelacionFacturas.xlsx"); |
||||||
|
}else{ |
||||||
|
throw new Exception("Ocurrio un error al generar el reporte, intentelo de nuevo"); |
||||||
|
} |
||||||
|
}catch(Exception ex){ |
||||||
|
return BadRequest(ex.Message); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
[HttpGet("FacturasConsolidados")] |
||||||
|
public async Task<IActionResult> FacturasConsolidados([FromQuery] string referencia){ |
||||||
|
try{ |
||||||
|
var trafico = await _traficosRepository.GetByReferencia(referencia); |
||||||
|
var stream = await _reportesAlenService.GetReporteFacturasTraficoConsolidado(referencia); |
||||||
|
if(stream.Length > 0){ |
||||||
|
stream.Position = 0; |
||||||
|
return File(stream,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml", $"FacturasConsolidado_{trafico.FolioGemco}.xlsx"); |
||||||
|
}else{ |
||||||
|
throw new Exception("Ocurrio un error al generar el reporte, intentelo de nuevo"); |
||||||
|
} |
||||||
|
}catch(Exception ex){ |
||||||
|
return BadRequest(ex.Message); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,93 @@ |
|||||||
|
using CORRESPONSALBackend.Contracts.ArchivoElectronico; |
||||||
|
using CORRESPONSALBackend.Contracts.Corresponsalias; |
||||||
|
using CORRESPONSALBackend.Contracts.Utils; |
||||||
|
using CORRESPONSALBackend.DTO.ArchivoElectronico; |
||||||
|
using CORRESPONSALBackend.Models.Utils; |
||||||
|
using CORRESPONSALBackend.Repository.Utils; |
||||||
|
using GEMCO.Backend.Models.Reportes; |
||||||
|
using Microsoft.AspNetCore.Mvc; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Controllers.Utils{ |
||||||
|
[Route("api/[controller]")]
|
||||||
|
[ApiController] |
||||||
|
public class ArchivoElectronicoController : ControllerBase { |
||||||
|
|
||||||
|
private readonly IArchivoElectronicoRepository _AERepo; |
||||||
|
private readonly IConfiguration _config; |
||||||
|
private readonly IFilePaths4ProcessRepository _RepoRelativePath; |
||||||
|
private readonly string RootPathCorresponsales; |
||||||
|
private readonly ICorresponsaliasTraficosRepository _traficosRepository; |
||||||
|
private readonly IFileManagerRepository _fileManagerRepo; |
||||||
|
public ArchivoElectronicoController(IArchivoElectronicoRepository AERepo, IConfiguration config, |
||||||
|
ICorresponsaliasTraficosRepository traficosRepository, IFilePaths4ProcessRepository RepoRelativePath, |
||||||
|
IFileManagerRepository fileManagerRepo){ |
||||||
|
_AERepo = AERepo; |
||||||
|
_traficosRepository = traficosRepository; |
||||||
|
_config = config; |
||||||
|
_RepoRelativePath = RepoRelativePath; |
||||||
|
_fileManagerRepo = fileManagerRepo; |
||||||
|
RootPathCorresponsales = _config.GetValue<string>("AllFiles"); |
||||||
|
} |
||||||
|
|
||||||
|
[HttpGet] |
||||||
|
[Route("RptArchivoElectronicoOficial")] |
||||||
|
public async Task<List<RptPedimentosPagadosAEO>> GetReporteArchivElectronicoOficial([FromQuery] DTOAEPeriodo DTOData) |
||||||
|
{ |
||||||
|
List<RptPedimentosPagadosAEO> data = await _AERepo.getRptPedimentoPagadosAEO(DTOData); |
||||||
|
return data; |
||||||
|
} |
||||||
|
|
||||||
|
[HttpPost] |
||||||
|
[Route("DownloadZippedArchivosOficiales")] |
||||||
|
public async Task<IActionResult> DownloadZippedArchivosOficiales([FromBody] DTOAEPeriodoSeleccion data){ |
||||||
|
try{ |
||||||
|
//Se obtiene la ruta donde se alojará temporalmente el zip |
||||||
|
FilePaths4Process tempFilesRelativePath = await _RepoRelativePath.getPaths4ProcessById(44); // Path: Corresponsales\Zips\Facturacion\Entregas\ |
||||||
|
var tempFilesPath = RootPathCorresponsales + tempFilesRelativePath.Path;// Path: C:data\Corresponsales\Zips\Clientes\ArchivosElectronicos |
||||||
|
string tempFolderName = "ReporteArchivosElectronicos";//Nombre del folder Temporal |
||||||
|
string tempFolderPath= tempFilesPath + $"{tempFolderName}\\";//ruta del folder temporal Path: C:data\Corresponsales\Zips\Clientes\ArchivosElectronicos\ReporteArchivosElectronicos |
||||||
|
string zipFileName = $"{tempFolderName}.zip";//Nombre del zip final |
||||||
|
var zipFilePath = tempFilesPath + zipFileName;//Ruta del zip final Path: C:data\Corresponsales\Zips\Clientes\ArchivosElectronicos\ReporteArchivosElectronicos.zip |
||||||
|
|
||||||
|
if(System.IO.File.Exists(zipFilePath)){//Si ya existe un zip de una descarga anterior lo borra |
||||||
|
System.IO.File.Delete(zipFilePath); |
||||||
|
} |
||||||
|
|
||||||
|
if(System.IO.Directory.Exists(tempFolderPath)){//Si ya existe la carpeta temporal de una descarga anterior la borra |
||||||
|
System.IO.Directory.Delete(tempFolderPath, true); |
||||||
|
} |
||||||
|
|
||||||
|
System.IO.Directory.CreateDirectory(tempFolderPath);//Se crea el folder temporal donde se pondran los archivos oficiales |
||||||
|
foreach(var referencia in data.Referencias){ |
||||||
|
var trafico = await _traficosRepository.GetByReferencia(referencia); |
||||||
|
string folderAE = tempFolderPath + $"{referencia}\\";//Se obtiene el nombre de la subcarpeta del AE de cada referencia |
||||||
|
if(System.IO.Directory.Exists(folderAE)){//Si existe la carpeta se borra |
||||||
|
System.IO.Directory.Delete(folderAE); |
||||||
|
} |
||||||
|
System.IO.Directory.CreateDirectory(folderAE);//Se crea la carpeta |
||||||
|
//Obtener la lista de archivos de la referencia actual. |
||||||
|
var filesLog = await _fileManagerRepo.GetTraficoFiles(trafico.id); |
||||||
|
var filteredFilesLog = filesLog.Where(x => new List<int>(){2,10,11,12,13,14,15,19,17,18,37,38,39,41}.Contains(x.Proceso)); |
||||||
|
foreach(var fileLog in filteredFilesLog){ |
||||||
|
FilePaths4Process fileRelativePath = await _RepoRelativePath.getPaths4ProcessById(fileLog.Proceso);//Se obtiene la ruta relativa donde debe estar alojado el archivo |
||||||
|
var filePath = RootPathCorresponsales + fileRelativePath.Path + fileLog!.NombreArchivo;//Ahora se obtiene la ruta completa del archivo. |
||||||
|
if(System.IO.File.Exists(filePath)){ |
||||||
|
var bytes = await System.IO.File.ReadAllBytesAsync(filePath); |
||||||
|
var originalFileStream = new MemoryStream(bytes); |
||||||
|
using(var tempFileStream = System.IO.File.Create(folderAE + fileLog.NombreArchivo)){ |
||||||
|
await originalFileStream.CopyToAsync(tempFileStream); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
System.IO.Compression.ZipFile.CreateFromDirectory(tempFolderPath, zipFilePath);//Se comprime la carpeta con los archivos electronicos de las referencias |
||||||
|
Directory.Delete(tempFolderPath, true);//Se borra el folder temporal |
||||||
|
var zipBytes = await System.IO.File.ReadAllBytesAsync(zipFilePath); |
||||||
|
var zipStream = new MemoryStream(zipBytes); |
||||||
|
return File(zipStream, "application/zip", zipFileName); |
||||||
|
}catch(Exception ex){ |
||||||
|
return BadRequest(ex.Message); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
namespace CORRESPONSALBackend.DTO.Corresponsales{ |
||||||
|
public class DTOTraficoSolicitud{ |
||||||
|
public int Id { get; set; } |
||||||
|
public int IdTrafico { get; set; } |
||||||
|
public int IdUsuarioSolicita { get; set; } |
||||||
|
public string UsuarioSolicita { get; set; } |
||||||
|
public string FechaSolicita { get; set; } |
||||||
|
public string MotivoSolicita { get; set; } |
||||||
|
public int Estado { get; set; } |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,50 @@ |
|||||||
|
namespace CORRESPONSALBackend.DTO.Reportes.Alen{ |
||||||
|
public class DTOEstadosCuentaAlen{ |
||||||
|
public int id { get; set; } |
||||||
|
public string? TipoMovimiento { get; set; } = ""; |
||||||
|
public string? NoSerie { get; set; } = ""; |
||||||
|
public string? NoMovimiento {get;set;} = ""; |
||||||
|
public string? Trafico {get;set;} = ""; |
||||||
|
public string? Impexp {get;set;} = ""; |
||||||
|
public string? Aduana {get;set;} = ""; |
||||||
|
public string? Patente {get;set;} = ""; |
||||||
|
public string? Pedimento {get;set;} = ""; |
||||||
|
public string? Clave {get;set;} = ""; |
||||||
|
public string? NoCliente {get;set;} = ""; |
||||||
|
public string? NoCentro {get;set;} = ""; |
||||||
|
public string? SubCentro {get;set;} = ""; |
||||||
|
public string? Nombre {get;set;} = ""; |
||||||
|
public string? SubCtaNombre {get;set;} = ""; |
||||||
|
public string? TipoRangos {get;set;} = ""; |
||||||
|
public string? Cargos {get;set;} = ""; |
||||||
|
public string? Abonos {get;set;} = ""; |
||||||
|
public string? Fecha {get;set;} = ""; |
||||||
|
public string? FechaPedimento {get;set;} = ""; |
||||||
|
public string? FechaRev {get;set;} = ""; |
||||||
|
public string? DiasPedimCta {get;set;} = ""; |
||||||
|
public string? DiasCtaRev {get;set;} = ""; |
||||||
|
public string? DiasRev {get;set;} = ""; |
||||||
|
public string? IvaAl {get;set;} = ""; |
||||||
|
public string? TotalFacturado {get;set;} = ""; |
||||||
|
public string? SaldoFinal {get;set;} = ""; |
||||||
|
public string? Anticipo {get;set;} = ""; |
||||||
|
public string? UUID {get;set;} = ""; |
||||||
|
public string? Descripcion {get;set;} = ""; |
||||||
|
public string? Remitente {get;set;} = ""; |
||||||
|
public string? Pedido {get;set;} = ""; |
||||||
|
public string? TipoMercancia {get;set;} = ""; |
||||||
|
public string? CampoAdicional5 {get;set;} = ""; |
||||||
|
public int? IdPdf {get;set;}=0; |
||||||
|
public string? Pdf {get;set;}=""; |
||||||
|
public int? IdXml {get;set;}=0; |
||||||
|
public string? Xml {get;set;}=""; |
||||||
|
public int? IdNotasCargo {get;set;}=0; |
||||||
|
public string? NotasCargo {get;set;}=""; |
||||||
|
public bool? Programado {get;set;} = false; |
||||||
|
public string? Serie {get;set;} = ""; |
||||||
|
public int? IdOrdenCompra {get;set;} = 0; |
||||||
|
public string? OrdenCompra {get;set;} = ""; |
||||||
|
public int? IdObservaciones {get;set;} = 0; |
||||||
|
public string? Observaciones {get;set;} = ""; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,13 @@ |
|||||||
|
namespace CORRESPONSALBackend.DTO.Reportes.Alen{ |
||||||
|
public class DTOEstadosCuentaAlenFilters{ |
||||||
|
public string? Trafico {get;set;}=""; |
||||||
|
public string? Impexp {get;set;}=""; |
||||||
|
public string? Aduana {get;set;}=""; |
||||||
|
public string? Patente {get;set;}=""; |
||||||
|
public string? Pedimento {get;set;}=""; |
||||||
|
public string? Inicio {get;set;}=""; |
||||||
|
public string? Fin {get;set;}=""; |
||||||
|
public string? Remitente {get;set;}=""; |
||||||
|
public string? Programado {get;set;} = ""; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
public class DTOReporteFacturasTraficosConsolidados{ |
||||||
|
public string trafico { get; set; } |
||||||
|
public string TipoOperacion { get; set; } |
||||||
|
public string Cliente { get; set; } |
||||||
|
public string Proveedor { get; set; } |
||||||
|
public string Corresponsal { get; set; } |
||||||
|
public string Aduana { get; set; } |
||||||
|
public int Patente { get; set; } |
||||||
|
public string Pedimento { get; set; } |
||||||
|
public int PedimentoMaster { get; set; } |
||||||
|
public string Fecha { get; set; } |
||||||
|
public string Cuenta { get; set; } |
||||||
|
public string Factura { get; set; } |
||||||
|
public string Descripcion { get; set; } |
||||||
|
public string Semaforo { get; set; } |
||||||
|
public string ClavePedimento { get; set; } |
||||||
|
public string TipoCambio { get; set; } |
||||||
|
public string Operacion { get; set; } |
||||||
|
public string Contenedor { get; set; } |
||||||
|
} |
@ -0,0 +1,26 @@ |
|||||||
|
namespace CORRESPONSALBackend.DTO.Reportes.CuentasCerradas{ |
||||||
|
public class DTOCuentasCerradas{ |
||||||
|
public string Trafico { get; set; } |
||||||
|
public string TipoOperacion { get; set; } |
||||||
|
public string Cliente { get; set; } |
||||||
|
public string Proveedor { get; set; } |
||||||
|
public string Corresponsal { get; set; } |
||||||
|
public string Aduana { get; set; } |
||||||
|
public string Patente { get; set; } |
||||||
|
public string Pedimento { get; set; } |
||||||
|
public string FechaPago { get; set; } |
||||||
|
public string Facturas { get; set; } |
||||||
|
public string Descripcion { get; set; } |
||||||
|
public string FechaAlta { get; set; } |
||||||
|
public string Clave { get; set; } |
||||||
|
public string ValorMn { get; set; } |
||||||
|
public string ValorDls { get; set; } |
||||||
|
public string TipoCambio { get; set; } |
||||||
|
public string ValorComercial { get; set; } |
||||||
|
public string Fracciones { get; set; } |
||||||
|
public string TotalPagado { get; set; } |
||||||
|
/* public string Caja { get; set; } |
||||||
|
public string FechaCruce {get;set;} |
||||||
|
public string Semaforo {get;set;} */ |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,32 @@ |
|||||||
|
namespace CORRESPONSALBackend.DTO.Reportes.Facturacion{ |
||||||
|
public class DTOReporteGeneralFacturacion |
||||||
|
{ |
||||||
|
public string Trafico { get; set; } |
||||||
|
public string Corresponsal { get; set; } |
||||||
|
public string Aduana { get; set; } |
||||||
|
public int Patente { get; set; } |
||||||
|
public string PedimentoCorreponsal { get; set; } |
||||||
|
public string PedimentoCorresponsalR1 { get; set; } |
||||||
|
public string FechaPago { get; set; } |
||||||
|
public string FechaAnticipo { get; set; } |
||||||
|
public double SumaAnticipoCorresponsalFinanciado { get; set; } |
||||||
|
public string FechaAlta { get; set; } |
||||||
|
public string UsuarioAlta { get; set; } |
||||||
|
public int Cliente { get; set; } |
||||||
|
public string Nombrecliente { get; set; } |
||||||
|
public string Cuenta { get; set; } |
||||||
|
public string TipoOperacion { get; set; } |
||||||
|
public string Terminado { get; set; } |
||||||
|
public string FechaRegistroContabilizar { get; set; } |
||||||
|
public string FechaContabilizado { get; set; } |
||||||
|
public string FechaFacturado { get; set; } |
||||||
|
public string FechaFacturaCorresponsal { get; set; } |
||||||
|
public string FechaCruce { get; set; } |
||||||
|
public string MotivoCuentaRechazadaContabilidad { get; set; } |
||||||
|
public string MotivoCuentaRechazadaFacturacion { get; set; } |
||||||
|
public string MotivoSolicitaReapertura { get; set; } |
||||||
|
public string SolicitudReaperturaAutorizada { get; set; } |
||||||
|
public string EstatusOperacion { get; set; } |
||||||
|
public string CargoShipper { get; set; } |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,6 @@ |
|||||||
|
namespace CORRESPONSALBackend.Models.Catalogos{ |
||||||
|
public class CatTiposContenedores { |
||||||
|
public int id { get; set; } |
||||||
|
public string Descripcion { get; set; } |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,39 @@ |
|||||||
|
namespace CORRESPONSALBackend.Models.Clientes.Alen{ |
||||||
|
public class EstadosCuenta{ |
||||||
|
public int id { get; set; } |
||||||
|
public string? TipoMovimiento { get; set; } = ""; |
||||||
|
public string? NoSerie { get; set; } = ""; |
||||||
|
public string? NoMovimiento {get;set;} = ""; |
||||||
|
public string? Trafico {get;set;} = ""; |
||||||
|
public string? Impexp {get;set;} = ""; |
||||||
|
public string? Aduana {get;set;} = ""; |
||||||
|
public string? Patente {get;set;} = ""; |
||||||
|
public string? Pedimento {get;set;} = ""; |
||||||
|
public string? Clave {get;set;} = ""; |
||||||
|
public string? NoCliente {get;set;} = ""; |
||||||
|
public string? NoCentro {get;set;} = ""; |
||||||
|
public string? SubCentro {get;set;} = ""; |
||||||
|
public string? Nombre {get;set;} = ""; |
||||||
|
public string? SubCtaNombre {get;set;} = ""; |
||||||
|
public string? TipoRangos {get;set;} = ""; |
||||||
|
public string? Cargos {get;set;} = ""; |
||||||
|
public string? Abonos {get;set;} = ""; |
||||||
|
public string? Fecha {get;set;} = ""; |
||||||
|
public string? FechaPedimento {get;set;} = ""; |
||||||
|
public string? FechaRev {get;set;} = ""; |
||||||
|
public string? DiasPedimCta {get;set;} = ""; |
||||||
|
public string? DiasCtaRev {get;set;} = ""; |
||||||
|
public string? DiasRev {get;set;} = ""; |
||||||
|
public string? IvaAl {get;set;} = ""; |
||||||
|
public string? TotalFacturado {get;set;} = ""; |
||||||
|
public string? SaldoFinal {get;set;} = ""; |
||||||
|
public string? Anticipo {get;set;} = ""; |
||||||
|
public string? UUID {get;set;} = ""; |
||||||
|
public string? Descripcion {get;set;} = ""; |
||||||
|
public string? Remitente {get;set;} = ""; |
||||||
|
public string? Pedido {get;set;} = ""; |
||||||
|
public string? TipoMercancia {get;set;} = ""; |
||||||
|
public string? CampoAdicional5 {get;set;} = ""; |
||||||
|
public bool? Programado = false; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,13 @@ |
|||||||
|
namespace CORRESPONSALBackend.Models.Corresponsales{ |
||||||
|
public class ITraficoSolicitud{ |
||||||
|
public int Id { get; set; } |
||||||
|
public int IdTrafico { get; set; } |
||||||
|
public int IdUsuarioSolicita { get; set; } |
||||||
|
public string? FechaSolicita { get; set; } = null; |
||||||
|
public string MotivoSolicita { get; set; } |
||||||
|
public int IdUsuarioAutoriza { get; set; } |
||||||
|
public string? FechaAutoriza { get; set; } = null; |
||||||
|
public string MotivoRechazo { get; set; } |
||||||
|
public short Estado { get; set; } |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,31 @@ |
|||||||
|
using System.Data; |
||||||
|
using CORRESPONSALBackend.Context; |
||||||
|
using CORRESPONSALBackend.Contracts.ArchivoElectronico; |
||||||
|
using CORRESPONSALBackend.DTO.ArchivoElectronico; |
||||||
|
using Dapper; |
||||||
|
using GEMCO.Backend.Models.Reportes; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Repository{ |
||||||
|
public class ArchivoElectronicoRepository : IArchivoElectronicoRepository |
||||||
|
{ |
||||||
|
private readonly DapperContext _context; |
||||||
|
public ArchivoElectronicoRepository(DapperContext context) { _context = context; } |
||||||
|
public async Task<List<RptPedimentosPagadosAEO>> getRptPedimentoPagadosAEO(DTOAEPeriodo data) |
||||||
|
{ |
||||||
|
var query = "getRptArchivoElectronicoOficial"; |
||||||
|
using (var connection = _context.CreateConnection()) |
||||||
|
{ |
||||||
|
var entrada = await connection.QueryAsync<RptPedimentosPagadosAEO>(query, |
||||||
|
new |
||||||
|
{ |
||||||
|
@Anio = data.Anio, |
||||||
|
@Mes = data.Mes, |
||||||
|
@NoCliente = data.NoCliente, |
||||||
|
@TipoOperacion = data.TipoOperacion |
||||||
|
}, |
||||||
|
commandType: CommandType.StoredProcedure); |
||||||
|
return entrada.ToList(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
using System.Data; |
||||||
|
using CORRESPONSALBackend.Context; |
||||||
|
using CORRESPONSALBackend.Contracts.Catalogos; |
||||||
|
using CORRESPONSALBackend.Models.Catalogos; |
||||||
|
using Dapper; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Repository.Catalogos{ |
||||||
|
public class CatTiposContenedoresRepository : ICatTiposContenedoresRepository |
||||||
|
{ |
||||||
|
private readonly DapperContext _context; |
||||||
|
|
||||||
|
public CatTiposContenedoresRepository(DapperContext context){ |
||||||
|
_context = context; |
||||||
|
} |
||||||
|
public async Task<IEnumerable<CatTiposContenedores>> Get() |
||||||
|
{ |
||||||
|
var query = "[Catalogo.CatTiposContenedores.Get]"; |
||||||
|
var connection = _context.CreateConnection(); |
||||||
|
var tipos = await connection.QueryAsync<CatTiposContenedores>(query, new {}, commandType: CommandType.StoredProcedure); |
||||||
|
return tipos; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,85 @@ |
|||||||
|
using System.Data; |
||||||
|
using CORRESPONSALBackend.Context; |
||||||
|
using CORRESPONSALBackend.Contracts.Corresponsalias; |
||||||
|
using CORRESPONSALBackend.DTO.Corresponsales; |
||||||
|
using CORRESPONSALBackend.Models.Corresponsales; |
||||||
|
using Dapper; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Repository.Corresponsalias{ |
||||||
|
public class CorresponsaliasSolicitudesRepository : ICorresponsaliasSolicitudesRepository |
||||||
|
{ |
||||||
|
private readonly DapperContext _context; |
||||||
|
public CorresponsaliasSolicitudesRepository(DapperContext context) { _context = context; } |
||||||
|
public async Task<ITraficoSolicitud> AppendSolicitudReapertura(ITraficoSolicitud solicitud) |
||||||
|
{ |
||||||
|
var query = "[Corresponsales.Trafico.SolicitudReapertura.Append]"; |
||||||
|
using var connection = _context.CreateConnection(); |
||||||
|
var response = await connection.QueryAsync<ITraficoSolicitud>(query, new { |
||||||
|
@id =solicitud.Id, |
||||||
|
@idTrafico = solicitud.IdTrafico, |
||||||
|
@idUsuarioSolicita = solicitud.IdUsuarioSolicita, |
||||||
|
@fechaSolicita = solicitud.FechaSolicita, |
||||||
|
@motivoSolicita = solicitud.MotivoSolicita, |
||||||
|
@idUsuarioAutoriza = solicitud.IdUsuarioAutoriza, |
||||||
|
@fechaAutoriza = solicitud.FechaAutoriza, |
||||||
|
@motivoRechazo = solicitud.MotivoRechazo, |
||||||
|
@estado = solicitud.Estado |
||||||
|
}, commandType: CommandType.StoredProcedure); |
||||||
|
|
||||||
|
return response.First(); |
||||||
|
} |
||||||
|
|
||||||
|
public async Task<DTOTraficoSolicitud> GetSolicitudReapertura(int idTrafico) |
||||||
|
{ |
||||||
|
var query = "[Corresponsales.Trafico.SolicitudReapertura.Get]"; |
||||||
|
using var connection = _context.CreateConnection(); |
||||||
|
var response = await connection.QueryAsync<DTOTraficoSolicitud>(query, new { |
||||||
|
@idTrafico = idTrafico |
||||||
|
}, commandType: CommandType.StoredProcedure); |
||||||
|
return response.FirstOrDefault(new DTOTraficoSolicitud{ |
||||||
|
Id=0, |
||||||
|
IdTrafico=idTrafico, |
||||||
|
UsuarioSolicita= "", |
||||||
|
FechaSolicita=null, |
||||||
|
MotivoSolicita="", |
||||||
|
Estado=1 |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
public async Task<ITraficoSolicitud> AppendSolicitudEliminarReferencia(ITraficoSolicitud solicitud) |
||||||
|
{ |
||||||
|
var query = "[Corresponsales.Trafico.Solicitud.EliminarCuenta.Append]"; |
||||||
|
using var connection = _context.CreateConnection(); |
||||||
|
var response = await connection.QueryAsync<ITraficoSolicitud>(query, new { |
||||||
|
@id =solicitud.Id, |
||||||
|
@idTrafico = solicitud.IdTrafico, |
||||||
|
@idUsuarioSolicita = solicitud.IdUsuarioSolicita, |
||||||
|
@fechaSolicita = solicitud.FechaSolicita, |
||||||
|
@motivoSolicita = solicitud.MotivoSolicita, |
||||||
|
@idUsuarioAutoriza = solicitud.IdUsuarioAutoriza, |
||||||
|
@fechaAutoriza = solicitud.FechaAutoriza, |
||||||
|
@motivoRechazo = solicitud.MotivoRechazo, |
||||||
|
@estado = solicitud.Estado |
||||||
|
}, commandType: CommandType.StoredProcedure); |
||||||
|
|
||||||
|
return response.First(); |
||||||
|
} |
||||||
|
|
||||||
|
public async Task<DTOTraficoSolicitud> GetSolicitudEliminarReferencia(int idTrafico) |
||||||
|
{ |
||||||
|
var query = "[Corresponsales.Trafico.Solicitud.EliminarCuenta.Get]"; |
||||||
|
using var connection = _context.CreateConnection(); |
||||||
|
var response = await connection.QueryAsync<DTOTraficoSolicitud>(query, new { |
||||||
|
@idTrafico = idTrafico |
||||||
|
}, commandType: CommandType.StoredProcedure); |
||||||
|
return response.FirstOrDefault(new DTOTraficoSolicitud{ |
||||||
|
Id=0, |
||||||
|
IdTrafico=idTrafico, |
||||||
|
UsuarioSolicita= "", |
||||||
|
FechaSolicita=null, |
||||||
|
MotivoSolicita="", |
||||||
|
Estado=1 |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,138 @@ |
|||||||
|
using System.Data; |
||||||
|
using CORRESPONSALBackend.Context; |
||||||
|
using CORRESPONSALBackend.Contracts.Reportes.Alen; |
||||||
|
using CORRESPONSALBackend.DTO.Reportes.Alen; |
||||||
|
using CORRESPONSALBackend.Models.Clientes.Alen; |
||||||
|
using Dapper; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Repository.Reportes.Alen{ |
||||||
|
public class EstadosCuentaAlenRepository : IEstadosCuentaAlenRepository |
||||||
|
{ |
||||||
|
|
||||||
|
private readonly DapperContext _context; |
||||||
|
private readonly IConfiguration _config; |
||||||
|
public EstadosCuentaAlenRepository(DapperContext context, IConfiguration config) |
||||||
|
{ |
||||||
|
_context = context; |
||||||
|
_config = config; |
||||||
|
} |
||||||
|
public async Task<EstadosCuenta> Append(EstadosCuenta data) |
||||||
|
{ |
||||||
|
var query = "[EstadosCuenta.Alen.Append]"; |
||||||
|
using (var connection = _context.CreateConnection()) |
||||||
|
{ |
||||||
|
var estado = await connection.QueryAsync<EstadosCuenta>(query, new |
||||||
|
{ |
||||||
|
data.TipoMovimiento, |
||||||
|
data.NoSerie, |
||||||
|
data.NoMovimiento, |
||||||
|
data.Trafico, |
||||||
|
data.Impexp, |
||||||
|
data.Aduana, |
||||||
|
data.Patente, |
||||||
|
data.Pedimento, |
||||||
|
data.Clave, |
||||||
|
data.NoCliente, |
||||||
|
data.NoCentro, |
||||||
|
data.SubCentro, |
||||||
|
data.Nombre, |
||||||
|
data.SubCtaNombre, |
||||||
|
data.TipoRangos, |
||||||
|
data.Cargos, |
||||||
|
data.Abonos, |
||||||
|
data.Fecha, |
||||||
|
data.FechaPedimento, |
||||||
|
data.FechaRev, |
||||||
|
data.DiasPedimCta, |
||||||
|
data.DiasCtaRev, |
||||||
|
data.DiasRev, |
||||||
|
data.IvaAl, |
||||||
|
data.TotalFacturado, |
||||||
|
data.SaldoFinal, |
||||||
|
data.Anticipo, |
||||||
|
data.UUID, |
||||||
|
data.Descripcion, |
||||||
|
data.Remitente, |
||||||
|
data.Pedido, |
||||||
|
data.TipoMercancia, |
||||||
|
data.CampoAdicional5, |
||||||
|
}, commandType: CommandType.StoredProcedure); |
||||||
|
return estado.First(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public async Task<EstadosCuenta> AppendObservaciones(DTOEstadosCuentaAlen data) |
||||||
|
{ |
||||||
|
var query = "[EstadosCuenta.Alen.AppendObservaciones]"; |
||||||
|
using (var connection = _context.CreateConnection()) |
||||||
|
{ |
||||||
|
var cuenta = await connection.QueryAsync<EstadosCuenta>(query, new {data.IdObservaciones, @NoCuenta = data.NoMovimiento, data.Observaciones}, commandType: CommandType.StoredProcedure); |
||||||
|
return cuenta.First(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public async Task<EstadosCuenta> AppendOrdenCompra(DTOEstadosCuentaAlen data) |
||||||
|
{ |
||||||
|
var query = "[EstadosCuenta.Alen.AppendOrdenCompra]"; |
||||||
|
using (var connection = _context.CreateConnection()) |
||||||
|
{ |
||||||
|
var cuenta = await connection.QueryAsync<EstadosCuenta>(query, new {data.IdOrdenCompra, @NoCuenta = data.NoMovimiento, data.OrdenCompra}, commandType: CommandType.StoredProcedure); |
||||||
|
return cuenta.First(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public async Task ClearData() |
||||||
|
{ |
||||||
|
var query = "[EstadosCuenta.Alen.Clear]"; |
||||||
|
using (var connection = _context.CreateConnection()) |
||||||
|
{ |
||||||
|
await connection.QueryAsync<DTOEstadosCuentaAlen>(query, new {}, commandType: CommandType.StoredProcedure); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public async Task<IEnumerable<DTOEstadosCuentaAlen>> GetAll(DTOEstadosCuentaAlenFilters filters) |
||||||
|
{ |
||||||
|
var query = "[EstadosCuenta.Alen.GetAll]"; |
||||||
|
using (var connection = _context.CreateConnection()) |
||||||
|
{ |
||||||
|
var estados = await connection.QueryAsync<DTOEstadosCuentaAlen>(query, new { |
||||||
|
filters.Trafico, |
||||||
|
filters.Impexp, |
||||||
|
filters.Aduana, |
||||||
|
filters.Patente, |
||||||
|
filters.Pedimento, |
||||||
|
filters.Inicio, |
||||||
|
filters.Fin, |
||||||
|
filters.Remitente, |
||||||
|
filters.Programado |
||||||
|
}, commandType: CommandType.StoredProcedure); |
||||||
|
return estados; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public async Task<EstadosCuenta> GetByFolio(string Folio) |
||||||
|
{ |
||||||
|
var query = "[EstadosCuenta.Alen.GetByFolio]"; |
||||||
|
using (var connection = _context.CreateConnection()) |
||||||
|
{ |
||||||
|
var cuenta= await connection.QueryAsync<EstadosCuenta>(query, new { |
||||||
|
@Folio |
||||||
|
}, commandType: CommandType.StoredProcedure); |
||||||
|
return cuenta.FirstOrDefault(new EstadosCuenta(){id=0}); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public async Task<EstadosCuenta> MarkAsProgramado(string NoMovimiento, string NoSerie) |
||||||
|
{ |
||||||
|
var query = "[EstadosCuenta.Alen.MarkAsProgramado]"; |
||||||
|
using (var connection = _context.CreateConnection()) |
||||||
|
{ |
||||||
|
var cuenta= await connection.QueryFirstOrDefaultAsync<EstadosCuenta>(query, new { |
||||||
|
@NoCuenta = NoMovimiento, |
||||||
|
@NoSerie = NoSerie |
||||||
|
}, commandType: CommandType.StoredProcedure); |
||||||
|
return cuenta; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,22 @@ |
|||||||
|
using System.Data; |
||||||
|
using CORRESPONSALBackend.Context; |
||||||
|
using CORRESPONSALBackend.Contracts.Reportes.Alen; |
||||||
|
using Dapper; |
||||||
|
|
||||||
|
public class ReportesAlenRepository : IReportesAlenRepository |
||||||
|
{ |
||||||
|
private readonly DapperContext _context; |
||||||
|
public ReportesAlenRepository(DapperContext context) { _context = context; } |
||||||
|
public async Task<IEnumerable<DTOReporteFacturasTraficosConsolidados>> GetFacturasTraficoConsolidado(int idTrafico, string referencia) |
||||||
|
{ |
||||||
|
var query = "[Reportes.Alen.FacturasTraficosConsolidados]"; |
||||||
|
using var connection = _context.CreateConnection(); |
||||||
|
var entrada = await connection.QueryAsync<DTOReporteFacturasTraficosConsolidados>(query, new |
||||||
|
{ |
||||||
|
@IdTrafico = idTrafico, |
||||||
|
@Referencia = referencia |
||||||
|
}, |
||||||
|
commandType: CommandType.StoredProcedure); |
||||||
|
return entrada; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,28 @@ |
|||||||
|
using System.Data; |
||||||
|
using CORRESPONSALBackend.Context; |
||||||
|
using CORRESPONSALBackend.Contracts.Reportes.CuentasCerradas; |
||||||
|
using CORRESPONSALBackend.DTO.Reportes.CuentasCerradas; |
||||||
|
using Dapper; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Repository.Reportes.CuentasCerradas{ |
||||||
|
public class ReporteCuentasCerradasRepository : IReporteCuentasCerradasRepository |
||||||
|
{ |
||||||
|
private readonly DapperContext _context; |
||||||
|
public ReporteCuentasCerradasRepository(DapperContext context) { _context = context; } |
||||||
|
public async Task<IEnumerable<DTOCuentasCerradas>> GetCuentasCerradas(string Inicio, string Fin, int TipoOperacion, int NoCliente, int IdCorresponsal) |
||||||
|
{ |
||||||
|
var query = "[Reportes.CuentasCerradas]"; |
||||||
|
using var connection = _context.CreateConnection(); |
||||||
|
var entrada = await connection.QueryAsync<DTOCuentasCerradas>(query, new |
||||||
|
{ |
||||||
|
@Inicio = Inicio, |
||||||
|
@Fin = Fin, |
||||||
|
@NoCliente = NoCliente, |
||||||
|
@TipoOperacion = TipoOperacion, |
||||||
|
@IdCorresponsal = IdCorresponsal |
||||||
|
}, |
||||||
|
commandType: CommandType.StoredProcedure); |
||||||
|
return entrada; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,34 @@ |
|||||||
|
using System.Data; |
||||||
|
using CORRESPONSALBackend.Context; |
||||||
|
using CORRESPONSALBackend.Contracts.Reportes.Facturacion; |
||||||
|
using CORRESPONSALBackend.DTO.Reportes; |
||||||
|
using CORRESPONSALBackend.DTO.Reportes.Facturacion; |
||||||
|
using Dapper; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Repository.Reportes.Facturacion{ |
||||||
|
public class ReportesFacturacionRepository : IReportesFacturacionRepository |
||||||
|
{ |
||||||
|
private readonly DapperContext _context; |
||||||
|
public ReportesFacturacionRepository(DapperContext context) { _context = context; } |
||||||
|
public async Task<IEnumerable<DTOReporteGeneralFacturacion>> GetCuentasFacturadas(DTOReporteCorresponsales data) |
||||||
|
{ |
||||||
|
var query = "[Reportes.Facturacion.GetCuentasFacturadas]"; |
||||||
|
using var connection = _context.CreateConnection(); |
||||||
|
var entrada = await connection.QueryAsync<DTOReporteGeneralFacturacion>(query, new |
||||||
|
{ |
||||||
|
@Inicio = data.Inicio, |
||||||
|
@Fin = data.Fin, |
||||||
|
@NoCliente = data.NoCliente, |
||||||
|
@TipoOperacion = data.TipoOperacion, |
||||||
|
@IdCorresponsal = data.IdCorresponsal, |
||||||
|
@Patente = data.Patente, |
||||||
|
@Aduana = data.Aduana, |
||||||
|
@Pedimento = data.Pedimento, |
||||||
|
@Proceso = data.Proceso, |
||||||
|
@Modo = data.Modo |
||||||
|
}, |
||||||
|
commandType: CommandType.StoredProcedure); |
||||||
|
return entrada; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
using CORRESPONSALBackend.Contracts.ArchivoElectronico; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Services{ |
||||||
|
public class ArchivoElectronicoService : IArchivoElectronicoService{ |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,115 @@ |
|||||||
|
using System.Globalization; |
||||||
|
using System.Text.RegularExpressions; |
||||||
|
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{ |
||||||
|
public class CorresponsaliasTraficosService : ICorresponsaliasTraficosService |
||||||
|
{ |
||||||
|
private readonly IFileManagerRepository _fileManagerRepo; |
||||||
|
private readonly IFilePaths4ProcessRepository _RepoRelativePath; |
||||||
|
private readonly ICorresponsaliasTraficosRepository _Repo; |
||||||
|
private readonly IProveedoresRepository _proveedoresRepository; |
||||||
|
private readonly ICorresponsaliasFacturasRepository _facturasRepository; |
||||||
|
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, |
||||||
|
ICorresponsaliasTraficosRepository Repo, IClientesRepository clientesRepository, |
||||||
|
IProveedoresRepository proveedoresRepository, ICorresponsaliasFacturasRepository facturasRepository, ICorresponsaliasContenedoresRepository contenedoresRepository, |
||||||
|
ICatCentrosCostosRepository centrosCostosRepository, ITiposMercanciaRepository tiposMercanciaRepository){ |
||||||
|
_fileManagerRepo = fileManagerRepo; |
||||||
|
_RepoRelativePath = RepoRelativePath; |
||||||
|
_Repo = Repo; |
||||||
|
_proveedoresRepository = proveedoresRepository; |
||||||
|
_facturasRepository = facturasRepository; |
||||||
|
_contenedoresRepository = contenedoresRepository; |
||||||
|
_clientesRepository = clientesRepository; |
||||||
|
_centrosCostosRepository = centrosCostosRepository; |
||||||
|
_tiposMercanciaRepository = tiposMercanciaRepository; |
||||||
|
_config = config; |
||||||
|
RootPathCorresponsales = _config.GetValue<string>("AllFiles"); |
||||||
|
} |
||||||
|
public async Task<List<string[]>> ReadTxtFacturasAlen(int fileId) |
||||||
|
{ |
||||||
|
FileManager recFound = await _fileManagerRepo.getFileById(fileId); |
||||||
|
FilePaths4Process RelativePath = await _RepoRelativePath.getPaths4ProcessById(recFound.Proceso); |
||||||
|
string filePath = RootPathCorresponsales + RelativePath.Path + recFound.NombreArchivo; |
||||||
|
if(System.IO.File.Exists(filePath)){ |
||||||
|
try{ |
||||||
|
var fileContent = File.ReadAllText(filePath); |
||||||
|
string[] GCs = fileContent.Split("\r\n"); |
||||||
|
List<string[]> facturas = new List<string[]>(); |
||||||
|
foreach(var gc in GCs){ |
||||||
|
facturas.Add(gc.Split('|')); |
||||||
|
} |
||||||
|
File.Delete(filePath); |
||||||
|
return facturas; |
||||||
|
}catch(Exception ex){ |
||||||
|
File.Delete(filePath); |
||||||
|
throw new Exception(ex.Message); |
||||||
|
} |
||||||
|
}else{ |
||||||
|
return new List<string[]>(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public async Task<string> GetTxtFacturacionData(int idTrafico) |
||||||
|
{ |
||||||
|
try{ |
||||||
|
var trafico = await _Repo.Get(idTrafico); |
||||||
|
trafico.DescripcionMercancia = Regex.Replace(trafico.DescripcionMercancia, @"\t|\n|\r", ""); |
||||||
|
var tiposMercancia = await _tiposMercanciaRepository.GetAll(); |
||||||
|
var tipoMercancia = tiposMercancia.First(x => trafico.PedimentoObligatorio == 1 ? x.id == trafico.idTipoMercancia : x.id == 15); |
||||||
|
var facturas = await _facturasRepository.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 += $"{(trafico.FechaPago != null ? DateTime.ParseExact(trafico.FechaPago, "MM/dd/yyyy hh:mm:ss",CultureInfo.InvariantCulture).ToString("yyyy-MM-dd") : "/ / : :")}|"; |
||||||
|
fileData += $"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 >= 50 ? NombreProveedor.Substring(0, 50) : 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 >= 25 ? folios.Substring(0,25) : folios)}\"|0|\"{NombreProveedor}\"|\"{(pedidos.Length >= 60 ? pedidos.Substring(0,60) : pedidos)}\"|"; |
||||||
|
}else{ |
||||||
|
fileData += $"0|\"\"|0|\"\"|\"\"|"; |
||||||
|
} |
||||||
|
fileData += $"{trafico.Bultos}|0|0|"; |
||||||
|
fileData += $"{(trafico.FechaDesaduanamiento != "" ? trafico.FechaDesaduanamiento.Substring(0,10) : "/ / : :")}|"; |
||||||
|
fileData += $"{contenedores.Count()}|0|\"\"|"; |
||||||
|
fileData += $"{(trafico.FechaDesaduanamiento != "" ? trafico.FechaDesaduanamiento.Substring(0,10) : "/ / : :")}|"; |
||||||
|
fileData += $"{tipoMercancia.Clave}|0|0|\"\"|\"\"|\"\"|\"\"|/ /|F|F|F|F|0|0|F|0.00|F|0|\"\"|\"\"|"; |
||||||
|
fileData += $"{(trafico.FechaPago != null ? DateTime.ParseExact(trafico.FechaPago, "MM/dd/yyyy hh:mm:ss",CultureInfo.InvariantCulture).ToString("yyyy-MM-dd") : "/ / : :")}|"; |
||||||
|
fileData += $"\"\"|\"\"|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); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,103 @@ |
|||||||
|
using CORRESPONSALBackend.Contracts.Corresponsalias; |
||||||
|
using CORRESPONSALBackend.Contracts.Reportes.Alen; |
||||||
|
using CORRESPONSALBackend.Models.Corresponsales; |
||||||
|
using OfficeOpenXml; |
||||||
|
using OfficeOpenXml.Table; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Services.Reportes.Alen{ |
||||||
|
public class ReportesAlenService : IReportesAlenService |
||||||
|
{ |
||||||
|
private readonly ICorresponsaliasTraficosRepository _traficosRepo; |
||||||
|
private readonly IReportesAlenRepository _repo; |
||||||
|
public ReportesAlenService(ICorresponsaliasTraficosRepository traficosRepo, IReportesAlenRepository repo){ |
||||||
|
_traficosRepo = traficosRepo; |
||||||
|
_repo = repo; |
||||||
|
} |
||||||
|
public async Task<MemoryStream> GetRelacionFacturas(ITrafico trafico, IEnumerable<CorresponsalFacturas> facturas, IEnumerable<CorresponsalesContenedores> contenedores) |
||||||
|
{ |
||||||
|
try{ |
||||||
|
ExcelPackage.LicenseContext = LicenseContext.NonCommercial; |
||||||
|
using (ExcelPackage excelPackage = new ExcelPackage()){ |
||||||
|
var worksheet = excelPackage.Workbook.Worksheets.Add("sheet1"); |
||||||
|
worksheet.Cells["A1"].Value = "Numero de Remesa"; |
||||||
|
worksheet.Cells["B1"].Value = "Numero de Factura"; |
||||||
|
worksheet.Cells["C1"].Value = "Folio Fiscal"; |
||||||
|
worksheet.Cells["D1"].Value = "Fecha de Factura"; |
||||||
|
worksheet.Cells["E1"].Value = "Numero de COVE"; |
||||||
|
worksheet.Cells["F1"].Value = "Valor Factura"; |
||||||
|
worksheet.Cells["G1"].Value = "Entrega"; |
||||||
|
worksheet.Cells["H1"].Value = "Transporte"; |
||||||
|
worksheet.Cells["I1"].Value = "Pedimento"; |
||||||
|
worksheet.Cells["J1"].Value = "Fecha-Hora Cruce"; |
||||||
|
worksheet.Cells["K1"].Value = "Fecha Cuenta Corresponsal"; |
||||||
|
worksheet.Cells["L1"].Value = "Honorarios"; |
||||||
|
worksheet.Cells["M1"].Value = "Maniobras"; |
||||||
|
worksheet.Cells["N1"].Value = "Validacion"; |
||||||
|
worksheet.Cells["O1"].Value = "Contraprestacion"; |
||||||
|
worksheet.Cells["P1"].Value = "Prevalidacion"; |
||||||
|
worksheet.Cells["Q1"].Value = "IVA"; |
||||||
|
worksheet.Cells["R1"].Value = "Total M.N. por Operacion"; |
||||||
|
int currentRow = 2; |
||||||
|
foreach(var factura in facturas){ |
||||||
|
var fechaCruce = factura.IdContenedor != null && factura.IdContenedor != 0 ? contenedores.FirstOrDefault(x => x.id == factura.IdContenedor).FSemaforo : ""; |
||||||
|
worksheet.Cells[$"A{currentRow}"].Value = $"{trafico.FolioGemco}-{currentRow-1}"; |
||||||
|
worksheet.Cells[$"B{currentRow}"].Value = factura.Factura; |
||||||
|
worksheet.Cells[$"C{currentRow}"].Value = factura.UUID; |
||||||
|
worksheet.Cells[$"D{currentRow}"].Value = factura.FechaFactura; |
||||||
|
worksheet.Cells[$"E{currentRow}"].Value = factura.COVE; |
||||||
|
worksheet.Cells[$"F{currentRow}"].Value = factura.ValorFacturaDls; |
||||||
|
worksheet.Cells[$"G{currentRow}"].Value = factura.Entrega; |
||||||
|
worksheet.Cells[$"H{currentRow}"].Value = factura.Transporte; |
||||||
|
worksheet.Cells[$"I{currentRow}"].Value = trafico.Pedimento; |
||||||
|
worksheet.Cells[$"J{currentRow}"].Value = fechaCruce; |
||||||
|
worksheet.Cells[$"K{currentRow}"].Value = trafico.FechaCuenta; |
||||||
|
worksheet.Cells[$"L{currentRow}"].Value = "$0.00"; |
||||||
|
worksheet.Cells[$"M{currentRow}"].Value = "$0.00"; |
||||||
|
worksheet.Cells[$"N{currentRow}"].Value = "$0.00"; |
||||||
|
worksheet.Cells[$"O{currentRow}"].Value = "$0.00"; |
||||||
|
worksheet.Cells[$"P{currentRow}"].Value = "$0.00"; |
||||||
|
worksheet.Cells[$"Q{currentRow}"].Value = "$0.00"; |
||||||
|
worksheet.Cells[$"R{currentRow}"].Value = "$0.00"; |
||||||
|
currentRow++; |
||||||
|
} |
||||||
|
//Se crea la tabla en el rango de celdas donde se mostrara la inforamcion. |
||||||
|
ExcelRange range = worksheet.Cells[1, 1,facturas.Count() + 1, 18]; |
||||||
|
ExcelTable tab = worksheet.Tables.Add(range, "Table1"); |
||||||
|
tab.TableStyle = TableStyles.Light1; |
||||||
|
worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns(); |
||||||
|
excelPackage.Workbook.Calculate(); |
||||||
|
var stream = new MemoryStream(); |
||||||
|
excelPackage.SaveAs(stream); |
||||||
|
stream.Position = 0; |
||||||
|
return stream; |
||||||
|
} |
||||||
|
}catch(Exception ex){ |
||||||
|
throw new Exception(ex.Message); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public async Task<MemoryStream> GetReporteFacturasTraficoConsolidado(string referencia) |
||||||
|
{ |
||||||
|
try{ |
||||||
|
ExcelPackage.LicenseContext = LicenseContext.NonCommercial; |
||||||
|
using (ExcelPackage excelPackage = new ExcelPackage()){ |
||||||
|
var worksheet = excelPackage.Workbook.Worksheets.Add("sheet1"); |
||||||
|
var trafico = await _traficosRepo.GetByReferencia(referencia); |
||||||
|
var facturas = await _repo.GetFacturasTraficoConsolidado(trafico.id, referencia); |
||||||
|
worksheet.Cells["A1"].LoadFromCollection(facturas, true); |
||||||
|
ExcelRange range = worksheet.Cells[1, 1,facturas.Count() + 1, 18]; |
||||||
|
ExcelTable tab = worksheet.Tables.Add(range, "Table1"); |
||||||
|
tab.TableStyle = TableStyles.Light1; |
||||||
|
worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns(); |
||||||
|
excelPackage.Workbook.Calculate(); |
||||||
|
var stream = new MemoryStream(); |
||||||
|
excelPackage.SaveAs(stream); |
||||||
|
stream.Position = 0; |
||||||
|
return stream; |
||||||
|
} |
||||||
|
}catch(Exception ex){ |
||||||
|
throw new Exception(ex.Message); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,43 @@ |
|||||||
|
using CORRESPONSALBackend.Contracts.Reportes.CuentasCerradas; |
||||||
|
using CORRESPONSALBackend.DTO.Reportes.CuentasCerradas; |
||||||
|
using OfficeOpenXml; |
||||||
|
using OfficeOpenXml.Style; |
||||||
|
using OfficeOpenXml.Table; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Services.Reportes.CuentasCerradas{ |
||||||
|
public class ReporteCuentasCerradasService : IReporteCuentasCerradasService |
||||||
|
{ |
||||||
|
public async Task<MemoryStream> GetExcel(IEnumerable<DTOCuentasCerradas> cuentas) |
||||||
|
{ |
||||||
|
try{ |
||||||
|
ExcelPackage.LicenseContext = LicenseContext.NonCommercial; |
||||||
|
using (ExcelPackage excelPackage = new ExcelPackage()){ |
||||||
|
var worksheet = excelPackage.Workbook.Worksheets.Add("sheet1"); |
||||||
|
worksheet.Cells["A1"].LoadFromCollection(cuentas, true); |
||||||
|
//Se crea la tabla en el rango de celdas donde se mostrara la inforamcion. |
||||||
|
ExcelRange range = worksheet.Cells[1, 1,cuentas.Count() + 1, 19]; |
||||||
|
ExcelTable tab = worksheet.Tables.Add(range, "Table1"); |
||||||
|
tab.TableStyle = TableStyles.Light1; |
||||||
|
worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns(); |
||||||
|
worksheet.Column(10).Width = 100; |
||||||
|
worksheet.Column(10).Style.WrapText = true; |
||||||
|
worksheet.Column(11).Width = 100; |
||||||
|
worksheet.Column(11).Style.WrapText = true; |
||||||
|
/* worksheet.Column(19).Width = 100; |
||||||
|
worksheet.Column(19).Style.WrapText = true; |
||||||
|
worksheet.Column(20).Width = 100; |
||||||
|
worksheet.Column(20).Style.WrapText = true; |
||||||
|
worksheet.Column(21).Width = 100; |
||||||
|
worksheet.Column(21).Style.WrapText = true; */ |
||||||
|
worksheet.Cells[worksheet.Dimension.Address].Style.VerticalAlignment = ExcelVerticalAlignment.Center; |
||||||
|
excelPackage.Workbook.Calculate(); |
||||||
|
var stream = new MemoryStream(); |
||||||
|
excelPackage.SaveAs(stream); |
||||||
|
return stream; |
||||||
|
} |
||||||
|
}catch(Exception ex){ |
||||||
|
throw new Exception(ex.Message); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,63 @@ |
|||||||
|
using CORRESPONSALBackend.Contracts.Reportes; |
||||||
|
using CORRESPONSALBackend.DTO.Corresponsales; |
||||||
|
using OfficeOpenXml; |
||||||
|
using OfficeOpenXml.Table; |
||||||
|
|
||||||
|
namespace CORRESPONSALBackend.Services.Reportes{ |
||||||
|
public class TraficosClientesService : ITraficosClientesService{ |
||||||
|
public TraficosClientesService(){ |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
public async Task<MemoryStream> GetExcel(IEnumerable<DTOCorresponsalTrafico> traficos) |
||||||
|
{ |
||||||
|
try{ |
||||||
|
ExcelPackage.LicenseContext = LicenseContext.NonCommercial; |
||||||
|
using (ExcelPackage excelPackage = new ExcelPackage()){ |
||||||
|
var worksheet = excelPackage.Workbook.Worksheets.Add("sheet1"); |
||||||
|
worksheet.Cells["A1"].Value="Estado"; |
||||||
|
worksheet.Cells["B1"].Value="Trafico"; |
||||||
|
worksheet.Cells["C1"].Value="Fecha Registro"; |
||||||
|
worksheet.Cells["D1"].Value="Usuario"; |
||||||
|
worksheet.Cells["E1"].Value="Cliente"; |
||||||
|
worksheet.Cells["F1"].Value="Tipo Operación"; |
||||||
|
worksheet.Cells["G1"].Value="Estado Operación"; |
||||||
|
worksheet.Cells["H1"].Value="Patente"; |
||||||
|
worksheet.Cells["I1"].Value="Aduana"; |
||||||
|
worksheet.Cells["J1"].Value="Pedimento"; |
||||||
|
worksheet.Cells["K1"].Value="Fecha Pago"; |
||||||
|
worksheet.Cells["L1"].Value="Fecha Desaduanado"; |
||||||
|
worksheet.Cells["M1"].Value="Fecha Ultima Actualización"; |
||||||
|
int currentRow=2; |
||||||
|
foreach(var trafico in traficos){ |
||||||
|
worksheet.Cells[$"A{currentRow}"].Value = trafico.Proceso == 1 ? "Por Terminar" : trafico.Proceso == 2 || trafico.Proceso == 3 ? "Despachado sin Facturar" : "Despachado y Facturado"; |
||||||
|
worksheet.Cells[$"B{currentRow}"].Value = trafico.Trafico; |
||||||
|
worksheet.Cells[$"C{currentRow}"].Value = trafico.FechaRegistro; |
||||||
|
worksheet.Cells[$"D{currentRow}"].Value = trafico.sUsuario; |
||||||
|
worksheet.Cells[$"E{currentRow}"].Value = trafico.sCliente; |
||||||
|
worksheet.Cells[$"F{currentRow}"].Value = trafico.sTipoOperacion; |
||||||
|
worksheet.Cells[$"G{currentRow}"].Value = trafico.sEstatus; |
||||||
|
worksheet.Cells[$"H{currentRow}"].Value = trafico.Patente; |
||||||
|
worksheet.Cells[$"I{currentRow}"].Value = trafico.Aduana; |
||||||
|
worksheet.Cells[$"J{currentRow}"].Value = trafico.Pedimento; |
||||||
|
worksheet.Cells[$"K{currentRow}"].Value = trafico.FechaPago; |
||||||
|
worksheet.Cells[$"L{currentRow}"].Value = trafico.FechaDesaduanamiento; |
||||||
|
worksheet.Cells[$"M{currentRow}"].Value = trafico.UltimaActualizacion; |
||||||
|
currentRow++; |
||||||
|
} |
||||||
|
ExcelRange range = worksheet.Cells[1, 1,traficos.Count() + 1, 13]; |
||||||
|
ExcelTable tab = worksheet.Tables.Add(range, "Table1"); |
||||||
|
tab.TableStyle = TableStyles.Light1; |
||||||
|
worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns(); |
||||||
|
excelPackage.Workbook.Calculate(); |
||||||
|
var stream = new MemoryStream(); |
||||||
|
excelPackage.SaveAs(stream); |
||||||
|
stream.Position = 0; |
||||||
|
return stream; |
||||||
|
} |
||||||
|
}catch(Exception ex){ |
||||||
|
throw new Exception(ex.Message); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue