From: fomichev Date: Mon, 28 Apr 2025 15:14:09 +0000 (+0300) Subject: Добавление метода изменения readyto_1c через 15 мин после создания заказа X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=a353802bb5dd0c06e3a54f997a6a42b3c9cb0653;p=erp24_rep%2Fyii-erp24%2F.git Добавление метода изменения readyto_1c через 15 мин после создания заказа --- diff --git a/erp24/services/MarketplaceService.php b/erp24/services/MarketplaceService.php index 8580fc6c..3fa3a3fe 100644 --- a/erp24/services/MarketplaceService.php +++ b/erp24/services/MarketplaceService.php @@ -1023,8 +1023,7 @@ class MarketplaceService $marketplaceOrder->substatus_id = (int)$substatusId; $marketplaceOrder->raw_data = $newRawData; $marketplaceOrder->status_1c = MarketplaceOrders::STATUSES_1C_CREATED_IN_ERP; - $baseUrl = "https://partner.market.yandex.ru/order/"; - $marketplaceOrder->order_link = $baseUrl . $marketplaceOrder->marketplace_order_id . "?tld=ru&partnerId=197274828"; + if ($marketplaceOrder->save()) { self::sendMessageToTelegram($marketplaceOrder->guid, "Тестовое сообщение для https://tracker.yandex.ru/ERP-326 из [1]"); @@ -1072,36 +1071,30 @@ class MarketplaceService } } $shipments = $delivery->getShipments(); - Yii::error( - 'сроки доставки: ' . json_encode( - $shipments, - JSON_UNESCAPED_UNICODE - ) - ); if ($shipments) { - foreach ($shipments as $shipment) { - Yii::error( - 'срок доставки: ' . json_encode( - $shipment, - JSON_UNESCAPED_UNICODE - ) - ); + foreach ($shipments as $index => $shipment) { + Yii::error("срок доставки: {$index}" . json_encode($shipment, JSON_UNESCAPED_UNICODE)); } - $deliveryDateTo = ($shipments[0])->getShipmentDate(); - $deliveryTimeTo = ($shipments[0])->getShipmentTime(); - if ($deliveryDateTo && $deliveryTimeTo) { - $datetimeString = $deliveryDateTo . ' ' . $deliveryTimeTo; - $marketplaceOrder->delivery_to = date('Y-m-d H:i:s', strtotime($datetimeString)); - if (!$marketplaceOrder->save()) { - Yii::error( - 'Ошибка сохранения сроков доставки: ' . json_encode( - $marketplaceOrder->getErrors(), - JSON_UNESCAPED_UNICODE - ) - ); + + $deliveryDateTo = ($shipments[0])->getShipmentDate() ?? null; + $deliveryTimeTo = ($shipments[0])->getShipmentTime() ?? ''; + + if ($deliveryDateTo) { + $datetimeString = str_replace('-', '.', $deliveryDateTo) . ' ' . $deliveryTimeTo; + $timestamp = strtotime($datetimeString); + + if ($timestamp) { + $marketplaceOrder->delivery_to = date('Y-m-d H:i:s', $timestamp); + + if (!$marketplaceOrder->save()) { + Yii::error('Ошибка сохранения сроков доставки: ' . json_encode($marketplaceOrder->getErrors(), JSON_UNESCAPED_UNICODE)); + } + } else { + Yii::error('Ошибка преобразования даты и времени: ' . $datetimeString); } + } else { + Yii::error('Отсутствует shipmentDate у первого элемента shipments'); } - } $dates = $delivery->getDates(); if ($dates) { @@ -1164,6 +1157,16 @@ class MarketplaceService } } // проверяем и устанавливаем ready_to = 1 + $baseUrl = "https://partner.market.yandex.ru/order/"; + $marketplaceOrder->order_link = $baseUrl . $marketplaceOrder->marketplace_order_id . "?tld=ru&partnerId=197274828"; + if (!$marketplaceOrder->save()) { + Yii::error( + 'Ошибка сохранения заказа при создании ссылки: ' . json_encode( + $marketplaceOrder->getErrors(), + JSON_UNESCAPED_UNICODE + ) + ); + } self::setReadyMarketplaceOrders($marketplaceOrder); } else { Yii::error( @@ -1191,21 +1194,29 @@ class MarketplaceService $delivery = $order->getDelivery(); $shipments = $delivery->getShipments(); if ($shipments) { - $deliveryDateTo = $shipments->getShipmentDate(); - $deliveryTimeTo = $shipments->getShipmentTime(); - if ($deliveryDateTo && $deliveryTimeTo) { - $datetimeString = $deliveryDateTo . ' ' . $deliveryTimeTo; - $marketplaceOrder->delivery_to = date('Y-m-d H:i:s', strtotime($datetimeString)); - if (!$marketplaceOrder->save()) { - Yii::error( - 'Ошибка сохранения сроков доставки: ' . json_encode( - $marketplaceOrder->getErrors(), - JSON_UNESCAPED_UNICODE - ) - ); - } + foreach ($shipments as $index => $shipment) { + Yii::error("срок доставки: {$index}" . json_encode($shipment, JSON_UNESCAPED_UNICODE)); } + $deliveryDateTo = ($shipments[0])->getShipmentDate() ?? null; + $deliveryTimeTo = ($shipments[0])->getShipmentTime() ?? ''; + + if ($deliveryDateTo) { + $datetimeString = str_replace('-', '.', $deliveryDateTo) . ' ' . $deliveryTimeTo; + $timestamp = strtotime($datetimeString); + + if ($timestamp) { + $marketplaceOrder->delivery_to = date('Y-m-d H:i:s', $timestamp); + + if (!$marketplaceOrder->save()) { + Yii::error('Ошибка сохранения сроков доставки: ' . json_encode($marketplaceOrder->getErrors(), JSON_UNESCAPED_UNICODE)); + } + } else { + Yii::error('Ошибка преобразования даты и времени: ' . $datetimeString); + } + } else { + Yii::error('Отсутствует shipmentDate у первого элемента shipments'); + } } if (!$marketplaceOrder->save()) { Yii::error( @@ -2047,6 +2058,7 @@ class MarketplaceService } } self::setReadyMarketplaceOrders($marketplaceOrder); + self::checkAndSetReadyTo1c($marketplaceOrder); } return $newOrdersCount; @@ -2353,5 +2365,30 @@ class MarketplaceService } + public static function checkAndSetReadyTo1c($order): void + { + if ($order->readyto_1c !== 0) { + return; + } + + $creationTimestamp = strtotime($order->creation_date); + if (!$creationTimestamp) { + Yii::error('Ошибка преобразования creation_date у заказа ID ' . $order->id . ': ' . $order->creation_date); + return; + } + + $currentTimestamp = time(); + $minutesPassed = ($currentTimestamp - $creationTimestamp) / 60; + + if ($minutesPassed >= 15) { + $order->readyto_1c = 1; + if (!$order->save()) { + Yii::error('Ошибка установки readyto_1c = 1 у заказа ID ' . $order->id . ': ' . json_encode($order->getErrors(), JSON_UNESCAPED_UNICODE)); + } else { + Yii::info('Заказ ID ' . $order->id . ' автоматически помечен как готовый к отправке в 1C.'); + } + } + } + }