feat(sales): descargar PDF automáticamente al emitir Delivery Note y boton de impresion en consulta.
All checks were successful
CI/CD Pipeline / Build and Deploy with Docker Compose (pull_request) Successful in 16m10s
All checks were successful
CI/CD Pipeline / Build and Deploy with Docker Compose (pull_request) Successful in 16m10s
closes #43
This commit is contained in:
parent
f403ffa90d
commit
e8f2e17820
@ -369,6 +369,7 @@
|
|||||||
|
|
||||||
var response = await DeliveryNoteService.CreateAndIssueAsync(request);
|
var response = await DeliveryNoteService.CreateAndIssueAsync(request);
|
||||||
toastService.ShowSuccess($"Remito {response.DeliveryNoteNumber} emitido correctamente.");
|
toastService.ShowSuccess($"Remito {response.DeliveryNoteNumber} emitido correctamente.");
|
||||||
|
await DeliveryNoteService.ExportPdfAsync(response.Id, response.DeliveryNoteNumber);
|
||||||
Navigation.NavigateTo("/deliverynotes");
|
Navigation.NavigateTo("/deliverynotes");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|||||||
@ -93,6 +93,7 @@
|
|||||||
<td>@deliveryNote.PrintCount</td>
|
<td>@deliveryNote.PrintCount</td>
|
||||||
<td class="text-center align-middle">
|
<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-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>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
@ -256,6 +257,18 @@
|
|||||||
return Task.CompletedTask;
|
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()
|
private void ExportarExcel()
|
||||||
{
|
{
|
||||||
toastService.ShowInfo("La exportación a Excel se implementará en una próxima story.");
|
toastService.ShowInfo("La exportación a Excel se implementará en una próxima story.");
|
||||||
|
|||||||
@ -1,16 +1,19 @@
|
|||||||
using Domain.Dtos.Sales;
|
using Domain.Dtos.Sales;
|
||||||
using Domain.Generics;
|
using Domain.Generics;
|
||||||
|
using Microsoft.JSInterop;
|
||||||
using System.Net.Http.Json;
|
using System.Net.Http.Json;
|
||||||
|
|
||||||
namespace phronCare.UIBlazor.Services.Sales.DeliveryNotes
|
namespace phronCare.UIBlazor.Services.Sales.DeliveryNotes
|
||||||
{
|
{
|
||||||
public class DeliveryNoteService : IDeliveryNoteService
|
public class DeliveryNoteService : IDeliveryNoteService
|
||||||
{
|
{
|
||||||
|
private readonly IJSRuntime _js;
|
||||||
private readonly HttpClient _http;
|
private readonly HttpClient _http;
|
||||||
|
|
||||||
public DeliveryNoteService(HttpClient http)
|
public DeliveryNoteService(HttpClient http, IJSRuntime js)
|
||||||
{
|
{
|
||||||
_http = http;
|
_http = http;
|
||||||
|
_js = js;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -94,5 +97,29 @@ namespace phronCare.UIBlazor.Services.Sales.DeliveryNotes
|
|||||||
var result = await response.Content.ReadFromJsonAsync<DeliveryNoteCreateResponse>();
|
var result = await response.Content.ReadFromJsonAsync<DeliveryNoteCreateResponse>();
|
||||||
return result ?? throw new Exception("Respuesta vacía del servidor.");
|
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<DeliveryNoteDto?> GetByDeliveryNoteNumberAsync(string deliveryNoteNumber);
|
||||||
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user