feat(sales): enable excel export button in DeliveryNotes UI #49

Merged
leandro merged 1 commits from feature/leandro/48-deliverynote-excel-export-ui into master 2026-03-27 23:57:34 +00:00
3 changed files with 36 additions and 2 deletions

View File

@ -269,8 +269,19 @@
} }
} }
private void ExportarExcel() private async Task ExportarExcel()
{ {
toastService.ShowInfo("La exportación a Excel se implementará en una próxima story."); Filters.Page = 1;
Filters.PageSize = int.MaxValue; // Exportar todos los resultados
try
{
await deliveryNoteService.ExportFilteredAsync(Filters);
toastService.ShowSuccess("Exportación completada.");
}
catch (Exception ex)
{
toastService.ShowError($"Error: {ex.Message}");
}
} }
} }

View File

@ -2,6 +2,8 @@ using Domain.Dtos.Sales;
using Domain.Generics; using Domain.Generics;
using Microsoft.JSInterop; using Microsoft.JSInterop;
using System.Net.Http.Json; using System.Net.Http.Json;
using System.Text;
using System.Text.Json;
namespace phronCare.UIBlazor.Services.Sales.DeliveryNotes namespace phronCare.UIBlazor.Services.Sales.DeliveryNotes
{ {
@ -121,5 +123,25 @@ namespace phronCare.UIBlazor.Services.Sales.DeliveryNotes
throw new Exception($"ExportPdfAsync: {ex.Message}", ex); throw new Exception($"ExportPdfAsync: {ex.Message}", ex);
} }
} }
public async Task ExportFilteredAsync(DeliveryNoteSearchParams searchParams)
{
var content = new StringContent(JsonSerializer.Serialize(searchParams), Encoding.UTF8, "application/json");
var response = await _http.PostAsync("/api/deliverynote/exportfiltered", content);
if (!response.IsSuccessStatusCode)
{
var serverMessage = await response.Content.ReadAsStringAsync();
throw new Exception(string.IsNullOrWhiteSpace(serverMessage)
? "No se pudo exportar el Excel de remitos."
: serverMessage);
}
var bytes = await response.Content.ReadAsByteArrayAsync();
var base64 = Convert.ToBase64String(bytes);
var fileName = $"{DateTime.Now:yyyyMMddHHmm}_deliverynotes.xlsx";
await _js.InvokeVoidAsync("saveAsFile", fileName, base64);
}
} }
} }

View File

@ -11,5 +11,6 @@ namespace phronCare.UIBlazor.Services.Sales.DeliveryNotes
Task<IEnumerable<DeliveryNoteDto>> GetByQuoteIdAsync(int quoteId); Task<IEnumerable<DeliveryNoteDto>> GetByQuoteIdAsync(int quoteId);
Task<DeliveryNoteCreateResponse> CreateAndIssueAsync(DeliveryNoteCreateRequest request); Task<DeliveryNoteCreateResponse> CreateAndIssueAsync(DeliveryNoteCreateRequest request);
Task ExportPdfAsync(int deliveryNoteId, string deliveryNoteNumber); Task ExportPdfAsync(int deliveryNoteId, string deliveryNoteNumber);
Task ExportFilteredAsync(DeliveryNoteSearchParams searchParams);
} }
} }