private function getMarketplaceNewOrders(): array {
$marketplaceOrders = MarketplaceOrders::find()
->where([
- 'status_1c' => 1,
+ 'status_1c' => MarketplaceOrders::STATUSES_1C_CREATED_IN_ERP,
'status_id' => 1,
])->andWhere([
'between',
// 'cancel_requested' => $marketplaceOrder->cancel_requested,
// 'raw_data' => $marketplaceOrder->raw_data,
];
- $marketplaceOrder->status_1c = WriteOffsErp::STATUS_SEND;
+ $marketplaceOrder->status_1c = MarketplaceOrders::STATUSES_1C_SENDED_TO_1C;
$marketplaceOrder->save();
}
return $result;
}
}
- $marketplaceOrders->status_1c = WriteOffsErp::STATUS_ERROR_1С;
+ $marketplaceOrders->status_1c = MarketplaceOrders::STATUSES_1C_ERROR_1С;
$marketplaceOrders->error_text = $errorText;
$marketplaceOrders->save();
if ($marketplaceOrders->getErrors()) {
} else {
if (isset($arr["held"]) && $arr["held"]) {
$marketplaceOrders->number_1c = $arr["number"] ?? '';
- $marketplaceOrders->status_1c = WriteOffsErp::STATUS_CREATED_1С;
+ $marketplaceOrders->status_1c = MarketplaceOrders::STATUSES_1C_CREATED_IN_1C;
$marketplaceOrders->save();
if ($marketplaceOrders->getErrors()) {
LogService::apiErrorLog(
class OrdersController extends BaseController
{
- const OUT_DIR =
- //"/www/api2/json";
- "/var/www/erp24/api2/json";
private static function getPath()
{
return dirname(__DIR__, 1);
}
$marketplaceId = $order->marketplace_id;
- $status1CRecord = MarketplaceOrder1cStatuses::find()
+ $statusId1C = MarketplaceOrder1cStatuses::find()
->where(['marketplace_id' => $marketplaceId])
->andWhere(['status' => $orderStatus])
- ->one();
- if (empty($status1CRecord)) {
+ ->one()->id;
+ if (empty($statusId1C)) {
$mess["result"] = 'error';
$mess["message_order"] = "Статус не найден";
LogService::apiLogs(1, json_encode($mess, JSON_UNESCAPED_UNICODE));
Yii::error('Ошибка: такого статуса не существует' . $orderStatus, __METHOD__);
return $this->asJson($mess);
}
- $statusId1C = (int)$status1CRecord->status_id;
// Получаем статусы МП по статусу 1С
$orderStatus1CToCodes = MarketplaceOrders::getStatusCodes($orderStatus);
'cancel_requested' => $this->tinyInteger()->notNull()->defaultValue(0)->comment('Флаг запроса отмены'),
'raw_data' => $this->text()->comment('Полный сырой ответ API'),
'guid' => $this->string(36)->null()->comment('GUID заказа в 1С'),
- 'status_1c' => $this->integer()->defaultValue(1)->comment('Статус заказа в 1С'),
+ 'status_1c' => $this->integer()->null()->comment('Статус заказа в 1С'),
]);
}
}
const STATUS_TELEGRAM_SENT = 2;
const STATUS_TELEGRAM_ERROR = 8;
- const STATUSES_1C_CREATED_IN_ERP = 1;
- const STATUSES_1C_CREATED_IN_1C = 2;
+ const STATUSES_1C_ERROR_1С = -3;
+ const STATUSES_1C_CREATED_IN_ERP = -2;
+ const STATUSES_1C_SENDED_TO_1C = -1;
+ const STATUSES_1C_CREATED_IN_1C = 0;
const STATUSES_1C = [
self::STATUSES_1C_CREATED_IN_ERP => 'Создан в ЕРП',
+ self::STATUSES_1C_SENDED_TO_1C => 'Отправлен в 1C',
self::STATUSES_1C_CREATED_IN_1C => 'Создан в 1C',
];
return [
[['store_id', 'warehouse_guid', 'returned_at', 'return_data', 'raw_data', 'guid'], 'default', 'value' => null],
[['cancel_requested', 'status_telegram'], 'default', 'value' => 0],
- [['status_1c'], 'default', 'value' => 1000],
[['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'], 'default', 'value' => null],
[[ 'fake'], 'default', 'value' => 0],
public function getStatus1c()
{
- return $this->hasOne(MarketplaceOrder1cStatuses::class, ['status_id' => 'status_1c']);
+ return $this->hasOne(MarketplaceOrder1cStatuses::class, ['id' => 'status_1c']);
}
use yii_app\records\Balances;
use yii_app\records\Images;
use yii_app\records\MarketplaceFlowwowEmails;
+use yii_app\records\MarketplaceOrder1cStatuses;
use yii_app\records\MarketplaceOrderDelivery;
use yii_app\records\MarketplaceOrderItems;
use yii_app\records\MarketplaceOrders;
}
public static function processOrders(array $allOrders)
- {
+ { // Обработка заказов от Яндекса
$statuses = MarketplaceOrderStatusTypes::find()
->select(['id', 'code'])
->indexBy('code')
$statusCodes = array_unique(array_keys($statuses));
$newOrdersCount = 0;
$updatedOrdersCount = 0;
+
foreach ($allOrders as $campaignId => $orders) {
foreach ($orders as $order) {
$statusCode = $order->getStatus();
$marketplaceOrder->status_id = (int)$statusId;
$marketplaceOrder->substatus_id = (int)$substatusId;
$marketplaceOrder->raw_data = $newRawData;
+ $marketplaceOrder->status_1c = MarketplaceOrders::STATUSES_1C_CREATED_IN_ERP;
if ($marketplaceOrder->save()) {
self::sendMessageToTelegram($marketplaceOrder->guid, "Тестовое сообщение для https://tracker.yandex.ru/ERP-326 из [1]");
if ($progressCallback) {
call_user_func($progressCallback, "Поиск писем в папке: $folder...");
}
- self::imap_debug_log("Поисковой запрос: {$searchCriteria}", $debugMode, $progressCallback);
+ // self::imap_debug_log("Поисковой запрос: {$searchCriteria}", $debugMode, $progressCallback);
$emails = imap_search($inbox, $searchCriteria);
- // $emails = imap_search($inbox, 'ON "05-Mar-2025"');
+
self::check_imap_errors($debugMode, $progressCallback);
if ($emails) {
self::imap_debug_log("Найдено " . count($emails) . " писем в " . $folder, $debugMode, $progressCallback);
continue;
}
$subject = mb_decode_mimeheader($overview[0]->subject);
- // $subject = mb_convert_encoding($subject, 'UTF-8', mb_detect_encoding($subject, 'UTF-8, ISO-8859-1, Windows-1251', true));
+
$subject = str_replace('_', ' ', $subject);
$from = mb_decode_mimeheader($overview[0]->from);
}
}
imap_close($inbox);
-
}
-
return ['processed' => $countProcessedMessages, 'all' => $countAllMessages];
}
$store = MarketplaceStore::find()
->where(['warehouse_guid' => (string)$campaignId])
->andWhere(['warehouse_id' => 1])->one();
+
$marketplaceOrder = new MarketplaceOrders();
$marketplaceOrder->marketplace_order_id = (string)$order['number'];
$marketplaceOrder->creation_date = date('Y-m-d H:i:s', strtotime($order['date']));
$marketplaceOrder->marketplace_name = 'ФлауВау';
$marketplaceOrder->marketplace_id = 1;
$marketplaceOrder->store_id = $store->store_id;
+ $marketplaceOrder->status_1c = MarketplaceOrders::STATUSES_1C_CREATED_IN_ERP;
return $marketplaceOrder;
}
[
'attribute' => 'status_1c',
'value' => function ($model) {
- return $model->status1c->status;
+ return $model->status1c->status ?? MarketplaceOrders::STATUSES_1C[$model->status_1c];
}
],
[
[
'attribute' => 'status_1c',
'value' => function ($model) {
- return $model->status1c->status;
+ return $model->status1c->status ?? MarketplaceOrders::STATUSES_1C[$model->status_1c];
}
],
],