23 PayableShipmentItem::class,
25 function($className, $id) {
31 $pi = $payableItemCollection::getList([
32 'select'=>[
'PAYMENT_ID'],
39 if($piRow = $pi->fetch())
43 $paymentClass = $registry->getPaymentClassName();
45 $r = $paymentClass::getList([
46 'select'=>[
'ORDER_ID'],
47 'filter'=>[
'ID'=>$piRow[
'PAYMENT_ID']]
50 if($row = $r->fetch())
53 $orderClass = $registry->getOrderClassName();
55 $order = $orderClass::load($row[
'ORDER_ID']);
56 $payment =
$order->getPaymentCollection()->getItemById($piRow[
'PAYMENT_ID']);
57 $payableItemCollection =
$payment->getPayableItemCollection();
59 foreach ($payableItemCollection as $item)
61 if($item->getId() == $id)
69 $this->addError(
new Error(
'payment is not exists', 200640400001));
73 $this->addError(
new Error(
'payment item is not exists', 201240400001));
82 $view = $this->getViewManager()
85 return [
'PAYMENT_ITEM_SHIPMENT'=>$view->prepareFieldInfos(
92 return [
'PAYMENT_ITEM_SHIPMENT'=>$paymentItem->toArray()];
115 $paymentItems = $payableItemCollection::getList(
120 'offset' => $pageNavigation->
getOffset(),
121 'limit' => $pageNavigation->
getLimit(),
125 return new Page(
'PAYMENT_ITEMS_SHIPMENT', $paymentItems,
function() use (
$filter)
131 return (
int) $payableItemCollection::getList([
148 $shipmentId = (int)
$fields[
'SHIPMENT_ID'];
149 $paymentId = (int)
$fields[
'PAYMENT_ID'];
154 $shipmentClass = $registry->getShipmentClassName();
156 $r = $shipmentClass::getList([
157 'select' => [
'ORDER_ID'],
158 'filter' => [
'ID' => $shipmentId],
161 if ($row = $r->fetch())
164 $orderClass = $registry->getOrderClassName();
166 $order = $orderClass::load($row[
'ORDER_ID']);
169 $shipment =
$order->getShipmentCollection()->getItemById($shipmentId);
173 $collection =
$order->getPaymentCollection();
176 $payment = $collection->getItemById($paymentId);
179 $paymentItems =
$payment->getPayableItemCollection()->getShipments();
180 if (!$this->isExistShipment($paymentItems, $shipment))
183 $paymentItem =
$payment->getPayableItemCollection()->createItemByShipment($shipment);
187 $r = $this->save($paymentItem);
188 if (!$r->isSuccess())
190 $result->addErrors($r->getErrors());
196 $result->addError(
new Error(
'Duplicate entry for key [shipmentId, paymentId]', 201250000001));
203 $result->addError(
new Error(
'payment not exists', 201240400002));
208 $result->addError(
new Error(
'shipment not exists', 201240400003));
221 elseif ($paymentItem instanceof PayableItem)
223 return [
'PAYMENT_ITEM_SHIPMENT' => $paymentItem->toArray()];
227 return [
'PAYMENT_ITEM_SHIPMENT' => $paymentItem];
233 $r = $paymentItem->setFields(
$fields);
235 if($r->isSuccess() ==
false)
237 $this->addErrors($r->getErrors());
242 $this->addErrors($r->getWarnings());
247 $r = $this->save($paymentItem);
250 $this->addErrors($r->getErrors());
255 return [
'PAYMENT_ITEM_SHIPMENT'=>$paymentItem->toArray()];
262 $r = $paymentItem->
delete();
264 if($r->isSuccess() ==
false)
266 $this->addErrors($r->getErrors());
271 $this->addErrors($r->getWarnings());
276 $r = $this->save($paymentItem);
279 $this->addErrors($r->getErrors());
296 $payment = $collectionPaymentItems->getPayment();
298 $collectionPayments =
$payment->getCollection();
299 $order = $collectionPayments->getOrder();
304 $result->addErrors($r->getErrors());
308 $result->addErrors($r->getWarnings());
313 protected function isExistShipment(CollectionFilterIterator $paymentItems, \
Bitrix\Sale\Shipment $shipment): bool
315 foreach ($paymentItems as $paymentItem)
318 $entityShipment = $paymentItem->getEntityObject();
319 if ($shipment->getInternalIndex() === $entityShipment->getInternalIndex())
334 $r->addError(
new Error(
'Access Denied', 200040300020));
346 $r->addError(
new Error(
'Access Denied', 200040300010));
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)