]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Добавление check_guid и статуса чеков
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 25 Jun 2025 14:45:09 +0000 (17:45 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 25 Jun 2025 14:45:09 +0000 (17:45 +0300)
erp24/migrations/m250625_132614_add_check_guid_column_to_marketplace_orders_table.php [new file with mode: 0644]
erp24/records/MarketplaceOrders.php
erp24/services/MarketplaceService.php
erp24/views/marketplace-orders/index.php
erp24/views/marketplace-orders/view.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 (file)
index 0000000..5cd600b
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+
+use yii\db\Migration;
+
+/**
+ * Handles adding columns to table `{{%marketplace_orders}}`.
+ */
+class m250625_132614_add_check_guid_column_to_marketplace_orders_table extends Migration
+{
+    const TABLE_NAME = 'erp24.marketplace_orders';
+    /**
+     * {@inheritdoc}
+     */
+    public function safeUp()
+    {
+        $table = $this->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');
+        }
+    }
+}
index 18e5524b71c1eae50661f057d52d653558560446..361307f4dc3a2cb55f5ce96f0d2b4e3fff17126b 100644 (file)
@@ -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
     {
index 10211d25284aa5d0968789a314cedf225ac81ff8..566af9fee62d0f53fa6631aab2684f17b8e263df 100644 (file)
@@ -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;
     }
 
index 2807dd07df18069b9dda9bc205655f73bc42b02f..103693eb3df2d71018cd232dd33a5099786bbc59 100644 (file)
@@ -76,7 +76,8 @@ YiiAsset::register($this);
                 'format' => 'raw', // добавляем raw формат
                 'value' => function ($model) {
                     return Html::tag('span', $model->store->name ?? '-', ['class' => ""]) . '<br>' .
-                        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"])
+                        . '<br>' . 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,
index cb06fca405f40a5d239ba87bce638805e566fa77..c6ffae9b9595d3965bfb56740fcba6881984512c 100644 (file)
@@ -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',