Objetivos del blog.
Después de leer este blog, podremos calcular el envío gratuito según el precio total final del carrito.
Planteamiento del problema
Actualmente, cuando agregamos productos en
- El monto total del carrito es de $ 100, que se ofrece con envío gratuito y también se agrega un descuento de 5%
- Luego, después del descuento, el monto total del carrito establecido por debajo de $ 100, pero aún así se aplica el envío gratuito, lo que no debería ocurrir. El envío gratuito debe aplicarse en el importe total final del carrito después del descuento.
- Esto es
Por qué el problema actual está ahí:
Corriente
$ shipping_cost + = $ carrier-> getDeliveryPriceByPrice ($ the_total_price, $ id_zone, (int) $ this-> id_currency);
Requisito
Necesitamos modificar el Root dir \ classes \ Cart.php
Procedimiento para resolver el problema.
Siga los pasos mencionados a continuación:
1. Función de reescrituragetPackageShippingCost
2. Después de la línea de abajo:
// El total del pedido en la moneda predeterminada sin cargos $ order_total = $ this-> getOrderTotal (true, Cart :: BOTH_WITHOUT_SHIPPING, $ product_list);
3. Agregue la siguiente declaración:
$ listeDiscounts = $ this-> getCartRules (); $ total_discounts = 0; if (is_array ($ listeDiscounts)) {if (isset ($ listeDiscounts [0] ['value_real'])) $ total_discounts = $ listeDiscounts [0] ['value_real']; } $ price_to_apply_shipment = floatval ($ order_total) - floatval ($ total_discounts);
4. Reemplace las líneas mencionadas abajo – Reemplace esta línea
$ check_delivery_price_by_price = Carrier :: checkDeliveryPriceByPrice ($ row ['id_carrier'], $ total_order, (int) $ id_zone, (int) $ this-> id_currency);
Con
$ check_delivery_price_by_price = Carrier :: checkDeliveryPriceByPrice ($ row ['id_carrier'], $ price_to_apply_shipment, (int) $ id_zone, (int) $ this-> id_currency);
———— Y —————– Reemplace esta línea
$ shipping_cost + = $ carrier-> getDeliveryPriceByPrice ($ the_total_price, $ id_zone, (int) $ this-> id_currency);
Con
$ shipping_cost + = $ carrier-> getDeliveryPriceByPrice ($ price_to_apply_shipment, $ id_zone, (int) $ this-> id_currency);
5. Borrar la caché y ejecutar. Consulte la siguiente captura de pantalla después de aplicar los cambios en el código:
Resumen
Después de seguir el procedimiento anterior, podrá calcular el envío en la cantidad total final del carrito.