function updatePriceInfo($productCollectionID, &$basketInfo) { $shippingInfo = eZShippingManager::getShippingInfo($productCollectionID); $additionalShippingValues = eZShippingManager::vatPriceInfo($shippingInfo); $returnValue = false; foreach ($additionalShippingValues['shipping_vat_list'] as $vatValue => $additionalShippingValueArray) { $shippingExVAT = $additionalShippingValueArray['shipping_ex_vat']; $shippingIncVAT = $additionalShippingValueArray['shipping_inc_vat']; $shippingVat = $additionalShippingValueArray['shipping_vat']; if (!isset($basketInfo['price_info'][$vatValue]['total_price_ex_vat'])) { $basketInfo['price_info'][$vatValue]['total_price_ex_vat'] = $shippingExVAT; $basketInfo['price_info'][$vatValue]['total_price_inc_vat'] = $shippingIncVAT; $basketInfo['price_info'][$vatValue]['total_price_vat'] = $shippingVat; $basketInfo['total_price_info']['total_price_ex_vat'] = $shippingExVAT; $basketInfo['total_price_info']['total_price_inc_vat'] = $shippingIncVAT; $basketInfo['total_price_info']['total_price_vat'] = $shippingVat; } else { $basketInfo['price_info'][$vatValue]['total_price_ex_vat'] += $shippingExVAT; $basketInfo['price_info'][$vatValue]['total_price_inc_vat'] += $shippingIncVAT; $basketInfo['price_info'][$vatValue]['total_price_vat'] += $shippingVat; $basketInfo['total_price_info']['total_price_ex_vat'] += $shippingExVAT; $basketInfo['total_price_info']['total_price_inc_vat'] += $shippingIncVAT; $basketInfo['total_price_info']['total_price_vat'] += $shippingVat; } if (!isset($basketInfo['additional_info']['shipping_items'][$vatValue]['total_price_ex_vat'])) { $basketInfo['additional_info']['shipping_items'][$vatValue]['total_price_ex_vat'] = $shippingExVAT; $basketInfo['additional_info']['shipping_items'][$vatValue]['total_price_inc_vat'] = $shippingIncVAT; $basketInfo['additional_info']['shipping_items'][$vatValue]['total_price_vat'] = $shippingIncVAT - $shippingExVAT; } else { $basketInfo['additional_info']['shipping_items'][$vatValue]['total_price_ex_vat'] += $shippingExVAT; $basketInfo['additional_info']['shipping_items'][$vatValue]['total_price_inc_vat'] += $shippingIncVAT; $basketInfo['additional_info']['shipping_items'][$vatValue]['total_price_vat'] += $shippingIncVAT - $shippingExVAT; } if (!isset($basketInfo['additional_info']['shipping_total']['total_price_ex_vat'])) { $basketInfo['additional_info']['shipping_total']['total_price_ex_vat'] = $shippingExVAT; $basketInfo['additional_info']['shipping_total']['total_price_inc_vat'] = $shippingIncVAT; $basketInfo['additional_info']['shipping_total']['total_price_vat'] = $shippingIncVAT - $shippingExVAT; } else { $basketInfo['additional_info']['shipping_total']['total_price_ex_vat'] += $shippingExVAT; $basketInfo['additional_info']['shipping_total']['total_price_inc_vat'] += $shippingIncVAT; $basketInfo['additional_info']['shipping_total']['total_price_vat'] += $shippingIncVAT - $shippingExVAT; } } if (count($additionalShippingValues['shipping_vat_list']) > 0) { $returnValue = true; } return $returnValue; }
function handleShipping($orderID) { do { $order = eZOrder::fetch($orderID); if (!$order) { break; } $productCollectionID = $order->attribute('productcollection_id'); $shippingInfo = eZShippingManager::getShippingInfo($productCollectionID); if (!isset($shippingInfo)) { break; } // check if the order item has been added before. $orderItems = $order->orderItemsByType('ezcustomshipping'); // If orderitems allready exists, remove them first. if ($orderItems) { foreach ($orderItems as $orderItem) { $orderItem->remove(); } $purgeStatus = eZShippingManager::purgeShippingInfo($productCollectionID); } if (isset($shippingInfo['shipping_items']) and is_array($shippingInfo['shipping_items'])) { // Add a new order item for each shipping. foreach ($shippingInfo['shipping_items'] as $orderItemShippingInfo) { $orderItem = new eZOrderItem(array('order_id' => $orderID, 'description' => $orderItemShippingInfo['description'], 'price' => $orderItemShippingInfo['cost'], 'vat_value' => $orderItemShippingInfo['vat_value'], 'is_vat_inc' => $orderItemShippingInfo['is_vat_inc'], 'type' => 'ezcustomshipping')); $orderItem->store(); } } else { // Made for backwards compability, if the array order_items are not supplied. if (!isset($shippingInfo['vat_value'])) { $shippingInfo['vat_value'] = 0; } if (!isset($shippingInfo['is_vat_inc'])) { $shippingInfo['is_vat_inc'] = 1; } $orderItem = new eZOrderItem(array('order_id' => $orderID, 'description' => $shippingInfo['description'], 'price' => $shippingInfo['cost'], 'vat' => $shippingInfo['vat_value'], 'is_vat_inc' => $shippingInfo['is_vat_inc'], 'type' => 'ezcustomshipping')); $orderItem->store(); } } while (false); return array('status' => eZModuleOperationInfo::STATUS_CONTINUE); }
} $basket = eZBasket::currentBasket(); $tpl = eZTemplate::factory(); if (isset($Params['Error'])) { $tpl->setVariable('error', $Params['Error']); if ($Params['Error'] == 'options') { $tpl->setVariable('error_data', $http->sessionVariable('BasketError')); $http->removeSessionVariable('BasketError'); } } $tpl->setVariable("removed_items", $removedItems); $tpl->setVariable("basket", $basket); $tpl->setVariable("module_name", 'shop'); $tpl->setVariable("vat_is_known", $basket->isVATKnown()); // Add shipping cost to the total items price and store the sum to corresponding template vars. $shippingInfo = eZShippingManager::getShippingInfo($basket->attribute('productcollection_id')); if ($shippingInfo !== null) { // to make backwards compability with old version, allways set the cost inclusive vat. if (isset($shippingInfo['is_vat_inc']) and $shippingInfo['is_vat_inc'] == 0 or !isset($shippingInfo['is_vat_inc'])) { $additionalShippingValues = eZShippingManager::vatPriceInfo($shippingInfo); $shippingInfo['cost'] = $additionalShippingValues['total_shipping_inc_vat']; $shippingInfo['is_vat_inc'] = 1; } $totalIncShippingExVat = $basket->attribute('total_ex_vat') + $shippingInfo['cost']; $totalIncShippingIncVat = $basket->attribute('total_inc_vat') + $shippingInfo['cost']; $tpl->setVariable('shipping_info', $shippingInfo); $tpl->setVariable('total_inc_shipping_ex_vat', $totalIncShippingExVat); $tpl->setVariable('total_inc_shipping_inc_vat', $totalIncShippingIncVat); } $Result = array(); $Result['content'] = $tpl->fetch("design:shop/basket.tpl");