- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/internals/providerbuilder.php
- Класс: BitrixSaleInternalsProviderBuilder
- Вызов: ProviderBuilder::addProductData
public function addProductData(array $productData)
{
if ($productData['QUANTITY'] == 0)
{
return;
}
/** @var SaleShipmentItem $shipmentItem */
$shipmentItem = $productData['SHIPMENT_ITEM'] ?? null;
$basketItem = $productData['BASKET_ITEM'];
$productId = $productData['PRODUCT_ID'] ?? $basketItem->getProductId();
$fields = [
'ITEM_CODE' => $productId,
'BASKET_CODE' => $basketItem->getBasketCode(),
'PRODUCT_ID' => $productId,
'QUANTITY' => $productData['QUANTITY'],
'BUNDLE_PARENT' => $basketItem->isBundleParent(),
'BUNDLE_CHILD' => $basketItem->isBundleChild(),
'IS_BARCODE_MULTI' => $basketItem->isBarcodeMulti(),
'RESERVED_QUANTITY' => $productData['RESERVED_QUANTITY'] ?? 0.0,
];
if ($shipmentItem)
{
$fields['SHIPMENT_ITEM'] = $shipmentItem;
$fields['SHIPMENT_ITEM_DATA'] = [$shipmentItem->getInternalIndex() => $shipmentItem->getQuantity()];
$fields['NEED_RESERVE'] = [$shipmentItem->getInternalIndex() => $productData["NEED_RESERVE"] ?? null];
}
if (SaleConfiguration::useStoreControl())
{
if ($shipmentItem)
{
$storeData = SaleInternalsCatalogProvider::createMapShipmentItemStoreData($shipmentItem);
if (!empty($storeData))
{
$fields['STORE_DATA'] = [
$shipmentItem->getInternalIndex() => $storeData
];
}
}
}
if (isset($productData['NEED_RESERVE_BY_STORE']))
{
$fields['NEED_RESERVE_BY_STORE'] = $productData['NEED_RESERVE_BY_STORE'];
}
if (isset($productData['QUANTITY_BY_STORE']))
{
$fields['QUANTITY_BY_STORE'] = $productData['QUANTITY_BY_STORE'];
}
if (isset($productData['RESERVED_QUANTITY_BY_STORE']))
{
$fields['RESERVED_QUANTITY_BY_STORE'] = $productData['RESERVED_QUANTITY_BY_STORE'];
}
$this->addItem($productId, $fields);
}