private function manageItemPromo($id, $itemId) { // Chercher itemId dans la table des promo dans le champ IP_ConditionItemId $oItemPromo = new ItemsPromoObject(); $oItem = new ItemsObject(); $dataPromo = $oItemPromo->getAssociatedItems($itemId); // Si trouvé, if (count($dataPromo) > 0) { // Récupré le nombre d'itemId dans le cart $detail = $this->getItem($id, $itemId); $nbItemInCart = $detail['Quantity']; foreach ($dataPromo as $promo) { $itemData = $oItem->getAll(null, true, $promo['IP_ItemId']); $promo['I_ProductID'] = $itemData[0]['I_ProductID']; // Comparer avec le champ IP_NbItem // Si le nombre dans cart sup à qté dans table promo if ($nbItemInCart >= $promo['IP_NbItem']) { // Tester si l'item promo existe déjà // Si non: Ajouter dans la table CartItems if (!$this->alreadyInCart($promo['I_ProductID'], $promo['IP_ItemId'], $promo['IP_ID'])) { $this->_insertPromo($promo); } } elseif ($promo['IP_NbItem'] == 0) { // Si le nombre d'item conditionnel est null, alors on test // sur le total $this->_testByTotal($promo, $oItem); } else { $this->_db->delete('CartItems', array("CI_PromoId = {$promo['IP_ID']}", 'CI_Disable != 1')); } } } else { // Si itemId <> $dataPromo = $oItemPromo->getAll(); foreach ($dataPromo as $promo) { $this->_testByTotal($promo, $oItem); } } }
/** * Method to reset item sequence call via url only */ public function orderItemAction() { $oItem = new ItemsObject(); $items = $oItem->getAll(); $seq = 0; $prevProd = null; foreach ($items as $key => $item) { $prod = $item['I_ProductID']; if ($prod == $prevProd) { $seq += 10; $data['I_Seq'] = $seq; $oItem->save($item['I_ID'], $data, 1); } else { $seq = 10; $data['I_Seq'] = $seq; $oItem->save($item['I_ID'], $data, 1); } $prevProd = $item['I_ProductID']; var_dump($prod, $prevProd, $data['I_Seq']); var_dump('----------------'); } exit; }
/** * Calculation of taxes and amounts for orders rendrering. * * @param array $memberInfos * @param bool $lines * * @return array */ public function calculateTotal($memberInfos, $lines = false) { $session = new Zend_Session_Namespace('order'); $data = array(); $oCart = new Cart(); $oItem = new ItemsObject(); $oProd = new ProductsCollection(); $subTotProv = 0; $subTotFed = 0; $subTot = 0; $total = 0; $taxProv = 0; $taxFed = 0; $tmpSum = 0; $nbPoint = 0; $cartData = $oCart->getAllIds(); $orderParams = Cible_FunctionsGeneral::getParameters(); if (!$memberInfos['noFedTax'] && $session->stateId == 11) { foreach ($cartData['cartId'] as $key => $id) { $itemId = $cartData['itemId'][$key]; $prodId = $cartData['prodId'][$key]; $itemDetails = $oItem->getAll(null, true, $itemId); $cartDetails = $oCart->getItem($id, $itemId, true); if ($itemDetails[0]['I_TaxFed']) { $subTotFed += $cartDetails['Total']; } } $addShipFee = Cible_FunctionsGeneral::compareFloats($subTotFed, '<', $orderParams['CP_ShippingFeesLimit'], 2); if ($addShipFee) { $subTotFed += $orderParams['CP_ShippingFees']; } if (isset($session->order['cod'])) { $subTotFed += $orderParams['CP_MontantFraisCOD']; } $taxFed = Cible_FunctionsGeneral::federalTax($subTotFed); } if (!$memberInfos['noProvTax']) { foreach ($cartData['cartId'] as $key => $id) { $itemId = $cartData['itemId'][$key]; $prodId = $cartData['prodId'][$key]; $itemDetails = $oItem->getAll(null, true, $itemId); $cartDetails = $oCart->getItem($id, $itemId, true); if ($itemDetails[0]['I_TaxProv']) { $subTotProv += $cartDetails['Total']; } } $addShipFee = Cible_FunctionsGeneral::compareFloats($subTotProv, '<', $orderParams['CP_ShippingFeesLimit'], 2); if ($addShipFee) { $subTotProv += $orderParams['CP_ShippingFees']; } if (isset($session->order['cod'])) { $subTotProv += $orderParams['CP_MontantFraisCOD']; } $taxProv = Cible_FunctionsGeneral::provinceTax($subTotProv); } foreach ($cartData['cartId'] as $key => $id) { $itemId = $cartData['itemId'][$key]; $prodId = $cartData['prodId'][$key]; $productData = $oProd->getDetails($prodId); $cartDetails = $oCart->getItem($id, $itemId, true); $subTot += $cartDetails['Total']; if ($oProd->getBonus()) { $nbPoint += ceil($cartDetails['Total'] * $orderParams['CP_BonusPointDollar']); } } $addShipFee = Cible_FunctionsGeneral::compareFloats($subTot, '<', $orderParams['CP_ShippingFeesLimit'], 2); if ($addShipFee) { $tmpSum += $orderParams['CP_ShippingFees']; } if (isset($session->order['cod'])) { $tmpSum += $orderParams['CP_MontantFraisCOD']; } $total = $subTot + $tmpSum + round($taxFed, 2) + round($taxProv, 2); $data = array('subTotProv' => $subTotProv, 'subTotFed' => $subTotFed, 'subTot' => $subTot, 'total' => $total, 'taxProv' => $taxProv, 'nbPoint' => $nbPoint, 'taxFed' => $taxFed); return $data; }