Exemplo n.º 1
0
 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);
         }
     }
 }
Exemplo n.º 2
0
 /**
  * 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;
 }
Exemplo n.º 3
0
 /**
  * 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;
 }