// If an order contain only virtual products, don't set a carrier to the order

This commit is contained in:
mDeflotte
2012-05-03 08:58:35 +00:00
parent 32745f4ba3
commit 9a8756ca96
3 changed files with 31 additions and 18 deletions
+21 -10
View File
@@ -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 !
+7 -5
View File
@@ -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();
+3 -3
View File
@@ -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}