コード例 #1
0
 /**
  * @param $id
  * @return Sale\BasketItem|Sale\Result|null
  * @throws \Bitrix\Main\ArgumentException
  * @throws \Bitrix\Main\ArgumentNullException
  */
 protected static function loadEntityFromBasket($id)
 {
     $result = new Sale\Result();
     $order = null;
     $basket = null;
     $item = null;
     $res = BasketTable::getList(array('filter' => array('ID' => $id), 'select' => array('ID', 'ORDER_ID', 'SET_PARENT_ID', 'TYPE', 'FUSER_ID', 'LID')));
     if (!($itemDat = $res->fetch())) {
         $result->addError(new Sale\ResultError(Main\Localization\Loc::getMessage('SALE_BASKET_COMPATIBLE_BASKET_ITEM_NOT_FOUND'), 'BASKET_ITEM_NOT_FOUND'));
         return $result;
     }
     if (intval($itemDat['ORDER_ID']) > 0) {
         /** @var Sale\Order $order */
         if ($order = Sale\Order::load(intval($itemDat['ORDER_ID']))) {
             if ($basket = $order->getBasket()) {
                 /** @var Sale\BasketItem $item */
                 $item = $basket->getItemById($id);
             }
         }
     } else {
         //			if (!array_key_exists('FUSER_ID', $itemDat) || intval($itemDat['FUSER_ID']) <= 0)
         //			{
         //				$itemDat['FUSER_ID'] = Sale\Fuser::getId();
         //			}
         /** @var Sale\Basket $basket */
         $basket = Sale\Basket::loadItemsForFUser($itemDat["FUSER_ID"], $itemDat['LID']);
         if ($basket) {
             /** @var Sale\BasketItem $item */
             $item = $basket->getItemById($id);
         }
     }
     $data = array('BASKET_ITEM' => $item);
     if ($order !== null) {
         $data['ORDER'] = $order;
     }
     $result->addData($data);
     return $result;
 }
コード例 #2
0
 /**
  * @internal
  * @param string $action
  * @param array $fields
  *
  * @return Sale\Result
  * @throws Main\ArgumentNullException
  * @throws Main\ObjectNotFoundException
  */
 public static function modifyOrder($action, array $fields)
 {
     $result = new Sale\Result();
     try {
         $adminSection = defined('ADMIN_SECTION') && ADMIN_SECTION === true;
         /** @var Sale\Compatible\OrderCompatibility $orderCompatibility */
         $orderCompatibility = Sale\Compatible\OrderCompatibility::create($fields);
         /** @var Sale\Order $order */
         $order = $orderCompatibility->getOrder();
         $oldPrice = $order->getPrice();
         //			$isStartField = $order->isStartField();
         /** @var Sale\Basket $basket */
         $basket = $order->getBasket();
         if (!$basket && $action == static::ORDER_COMPAT_ACTION_SAVE) {
             $fUserId = null;
             $userId = $order->getUserId();
             if ($userId > 0) {
                 $fUserId = Sale\Fuser::getIdByUserId($userId);
             } else {
                 if (!empty($fields['BASKET_ITEMS']) && is_array($fields['BASKET_ITEMS'])) {
                     foreach ($fields['BASKET_ITEMS'] as $basketItemData) {
                         if (!empty($basketItemData['FUSER_ID']) && intval($basketItemData['FUSER_ID']) > 0) {
                             $fUserId = intval($basketItemData['FUSER_ID']);
                             break;
                         }
                     }
                 }
             }
             if (intval($fUserId) <= 0 && !$adminSection) {
                 $fUserId = Sale\Fuser::getId();
             }
             if (intval($fUserId) <= 0) {
                 $result->addError(new Sale\ResultError(Main\Localization\Loc::getMessage('SALE_COMPATIBLE_ORDER_FUSERID_NOT_FOUND'), "SALE_COMPATIBLE_ORDER_FUSERID_NOT_FOUND"));
                 return $result;
             }
             if (!$adminSection) {
                 $siteId = !empty($fields["SITE_ID"]) ? $fields["SITE_ID"] : (!empty($fields["LID"]) ? $fields['LID'] : null);
                 /** @var Sale\Basket $allBasket */
                 $allBasket = Sale\Basket::loadItemsForFUser($fUserId, $siteId);
                 if ($allBasket) {
                     $basket = $allBasket->getOrderableItems();
                 }
             }
             if (!$basket) {
                 $basket = Sale\Basket::create($order->getSiteId());
                 $basket->setFUserId($fUserId);
             }
         }
         $isStartField = $order->isStartField(true);
         if ($basket) {
             $basketCompatibility = BasketCompatibility::create($orderCompatibility);
             //				$orderCompatibility->resetOrderPrice($basket, $fields);
             /** @var Sale\Result $r */
             $r = $basketCompatibility->fillBasket($basket, $fields);
             if (!$r->isSuccess()) {
                 $result->addErrors($r->getErrors());
                 return $result;
             }
             if ($action == static::ORDER_COMPAT_ACTION_SAVE && $order->getId() == 0 && count($basket) > 0) {
                 $order->setMathActionOnly(true);
                 $order->setBasket($basket);
                 $order->setMathActionOnly(false);
             }
             if ($orderCompatibility->isExistPrice() && $oldPrice == $order->getPrice()) {
                 $order->setFieldNoDemand('PRICE', $orderCompatibility->externalPrice);
             }
         }
         /** @var Sale\Result $r */
         $r = $orderCompatibility->fillTaxFromRequest($order->getTax(), $fields);
         if (!$r->isSuccess()) {
             $result->addErrors($r->getErrors());
             return $result;
         }
         if ($isStartField) {
             $hasMeaningfulFields = $order->hasMeaningfulField();
             /** @var Sale\Result $r */
             $r = $order->doFinalAction($hasMeaningfulFields);
             if (!$r->isSuccess()) {
                 $result->addErrors($r->getErrors());
                 return $result;
             }
         }
         /** @var Sale\Result $r */
         $r = $orderCompatibility->fillShipmentCollectionFromRequest($order->getShipmentCollection(), $fields);
         if (!$r->isSuccess()) {
             $result->addErrors($r->getErrors());
             return $result;
         }
         $order->setMathActionOnly(false);
         /** @var Sale\Result $r */
         $r = $orderCompatibility->fillPaymentCollectionFromRequest($fields);
         if (!$r->isSuccess()) {
             $result->addErrors($r->getErrors());
             return $result;
         }
         /** @var Sale\Result $r */
         $r = Sale\Compatible\OrderCompatibility::fillOrderFromRequest($order, $fields);
         if (!$r->isSuccess()) {
             $result->addErrors($r->getErrors());
             return $result;
         }
     } catch (Sale\UserMessageException $e) {
         $result->addError(new Sale\ResultError($e->getMessage(), $e->getCode()));
         return $result;
     }
     static::transformationLocation($order);
     /** @var Sale\Result $r */
     $r = $order->save();
     if ($r->isSuccess()) {
         if ($orderData = $r->getData()) {
             $result->setData($orderData);
         }
         if ($orderId = $r->getId()) {
             $result->setId($orderId);
         }
         /** @var Sale\Result $r */
         $r = $orderCompatibility->saveRawFields($order, static::ENTITY_ORDER);
     }
     if (!$r->isSuccess()) {
         $result->addErrors($r->getErrors());
     } else {
         $oldFields = static::convertDateFieldsToOldFormat($order->getFieldValues());
         $oldFields = $oldFields + $orderCompatibility->rawFields;
         /** @var Sale\PaymentCollection $paymentCollection */
         if ($paymentCollection = $order->getPaymentCollection()) {
             /** @var Sale\Payment $payment */
             foreach ($paymentCollection as $payment) {
                 /** @var Sale\Result $r */
                 $r = $orderCompatibility->saveRawFields($payment, static::ENTITY_PAYMENT);
                 if (!$r->isSuccess()) {
                     $result->addErrors($r->getErrors());
                 }
             }
         }
         $result->setData(array('OLD_FIELDS' => $oldFields));
     }
     return $result;
 }
コード例 #3
0
 /**
  * @internal
  * @param string $action
  * @param array $fields
  *
  * @return Sale\Result
  * @throws Main\ArgumentNullException
  * @throws Main\ObjectNotFoundException
  */
 public static function modifyOrder($action, array $fields)
 {
     $result = new Sale\Result();
     try {
         $adminSection = defined('ADMIN_SECTION') && ADMIN_SECTION === true;
         /** @var Sale\Compatible\OrderCompatibility $orderCompatibility */
         $orderCompatibility = Sale\Compatible\OrderCompatibility::create($fields);
         /** @var Sale\Order $order */
         $order = $orderCompatibility->getOrder();
         $oldPrice = $order->getPrice();
         //			$isStartField = $order->isStartField();
         /** @var Sale\Basket $basket */
         $basket = $order->getBasket();
         if (!$basket && $action == static::ORDER_COMPAT_ACTION_SAVE) {
             $fUserId = Sale\Fuser::getIdByUserId($order->getUserId());
             if (!$adminSection) {
                 $siteId = !empty($fields["SITE_ID"]) ? $fields["SITE_ID"] : (!empty($fields["LID"]) ? $fields['LID'] : null);
                 $basket = Sale\Basket::loadItemsForFUser($fUserId, $siteId);
             }
             if (!$basket) {
                 $basket = Sale\Basket::create($order->getSiteId(), $fUserId);
             }
         }
         if ($basket) {
             $basketCompatibility = BasketCompatibility::create($orderCompatibility);
             //				$orderCompatibility->resetOrderPrice($basket, $fields);
             /** @var Sale\Result $r */
             $r = $basketCompatibility->fillBasket($basket, $fields);
             if (!$r->isSuccess()) {
                 $result->addErrors($r->getErrors());
                 return $result;
             }
             if ($action == static::ORDER_COMPAT_ACTION_SAVE && $order->getId() == 0 && count($basket->getOrderableItems()) > 0) {
                 $order->setMathActionOnly(true);
                 $order->setBasket($basket->getOrderableItems());
                 $order->setMathActionOnly(false);
             }
             if ($orderCompatibility->isExistPrice() && $oldPrice == $order->getPrice()) {
                 $order->setFieldNoDemand('PRICE', $orderCompatibility->externalPrice);
             }
         }
         /** @var Sale\Result $r */
         $r = Sale\Compatible\OrderCompatibility::fillTaxFromRequest($order->getTax(), $fields);
         if (!$r->isSuccess()) {
             $result->addErrors($r->getErrors());
             return $result;
         }
         /** @var Sale\Result $r */
         $r = OrderCompatibility::fillShipmentCollectionFromRequest($order->getShipmentCollection(), $fields);
         if (!$r->isSuccess()) {
             $result->addErrors($r->getErrors());
             return $result;
         }
         $order->setMathActionOnly(false);
         /** @var Sale\Result $r */
         $r = Sale\Compatible\OrderCompatibility::fillPaymentCollectionFromRequest($order->getPaymentCollection(), $fields);
         if (!$r->isSuccess()) {
             $result->addErrors($r->getErrors());
             return $result;
         }
         /** @var Sale\Result $r */
         $r = Sale\Compatible\OrderCompatibility::fillOrderFromRequest($order, $fields);
         if (!$r->isSuccess()) {
             $result->addErrors($r->getErrors());
             return $result;
         }
     } catch (Sale\UserMessageException $e) {
         $result->addError(new Sale\ResultError($e->getMessage(), $e->getCode()));
         return $result;
     }
     static::transformationLocation($order);
     /** @var Sale\Result $r */
     $r = $order->save();
     if ($r->isSuccess()) {
         if ($orderData = $r->getData()) {
             $result->setData($orderData);
         }
         if ($orderId = $r->getId()) {
             $result->setId($orderId);
         }
         /** @var Sale\Result $r */
         $r = $orderCompatibility->saveRawFields();
     }
     if (!$r->isSuccess()) {
         $result->addErrors($r->getErrors());
     } else {
         $oldFields = static::convertDateFieldsToOldFormat($order->getFieldValues());
         $oldFields = $oldFields + $orderCompatibility->rawFields;
         $result->setData(array('OLD_FIELDS' => $oldFields));
     }
     return $result;
 }
コード例 #4
0
ファイル: class.php プロジェクト: akniyev/itprom_dobrohost
 /**
  * @param \Bitrix\Main\Event $event
  *
  * @return \Bitrix\Main\EventResult
  */
 public function onSaleBasketItemDeleted(\Bitrix\Main\Event $event)
 {
     $originalValues = $event->getParameter('VALUES');
     if ($originalValues['FUSER_ID'] != \Bitrix\Sale\Fuser::getId(true)) {
         return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, null, 'sale');
     }
     $allBasket = \Bitrix\Sale\Basket::loadItemsForFUser($originalValues['FUSER_ID'], SITE_ID);
     if ($allBasket) {
         $_SESSION["SALE_BASKET_PRICE"][SITE_ID] = static::getActualBasketPrice($allBasket);
     }
     return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, null, 'sale');
 }
コード例 #5
0
{
    foreach ($propertyCollection as $property) {
        if ($property->getField('CODE') == $code) {
            return $property;
        }
    }
}
$siteId = \Bitrix\Main\Context::getCurrent()->getSite();
$fio = 'Пупкин Василий';
$phone = '9511111111';
$email = '*****@*****.**';
$currencyCode = Option::get('sale', 'default_currency', 'RUB');
DiscountCouponsManager::init();
$order = Order::create($siteId, \CSaleUser::GetAnonymousUserID());
$order->setPersonTypeId(1);
$basket = Sale\Basket::loadItemsForFUser(\CSaleBasket::GetBasketUserID(), $siteId)->getOrderableItems();
/* Действия над товарами
$basketItems = $basket->getBasketItems();
foreach ($basketItems as $basketItem) {
    
}
*/
$order->setBasket($basket);
/*Shipment*/
$shipmentCollection = $order->getShipmentCollection();
$shipment = $shipmentCollection->createItem();
$shipment->setFields(['DELIVERY_ID' => 1, 'CURRENCY' => $currencyCode]);
/**/
/*Payment*/
$paymentCollection = $order->getPaymentCollection();
$extPayment = $paymentCollection->createItem();
コード例 #6
0
ファイル: ajax.php プロジェクト: akniyev/itprom_dobrohost
            $basket->usePrepayment = isset($_POST["use_prepayment"]) && $_POST["use_prepayment"] == "Y" ? "Y" : "N";
            $res = $basket->recalculateBasket($_POST);
            foreach ($res as $key => $value) {
                $arRes[$key] = $value;
            }
            $arRes["BASKET_DATA"] = $basket->getBasketItems();
            $arRes["BASKET_DATA"]["GRID"]["HEADERS"] = $basket->getCustomColumns();
            $arRes["COLUMNS"] = $strColumns;
            $arRes["CODE"] = "SUCCESS";
            if (!empty($_POST["coupon"]) && $arRes['VALID_COUPON'] === true) {
                if (!empty($arRes['BASKET_DATA']['FULL_DISCOUNT_LIST'])) {
                    global $USER;
                    $userId = $USER instanceof CAllUser ? $USER->getId() : null;
                    $giftManager = \Bitrix\Sale\Discount\Gift\Manager::getInstance()->setUserId($userId);
                    \Bitrix\Sale\Compatible\DiscountCompatibility::stopUsageCompatible();
                    $collections = $giftManager->getCollectionsByBasket(\Bitrix\Sale\Basket::loadItemsForFUser(\Bitrix\Sale\Fuser::getId(), SITE_ID), $arRes['BASKET_DATA']['FULL_DISCOUNT_LIST'], $arRes['BASKET_DATA']['APPLIED_DISCOUNT_LIST']);
                    \Bitrix\Sale\Compatible\DiscountCompatibility::revertUsageCompatible();
                    if (count($collections)) {
                        $arRes['BASKET_DATA']['NEED_TO_RELOAD_FOR_GETTING_GIFTS'] = true;
                    }
                }
            }
        }
    }
}
unset($arRes['BASKET_DATA']['APPLIED_DISCOUNT_LIST'], $arRes['BASKET_DATA']['FULL_DISCOUNT_LIST']);
$arRes["PARAMS"]["QUANTITY_FLOAT"] = isset($_POST["quantity_float"]) && $_POST["quantity_float"] == "Y" ? "Y" : "N";
$APPLICATION->RestartBuffer();
header('Content-Type: application/json; charset=' . LANG_CHARSET);
echo CUtil::PhpToJSObject($arRes);
die;