Ejemplo n.º 1
0
 /**
  * Check coupon type.
  *
  * @param int $value					Coupon type.
  * @param array|int $primary			Primary key.
  * @param array $row					Current data.
  * @param Main\Entity\Field $field		Field object.
  * @return bool|string
  */
 public static function checkType($value, $primary, array $row, Main\Entity\Field $field)
 {
     if (Internals\DiscountCouponTable::isValidCouponType($value) || $value == Internals\DiscountCouponTable::TYPE_ARCHIVED) {
         return true;
     }
     return Loc::getMessage('ORDER_COUPONS_VALIDATOR_TYPE');
 }
Ejemplo n.º 2
0
 /**
  * Save coupon.
  *
  * @param array $coupon		Coupon data.
  * @return Result
  */
 public static function saveCoupon($coupon)
 {
     if (self::$init === false) {
         self::init();
     }
     $result = new Result();
     $process = true;
     $resultData = array('ID' => 0, 'ORDER_ID' => 0, 'ORDER_DISCOUNT_ID' => 0, 'COUPON' => '', 'TYPE' => Internals\DiscountCouponTable::TYPE_UNKNOWN, 'COUPON_ID' => 0, 'DATA' => array());
     if (empty($coupon) || !is_array($coupon)) {
         $process = false;
         $result->addError(new Main\Entity\EntityError(Loc::getMessage('SALE_ORDER_DISCOUNT_ERR_EMPTY_COUPON'), self::ERROR_ID));
     }
     if ($process) {
         if (empty($coupon['ORDER_DISCOUNT_ID']) || (int) $coupon['ORDER_DISCOUNT_ID'] <= 0) {
             $process = false;
             $result->addError(new Main\Entity\EntityError(Loc::getMessage('SALE_ORDER_DISCOUNT_ERR_EMPTY_COUPON'), self::ERROR_ID));
         }
         if (empty($coupon['COUPON'])) {
             $process = false;
             $result->addError(new Main\Entity\EntityError(Loc::getMessage('SALE_ORDER_DISCOUNT_ERR_COUPON_CODE_ABSENT'), self::ERROR_ID));
         }
         if (!isset($coupon['TYPE'])) {
             $process = false;
             $result->addError(new Main\Entity\EntityError(Loc::getMessage('SALE_ORDER_DISCOUNT_ERR_COUPON_TYPE_ABSENT', array('#COUPON#' => $coupon['COUPON'])), self::ERROR_ID));
         } elseif (!Internals\DiscountCouponTable::isValidCouponType($coupon['TYPE']) && $coupon['TYPE'] != Internals\DiscountCouponTable::TYPE_ARCHIVED) {
             $process = false;
             $result->addError(new Main\Entity\EntityError(Loc::getMessage('SALE_ORDER_DISCOUNT_ERR_COUPON_TYPE_BAD', array('#COUPON#' => $coupon['COUPON'])), self::ERROR_ID));
         }
     }
     if ($process) {
         if ($coupon['TYPE'] != Internals\DiscountCouponTable::TYPE_ARCHIVED) {
             if (empty($coupon['COUPON_ID']) || (int) $coupon['COUPON_ID'] <= 0) {
                 $process = false;
                 $result->addError(new Main\Entity\EntityError(Loc::getMessage('SALE_ORDER_DISCOUNT_ERR_COUPON_ID_BAD', array('#COUPON#' => $coupon['COUPON'])), self::ERROR_ID));
             }
         }
     }
     if ($process) {
         $orderCouponIterator = Internals\OrderCouponsTable::getList(array('select' => array('*'), 'filter' => array('=COUPON' => $coupon['COUPON'], '=ORDER_ID' => $coupon['ORDER_ID'])));
         if ($orderCoupon = $orderCouponIterator->fetch()) {
             $resultData = $orderCoupon;
         } else {
             $fields = $coupon;
             if (array_key_exists('ID', $fields)) {
                 unset($fields['ID']);
             }
             $couponResult = Internals\OrderCouponsTable::add($fields);
             if ($couponResult->isSuccess()) {
                 $resultData = $fields;
                 $resultData['ID'] = $couponResult->getId();
             } else {
                 $process = false;
                 $result->addErrors($couponResult->getErrors());
             }
             unset($couponResult, $fields);
         }
         unset($orderCoupon, $orderCouponIterator);
     }
     if ($process) {
         $result->setId($resultData['ID']);
         $result->setData($resultData);
     }
     unset($process, $resultData);
     return $result;
 }