diff --git a/phronCare.UIBlazor/Pages/Sales/DeliveryNotes/DeliveryNoteCreate.razor b/phronCare.UIBlazor/Pages/Sales/DeliveryNotes/DeliveryNoteCreate.razor
index 7d4d006..60d5fd1 100644
--- a/phronCare.UIBlazor/Pages/Sales/DeliveryNotes/DeliveryNoteCreate.razor
+++ b/phronCare.UIBlazor/Pages/Sales/DeliveryNotes/DeliveryNoteCreate.razor
@@ -369,6 +369,7 @@
var response = await DeliveryNoteService.CreateAndIssueAsync(request);
toastService.ShowSuccess($"Remito {response.DeliveryNoteNumber} emitido correctamente.");
+ await DeliveryNoteService.ExportPdfAsync(response.Id, response.DeliveryNoteNumber);
Navigation.NavigateTo("/deliverynotes");
}
catch (Exception ex)
diff --git a/phronCare.UIBlazor/Pages/Sales/DeliveryNotes/DeliveryNotes.razor b/phronCare.UIBlazor/Pages/Sales/DeliveryNotes/DeliveryNotes.razor
index 31e333e..68f04e0 100644
--- a/phronCare.UIBlazor/Pages/Sales/DeliveryNotes/DeliveryNotes.razor
+++ b/phronCare.UIBlazor/Pages/Sales/DeliveryNotes/DeliveryNotes.razor
@@ -93,6 +93,7 @@
@deliveryNote.PrintCount |
+
|
}
@@ -256,6 +257,18 @@
return Task.CompletedTask;
}
+ private async Task PrintPdfAsync(DeliveryNoteSummaryDto deliveryNote)
+ {
+ try
+ {
+ await deliveryNoteService.ExportPdfAsync(deliveryNote.Id, deliveryNote.DeliveryNoteNumber);
+ }
+ catch (Exception ex)
+ {
+ toastService.ShowError(ex.Message);
+ }
+ }
+
private void ExportarExcel()
{
toastService.ShowInfo("La exportación a Excel se implementará en una próxima story.");
diff --git a/phronCare.UIBlazor/Services/Sales/DeliveryNotes/DeliveryNoteService.cs b/phronCare.UIBlazor/Services/Sales/DeliveryNotes/DeliveryNoteService.cs
index c3c779f..a18a2e4 100644
--- a/phronCare.UIBlazor/Services/Sales/DeliveryNotes/DeliveryNoteService.cs
+++ b/phronCare.UIBlazor/Services/Sales/DeliveryNotes/DeliveryNoteService.cs
@@ -1,16 +1,19 @@
using Domain.Dtos.Sales;
using Domain.Generics;
+using Microsoft.JSInterop;
using System.Net.Http.Json;
namespace phronCare.UIBlazor.Services.Sales.DeliveryNotes
{
public class DeliveryNoteService : IDeliveryNoteService
{
+ private readonly IJSRuntime _js;
private readonly HttpClient _http;
- public DeliveryNoteService(HttpClient http)
+ public DeliveryNoteService(HttpClient http, IJSRuntime js)
{
_http = http;
+ _js = js;
}
@@ -94,5 +97,29 @@ namespace phronCare.UIBlazor.Services.Sales.DeliveryNotes
var result = await response.Content.ReadFromJsonAsync();
return result ?? throw new Exception("Respuesta vacía del servidor.");
}
+
+ public async Task ExportPdfAsync(int deliveryNoteId, string deliveryNoteNumber)
+ {
+ try
+ {
+ var response = await _http.GetAsync($"/api/deliverynote/{deliveryNoteId}/pdf");
+
+ if (!response.IsSuccessStatusCode)
+ {
+ var error = await response.Content.ReadAsStringAsync();
+ throw new Exception($"Error al generar PDF: {error}");
+ }
+
+ var bytes = await response.Content.ReadAsByteArrayAsync();
+ var base64 = Convert.ToBase64String(bytes);
+ var fileName = $"{deliveryNoteNumber}.pdf";
+
+ await _js.InvokeVoidAsync("saveAsFile", fileName, base64);
+ }
+ catch (Exception ex)
+ {
+ throw new Exception($"ExportPdfAsync: {ex.Message}", ex);
+ }
+ }
}
}
diff --git a/phronCare.UIBlazor/Services/Sales/DeliveryNotes/IDeliveryNoteService.cs b/phronCare.UIBlazor/Services/Sales/DeliveryNotes/IDeliveryNoteService.cs
index f26b1ca..82737ec 100644
--- a/phronCare.UIBlazor/Services/Sales/DeliveryNotes/IDeliveryNoteService.cs
+++ b/phronCare.UIBlazor/Services/Sales/DeliveryNotes/IDeliveryNoteService.cs
@@ -10,5 +10,6 @@ namespace phronCare.UIBlazor.Services.Sales.DeliveryNotes
Task GetByDeliveryNoteNumberAsync(string deliveryNoteNumber);
Task> GetByQuoteIdAsync(int quoteId);
Task CreateAndIssueAsync(DeliveryNoteCreateRequest request);
+ Task ExportPdfAsync(int deliveryNoteId, string deliveryNoteNumber);
}
}