From e8363a7b8b6eb434f83eb049d12605dfed8496f2 Mon Sep 17 00:00:00 2001 From: fomichev Date: Wed, 25 Jun 2025 17:45:09 +0300 Subject: [PATCH] =?utf8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?utf8?q?=D0=B8=D0=B5=20check=5Fguid=20=D0=B8=20=D1=81=D1=82=D0=B0=D1=82?= =?utf8?q?=D1=83=D1=81=D0=B0=20=D1=87=D0=B5=D0=BA=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- ...uid_column_to_marketplace_orders_table.php | 39 +++++++++++++++++++ erp24/records/MarketplaceOrders.php | 10 ++++- erp24/services/MarketplaceService.php | 23 ++++++++--- erp24/views/marketplace-orders/index.php | 34 +++++++++++++++- erp24/views/marketplace-orders/view.php | 29 ++++++++++++++ 5 files changed, 125 insertions(+), 10 deletions(-) create mode 100644 erp24/migrations/m250625_132614_add_check_guid_column_to_marketplace_orders_table.php diff --git a/erp24/migrations/m250625_132614_add_check_guid_column_to_marketplace_orders_table.php b/erp24/migrations/m250625_132614_add_check_guid_column_to_marketplace_orders_table.php new file mode 100644 index 00000000..5cd600b4 --- /dev/null +++ b/erp24/migrations/m250625_132614_add_check_guid_column_to_marketplace_orders_table.php @@ -0,0 +1,39 @@ +db->schema->getTableSchema(self::TABLE_NAME); + if ($table === null) { + return; + } + + if (!$this->db->schema->getTableSchema(self::TABLE_NAME, true)->getColumn('check_guid')) { + $this->addColumn( + self::TABLE_NAME, + 'check_guid', + $this->string()->null()->comment('GUID чека заказа МП') + ); + } + } + + /** + * {@inheritdoc} + */ + public function safeDown() + { + if ($this->db->schema->getTableSchema(self::TABLE_NAME, true)->getColumn('check_guid')) { + $this->dropColumn(self::TABLE_NAME, 'check_guid'); + } + } +} diff --git a/erp24/records/MarketplaceOrders.php b/erp24/records/MarketplaceOrders.php index 18e5524b..361307f4 100644 --- a/erp24/records/MarketplaceOrders.php +++ b/erp24/records/MarketplaceOrders.php @@ -29,6 +29,7 @@ use yii\db\Expression; * @property int $cancel_requested Флаг запроса отмены * @property string|null $raw_data Полный сырой ответ API * @property string|null $guid GUID заказа в 1С + * @property string|null $check_guid GUID чека заказа МП * @property int|null $status_1c Статус заказа в 1С * @property int|null $marketplace_name Наименование маркетплейса 'ФлауВау' 'ЯндексМаркет' * @property int|null $marketplace_id ID маркетплейса: 1 - Flowwow, 2 - YandexMarket @@ -99,7 +100,7 @@ class MarketplaceOrders extends \yii\db\ActiveRecord public function rules() { return [ - [['store_id', 'warehouse_guid', 'returned_at', 'return_data', 'raw_data', 'guid', 'manager_link'], 'default', 'value' => null], + [['store_id', 'warehouse_guid', 'returned_at', 'return_data', 'raw_data', 'guid', 'manager_link', 'check_guid'], 'default', 'value' => null], [['cancel_requested', 'status_telegram', 'readyto_1c'], 'default', 'value' => 0], [['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', 'status_processing_1c', 'order_link', 'delivery_to', 'order_photo'], 'default', 'value' => null], @@ -110,7 +111,7 @@ class MarketplaceOrders extends \yii\db\ActiveRecord [['total', 'delivery_total', 'buyer_total_before_discount'], 'number'], [['marketplace_order_id', 'seller_id'], 'string', 'max' => 64], [['number_1c'], 'string', 'max' => 100], - [['warehouse_guid', 'guid'], 'string', 'max' => 36], + [['warehouse_guid', 'guid', 'check_guid'], 'string', 'max' => 36], [['tax_system', 'payment_type', 'payment_method'], 'string', 'max' => 32], [['marketplace_order_id'], 'unique'], ]; @@ -157,6 +158,7 @@ class MarketplaceOrders extends \yii\db\ActiveRecord 'order_photo' => 'Ссылка на фото собранного заказа для МП', 'created_at' => 'Время создания заказа в ERP', 'manager_link' => 'Ссылка на панели менеджера заказов', + 'check_guid' => 'GUID чека заказа МП', ]; } @@ -188,6 +190,10 @@ class MarketplaceOrders extends \yii\db\ActiveRecord return $this->hasOne(MarketplaceOrder1cStatuses::class, ['id' => 'status_processing_1c']); } + public function getCheck() + { + return $this->hasOne(CreateChecks::class, ['check_id' => 'check_guid']); + } public static function getStatusCodes(string $status): array { diff --git a/erp24/services/MarketplaceService.php b/erp24/services/MarketplaceService.php index 10211d25..566af9fe 100644 --- a/erp24/services/MarketplaceService.php +++ b/erp24/services/MarketplaceService.php @@ -2446,12 +2446,17 @@ class MarketplaceService public static function createCheckForMarketplaceOrder (MarketplaceOrders $marketplaceOrder): bool { - Yii::error('Вход в функцию ' . $marketplaceOrder->marketplace_order_id); $existingCheck = CreateChecks::find() ->where(['marketplace_order_id' => $marketplaceOrder->marketplace_order_id]) - ->exists(); + ->one(); + if ($existingCheck && !$marketplaceOrder->check_guid) { + /* @var $existingCheck CreateChecks */ + $marketplaceOrder->check_guid = $existingCheck->check_id; + if (!$marketplaceOrder->save()) { + Yii::warning("Ошибка сохранения check_guid для заказа" . $marketplaceOrder->id . ' ' . Json::encode($marketplaceOrder->getErrors())); + } + } if (!$existingCheck && !empty($marketplaceOrder->seller_id)) { - Yii::error('Сохранение ' . $marketplaceOrder->marketplace_order_id); $createChecks = new CreateChecks; $createChecks->order_guid = $marketplaceOrder->guid; $createChecks->marketplace_order_id = $marketplaceOrder->marketplace_order_id; @@ -2465,9 +2470,9 @@ class MarketplaceService ]) ->one(); $createChecks->store_id = $eit->export_val ?? ''; - $createChecks->date_up = $marketplaceOrder->delivery_to; + $createChecks->delivery_date = $marketplaceOrder->delivery_to; $createChecks->check_id = DataHelper::createGuidMy('02'); - $createChecks->guid = $createChecks->check_id; + $createChecks->type = 'Продажа'; $items = []; foreach ($marketplaceOrder->items as $item) { @@ -2495,11 +2500,17 @@ class MarketplaceService $createChecks->seller_id = $marketplaceOrder->seller_id; if ($createChecks->save()) { + $marketplaceOrder->check_guid = $createChecks->check_id; + if (!$marketplaceOrder->save()) { + Yii::warning("Ошибка сохранения check_guid для заказа" . $marketplaceOrder->id . ' ' . Json::encode($marketplaceOrder->getErrors())); + } return true; } else { - Yii::warning("ORDER_ID_: " . Json::encode($createChecks->getErrors())); + Yii::warning("Ошибка создания чека для заказа id" . $marketplaceOrder->id . ' ' . Json::encode($createChecks->getErrors())); } } + + return false; } diff --git a/erp24/views/marketplace-orders/index.php b/erp24/views/marketplace-orders/index.php index 2807dd07..103693eb 100644 --- a/erp24/views/marketplace-orders/index.php +++ b/erp24/views/marketplace-orders/index.php @@ -76,7 +76,8 @@ YiiAsset::register($this); 'format' => 'raw', // добавляем raw формат 'value' => function ($model) { return Html::tag('span', $model->store->name ?? '-', ['class' => ""]) . '
' . - Html::tag('span', MarketplaceStore::getWarehouseId()[$model->mpstore->warehouse_id], ['class' => "bg-success text-white"]); + Html::tag('span', MarketplaceStore::getWarehouseId()[$model->mpstore->warehouse_id], ['class' => "bg-success text-white"]) + . '
' . Html::tag('span', $model->warehouse_guid ?? '-', ['class' => ""]); }, 'filter' => Html::input('text', 'MarketplaceOrdersSearch[store_name]', $searchModel->store_name, ['class' => 'form-control']), ], @@ -129,7 +130,7 @@ YiiAsset::register($this); }, 'filter' => Html::input('text', 'MarketplaceOrdersSearch[substatus_code]', $searchModel->substatus_code, ['class' => 'form-control']), ], - 'warehouse_guid', + // 'warehouse_guid', 'marketplace_name', 'creation_date', 'created_at', @@ -142,6 +143,7 @@ YiiAsset::register($this); //'cancel_requested', //'raw_data:ntext', 'guid', + [ 'attribute' => 'status_1c', 'value' => function ($model) { @@ -160,6 +162,34 @@ YiiAsset::register($this); return $model->readyto_1c == 0 ? 'Не готов' : 'Готов'; } ], + [ + 'attribute' => 'check_guid', + 'label' => 'Статус чека', + 'format' => 'raw', + 'value' => function ($model) { + if (!$model->seller_id) { + return 'Не создан. Ждем seller_id'; + } + + if (!$model->check_guid) { + return 'Не создан. Есть seller_id'; + } + + $check = $model->check; + if ($check->status == 0) { + return 'Создан в ERP'; + } + + if ($check->status == 1) { + return $check->guid + ? 'Создан в 1С' + : 'Отправлен в 1С'; + } + + return '-'; + }, + + ], [ 'template' => '{view}', 'class' => ActionColumn::class, diff --git a/erp24/views/marketplace-orders/view.php b/erp24/views/marketplace-orders/view.php index cb06fca4..c6ffae9b 100644 --- a/erp24/views/marketplace-orders/view.php +++ b/erp24/views/marketplace-orders/view.php @@ -88,6 +88,35 @@ $this->params['breadcrumbs'][] = $this->title; ], 'error_text', 'number_1c', + 'check_guid', + [ + 'attribute' => 'check_guid', + 'label' => 'Статус чека', + 'format' => 'raw', + 'value' => function ($model) { + if (!$model->seller_id) { + return 'Не создан. Ждем seller_id'; + } + + if (!$model->check_guid) { + return 'Не создан. Есть seller_id'; + } + + $check = $model->check; + if ($check->status == 0) { + return 'Создан в ERP'; + } + + if ($check->status == 1) { + return $check->guid + ? 'Создан в 1С' + : 'Отправлен в 1С'; + } + + return '-'; + }, + + ], 'telegram_error', [ 'attribute' => 'status_processing_1c', -- 2.39.5