%PDF- %PDF-
| Direktori : /proc/self/root/home/bitrix/www/bitrix/modules/sale/lib/internals/ |
| Current File : //proc/self/root/home/bitrix/www/bitrix/modules/sale/lib/internals/providerbuildercompatibility.php |
<?php
namespace Bitrix\Sale\Internals;
use Bitrix\Sale;
/**
* Class ProviderBuilderCompatibility
* @package Bitrix\Sale\Internals
*/
class ProviderBuilderCompatibility extends ProviderBuilderBase
{
/**
* @param $providerClass
* @param $context
*
* @return ProviderBuilderBase
*/
public static function create($providerClass, $context)
{
$builder = parent::create($providerClass, $context);
if (!$builder->providerClass && is_string($providerClass) && strval($providerClass) != '')
{
$builder->callbackFunction = $providerClass;
}
return $builder;
}
/**
* @param Sale\BasketItemBase $basketItem
*/
public function addProductByBasketItem(Sale\BasketItemBase $basketItem)
{
$productId = $basketItem->getProductId();
$providerName = $basketItem->getProviderName();
$isOrdable = ($basketItem->getField("CAN_BUY") == 'Y' && $basketItem->getField("DELAY") == 'N' && $basketItem->getField("SUBSCRIBE") == 'N');
$fields = array(
'BASKET_ITEM' => $basketItem,
'ITEM_CODE' => $basketItem->getBasketCode(),
'BASKET_ID' => $basketItem->getId(),
'BASKET_CODE' => $basketItem->getBasketCode(),
'PRODUCT_ID' => $productId,
'QUANTITY' => $basketItem->getQuantity(),
'MODULE' => $basketItem->getField('MODULE'),
'IS_ORDERABLE' => $isOrdable,
'IS_BUNDLE_PARENT' => false,
'IS_BUNDLE_CHILD' => false,
'IS_NEW' => ($basketItem->getId() == 0),
'SUBSCRIBE' => ($basketItem->getField('SUBSCRIBE') == 'Y'),
);
if ($basketItem instanceof Sale\BasketItem)
{
$fields['IS_BUNDLE_PARENT'] = $basketItem->isBundleParent();
$fields['IS_BUNDLE_CHILD'] = $basketItem->isBundleChild();
}
if (strval(trim($providerName)) == '')
{
$callbackFunction = $basketItem->getCallbackFunction();
if (!empty($callbackFunction))
{
$fields['CALLBACK_FUNC'] = $callbackFunction;
}
}
$this->addItem($productId, $fields);
}
/**
* @param Sale\ShipmentItem $shipmentItem
*/
public function addProductByShipmentItem(Sale\ShipmentItem $shipmentItem)
{
$basketItem = $shipmentItem->getBasketItem();
$productId = $basketItem->getProductId();
$providerName = $basketItem->getProviderName();
$fields = array(
'PRODUCT_ID' => $productId,
'BASKET_CODE' => $basketItem->getBasketCode(),
'QUANTITY' => $basketItem->getQuantity(),
'MODULE' => $basketItem->getField('MODULE'),
'SHIPMENT_ITEM' => $shipmentItem
);
if (strval(trim($providerName)) == '')
{
$callbackFunction = $basketItem->getCallbackFunction();
if (!empty($callbackFunction))
{
$fields['CALLBACK_FUNC'] = $callbackFunction;
}
}
$this->addItem($productId, $fields);
}
/**
* @param array $shipmentProductData
*
* @return bool
*/
public function addProductByShipmentProductData(array $shipmentProductData)
{
if ($shipmentProductData['QUANTITY'] == 0)
{
return false;
}
/** @var Sale\ShipmentItem $shipmentItem */
$shipmentItem = $shipmentProductData['SHIPMENT_ITEM'];
$basketItem = $shipmentItem->getBasketItem();
$productId = $basketItem->getProductId();
$providerName = $basketItem->getProviderName();
$fields = array(
'PRODUCT_ID' => $productId,
'BASKET_ITEM' => $basketItem,
'BASKET_CODE' => $basketItem->getBasketCode(),
'QUANTITY' => $shipmentProductData['QUANTITY'],
'MODULE' => $basketItem->getField('MODULE'),
'SHIPMENT_ITEM' => $shipmentItem,
'NEED_RESERVE' => array(
$shipmentItem->getInternalIndex() => $shipmentProductData["NEED_RESERVE"]
),
);
if (strval(trim($providerName)) == '')
{
$callbackFunction = $basketItem->getCallbackFunction();
if (!empty($callbackFunction))
{
$fields['CALLBACK'] = $callbackFunction;
}
}
$this->addItem($productId, $fields);
}
/**
* @param PoolQuantity $pool
* @param array $productTryShipList
*
* @return Sale\Result
*/
public function setItemsResultAfterTryShip(PoolQuantity $pool, array $productTryShipList)
{
return new Sale\Result();
}
/**
* @return string
*/
public function getTransferClassName()
{
return '\Bitrix\Sale\Internals\TransferProviderCompatibility';
}
}