feature, crear un excel con las facturas de un trafico

feature/Reporte_Relacion_Facturas_Alen
Felix Morales 10 months ago
parent 89d363187d
commit 5b70263914
  1. 7
      Contracts/Corresponsalias/Services/ICorresponsaliasFacturasService.cs
  2. 18
      Controllers/Corresponsalias/FacturasController.cs
  3. 3
      Program.cs
  4. 39
      Services/Corresponsalias/Facturas/CorresponsaliasFacturasService.cs

@ -0,0 +1,7 @@
using CORRESPONSALBackend.Models.Corresponsales;
namespace CORRESPONSALBackend.Contracts.Corresponsalias.Services{
public interface ICorresponsaliasFacturasService{
public Task<MemoryStream> GetFacturasExcel(IEnumerable<CorresponsalFacturas> facturas, string folioGemco);
}
}

@ -1,5 +1,6 @@
using System.IO.Compression; using System.IO.Compression;
using CORRESPONSALBackend.Contracts.Corresponsalias; using CORRESPONSALBackend.Contracts.Corresponsalias;
using CORRESPONSALBackend.Contracts.Corresponsalias.Services;
using CORRESPONSALBackend.Models.Corresponsales; using CORRESPONSALBackend.Models.Corresponsales;
using CORRESPONSALBackend.Services.C1896; using CORRESPONSALBackend.Services.C1896;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
@ -13,11 +14,15 @@ namespace CORRESPONSALBackend.Controllers.Corresponsalias
public class FacturasController : Controller public class FacturasController : Controller
{ {
private readonly ICorresponsaliasFacturasRepository _Repo; private readonly ICorresponsaliasFacturasRepository _Repo;
private readonly ICorresponsaliasFacturasService _Service;
private readonly ICorresponsaliasTraficosRepository _TraficosRepo;
private readonly IConfiguration _config; private readonly IConfiguration _config;
public FacturasController(ICorresponsaliasFacturasRepository Repo, IConfiguration config) public FacturasController(ICorresponsaliasFacturasRepository Repo, IConfiguration config, ICorresponsaliasFacturasService Service, ICorresponsaliasTraficosRepository TraficosRepo)
{ {
_config = config; _config = config;
_Service = Service;
_Repo = Repo; _Repo = Repo;
_TraficosRepo = TraficosRepo;
} }
/// Corresponsales: Facturas /// Corresponsales: Facturas
@ -53,5 +58,16 @@ namespace CORRESPONSALBackend.Controllers.Corresponsalias
return Srv.ReadDataFromFile(@"c:\data\layout_omg_alen.txt"); return Srv.ReadDataFromFile(@"c:\data\layout_omg_alen.txt");
} }
*/ */
[HttpGet("GetExcel")]
public async Task<IActionResult> GetFacturasExcel([FromQuery] int idTrafico){
try{
var facturas = await _Repo.GetAll(idTrafico);
var trafico = await _TraficosRepo.Get(idTrafico);
var stream = await _Service.GetFacturasExcel(facturas, trafico.FolioGemco);
return File(stream, "application/octet-stream", $"Facturas.xlsx");
}catch(Exception ex){
return BadRequest(ex.Message);
}
}
} }
} }

@ -42,6 +42,8 @@ using CORRESPONSALBackend.Services.Reportes.GC50;
using CORRESPONSALBackend.Services.Reportes.Embarques; using CORRESPONSALBackend.Services.Reportes.Embarques;
using CORRESPONSALBackend.Contracts.Reportes.Newell.Semanal; using CORRESPONSALBackend.Contracts.Reportes.Newell.Semanal;
using CORRESPONSALBackend.Services.Reportes.Newell.Semanal; using CORRESPONSALBackend.Services.Reportes.Newell.Semanal;
using CORRESPONSALBackend.Contracts.Corresponsalias.Services;
using CORRESPONSALBackend.Services.Corresponsalias.Facturas;
var builder = WebApplication.CreateBuilder(args); var builder = WebApplication.CreateBuilder(args);
@ -62,6 +64,7 @@ builder.Services.AddScoped<IReporteGC50Service, ReporteGC50Service>();
builder.Services.AddScoped<IReportesEmbarquesService, ReportesEmbarquesService>(); builder.Services.AddScoped<IReportesEmbarquesService, ReportesEmbarquesService>();
builder.Services.AddScoped<IReportesEmbarquesRepository, ReportesEmbarquesRepository>(); builder.Services.AddScoped<IReportesEmbarquesRepository, ReportesEmbarquesRepository>();
builder.Services.AddScoped<IReporteGC50Repository, ReporteGC50Repository>(); builder.Services.AddScoped<IReporteGC50Repository, ReporteGC50Repository>();
builder.Services.AddScoped<ICorresponsaliasFacturasService, CorresponsaliasFactuasService>();
// Corresponsalias // Corresponsalias
builder.Services.AddScoped<IContabilidadCorresponsaliasRepository, ContabilidadCorresponsaliasRepository>(); builder.Services.AddScoped<IContabilidadCorresponsaliasRepository, ContabilidadCorresponsaliasRepository>();

@ -0,0 +1,39 @@
using CORRESPONSALBackend.Contracts.Corresponsalias.Services;
using CORRESPONSALBackend.Models.Corresponsales;
using OfficeOpenXml;
using OfficeOpenXml.Table;
namespace CORRESPONSALBackend.Services.Corresponsalias.Facturas{
public class CorresponsaliasFactuasService : ICorresponsaliasFacturasService
{
public async Task<MemoryStream> GetFacturasExcel(IEnumerable<CorresponsalFacturas> facturas, string folioGemco)
{
try{
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
using (ExcelPackage excelPackage = new ExcelPackage()){
var worksheet = excelPackage.Workbook.Worksheets.Add("sheet1");
worksheet.Cells["A1"].Value = "Referencia";
worksheet.Cells["B1"].Value = "Factura";
int currentRow = 2;
foreach(var factura in facturas){
worksheet.Cells[$"A{currentRow}"].Value = folioGemco;
worksheet.Cells[$"B{currentRow}"].Value = factura.Factura;
currentRow++;
}
//Se crea la tabla en el rango de celdas donde se mostrara la inforamcion.
ExcelRange range = worksheet.Cells[1, 1,facturas.Count() + 1, 2];
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…
Cancel
Save