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/rospirotorg.ru/bitrix/modules/wbs24.ozonapinew/lib/ |
Upload File : |
<?php namespace Wbs24\Ozonapinew; use Bitrix\Main\SystemException; class CurlExec { use Accounts; // trait protected $main; protected $moduleId; protected $wrappers; protected $OrdersStack; protected $Orders; protected $Api; protected $OrdersState; protected $Controller; protected $TrackNumber; protected $accountIndex; public function __construct($accountIndex = 1, $objects = []) { $this->main = $objects['Main'] ?? new Main(); $this->moduleId = $this->main->getModuleId(); $this->wrappers = new Wrappers($objects); $dependencies = $this->getDependencies($accountIndex); $this->accountIndex = $accountIndex; $this->OrdersStack = $objects['OrdersStack'] ?? new OrdersStack($accountIndex); $this->Orders = $objects['Orders'] ?? new Orders\Specific($dependencies); $this->Api = $objects['Api'] ?? new Api($dependencies); $this->OrdersState = $objects['OrdersState'] ?? new OrdersState($accountIndex); $this->Controller = $objects['Controller'] ?? new Api\Controller(); $this->TrackNumber = $objects['TrackNumber'] ?? new TrackNumber($dependencies); } public function getOrders() { $ordersStackObject = $this->OrdersStack; $ordersObject = $this->Orders; $orders = $ordersStackObject->getOrders(); $this->OrdersState->addOrdersInformation($orders); if ($orders) { $ordersObject->createNewOrders($orders); } } public function getStatuses($lastOrderId = 0) { ini_set('display_errors', 'Off'); $ordersObject = $this->Orders; $apiObject = $this->Api; $orderIdsToExternalIds = $this->Orders->getOrderIdsToExternalIds(true, $lastOrderId); $MAX_DURING = 30; $startTime = time(); $lastOrderId = ''; foreach ($orderIdsToExternalIds as $orderId => $externalId) { $shippingInfo = $this->Api->getShippingInformation($externalId); $statusOnTradingPlatform = $shippingInfo['status'] ?? false; //$phone = $shippingInfo['customer']['phone'] ?? false; $shipmentDate = $shippingInfo['shipment_date'] ?? false; $customer = $shippingInfo['customer'] ?? false; if ($statusOnTradingPlatform || $customer || $shipmentDate) { // при получении списка заказов ozon не передает телефон, поэтому добавляем его здесь // метод в классе Orders\Specific $orderData = [ 'statusOnTradingPlatform' => $statusOnTradingPlatform, 'tracking_number' => $shippingInfo['tracking_number'], 'shipmentDate' => $shipmentDate, 'products' => $shippingInfo['products'], 'posting_number' => $externalId, 'customer' => $customer, ]; // Получение tpl_integration_type из таблицы orders_state $orderInfo = $this->OrdersState->getOrdersInformation($externalId); $orderData['ordersState'] = $orderInfo; $ordersObject->changeOrder($orderId, $orderData); $trackNumber = $this->TrackNumber->getIfNeedUpdate($orderId, $shippingInfo); if ($trackNumber) $this->Controller->action([ 'action' => 'set_track_number', 'account_index' => $this->accountIndex, 'posting_number' => $externalId, 'trackNumber' => (string) $trackNumber, ]); } if ((time() - $startTime) > $MAX_DURING) { $lastOrderId = $orderId; break; } } return $lastOrderId; } }