From: fomichev Date: Wed, 2 Apr 2025 09:17:37 +0000 (+0300) Subject: Перевод статусов заказов на таблицу marketplace_order_1c_statuses X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=629736630967178afa5f2221f045f2b82d9038c1;p=erp24_rep%2Fyii-erp24%2F.git Перевод статусов заказов на таблицу marketplace_order_1c_statuses --- diff --git a/erp24/api2/controllers/DataController.php b/erp24/api2/controllers/DataController.php index ff35a892..50988923 100644 --- a/erp24/api2/controllers/DataController.php +++ b/erp24/api2/controllers/DataController.php @@ -706,7 +706,7 @@ class DataController extends BaseController private function getMarketplaceNewOrders(): array { $marketplaceOrders = MarketplaceOrders::find() ->where([ - 'status_1c' => 1, + 'status_1c' => MarketplaceOrders::STATUSES_1C_CREATED_IN_ERP, 'status_id' => 1, ])->andWhere([ 'between', @@ -803,7 +803,7 @@ class DataController extends BaseController // 'cancel_requested' => $marketplaceOrder->cancel_requested, // 'raw_data' => $marketplaceOrder->raw_data, ]; - $marketplaceOrder->status_1c = WriteOffsErp::STATUS_SEND; + $marketplaceOrder->status_1c = MarketplaceOrders::STATUSES_1C_SENDED_TO_1C; $marketplaceOrder->save(); } return $result; @@ -2288,7 +2288,7 @@ class DataController extends BaseController } } - $marketplaceOrders->status_1c = WriteOffsErp::STATUS_ERROR_1С; + $marketplaceOrders->status_1c = MarketplaceOrders::STATUSES_1C_ERROR_1С; $marketplaceOrders->error_text = $errorText; $marketplaceOrders->save(); if ($marketplaceOrders->getErrors()) { @@ -2302,7 +2302,7 @@ class DataController extends BaseController } else { if (isset($arr["held"]) && $arr["held"]) { $marketplaceOrders->number_1c = $arr["number"] ?? ''; - $marketplaceOrders->status_1c = WriteOffsErp::STATUS_CREATED_1С; + $marketplaceOrders->status_1c = MarketplaceOrders::STATUSES_1C_CREATED_IN_1C; $marketplaceOrders->save(); if ($marketplaceOrders->getErrors()) { LogService::apiErrorLog( diff --git a/erp24/api2/controllers/OrdersController.php b/erp24/api2/controllers/OrdersController.php index 9ecd9072..d21ac932 100644 --- a/erp24/api2/controllers/OrdersController.php +++ b/erp24/api2/controllers/OrdersController.php @@ -16,9 +16,6 @@ use yii_app\services\MarketplaceService; class OrdersController extends BaseController { - const OUT_DIR = - //"/www/api2/json"; - "/var/www/erp24/api2/json"; private static function getPath() { return dirname(__DIR__, 1); @@ -93,11 +90,11 @@ class OrdersController extends BaseController } $marketplaceId = $order->marketplace_id; - $status1CRecord = MarketplaceOrder1cStatuses::find() + $statusId1C = MarketplaceOrder1cStatuses::find() ->where(['marketplace_id' => $marketplaceId]) ->andWhere(['status' => $orderStatus]) - ->one(); - if (empty($status1CRecord)) { + ->one()->id; + if (empty($statusId1C)) { $mess["result"] = 'error'; $mess["message_order"] = "Статус не найден"; LogService::apiLogs(1, json_encode($mess, JSON_UNESCAPED_UNICODE)); @@ -109,7 +106,6 @@ class OrdersController extends BaseController Yii::error('Ошибка: такого статуса не существует' . $orderStatus, __METHOD__); return $this->asJson($mess); } - $statusId1C = (int)$status1CRecord->status_id; // Получаем статусы МП по статусу 1С $orderStatus1CToCodes = MarketplaceOrders::getStatusCodes($orderStatus); diff --git a/erp24/migrations/m250219_062708_create_marketplace_orders_table.php b/erp24/migrations/m250219_062708_create_marketplace_orders_table.php index 5ffdb108..37c61857 100644 --- a/erp24/migrations/m250219_062708_create_marketplace_orders_table.php +++ b/erp24/migrations/m250219_062708_create_marketplace_orders_table.php @@ -38,7 +38,7 @@ class m250219_062708_create_marketplace_orders_table extends Migration 'cancel_requested' => $this->tinyInteger()->notNull()->defaultValue(0)->comment('Флаг запроса отмены'), 'raw_data' => $this->text()->comment('Полный сырой ответ API'), 'guid' => $this->string(36)->null()->comment('GUID заказа в 1С'), - 'status_1c' => $this->integer()->defaultValue(1)->comment('Статус заказа в 1С'), + 'status_1c' => $this->integer()->null()->comment('Статус заказа в 1С'), ]); } } diff --git a/erp24/records/MarketplaceOrders.php b/erp24/records/MarketplaceOrders.php index 732c9f80..e10ecaa9 100644 --- a/erp24/records/MarketplaceOrders.php +++ b/erp24/records/MarketplaceOrders.php @@ -41,11 +41,14 @@ class MarketplaceOrders extends \yii\db\ActiveRecord const STATUS_TELEGRAM_SENT = 2; const STATUS_TELEGRAM_ERROR = 8; - const STATUSES_1C_CREATED_IN_ERP = 1; - const STATUSES_1C_CREATED_IN_1C = 2; + const STATUSES_1C_ERROR_1С = -3; + const STATUSES_1C_CREATED_IN_ERP = -2; + const STATUSES_1C_SENDED_TO_1C = -1; + const STATUSES_1C_CREATED_IN_1C = 0; const STATUSES_1C = [ self::STATUSES_1C_CREATED_IN_ERP => 'Создан в ЕРП', + self::STATUSES_1C_SENDED_TO_1C => 'Отправлен в 1C', self::STATUSES_1C_CREATED_IN_1C => 'Создан в 1C', ]; @@ -78,7 +81,6 @@ class MarketplaceOrders extends \yii\db\ActiveRecord return [ [['store_id', 'warehouse_guid', 'returned_at', 'return_data', 'raw_data', 'guid'], 'default', 'value' => null], [['cancel_requested', 'status_telegram'], 'default', 'value' => 0], - [['status_1c'], 'default', 'value' => 1000], [['marketplace_order_id', 'marketplace_id', 'marketplace_name', 'status_id', 'substatus_id', 'creation_date', 'updated_at', 'total', 'delivery_total', 'buyer_total_before_discount', 'tax_system', 'payment_type', 'payment_method'], 'required'], [['store_id', 'status_id', 'substatus_id', 'fake', 'cancel_requested', 'status_1c'], 'default', 'value' => null], [[ 'fake'], 'default', 'value' => 0], @@ -155,7 +157,7 @@ class MarketplaceOrders extends \yii\db\ActiveRecord public function getStatus1c() { - return $this->hasOne(MarketplaceOrder1cStatuses::class, ['status_id' => 'status_1c']); + return $this->hasOne(MarketplaceOrder1cStatuses::class, ['id' => 'status_1c']); } diff --git a/erp24/services/MarketplaceService.php b/erp24/services/MarketplaceService.php index ae0fa6d1..f36659d9 100644 --- a/erp24/services/MarketplaceService.php +++ b/erp24/services/MarketplaceService.php @@ -18,6 +18,7 @@ use yii_app\helpers\File; use yii_app\records\Balances; use yii_app\records\Images; use yii_app\records\MarketplaceFlowwowEmails; +use yii_app\records\MarketplaceOrder1cStatuses; use yii_app\records\MarketplaceOrderDelivery; use yii_app\records\MarketplaceOrderItems; use yii_app\records\MarketplaceOrders; @@ -932,7 +933,7 @@ class MarketplaceService } public static function processOrders(array $allOrders) - { + { // Обработка заказов от Яндекса $statuses = MarketplaceOrderStatusTypes::find() ->select(['id', 'code']) ->indexBy('code') @@ -942,6 +943,7 @@ class MarketplaceService $statusCodes = array_unique(array_keys($statuses)); $newOrdersCount = 0; $updatedOrdersCount = 0; + foreach ($allOrders as $campaignId => $orders) { foreach ($orders as $order) { $statusCode = $order->getStatus(); @@ -1020,6 +1022,7 @@ class MarketplaceService $marketplaceOrder->status_id = (int)$statusId; $marketplaceOrder->substatus_id = (int)$substatusId; $marketplaceOrder->raw_data = $newRawData; + $marketplaceOrder->status_1c = MarketplaceOrders::STATUSES_1C_CREATED_IN_ERP; if ($marketplaceOrder->save()) { self::sendMessageToTelegram($marketplaceOrder->guid, "Тестовое сообщение для https://tracker.yandex.ru/ERP-326 из [1]"); @@ -1464,9 +1467,9 @@ class MarketplaceService if ($progressCallback) { call_user_func($progressCallback, "Поиск писем в папке: $folder..."); } - self::imap_debug_log("Поисковой запрос: {$searchCriteria}", $debugMode, $progressCallback); + // self::imap_debug_log("Поисковой запрос: {$searchCriteria}", $debugMode, $progressCallback); $emails = imap_search($inbox, $searchCriteria); - // $emails = imap_search($inbox, 'ON "05-Mar-2025"'); + self::check_imap_errors($debugMode, $progressCallback); if ($emails) { self::imap_debug_log("Найдено " . count($emails) . " писем в " . $folder, $debugMode, $progressCallback); @@ -1482,7 +1485,7 @@ class MarketplaceService continue; } $subject = mb_decode_mimeheader($overview[0]->subject); - // $subject = mb_convert_encoding($subject, 'UTF-8', mb_detect_encoding($subject, 'UTF-8, ISO-8859-1, Windows-1251', true)); + $subject = str_replace('_', ' ', $subject); $from = mb_decode_mimeheader($overview[0]->from); @@ -1561,10 +1564,8 @@ class MarketplaceService } } imap_close($inbox); - } - return ['processed' => $countProcessedMessages, 'all' => $countAllMessages]; } @@ -1981,6 +1982,7 @@ class MarketplaceService $store = MarketplaceStore::find() ->where(['warehouse_guid' => (string)$campaignId]) ->andWhere(['warehouse_id' => 1])->one(); + $marketplaceOrder = new MarketplaceOrders(); $marketplaceOrder->marketplace_order_id = (string)$order['number']; $marketplaceOrder->creation_date = date('Y-m-d H:i:s', strtotime($order['date'])); @@ -2001,6 +2003,7 @@ class MarketplaceService $marketplaceOrder->marketplace_name = 'ФлауВау'; $marketplaceOrder->marketplace_id = 1; $marketplaceOrder->store_id = $store->store_id; + $marketplaceOrder->status_1c = MarketplaceOrders::STATUSES_1C_CREATED_IN_ERP; return $marketplaceOrder; } diff --git a/erp24/views/marketplace-orders/index.php b/erp24/views/marketplace-orders/index.php index d43e3ee4..136dd316 100644 --- a/erp24/views/marketplace-orders/index.php +++ b/erp24/views/marketplace-orders/index.php @@ -114,7 +114,7 @@ YiiAsset::register($this); [ 'attribute' => 'status_1c', 'value' => function ($model) { - return $model->status1c->status; + return $model->status1c->status ?? MarketplaceOrders::STATUSES_1C[$model->status_1c]; } ], [ diff --git a/erp24/views/marketplace-orders/view.php b/erp24/views/marketplace-orders/view.php index 4aeeec3e..7f876a39 100644 --- a/erp24/views/marketplace-orders/view.php +++ b/erp24/views/marketplace-orders/view.php @@ -58,7 +58,7 @@ $this->params['breadcrumbs'][] = $this->title; [ 'attribute' => 'status_1c', 'value' => function ($model) { - return $model->status1c->status; + return $model->status1c->status ?? MarketplaceOrders::STATUSES_1C[$model->status_1c]; } ], ],