// If an order contain only virtual products, don't set a carrier to the order
This commit is contained in:
+21
-10
@@ -147,8 +147,16 @@ abstract class PaymentModuleCore extends Module
|
||||
{
|
||||
$product_list = $package['product_list'];
|
||||
$order = new Order();
|
||||
$carrier = new Carrier($package['id_carrier'], $cart->id_lang);
|
||||
$order->id_carrier = (int)$carrier->id;
|
||||
|
||||
$carrier = null;
|
||||
if (!$cart->isVirtualCart() && isset($package['id_carrier']))
|
||||
{
|
||||
$carrier = new Carrier($package['id_carrier'], $cart->id_lang);
|
||||
$order->id_carrier = (int)$carrier->id;
|
||||
}
|
||||
else
|
||||
$order->id_carrier = 0;
|
||||
|
||||
$order->id_customer = (int)$cart->id_customer;
|
||||
$order->id_address_invoice = (int)$cart->id_address_invoice;
|
||||
$order->id_address_delivery = (int)$id_address;
|
||||
@@ -182,7 +190,7 @@ abstract class PaymentModuleCore extends Module
|
||||
$order->total_shipping_tax_excl = (float)$cart->getPackageShippingCost((int)$id_carrier, false, null, $product_list, $id_carrier);
|
||||
$order->total_shipping_tax_incl = (float)$cart->getPackageShippingCost((int)$id_carrier, true, null, $product_list, $id_carrier);
|
||||
|
||||
if (Validate::isLoadedObject($carrier))
|
||||
if (!is_null($carrier) && Validate::isLoadedObject($carrier))
|
||||
$order->carrier_tax_rate = $carrier->getTaxesRate(new Address($cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}));
|
||||
|
||||
$order->total_wrapping = (float)abs($cart->getOrderTotal(true, Cart::ONLY_WRAPPING, $product_list, $id_carrier));
|
||||
@@ -221,13 +229,16 @@ abstract class PaymentModuleCore extends Module
|
||||
$order_detail_list[] = $order_detail;
|
||||
|
||||
// Adding an entry in order_carrier table
|
||||
$order_carrier = new OrderCarrier();
|
||||
$order_carrier->id_order = (int)$order->id;
|
||||
$order_carrier->id_carrier = (int)$carrier->id;
|
||||
$order_carrier->weight = (float)$order->getTotalWeight();
|
||||
$order_carrier->shipping_cost_tax_excl = (float)$order->total_shipping_tax_excl;
|
||||
$order_carrier->shipping_cost_tax_incl = (float)$order->total_shipping_tax_incl;
|
||||
$order_carrier->add();
|
||||
if (!is_null($carrier))
|
||||
{
|
||||
$order_carrier = new OrderCarrier();
|
||||
$order_carrier->id_order = (int)$order->id;
|
||||
$order_carrier->id_carrier = (int)$carrier->id;
|
||||
$order_carrier->weight = (float)$order->getTotalWeight();
|
||||
$order_carrier->shipping_cost_tax_excl = (float)$order->total_shipping_tax_excl;
|
||||
$order_carrier->shipping_cost_tax_incl = (float)$order->total_shipping_tax_incl;
|
||||
$order_carrier->add();
|
||||
}
|
||||
}
|
||||
|
||||
// Next !
|
||||
|
||||
@@ -150,11 +150,13 @@ class OrderControllerCore extends ParentOrderController
|
||||
Tools::redirect('index.php?controller=order&step=2');
|
||||
|
||||
// Check the delivery option is setted
|
||||
if (!Tools::getValue('delivery_option'))
|
||||
Tools::redirect('index.php?controller=order&step=2');
|
||||
foreach (Tools::getValue('delivery_option') as $delivery_option)
|
||||
if (empty($delivery_option))
|
||||
Tools::redirect('index.php?controller=order&step=2');
|
||||
if (!Tools::getValue('delivery_option') && !$this->context->cart->isVirtualCart())
|
||||
{
|
||||
Tools::redirect('index.php?controller=order&step=2');
|
||||
foreach (Tools::getValue('delivery_option') as $delivery_option)
|
||||
if (empty($delivery_option))
|
||||
Tools::redirect('index.php?controller=order&step=2');
|
||||
}
|
||||
|
||||
$this->autoStep();
|
||||
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
{include file="$tpl_dir./order-steps.tpl"}
|
||||
{include file="$tpl_dir./errors.tpl"}
|
||||
|
||||
{if !$multi_shipping && {Configuration::get('PS_ALLOW_MULTISHIPPING')}}
|
||||
{if !$multi_shipping && {Configuration::get('PS_ALLOW_MULTISHIPPING')} && !$cart->isVirtualCart()}
|
||||
<div class="button_multishipping_mode" id="multishipping_mode_box">
|
||||
<div class="title">{l s='Multi-shipping'}</div>
|
||||
<div class="description">
|
||||
@@ -179,7 +179,7 @@
|
||||
{/if}
|
||||
<form action="{$link->getPageLink($back_order_page, true)}" method="post">
|
||||
{else}
|
||||
{if {Configuration::get('PS_ALLOW_MULTISHIPPING')}}
|
||||
{if {Configuration::get('PS_ALLOW_MULTISHIPPING')} && !$cart->isVirtualCart()}
|
||||
<div class="address-form-multishipping">
|
||||
<div class="button_multishipping_mode" id="multishipping_mode_box">
|
||||
<div class="title">{l s='Multi-shipping'}</div>
|
||||
@@ -207,7 +207,7 @@
|
||||
{/if}
|
||||
<div class="addresses clearfix">
|
||||
<p class="address_delivery select">
|
||||
<label for="id_address_delivery">{l s='Choose a delivery address:'}</label>
|
||||
<label for="id_address_delivery">{if $cart->isVirtualCart()}{l s='Choose a billing address:'}{else}{l s='Choose a delivery address:'}{/if}</label>
|
||||
<select name="id_address_delivery" id="id_address_delivery" class="address_select" onchange="updateAddressesDisplay();{if $opc}updateAddressSelection();{/if}">
|
||||
|
||||
{foreach from=$addresses key=k item=address}
|
||||
|
||||
Reference in New Issue
Block a user