Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/sale/lib/helpers/order/builder/ |
Upload File : |
<? namespace Bitrix\Sale\Helpers\Order\Builder; use Bitrix\Crm\Order\Shipment; final class Director { public function createOrder(OrderBuilder $builder, array $fields) { try{ $builder->build($fields); } catch(BuildingException $e) { return null; } return $builder->getOrder(); } /** * @param OrderBuilder $builder * @param array $shipmentData * @return Shipment * @throws \Bitrix\Main\ArgumentNullException */ public function getUpdatedShipment(OrderBuilder $builder, array $shipmentData) { try{ $builder->initFields(array( 'ID' => $shipmentData['ORDER_ID'], 'SITE_ID' => $shipmentData['SITE_ID'], 'SHIPMENT' => array($shipmentData) )) ->delegate() ->createOrder() ->setDiscounts() //? ->buildShipments() ->setDiscounts() //? ->finalActions(); } catch(BuildingException $e) { return null; } $order = $builder->getOrder(); $collection = $order->getShipmentCollection(); if((int)$shipmentData['ID'] > 0) { return $collection->getItemById($shipmentData['ID']); } else { foreach($collection as $shipment) { if($shipment->getId() <= 0) { return $shipment; } } } return null; } /** * @param OrderBuilder $builder * @param array $shipmentData * @return \Bitrix\Sale\Payment|null * @throws \Bitrix\Main\ArgumentNullException */ public function getUpdatedPayment(OrderBuilder $builder, array $paymentData) { try{ $builder->initFields(array( 'ID' => $paymentData['ORDER_ID'], 'PAYMENT' => array($paymentData) )) ->delegate() ->createOrder() ->setDiscounts() ->buildPayments() ->setDiscounts() ->finalActions(); } catch(BuildingException $e) { return null; } $order = $builder->getOrder(); $collection = $order->getPaymentCollection(); $paymentId = (int)($paymentData['ID'] ?? 0); if ($paymentId) { return $collection->getItemById($paymentId); } else { foreach ($collection as $payment) { if ($payment->getId() === 0) { return $payment; } } } return null; } }