mirror of
https://git.imnavajas.es/jjimenez/erp-imprimelibros.git
synced 2026-01-13 00:48:49 +00:00
en el test está la funcion para el servicio
This commit is contained in:
@ -0,0 +1,136 @@
|
||||
package com.imprimelibros.erp;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import java.util.Map;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.List;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import com.imprimelibros.erp.presupuesto.PresupuestoService;
|
||||
import com.imprimelibros.erp.presupuesto.classes.PresupuestoMarcapaginas;
|
||||
import com.imprimelibros.erp.presupuesto.marcapaginas.Marcapaginas;
|
||||
|
||||
import com.imprimelibros.erp.presupuesto.marcapaginas.MarcapaginasRepository;
|
||||
|
||||
@SpringBootTest
|
||||
class presupuestoMarcapaginasTest {
|
||||
|
||||
@Autowired
|
||||
protected PresupuestoService presupuestoService;
|
||||
|
||||
@Autowired
|
||||
protected MarcapaginasRepository marcapaginasRepository;
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(presupuestoMarcapaginasTest.class);
|
||||
|
||||
@Test
|
||||
void testCalculoMaquetacion() {
|
||||
Map<String, Object> resultado = this.test();
|
||||
|
||||
System.out.println("Resultado:");
|
||||
System.out.println(resultado);
|
||||
log.info("📦 Resultado: {}", resultado);
|
||||
|
||||
assertNotNull(resultado, "El resultado no debe ser null");
|
||||
assertFalse(resultado.containsKey("error"), "El resultado no debe contener error");
|
||||
// assertFalse((Double)resultado.get("precio") == 0.0, "El precio debe ser mayor
|
||||
// que 0");
|
||||
}
|
||||
|
||||
public Map<String, Object> test() {
|
||||
|
||||
PresupuestoMarcapaginas presupuestoMarcapaginas = new PresupuestoMarcapaginas();
|
||||
presupuestoMarcapaginas.setUnidades(10000);
|
||||
presupuestoMarcapaginas.setTamanio(Marcapaginas.Tamanios._50x140_);
|
||||
presupuestoMarcapaginas.setAcabado(Marcapaginas.Acabado.ninguno);
|
||||
presupuestoMarcapaginas.setCarasImpresion(Marcapaginas.Caras_Impresion.una_cara);
|
||||
presupuestoMarcapaginas.setPapel(Marcapaginas.Papeles.cartulina_grafica);
|
||||
presupuestoMarcapaginas.setGramaje(300);
|
||||
|
||||
Locale locale = Locale.getDefault();
|
||||
|
||||
List<Marcapaginas> m = marcapaginasRepository.findPrecios(presupuestoMarcapaginas);
|
||||
if (m.isEmpty() || m.get(0) == null) {
|
||||
System.out.println(
|
||||
"⚠️ No se han encontrado precios para el presupuesto de marcapáginas: " + presupuestoMarcapaginas);
|
||||
return Map.of("error", "No se han encontrado precios para el presupuesto de marcapáginas");
|
||||
}
|
||||
|
||||
Marcapaginas marcapaginas = m.get(0);
|
||||
|
||||
if (marcapaginas.getUnidades_max() >= presupuestoMarcapaginas.getUnidades()) {
|
||||
|
||||
BigDecimal data = BigDecimal.ZERO;
|
||||
Double precio = marcapaginas.getPrecio_unidades_min() +
|
||||
(presupuestoMarcapaginas.getUnidades() - marcapaginas.getUnidades_min())
|
||||
* (marcapaginas.getPrecio_unidades_max() - marcapaginas.getPrecio_unidades_min())
|
||||
/ (marcapaginas.getUnidades_max() - marcapaginas.getUnidades_min());
|
||||
|
||||
data = new BigDecimal(precio);
|
||||
precio = data.setScale(2, RoundingMode.HALF_UP).doubleValue();
|
||||
|
||||
Double margen = 1.0 * marcapaginas.getMargen_unidades_min() +
|
||||
(1.0 * presupuestoMarcapaginas.getUnidades() - 1.0 * marcapaginas.getUnidades_min())
|
||||
* (1.0 * marcapaginas.getMargen_unidades_max()
|
||||
- 1.0 * marcapaginas.getMargen_unidades_min())
|
||||
/ (1.0 * marcapaginas.getUnidades_max() - 1.0 * marcapaginas.getUnidades_min());
|
||||
|
||||
data = new BigDecimal(margen);
|
||||
margen = data.setScale(2, RoundingMode.HALF_UP).doubleValue();
|
||||
|
||||
Double pvp = precio + (precio * margen / 100);
|
||||
|
||||
data = new BigDecimal(pvp);
|
||||
pvp = data.setScale(2, RoundingMode.HALF_UP).doubleValue();
|
||||
|
||||
System.out.println("📦 Precio interpolado para " + presupuestoMarcapaginas.getUnidades() + " unidades: "
|
||||
+ precio + " + " + margen + "% = " + pvp + " (" + marcapaginas.getPrecio_unidades_min() + " - "
|
||||
+ marcapaginas.getPrecio_unidades_max() + ")");
|
||||
Map<String, Object> resultado;
|
||||
resultado = Map.of(
|
||||
"precio", precio,
|
||||
"margen", margen,
|
||||
"pvp", pvp);
|
||||
return resultado;
|
||||
}
|
||||
else {
|
||||
|
||||
BigDecimal data = BigDecimal.ZERO;
|
||||
|
||||
// precio unidad para el máximo de unidades
|
||||
Double precio = marcapaginas.getPrecio_unidades_max() / marcapaginas.getUnidades_max();
|
||||
precio = precio * presupuestoMarcapaginas.getUnidades();
|
||||
data = new BigDecimal(precio);
|
||||
precio = data.setScale(2, RoundingMode.HALF_UP).doubleValue();
|
||||
|
||||
Double margen = 1.0 * marcapaginas.getMargen_unidades_max();
|
||||
data = new BigDecimal(margen);
|
||||
margen = data.setScale(2, RoundingMode.HALF_UP).doubleValue();
|
||||
|
||||
Double pvp = precio + (precio * margen / 100);
|
||||
data = new BigDecimal(pvp);
|
||||
pvp = data.setScale(2, RoundingMode.HALF_UP).doubleValue();
|
||||
|
||||
System.out.println("📦 Precio interpolado para " + presupuestoMarcapaginas.getUnidades() + " unidades: "
|
||||
+ precio + " + " + margen + "% = " + pvp + " (" + marcapaginas.getPrecio_unidades_min() + " - "
|
||||
+ marcapaginas.getPrecio_unidades_max() + ")");
|
||||
Map<String, Object> resultado;
|
||||
resultado = Map.of(
|
||||
"precio", precio,
|
||||
"margen", margen,
|
||||
"pvp", pvp);
|
||||
return resultado;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user