From: fomichev Date: Fri, 25 Apr 2025 10:26:32 +0000 (+0300) Subject: Поле - готовность к отправке в 1с X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=f172ee7afe23c60186d4a6ac99390fbe4eca66ef;p=erp24_rep%2Fyii-erp24%2F.git Поле - готовность к отправке в 1с --- diff --git a/erp24/api2/controllers/DataController.php b/erp24/api2/controllers/DataController.php index ba47d82e..0215f131 100644 --- a/erp24/api2/controllers/DataController.php +++ b/erp24/api2/controllers/DataController.php @@ -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 index 00000000..8b4cdf92 --- /dev/null +++ b/erp24/migrations/m250425_084749_add_column_readyto_1c_to_marketplace_orders_table.php @@ -0,0 +1,51 @@ +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; + } + */ +} diff --git a/erp24/services/MarketplaceService.php b/erp24/services/MarketplaceService.php index 9bfe7f4c..e4580972 100644 --- a/erp24/services/MarketplaceService.php +++ b/erp24/services/MarketplaceService.php @@ -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( diff --git a/erp24/views/marketplace-orders/index.php b/erp24/views/marketplace-orders/index.php index 7dac5b90..e0d38e72 100644 --- a/erp24/views/marketplace-orders/index.php +++ b/erp24/views/marketplace-orders/index.php @@ -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, diff --git a/erp24/views/marketplace-orders/view.php b/erp24/views/marketplace-orders/view.php index b0e2f01f..c531d3f6 100644 --- a/erp24/views/marketplace-orders/view.php +++ b/erp24/views/marketplace-orders/view.php @@ -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) {