Java - promoción a varios productos de diferente precio

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

promoción a varios productos de diferente precio

Publicado por Duda en promociones (3 intervenciones) el 07/05/2020 20:16:06
Buenas tardes.
Tengo el siguiente código, el cual aplica una promoción a varios productos de diferente precio, pero no aplica la promoción a productos con el mismo precio.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private List<VentaProducto> promo3X2(List<VentaProducto> lstItemVenta, Promocion promoActiva) {
    List<DetallePromocion> productosConPromo = promoActiva.getDetallePromocion();
    Float subTotalPromo = 0F;
    int cantidad = 0;
    Float nuevoSubtotal = 0F;
    for (int i = 0; i < lstItemVenta.size(); i++) {
        for (int j = 0; j < productosConPromo.size(); j++) {
            if (lstItemVenta.get(i).getProduct().getIdProduct() == productosConPromo.get(j).getProduct()
                    .getIdProduct()) {
                cantidad = lstItemVenta.get(i).getCantidad();
                int cantGratis = cantidad / 3;
                int cantidadACobrar = cantidad - cantGratis;
                nuevoSubtotal = lstItemVenta.get(i).getPrecioBase() * cantidadACobrar;
                lstItemVenta.get(i).setSubtotal(nuevoSubtotal);
                subTotalPromo += nuevoSubtotal;
            }
        }
    }
    return lstItemVenta;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

promoción a varios productos de diferente precio

Publicado por Billy Joel (876 intervenciones) el 07/05/2020 21:11:49
¿Si el producto tiene el mismo precio de venta entonces cual es la promoción?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

promoción a varios productos de diferente precio

Publicado por Carlos (3 intervenciones) el 07/05/2020 21:15:21
Sigue siendo la misma promoción, la promoción aplica a todos los productos, aunque tengan el mismo precio, pero mi código no lo aplica a los productos con el mismo precio. Ayudaaaaaaaaaaaa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

promoción a varios productos de diferente precio

Publicado por Kabuto (1381 intervenciones) el 08/05/2020 18:29:31
Pues no veo el motivo.
En tu código te basas en el id de producto para aplicar la promoción, así que el atributo precio no debería influir para nada.
Tal y como está escrito, parece correcto, el algoritmo busca id, no comprueba si los precios son iguales o distintos.

No se decirte que puede estar fallando. Por más que lo miro no veo donde puede estar el problema.

Al margen de esto, tengo otra pregunta. ¿Para que quieres la variable subTotalPromo ?

Vas acumulando ahí los nuevos subTotales tras aplicar la promoción. Pero luego ese dato no es retornado, ni guardado en algún objeto, ni nada. Es una dato que "muere" cuando termina el método sin que se le de ningún uso.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private List<VentaProducto> promo3X2(List<VentaProducto> lstItemVenta, Promocion promoActiva) {
    List<DetallePromocion> productosConPromo = promoActiva.getDetallePromocion();
    Float subTotalPromo = 0F;
    int cantidad = 0;
    Float nuevoSubtotal = 0F;
    for (int i = 0; i < lstItemVenta.size(); i++) {
        for (int j = 0; j < productosConPromo.size(); j++) {
            if (lstItemVenta.get(i).getProduct().getIdProduct() == productosConPromo.get(j).getProduct()
                    .getIdProduct()) {
                cantidad = lstItemVenta.get(i).getCantidad();
                int cantGratis = cantidad / 3;
                int cantidadACobrar = cantidad - cantGratis;
                nuevoSubtotal = lstItemVenta.get(i).getPrecioBase() * cantidadACobrar;
                lstItemVenta.get(i).setSubtotal(nuevoSubtotal);
                subTotalPromo += nuevoSubtotal;
            }
        }
    }
    return lstItemVenta;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

promoción a varios productos de diferente precio

Publicado por Carlos (3 intervenciones) el 08/05/2020 19:29:51
Gracias por responder Kabuto, lo estoy tratando de resolver, cuando tenga la respuesta la comparto.
La variable subTotalPromo la utilizo para una condición que se encuentra afuera del for, pero no vi necesario publicar esa parte del código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar