]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Поле - готовность к отправке в 1с
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Fri, 25 Apr 2025 10:26:32 +0000 (13:26 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Fri, 25 Apr 2025 10:26:32 +0000 (13:26 +0300)
erp24/api2/controllers/DataController.php
erp24/migrations/m250425_084749_add_column_readyto_1c_to_marketplace_orders_table.php [new file with mode: 0644]
erp24/services/MarketplaceService.php
erp24/views/marketplace-orders/index.php
erp24/views/marketplace-orders/view.php

index ba47d82e1089763344fd89f502cfab1e6bf54327..0215f131c42b5cdee6671e6ffb0c21c4b41d21cb 100644 (file)
@@ -755,7 +755,9 @@ class DataController extends BaseController
         $marketplaceOrders = MarketplaceOrders::find()->with('items')
             ->where([
                 'status_1c' => MarketplaceOrders::STATUSES_1C_CREATED_IN_ERP
-            ])->andWhere([
+            ])
+            ->andWhere(['readyto_1c' => 1])
+            ->andWhere([
                 'between',
                 'creation_date',
                 date('Y-m-d 00:00:00', strtotime('-3 weeks', time())),
@@ -787,6 +789,15 @@ class DataController extends BaseController
                 $marketplaceOrderDelivery = MarketplaceOrderDelivery::find()->where(['order_id' => $marketplaceOrder->id])->one();
                 /* @var $marketplaceOrderDelivery MarketplaceOrderDelivery */
                 $delivery_type = $marketplaceOrderDelivery && $marketplaceOrderDelivery->type == 'DELIVERY' ? 1 : 2;
+
+                $deliveryToDate = null;
+                $deliveryToTime = null;
+                if ($marketplaceOrder->delivery_to) {
+                    $deliveryTo = explode(' ', $marketplaceOrder->delivery_to);
+                    $deliveryToDate = $deliveryTo[0];
+                    $deliveryToTime = $deliveryTo[1];
+                }
+
                 $result[] = [
                     'id' => $marketplaceOrder->guid,
                     'store_id' => $store_id,
@@ -799,8 +810,8 @@ class DataController extends BaseController
                     'marketplace_name' => $marketplaceOrder->marketplace_name ?? 'ЯндексМаркет',
                     'link' => $marketplaceOrder->order_link ?? '',
                     'order_number' => $marketplaceOrder->marketplace_order_id,
-                    'delivery_date' => '',
-                    'delivery_time' => '',
+                    'delivery_date' => $deliveryToDate ?? '',
+                    'delivery_time' => $deliveryToTime ?? '',
                     'delivery_type' => $delivery_type,
                     'items' => $itemsFiltered,
 //                'marketplace_order_id' => $marketplaceOrder->marketplace_order_id,
diff --git a/erp24/migrations/m250425_084749_add_column_readyto_1c_to_marketplace_orders_table.php b/erp24/migrations/m250425_084749_add_column_readyto_1c_to_marketplace_orders_table.php
new file mode 100644 (file)
index 0000000..8b4cdf9
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+
+use yii\db\Migration;
+
+class m250425_084749_add_column_readyto_1c_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('readyto_1c')) {
+            $this->addColumn(
+                self::TABLE_NAME,
+                'readyto_1c',
+                $this->tinyInteger()->defaultValue(0)->comment('готовность к отправке в 1С'),
+            );
+        }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function safeDown()
+    {
+        if ($this->db->schema->getTableSchema(self::TABLE_NAME, true)->getColumn('readyto_1c')) {
+            $this->dropColumn(self::TABLE_NAME, 'readyto_1c');
+        }
+    }
+
+    /*
+    // Use up()/down() to run migration code without a transaction.
+    public function up()
+    {
+
+    }
+
+    public function down()
+    {
+        echo "m250425_084749_add_column_readyto_1c_to_marketplace_orders_table cannot be reverted.\n";
+
+        return false;
+    }
+    */
+}
index 9bfe7f4cbceacc6d65d60a8642a88cc38ac096cf..e458097249a1fd1342da88ab2416fffae5694342 100644 (file)
@@ -1071,6 +1071,24 @@ class MarketplaceService
                                     $deliveryModel->longitude = $gps->getLongitude();
                                 }
                             }
+                            $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
+                                            )
+                                        );
+                                    }
+                                }
+
+                            }
                             $dates = $delivery->getDates();
                             if ($dates) {
                                 $deliveryModel->delivery_start = date(
@@ -1154,6 +1172,25 @@ class MarketplaceService
                         $marketplaceOrder->status_id = (int)$statusId;
                         $marketplaceOrder->substatus_id = (int)$substatusId;
                         $marketplaceOrder->updated_at = date('Y-m-d H:i:s', strtotime($order->getUpdatedAt()));
+                        $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
+                                        )
+                                    );
+                                }
+                            }
+
+                        }
                         if (!$marketplaceOrder->save()) {
                             Yii::error(
                                 'Ошибка сохранения: ' . json_encode(
index 7dac5b90d93ba805b15684d257307a4285b7ab1e..e0d38e727266f883dd9ce84d9d39f9195eb0ae7a 100644 (file)
@@ -154,6 +154,12 @@ YiiAsset::register($this);
                     return $model->status1c->status ?? null;
                 }
             ],
+            [
+                'attribute' => 'readyto_1c',
+                'value' => function ($model) {
+                    return $model->readyto_1c == 0 ? 'Не готов' : 'Готов';
+                }
+            ],
             [
                     'template' => '{view}',
                 'class' => ActionColumn::class,
index b0e2f01fd172a1924892954ea153b57a67a12f93..c531d3f69ab2feffae938bbe081cbb7b7965f873 100644 (file)
@@ -70,6 +70,12 @@ $this->params['breadcrumbs'][] = $this->title;
             'guid',
             'marketplace_name',
             'marketplace_id',
+            [
+                'attribute' => 'readyto_1c',
+                'value' => function ($model) {
+                    return $model->readyto_1c == 0 ? 'Не готов' : 'Готов';
+                }
+            ],
             [
                 'attribute' => 'status_1c',
                 'value' => function ($model) {