/** * Controller action to manage the details of the cart. * Update/delete items or load the list. * * @return void */ public function cartdetailsAction() { $account = Cible_FunctionsGeneral::getAuthentication(); if (!$account) { $this->_redirect(Cible_FunctionsPages::getPageNameByID(1, Zend_Registry::get('languageID'))); } $productData = array(); $cart = new Cart(); if ($this->_isXmlHttpRequest) { $this->disableLayout(); $this->disableView(); $action = $this->_getParam('do'); $productId = $this->_getParam('pId'); $itemId = $this->_getParam('itemId'); $quantity = $this->_getParam('quantity'); $size = $this->_getParam('size'); $category = $this->_getParam('category'); $disable = $this->_getParam('disable'); $cartId = $this->_getParam('cartItemsId'); if ($action == 'update' && !empty($productId)) { if (!empty($size)) { $cart->updateItem($productId, -1, array('CI_TailleID' => $size, 'CI_ItemID' => $itemId, 'CI_CartItemsID' => $cartId)); } elseif (!empty($category)) { $cart->updateItem($productId, -1, array('CI_CatTailleID' => $category, 'CI_ItemID' => $itemId, 'CI_CartItemsID' => $cartId)); } else { $oItem = new ItemsObject(); $oItem->setId($itemId); $amount = $oItem->getPrice($quantity); $cart->updateItem($productId, $quantity, array('CI_ItemID' => $itemId, 'CI_Total' => $amount, 'CI_CartItemsID' => $cartId)); } echo 'updated'; } elseif ($action == 'delete' && !empty($productId)) { if ($itemId && $cartId) { $cart->updateItem($productId, 0, array('CI_ItemID' => $itemId, 'CI_CartItemsID' => $cartId)); echo 'deletedRow'; } else { $cart->updateItem($productId); echo 'deleted'; } } elseif ($action == 'disable' && !empty($productId)) { $cart->updateItem($productId, -1, array('CI_IsToSend' => $disable, 'CI_ItemID' => $itemId)); } elseif ($action == 'addSize' && !empty($productId)) { $lastId = $cart->addSize(array('CI_ID' => $productId, 'CI_Quantity' => 1, 'CI_CatTailleID' => $category, 'CI_ItemID' => $itemId)); } elseif ($action == 'getSizes' && !empty($category)) { $oSize = new TailleObject(); $langId = $this->_getParam('langId'); $size = $oSize->getDataByCategoryTailleId($category, $langId); echo json_encode($size); exit; } } else { $url = $this->view->absolute_web_root . $this->getRequest()->getPathInfo(); $exclude = preg_match('/resume-order/', $url); if (!$exclude) { Cible_View_Helper_LastVisited::saveThis($url); } $urlBack = ''; $urlNextStep = ''; $urls = Cible_View_Helper_LastVisited::getLastVisited(); if (count($urls) > 1) { $urlBack = $urls[1]; } $account = Cible_FunctionsGeneral::getAuthentication(); $profile = new MemberProfile(); $memberData = $profile->findMember(array('email' => $account['email'])); $memberData = $profile->addTaxRate($memberData); // if ($memberData['validatedEmail'] == '') // $this->view->assign('valide', true); // else // $this->view->assign('valide', false); $cartData = $cart->getAllIds(); $allIds = $cartData['cartId']; if (count($allIds)) { $urlNextStep = $this->view->baseUrl() . '/' . Cible_FunctionsPages::getPageNameByID($this->_orderPageId, Zend_Registry::get('languageID')) . '/auth-order/'; } $this->view->assign('itemCount', count($allIds)); $this->view->assign('cartTotal', $cart->getTotalItem()); $oProduct = new ProductsCollection(); // $orderPageId = Cible_FunctionsCategories::getPagePerCategoryView(0, 'order', 17); $resume = false; if ($this->_registry->pageID == $this->_orderPageId) { $resume = true; } foreach ($allIds as $key => $id) { $itemId = $cartData['itemId'][$key]; $prodId = $cartData['prodId'][$key]; $productData[$id] = $oProduct->getDetails($prodId, $itemId, $resume); $cartDetails = $cart->getItem($id, $itemId); if ($resume) { $renderItem = $cart->renderResume($cartDetails, $itemId); } else { $renderItem = $cart->renderCartLine($cartDetails, $itemId); } $productData[$id]['items']['render'] = $renderItem; $productData[$id]['cart']['disable'] = $cartDetails['Disable']; $productData[$id]['cart']['promoId'] = $cartDetails['PromoId']; } $hasBonus = $oProduct->getBonus(); $orderParams = Cible_FunctionsGeneral::getParameters(); $parameters = array('nbPoint' => 0, 'taxeProv' => $memberData['taxProv'], 'taxeCode' => $memberData['taxCode'], 'tpsFee' => $orderParams['CP_ShippingFees'], 'limitTpsFee' => $orderParams['CP_ShippingFeesLimit'], 'CODFees' => $orderParams['CP_MontantFraisCOD'], 'noProvTax' => $memberData['noProvTax'], 'noFedTax' => $memberData['noFedTax']); if ($memberData['taxCode'] == 'QC') { $parameters['taxeFed'] = $orderParams['CP_TauxTaxeFed']; } if ($hasBonus) { $parameters['nbPoint'] = $orderParams['CP_BonusPointDollar']; } $this->view->assign('productData', $productData); $this->view->assign('urlBack', $urlBack); $this->view->assign('nextStep', $urlNextStep); $this->view->assign('step', 1); $this->view->assign('hasBonus', $oProduct->getBonus()); $this->view->assign('parameters', $parameters); if ($this->_registry->pageID == $this->_orderPageId) { $this->renderScript('index/cart-summary.phtml'); } else { $this->renderScript('index/cart-details.phtml'); } } }
/** * Creates the html code to render the page display the summary list. * * @param array $data Details from cart for the item line. * @param int $item Id of the item to render. * * @return string The html code to display */ public function renderResume($data, $item) { $html = ""; $unit = null; $pricePromo = 0; $unitPrice = ""; $suffixIds = '-' . $data['ID'] . '-' . $data['ItemId'] . '-' . $data['CartItemId']; if (!$data['Disable']) { $oItem = new ItemsObject(); $itemData = $oItem->getAll(null, true, $item); $oItem->setId($item); $unit = $oItem->getPrice($data['Quantity'], true); if ($data['PromoId'] > 0) { $pricePromo = $data['Total']; } // $taxProv = Cible_FunctionsGeneral::provinceTax($data['Total']); // $taxFed = Cible_FunctionsGeneral::federalTax($data['Total']); $taxProv = $itemData[0]['I_TaxProv']; $taxFed = $itemData[0]['I_TaxFed']; if (!is_null($unit)) { $unitPrice = sprintf('%.2f', $unit); } $html .= '<div id="price' . $suffixIds . '" class="quantity">'; $html .= ' <span id="quantity' . $suffixIds . '" class="quantity qtyField" >'; $html .= $data['Quantity'] . '</span>' . chr(13); $html .= ' <span id="taxProv' . $suffixIds . '" class="taxProv" '; $html .= $taxProv . '</span>' . chr(13); $html .= ' <span id="taxFed' . $suffixIds . '" class="taxFed" '; $html .= $taxFed . '</span>' . chr(13); $html .= '</div>'; $html .= '<div id="unitPrice' . $suffixIds . '" class="sumLine">' . chr(13); if ($pricePromo > 0) { $html .= ' <span class="unitPrice">' . sprintf('%.2f', $pricePromo) . '</span> $' . chr(13); } else { $html .= ' <span class="unitPrice">' . $unitPrice . '</span> $' . chr(13); } $html .= '</div>'; $html .= '<div id="sumLine' . $suffixIds . '" class="sumLine right">' . chr(13); $html .= ' <span>' . sprintf('%.2f', $data['Total']) . '</span> $'; $html .= '</div>'; } return $html; }