mirror of
https://git.imnavajas.es/jjimenez/erp-imprimelibros.git
synced 2026-01-12 16:38:48 +00:00
trabajando en el pdf
This commit is contained in:
96
src/test/java/com/imprimelibros/erp/pdf/PdfSmokeTest.java
Normal file
96
src/test/java/com/imprimelibros/erp/pdf/PdfSmokeTest.java
Normal file
@ -0,0 +1,96 @@
|
||||
// src/test/java/com/imprimelibros/erp/pdf/PdfSmokeTest.java
|
||||
package com.imprimelibros.erp.pdf;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.time.LocalDate;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
@SpringBootTest
|
||||
class PdfSmokeTest {
|
||||
|
||||
@Autowired
|
||||
PdfService pdfService;
|
||||
|
||||
@Test
|
||||
void generaPresupuesto() throws Exception {
|
||||
Map<String, Object> model = new HashMap<>();
|
||||
model.put("numero", "2025-00123");
|
||||
model.put("fecha", LocalDate.of(2025, 10, 12));
|
||||
model.put("validezDias", 30);
|
||||
|
||||
model.put("empresa", Map.of(
|
||||
"nombre", "ImprimeLibros ERP",
|
||||
"direccion", "C/ Dirección 123, 28000 Madrid",
|
||||
"telefono", "+34 600 000 000",
|
||||
"email", "info@imprimelibros.com",
|
||||
"cif", "B-12345678",
|
||||
"web", "www.imprimelibros.com"));
|
||||
|
||||
model.put("cliente", Map.of(
|
||||
"nombre", "Editorial Ejemplo S.L.",
|
||||
"cif", "B-00000000",
|
||||
"direccion", "Av. de los Libros, 45",
|
||||
"cp", "28001",
|
||||
"poblacion", "Madrid",
|
||||
"provincia", "Madrid",
|
||||
"email", "compras@editorial.com"));
|
||||
|
||||
model.put("titulo", "Libro de Ejemplo");
|
||||
model.put("autor", "Autora Demo");
|
||||
model.put("isbn", "978-1-2345-6789-0");
|
||||
model.put("ancho", 150);
|
||||
model.put("alto", 210);
|
||||
model.put("formatoPersonalizado", true);
|
||||
model.put("paginasNegro", "300");
|
||||
model.put("paginasColor", null);
|
||||
model.put("tiradas", List.of(300, 500, 1000));
|
||||
|
||||
model.put("lineas", List.of(
|
||||
Map.of("descripcion", "Impresión interior B/N offset 80 g",
|
||||
"meta", "300 páginas · tinta negra · papel 80 g",
|
||||
"uds", 1000,
|
||||
"precio", 2.15,
|
||||
"dto", 0,
|
||||
"importe", 2150.0),
|
||||
Map.of("descripcion", "Cubierta color 300 g laminado mate",
|
||||
"meta", "Lomo 15 mm · 4/0 · laminado mate",
|
||||
"uds", 1000,
|
||||
"precio", 0.38,
|
||||
"dto", 5.0,
|
||||
"importe", 361.0)));
|
||||
|
||||
model.put("servicios", List.of(
|
||||
Map.of("descripcion", "Transporte península", "unidades", 1, "precio", 90.00)));
|
||||
|
||||
model.put("baseImponible", 2601.0);
|
||||
model.put("ivaTipo", 21);
|
||||
model.put("ivaImporte", 546.21);
|
||||
model.put("totalConIva", 3147.21);
|
||||
model.put("peso", 120.0);
|
||||
|
||||
model.put("observaciones", "Presupuesto válido 30 días.<br/>Incluye embalaje estándar.");
|
||||
model.put("condiciones", "Entrega 7-10 días laborables tras confirmación de artes finales.");
|
||||
|
||||
var spec = new DocumentSpec(
|
||||
DocumentType.PRESUPUESTO,
|
||||
"presupuesto-a4",
|
||||
Locale.forLanguageTag("es-ES"),
|
||||
model);
|
||||
|
||||
byte[] pdf = pdfService.generate(spec);
|
||||
|
||||
Path out = Path.of("target/presupuesto-test.pdf");
|
||||
Files.createDirectories(out.getParent());
|
||||
Files.write(out, pdf);
|
||||
|
||||
System.out.println("✅ PDF generado en: " + out.toAbsolutePath());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user