Exemple #1
0
 /**
  * @param Mage_Sales_Model_Order $order
  * @return array
  */
 protected function _getCouponsFormatted($order)
 {
     $result = array();
     if ($order->getCouponCode()) {
         if (Mage::helper("shopgate/config")->getIsMagentoVersionLower1410()) {
             $mageRule = Mage::getModel('salesrule/rule')->load($order->getCouponCode(), 'coupon_code');
             $mageCoupon = $mageRule;
         } else {
             $mageCoupon = Mage::getModel('salesrule/coupon')->load($order->getCouponCode(), 'code');
             $mageRule = Mage::getModel('salesrule/rule')->load($mageCoupon->getRuleId());
         }
         $externalCoupon = new ShopgateExternalCoupon();
         $couponInfo = array();
         $couponInfo["coupon_id"] = $mageCoupon->getId();
         $couponInfo["rule_id"] = $mageRule->getId();
         $externalCoupon->setCode($order->getCouponCode());
         $externalCoupon->setCurrency($order->getOrderCurrencyCode());
         $externalCoupon->setName($mageRule->getName());
         $externalCoupon->setDescription($mageRule->getDescription());
         $externalCoupon->setInternalInfo($this->_getConfig()->jsonEncode($couponInfo));
         $externalCoupon->setAmount($order->getDiscountAmount());
         array_push($result, $externalCoupon);
     }
     return $result;
 }
 /**
  * @param ShopgateCart $cart
  * @return array
  * @throws PrestaShopException
  */
 protected function _addCoupons(ShopgateCart $cart)
 {
     $results = array();
     $carrierId = null;
     if ($cart->getShippingInfos()) {
         $apiResponse = $cart->getShippingInfos()->getApiResponse();
         if (!empty($apiResponse)) {
             $apiResponse = unserialize($apiResponse);
             if (!empty($apiResponse['carrierId'])) {
                 $carrierId = $apiResponse['carrierId'];
             }
         }
     }
     $package = null;
     if (!empty($carrierId)) {
         $package = array('products' => null, 'id_carrier' => $carrierId);
     }
     foreach ($cart->getExternalCoupons() as $coupon) {
         $result = new ShopgateExternalCoupon();
         $result->setCode($coupon->getCode());
         $result->setCurrency($this->_getCurrency());
         $result->setIsValid(false);
         $result->setNotValidMessage(Tools::displayError('This voucher does not exists.'));
         if (version_compare(_PS_VERSION_, '1.5.0.0', '>=')) {
             /** @var CartRuleCore $cartRule */
             $cartRule = new CartRule(CartRule::getIdByCode($coupon->getCode()));
             if (Validate::isLoadedObject($cartRule)) {
                 $result->setName($cartRule->getFieldByLang('name'), $this->getPlugin()->getContext()->language->id);
                 $result->setDescription($cartRule->getFieldByLang('description', $this->getPlugin()->getContext()->language->id));
                 $result->setTaxType(Translate::getAdminTranslation('not_taxable'));
                 $result->setAmountGross($cartRule->getContextualValue(true, $this->getPlugin()->getContext(), null, $package));
                 /**
                  * validate coupon
                  */
                 if ($validateException = $cartRule->checkValidity($this->getPlugin()->getContext(), false, true)) {
                     $result->setIsValid(false);
                     $result->setNotValidMessage($validateException);
                 } else {
                     $result->setIsValid(true);
                     $result->setNotValidMessage(null);
                     $this->getPlugin()->getContext()->cart->addCartRule($cartRule->id);
                     $this->getPlugin()->getContext()->cart->save();
                 }
             }
         }
         $results[] = $result;
     }
     return $results;
 }