- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/internals/providerbuilderbase.php
- Класс: BitrixSaleInternalsProviderBuilderBase
- Вызов: ProviderBuilderBase::addItem
protected function addItem($productId, array $productData)
{
$fields = array();
if (isset($this->items[$productId]))
{
$fields = $this->items[$productId];
}
$fields = $productData + $fields;
if (isset($fields['QUANTITY_LIST'][$productData['BASKET_CODE']]))
{
$fields['QUANTITY_LIST'][$productData['BASKET_CODE']] += (float)$productData['QUANTITY'];
}
else
{
$fields['QUANTITY_LIST'][$productData['BASKET_CODE']] = (float)$productData['QUANTITY'];
}
unset($fields['QUANTITY']);
if (isset($fields['QUANTITY_LIST_BY_STORE'][$productData['BASKET_CODE']]))
{
foreach ($productData['QUANTITY_BY_STORE'] as $storeId => $quantity)
{
if (!isset($fields['QUANTITY_LIST_BY_STORE'][$productData['BASKET_CODE']][$storeId]))
{
$fields['QUANTITY_LIST_BY_STORE'][$productData['BASKET_CODE']][$storeId] = 0;
}
$fields['QUANTITY_LIST_BY_STORE'][$productData['BASKET_CODE']][$storeId] += $quantity;
}
}
else
{
$fields['QUANTITY_LIST_BY_STORE'][$productData['BASKET_CODE']] = $productData['QUANTITY_BY_STORE'] ?? [];
}
unset($fields['QUANTITY_BY_STORE']);
if (isset($fields['RESERVED_QUANTITY_LIST'][$productData['BASKET_CODE']]))
{
$fields['RESERVED_QUANTITY_LIST'][$productData['BASKET_CODE']] += (float)$productData['RESERVED_QUANTITY'];
}
else
{
$fields['RESERVED_QUANTITY_LIST'][$productData['BASKET_CODE']] = (float)($productData['RESERVED_QUANTITY'] ?? 0.0);
}
unset($fields['RESERVED_QUANTITY']);
if (isset($fields['RESERVED_QUANTITY_LIST_BY_STORE'][$productData['BASKET_CODE']]))
{
foreach ($productData['RESERVED_QUANTITY_BY_STORE'] as $storeId => $quantity)
{
if (!isset($fields['RESERVED_QUANTITY_LIST_BY_STORE'][$productData['BASKET_CODE']][$storeId]))
{
$fields['RESERVED_QUANTITY_LIST_BY_STORE'][$productData['BASKET_CODE']][$storeId] = 0;
}
$fields['RESERVED_QUANTITY_LIST_BY_STORE'][$productData['BASKET_CODE']][$storeId] += $quantity;
}
}
else
{
$fields['RESERVED_QUANTITY_LIST_BY_STORE'][$productData['BASKET_CODE']] = $productData['RESERVED_QUANTITY_BY_STORE'] ?? [];
}
unset($fields['RESERVED_QUANTITY_BY_STORE']);
if (isset($productData['SHIPMENT_ITEM']))
{
/** @var SaleShipmentItem $shipmentItem */
$shipmentItem = $productData['SHIPMENT_ITEM'];
unset($fields['SHIPMENT_ITEM']);
$fields['SHIPMENT_ITEM_LIST'][$shipmentItem->getInternalIndex()] = $shipmentItem;
$fields['SHIPMENT_ITEM_QUANTITY_LIST'][$shipmentItem->getInternalIndex()] = (float)$productData['QUANTITY'];
}
if (isset($productData['STORE_DATA']))
{
if (!isset($fields['STORE_DATA_LIST']))
{
$fields['STORE_DATA_LIST'] = array();
}
$fields['STORE_DATA_LIST'] = $productData['STORE_DATA'] + $fields['STORE_DATA_LIST'];
unset($fields['STORE_DATA']);
}
if (isset($productData['IS_BARCODE_MULTI']) && !isset($fields['IS_BARCODE_MULTI']))
{
$fields['IS_BARCODE_MULTI'] = $productData['IS_BARCODE_MULTI'];
}
if (isset($productData['SHIPMENT_ITEM_DATA']))
{
if (!isset($fields['SHIPMENT_ITEM_DATA_LIST']))
{
$fields['SHIPMENT_ITEM_DATA_LIST'] = array();
}
$fields['SHIPMENT_ITEM_DATA_LIST'] = $productData['SHIPMENT_ITEM_DATA'] + $fields['SHIPMENT_ITEM_DATA_LIST'];
unset($fields['SHIPMENT_ITEM_DATA']);
}
if (isset($productData['NEED_RESERVE']))
{
if (!isset($fields['NEED_RESERVE_LIST']))
{
$fields['NEED_RESERVE_LIST'] = [];
}
$fields['NEED_RESERVE_LIST'] = $productData['NEED_RESERVE'] + $fields['NEED_RESERVE_LIST'];
unset($fields['NEED_RESERVE']);
}
if (isset($productData['NEED_RESERVE_BY_STORE']))
{
if (!isset($fields['NEED_RESERVE_BY_STORE_LIST']))
{
$fields['NEED_RESERVE_BY_STORE_LIST'] = [];
}
$fields['NEED_RESERVE_BY_STORE_LIST'] = $productData['NEED_RESERVE_BY_STORE'] + $fields['NEED_RESERVE_BY_STORE_LIST'];
unset($fields['NEED_RESERVE_BY_STORE']);
}
$this->items[$productId] = $fields;
}