Пример #1
0
 /**
  * <p>Метод удаляет из корзины все записи с внутренним кодом владельца fUserID. Метод динамичный.</p>
  *
  *
  * @param int $fUserID  Внутренний код владельца.
  *
  * @param  $bool  Если флаг равен false (по-умолчанию), то удаляются только записи из
  * корзины. Если флаг равен true, то удаляются и те записи, которые
  * относятся к уже сделанным заказам.
  *
  * @param bIncOrdere $d = false] 
  *
  * @return bool 
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * if (CSaleBasket::DeleteAll(3, False))
  *     echo "Корзина пользователя с внутренним кодом 3 успешно удалена";
  * ?&gt;
  * 
  * 
  * //пример вызова с автоопределением fUserID
  * &lt;?
  * CSaleBasket::DeleteAll(CSaleBasket::GetBasketUserID());
  * ?&gt;
  * </pre>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalebasket/csalebasket__deleteall.e0d06223.php
  * @author Bitrix
  */
 public static function DeleteAll($FUSER_ID = 0, $bIncOrdered = false)
 {
     global $DB, $APPLICATION;
     $isOrderConverted = \Bitrix\Main\Config\Option::get("main", "~sale_converted_15", 'N');
     $bIncOrdered = $bIncOrdered ? True : False;
     $FUSER_ID = intval($FUSER_ID);
     if ($FUSER_ID <= 0) {
         return false;
     }
     $arFilter = array("FUSER_ID" => $FUSER_ID);
     if (!$bIncOrdered) {
         $arFilter["ORDER_ID"] = "NULL";
     }
     $dbBasket = CSaleBasket::GetList(array(), $arFilter, false, false, array('ID', 'ORDER_ID', 'PRODUCT_ID', 'NAME'));
     while ($arBasket = $dbBasket->Fetch()) {
         if ($isOrderConverted == "Y") {
             /** @var \Bitrix\Sale\Result $r */
             $r = \Bitrix\Sale\Compatible\BasketCompatibility::delete($arBasket["ID"]);
             if (!$r->isSuccess(true)) {
                 foreach ($r->getErrorMessages() as $error) {
                     $APPLICATION->ThrowException($error);
                 }
                 return false;
             }
         } else {
             if (0 < intval($arBasket["ORDER_ID"])) {
                 CSaleOrderChange::AddRecord($arBasket["ORDER_ID"], "BASKET_REMOVED", array("PRODUCT_ID" => $arBasket["PRODUCT_ID"], "NAME" => $arBasket["NAME"]));
             }
             $DB->Query("DELETE FROM b_sale_basket_props WHERE BASKET_ID = " . $arBasket["ID"], true);
             $DB->Query("DELETE FROM b_sale_store_barcode WHERE BASKET_ID = " . $arBasket["ID"], true);
             $DB->Query("DELETE FROM b_sale_basket WHERE ID = " . $arBasket["ID"], true);
         }
     }
     $_SESSION["SALE_BASKET_NUM_PRODUCTS"][SITE_ID] = 0;
     return true;
 }