]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Добавление метода изменения readyto_1c через 15 мин после создания заказа
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 28 Apr 2025 15:14:09 +0000 (18:14 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 28 Apr 2025 15:14:09 +0000 (18:14 +0300)
erp24/services/MarketplaceService.php

index 8580fc6c5c0dbd1ec67d91eb2f4eec6f7465fcef..3fa3a3fea06a08616e28b2f2aa38796411b036c2 100644 (file)
@@ -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.');
+            }
+        }
+    }
+
 
 }