--- /dev/null
+<?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');
+ }
+ }
+}
* @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
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],
[['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'],
];
'order_photo' => 'Ссылка на фото собранного заказа для МП',
'created_at' => 'Время создания заказа в ERP',
'manager_link' => 'Ссылка на панели менеджера заказов',
+ 'check_guid' => 'GUID чека заказа МП',
];
}
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
{
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;
])
->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) {
$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;
}
'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']),
],
},
'filter' => Html::input('text', 'MarketplaceOrdersSearch[substatus_code]', $searchModel->substatus_code, ['class' => 'form-control']),
],
- 'warehouse_guid',
+ // 'warehouse_guid',
'marketplace_name',
'creation_date',
'created_at',
//'cancel_requested',
//'raw_data:ntext',
'guid',
+
[
'attribute' => 'status_1c',
'value' => function ($model) {
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,
],
'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',