- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/controller/paymentitembasket.php
- Класс: BitrixSaleControllerPaymentItemBasket
- Вызов: PaymentItemBasket::getPrimaryAutoWiredParameter
public function getPrimaryAutoWiredParameter(): ExactParameter
{
return new ExactParameter(
PayableBasketItem::class,
'paymentItem',
function($className, $id) {
$registry = Registry::getInstance(Registry::REGISTRY_TYPE_ORDER);
/** @var PayableItemCollection $payableItemCollection */
$payableItemCollection = $registry->get(Registry::ENTITY_PAYABLE_ITEM_COLLECTION);
$pi = $payableItemCollection::getList([
'select'=>['PAYMENT_ID'],
'filter'=>[
'ID'=>$id,
'ENTITY_TYPE'=>PayableBasketItem::getEntityType()
],
]);
if($piRow = $pi->fetch())
{
$registry = Registry::getInstance(Registry::REGISTRY_TYPE_ORDER);
/** @var BitrixSalePayment $paymentClass */
$paymentClass = $registry->getPaymentClassName();
$r = $paymentClass::getList([
'select'=>['ORDER_ID'],
'filter'=>['ID'=>$piRow['PAYMENT_ID']]
]);
if($row = $r->fetch())
{
/** @var BitrixSaleOrder $orderClass */
$orderClass = $registry->getOrderClassName();
$order = $orderClass::load($row['ORDER_ID']);
$payment = $order->getPaymentCollection()->getItemById($piRow['PAYMENT_ID']);
$payableItemCollection = $payment->getPayableItemCollection();
/** @var PayableItem $item */
foreach ($payableItemCollection as $item)
{
if($item->getId() == $id)
{
return $item;
}
}
}
else
{
$this->addError(new Error('payment is not exists', 200640400001));
}
}
$this->addError(new Error('payment item is not exists', 201240400001));
return null;
}
);
}