20 Sale\BasketItem::class,
22 function($className, $id)
27 $basketClass = $registry->getBasketClassName();
42 $orderClass = $registry->getOrderClassName();
44 $order = $orderClass::load((
int)$row[
'ORDER_ID']);
45 $basket =
$order->getBasket()->getItemByBasketCode($id);
53 $this->
addError(
new Error(
'basket item is not exists', 200140400001));
76 'BASKET_ITEM' =>
$entity->prepareFieldInfos(
$entity->getFieldsCatalogProduct()),
82 $builder = $this->getBuilder();
83 $builder->buildEntityBasket(
$fields);
85 if (!$this->checkBuilderError($builder))
90 $order = $builder->getOrder();
103 'BASKET_ITEMS' => $convertedOrder[
'ORDER'][
'BASKET_ITEMS'] ??
null,
111 if (Loader::includeModule(
'bitrix24'))
113 if (isset(
$fields[
'PRODUCT_ID']) && (
int)
$fields[
'PRODUCT_ID'] === 0)
117 $fields[
'PRODUCT_PROVIDER_CLASS'] =
'';
121 if (Loader::includeModule(
'catalog'))
125 $this->getStandartProviderDescription()
132 $fields[
'PRODUCT_PROVIDER_CLASS'],
144 'ID' =>
$fields[
'ORDER_ID'] ??
null,
158 $builder = $this->getBuilder(
159 new SettingsContainer([
160 'deleteBasketItemsIfNotExists' =>
false
163 $builder->buildEntityBasket(
$data);
165 if (!$this->checkBuilderError($builder))
171 $order = $builder->getOrder();
176 if ($basketItem->getId() <= 0)
178 $idx = $basketItem->getInternalIndex();
200 $this->
addError(
new Error(
'basket item is not saved - bad data', 200140400007));
205 return new Page(
'BASKET_ITEM', $this->
get(
$entity), 1);
210 if (!$this->checkModuleCatalog())
217 $this->getStandartProviderDescription()
220 return $this->addAction(
$fields);
227 $fields[
'ID'] = $basketItem->getBasketCode();
228 $fields[
'ORDER_ID'] = $basketItem->getCollection()->getOrderId();
238 $builder = $this->getBuilder(
239 new SettingsContainer([
240 'deleteBasketItemsIfNotExists' =>
false
244 $builder->buildEntityBasket(
$data);
245 if (!$this->checkBuilderError($builder))
250 $order = $builder->getOrder();
255 $this->addErrors(
$result->getErrors());
261 $entity =
$order->getBasket()->getItemById($basketItem->getId());
263 return new Page(
'BASKET_ITEM', $this->
get(
$entity), 1);
268 if (!$this->checkModuleCatalog())
273 return $this->updateAction($basketItem,
$fields);
280 'BASKET_ITEM' => $this->
get($basketItem),
287 $basketCollection = $basketItem->getCollection();
288 $order = $basketCollection->getOrder();
290 $result = $basketItem->delete();
298 $this->addErrors(
$result->getErrors());
304 public function listAction(
305 PageNavigation $pageNavigation,
309 bool $__calculateTotalCount =
true
318 $basketClass = $registry->getBasketClassName();
324 'offset' => $pageNavigation->getOffset(),
325 'limit' => $pageNavigation->getLimit(),
326 'count_total' => $__calculateTotalCount,
337 return $basketItem->canBuy() ?
'Y' :
'N';
342 return $basketItem->getBasePrice();
347 return $basketItem->getBasePriceWithVat();
352 return $basketItem->getCurrency();
357 return $basketItem->getDefaultPrice();
362 return $basketItem->getDiscountPrice();
367 return $basketItem->getFinalPrice();
372 return $basketItem->getInitialPrice();
377 return $basketItem->getPrice();
382 return $basketItem->getPriceWithVat();
387 return $basketItem->getProductId();
392 return $basketItem->getQuantity();
397 return $basketItem->getReservedQuantity();
402 return $basketItem->getVat();
407 return $basketItem->getVatRate();
412 return $basketItem->getWeight();
417 return $basketItem->isBarcodeMulti()?
'Y':
'N';
422 return $basketItem->isCustom()?
'Y':
'N';
427 return $basketItem->isCustomPrice()?
'Y':
'N';
432 return $basketItem->isDelay()?
'Y':
'N';
437 return $basketItem->isVatInPrice()?
'Y':
'N';
462 $convertedOrder = $this->
toArray($basketItem->getCollection()->getOrder(),
$fields);
463 $items = $convertedOrder[
'ORDER'][
'BASKET_ITEMS'] ?? [];
464 unset($convertedOrder);
468 if ($item[
'ID'] == $basketItem->getId())
480 Loader::includeModule(
'catalog');
482 if (isset(
$fields[
'BASKET_ITEMS']))
485 foreach (
$fields[
'BASKET_ITEMS'] as $item)
487 if (isset($item[
'PRODUCT_ID']))
489 $item[
'OFFER_ID'] = $item[
'PRODUCT_ID'];
490 unset($item[
'PRODUCT_ID']);
502 $item[
'PROPS'] = $item[
'PROPERTIES'] ?? [];
503 unset($item[
'PROPERTIES']);
505 $basketCode = $item[
'ID'] ??
'n' . ++
$i;
508 $data[$basketCode] = $item;
510 unset(
$fields[
'BASKET_ITEMS']);
513 return is_array(
$data) ? [
'PRODUCT' =>
$data] : [];
520 ||
$name ===
'getbaseprice'
521 ||
$name ===
'getbasepricewithvat'
522 ||
$name ===
'getcurrency'
523 ||
$name ===
'getdefaultprice'
524 ||
$name ===
'getdiscountprice'
525 ||
$name ===
'getfinalprice'
526 ||
$name ===
'getinitialprice'
527 ||
$name ===
'getprice'
528 ||
$name ===
'getpricewithvat'
529 ||
$name ===
'getproductid'
530 ||
$name ===
'getquantity'
531 ||
$name ===
'getreservedquantity'
532 ||
$name ===
'getvat'
533 ||
$name ===
'getvatrate'
534 ||
$name ===
'getweight'
535 ||
$name ===
'isbarcodemulti'
536 ||
$name ===
'iscustommulti'
537 ||
$name ===
'iscustomprice'
538 ||
$name ===
'isdelay'
539 ||
$name ===
'isvatinprice'
540 ||
$name ===
'getfieldscatalogproduct'
543 $result = $this->checkReadPermissionEntity();
547 $result = $this->checkCreatePermissionEntity();
557 protected function addValidate(
$fields)
561 if ((
int)(
$fields[
'ORDER_ID'] ??
null) <= 0)
563 $result->addError(
new Error(
'Required fields: fields[ORDER_ID]', 200140400008));
570 $orderClass = $registry->getOrderClassName();
578 '=ID' => (
int)
$fields[
'ORDER_ID'],
585 $result->addError(
new Error(
'Order not found', 200140400009));
592 $result->addError(
new Error(
'Currency must be the currency of the order', 200140400011));
600 private function checkBuilderError(Sale\Helpers\
Order\Builder\OrderBuilder $builder): bool
602 $errors = $builder->getErrorsContainer();
613 private function getStandartProviderDescription():
array
616 'MODULE' =>
'catalog',
617 'PRODUCT_PROVIDER_CLASS' => Catalog\Product\Basket::getDefaultProviderName(),
621 private function checkModuleCatalog(): bool
623 if (!Loader::includeModule(
'catalog'))
625 $this->
addError(
new Error(
'Module catalog is not exists', 200140400006));
getPrimaryAutoWiredParameter()
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)