25 PayableBasketItem::class,
27 function($className, $id)
33 $pi = $payableItemCollection::getList([
34 'select'=>[
'PAYMENT_ID'],
41 if ($piRow = $pi->fetch())
45 $paymentClass = $registry->getPaymentClassName();
47 $r = $paymentClass::getList([
48 'select'=>[
'ORDER_ID'],
49 'filter'=>[
'ID'=>$piRow[
'PAYMENT_ID']]
52 if($row = $r->fetch())
55 $orderClass = $registry->getOrderClassName();
57 $order = $orderClass::load($row[
'ORDER_ID']);
58 $payment =
$order->getPaymentCollection()->getItemById($piRow[
'PAYMENT_ID']);
59 $payableItemCollection =
$payment->getPayableItemCollection();
61 foreach ($payableItemCollection as $item)
63 if($item->getId() == $id)
71 $this->addError(
new Error(
'payment is not exists', 200640400001));
75 $this->addError(
new Error(
'payment item is not exists', 201240400001));
85 $view = $this->getViewManager()
88 return [
'PAYMENT_ITEM_BASKET'=>$view->prepareFieldInfos(
95 return [
'PAYMENT_ITEM_BASKET'=>$paymentItem->toArray()];
108 $paymentItems = $payableItemCollection::getList(
113 'offset' => $pageNavigation->
getOffset(),
114 'limit' => $pageNavigation->
getLimit(),
118 return new Page(
'PAYMENT_ITEMS_BASKET', $paymentItems,
function() use (
$filter)
124 return (
int) $payableItemCollection::getList([
141 $basketId =
$fields[
'BASKET_ID'];
142 $paymentId =
$fields[
'PAYMENT_ID'];
147 $basketClass = $registry->getBasketClassName();
149 $r = $basketClass::getList([
150 'select'=>[
'ORDER_ID'],
151 'filter'=>[
'ID'=>$basketId]
154 if($row = $r->fetch())
157 $orderClass = $registry->getOrderClassName();
163 $basketItem =
$order->getBasket()->getItemByBasketCode($basketId);
164 if ($basketItem instanceof BasketItem)
167 $collection =
$order->getPaymentCollection();
168 $payment = $collection->getItemById($paymentId);
171 $paymentItems =
$payment->getPayableItemCollection()->getBasketItems();
172 if ($this->isExistBasketItem($paymentItems, $basketItem) ==
false)
175 $paymentItem =
$payment->getPayableItemCollection()->createItemByBasketItem($basketItem);
179 $r = $this->save($paymentItem);
180 if (!$r->isSuccess())
182 $result->addErrors($r->getErrors());
188 $result->addError(
new Error(
'Duplicate entry for key [basketId, paymentId]', 201250000001));
193 $result->addError(
new Error(
'payment not exists', 201240400002));
199 $result->addError(
new Error(
'basket item is not linked to the order', 201240400004));
204 $result->addError(
new Error(
'basket item not exists', 201240400003));
217 elseif($paymentItem instanceof PayableItem)
219 return [
'PAYMENT_ITEM_BASKET'=>$paymentItem->toArray()];
223 return [
'PAYMENT_ITEM_BASKET'=>$paymentItem];
229 $r = $paymentItem->setFields(
$fields);
231 if($r->isSuccess() ==
false)
233 $this->addErrors($r->getErrors());
238 $this->addErrors($r->getWarnings());
243 $r = $this->save($paymentItem);
246 $this->addErrors($r->getErrors());
251 return [
'PAYMENT_ITEM_BASKET'=>$paymentItem->toArray()];
258 $r = $paymentItem->
delete();
260 if($r->isSuccess() ==
false)
262 $this->addErrors($r->getErrors());
267 $this->addErrors($r->getWarnings());
272 $r = $this->save($paymentItem);
275 $this->addErrors($r->getErrors());
292 $payment = $collectionPaymentItems->getPayment();
294 $collectionPayments =
$payment->getCollection();
295 $order = $collectionPayments->getOrder();
300 $result->addErrors($r->getErrors());
304 $result->addErrors($r->getWarnings());
309 protected function isExistBasketItem(CollectionFilterIterator $paymentItems, BasketItem $basketItem): bool
311 foreach ($paymentItems as $paymentItem)
314 $entityBasketItem = $paymentItem->getEntityObject();
315 if($entityBasketItem->getBasketCode() === $basketItem->getBasketCode())
330 $r->addError(
new Error(
'Access Denied', 200040300020));
342 $r->addError(
new Error(
'Access Denied', 200040300010));
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)