feature/leandro/43-deliverynote-pdf #44
@ -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)
|
||||
|
||||
@ -93,6 +93,7 @@
|
||||
<td>@deliveryNote.PrintCount</td>
|
||||
<td class="text-center align-middle">
|
||||
<button class="btn btn-link btn-lg p-0 text-primary ms-2" title="Ver detalle" @onclick="() => OpenDetailAsync(deliveryNote)"><i class="fas fa-eye"></i></button>
|
||||
<button class="btn btn-link btn-lg p-0 text-danger ms-2" title="Imprimir PDF" @onclick="() => PrintPdfAsync(deliveryNote)"><i class="fas fa-print"></i></button>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@ -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.");
|
||||
|
||||
@ -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<DeliveryNoteCreateResponse>();
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,5 +10,6 @@ namespace phronCare.UIBlazor.Services.Sales.DeliveryNotes
|
||||
Task<DeliveryNoteDto?> GetByDeliveryNoteNumberAsync(string deliveryNoteNumber);
|
||||
Task<IEnumerable<DeliveryNoteDto>> GetByQuoteIdAsync(int quoteId);
|
||||
Task<DeliveryNoteCreateResponse> CreateAndIssueAsync(DeliveryNoteCreateRequest request);
|
||||
Task ExportPdfAsync(int deliveryNoteId, string deliveryNoteNumber);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user