// 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'];
|
$product_list = $package['product_list'];
|
||||||
$order = new Order();
|
$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_customer = (int)$cart->id_customer;
|
||||||
$order->id_address_invoice = (int)$cart->id_address_invoice;
|
$order->id_address_invoice = (int)$cart->id_address_invoice;
|
||||||
$order->id_address_delivery = (int)$id_address;
|
$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_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);
|
$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->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));
|
$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;
|
$order_detail_list[] = $order_detail;
|
||||||
|
|
||||||
// Adding an entry in order_carrier table
|
// Adding an entry in order_carrier table
|
||||||
$order_carrier = new OrderCarrier();
|
if (!is_null($carrier))
|
||||||
$order_carrier->id_order = (int)$order->id;
|
{
|
||||||
$order_carrier->id_carrier = (int)$carrier->id;
|
$order_carrier = new OrderCarrier();
|
||||||
$order_carrier->weight = (float)$order->getTotalWeight();
|
$order_carrier->id_order = (int)$order->id;
|
||||||
$order_carrier->shipping_cost_tax_excl = (float)$order->total_shipping_tax_excl;
|
$order_carrier->id_carrier = (int)$carrier->id;
|
||||||
$order_carrier->shipping_cost_tax_incl = (float)$order->total_shipping_tax_incl;
|
$order_carrier->weight = (float)$order->getTotalWeight();
|
||||||
$order_carrier->add();
|
$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 !
|
// Next !
|
||||||
|
|||||||
@@ -150,11 +150,13 @@ class OrderControllerCore extends ParentOrderController
|
|||||||
Tools::redirect('index.php?controller=order&step=2');
|
Tools::redirect('index.php?controller=order&step=2');
|
||||||
|
|
||||||
// Check the delivery option is setted
|
// Check the delivery option is setted
|
||||||
if (!Tools::getValue('delivery_option'))
|
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)
|
Tools::redirect('index.php?controller=order&step=2');
|
||||||
if (empty($delivery_option))
|
foreach (Tools::getValue('delivery_option') as $delivery_option)
|
||||||
Tools::redirect('index.php?controller=order&step=2');
|
if (empty($delivery_option))
|
||||||
|
Tools::redirect('index.php?controller=order&step=2');
|
||||||
|
}
|
||||||
|
|
||||||
$this->autoStep();
|
$this->autoStep();
|
||||||
|
|
||||||
|
|||||||
@@ -167,7 +167,7 @@
|
|||||||
{include file="$tpl_dir./order-steps.tpl"}
|
{include file="$tpl_dir./order-steps.tpl"}
|
||||||
{include file="$tpl_dir./errors.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="button_multishipping_mode" id="multishipping_mode_box">
|
||||||
<div class="title">{l s='Multi-shipping'}</div>
|
<div class="title">{l s='Multi-shipping'}</div>
|
||||||
<div class="description">
|
<div class="description">
|
||||||
@@ -179,7 +179,7 @@
|
|||||||
{/if}
|
{/if}
|
||||||
<form action="{$link->getPageLink($back_order_page, true)}" method="post">
|
<form action="{$link->getPageLink($back_order_page, true)}" method="post">
|
||||||
{else}
|
{else}
|
||||||
{if {Configuration::get('PS_ALLOW_MULTISHIPPING')}}
|
{if {Configuration::get('PS_ALLOW_MULTISHIPPING')} && !$cart->isVirtualCart()}
|
||||||
<div class="address-form-multishipping">
|
<div class="address-form-multishipping">
|
||||||
<div class="button_multishipping_mode" id="multishipping_mode_box">
|
<div class="button_multishipping_mode" id="multishipping_mode_box">
|
||||||
<div class="title">{l s='Multi-shipping'}</div>
|
<div class="title">{l s='Multi-shipping'}</div>
|
||||||
@@ -207,7 +207,7 @@
|
|||||||
{/if}
|
{/if}
|
||||||
<div class="addresses clearfix">
|
<div class="addresses clearfix">
|
||||||
<p class="address_delivery select">
|
<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}">
|
<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}
|
{foreach from=$addresses key=k item=address}
|
||||||
|
|||||||
Reference in New Issue
Block a user