/** * @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; }