trabajando en el pdf

This commit is contained in:
2025-10-12 23:28:55 +02:00
parent 9ebe2a3419
commit 9d88392a2b

View 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());
}
}