' ' . date("d.m.Y H:i:s", time()) . ' JSON: ' . $json . ' ',
FILE_APPEND
);
+ // данные из запроса
$marketplaceGuid = $result['marketplace_id'];
$orderGuid = $result['order_id'];
$orderStatus = $result['status'];
- $mp_guids = MarketplaceOrder1cStatuses::guid2id();
- $marketplaceId = $mp_guids[$marketplaceGuid];
-
- $statusRecord = MarketplaceOrder1cStatuses::find()
- ->where(['guid' => $marketplaceGuid])
- ->andWhere(['status' => $orderStatus])
- ->one();
- $statusId = (int)$statusRecord->status_id;
-
- $orderStatus1CCodes = MarketplaceOrders::getStatusCodes($orderStatus);
+ // статусы маркетплейса
$statuses = MarketplaceOrderStatusTypes::find()
->select(['id', 'code'])
->indexBy('code')
->all();
$statuses = ArrayHelper::map($statuses, 'code', 'id');
$statusCodes = array_unique(array_keys($statuses));
- $statusId = MarketplaceService::getOrCreateStatus($orderStatus1CCodes[0], $statuses, $statusCodes);
- $substatusId = MarketplaceService::getOrCreateStatus($orderStatus1CCodes[1], $statuses, $statusCodes);
+
+ // обработка статуса от 1С
+ $mp_guids = MarketplaceOrder1cStatuses::guid2id();
+ $marketplaceId = $mp_guids[$marketplaceGuid];
+
+ $status1CRecord = MarketplaceOrder1cStatuses::find()
+ ->where(['marketplace_id' => $marketplaceId])
+ ->andWhere(['status' => $orderStatus])
+ ->one();
+ $statusId1C = (int)$status1CRecord->status_id;
+
+ // Получаем статусы МП по статусу 1С
+ $orderStatus1CToCodes = MarketplaceOrders::getStatusCodes($orderStatus);
+
+ $statusId = MarketplaceService::getOrCreateStatus($orderStatus1CToCodes[0], $statuses, $statusCodes);
+ $substatusId = MarketplaceService::getOrCreateStatus($orderStatus1CToCodes[1], $statuses, $statusCodes);
+
$order = MarketplaceOrders::find()
->where(['guid' => $orderGuid])
->one();
- if ($order && !empty($orderStatus1CCodes)) {
- $order->status_id = $statusId;
- $order->substatus_id = $substatusId;
+ if ($order) {
+ $order->status_1c = $statusId1C;
+ if (!empty($orderStatus1CToCodes)) {
+ $order->status_id = $statusId;
+ $order->substatus_id = $substatusId;
+ }
if ($order->save()) {
$orderDetails = [
'date' => date('Y-m-d H:i:s')
-
];
MarketplaceService::createOrUpdateStatusHistory($order->id, $statusId, $substatusId, $orderDetails);
+ $mess["result"] = true;
+ $mess["message_order"] = "Статус получен";
+ $mess["message_order_guid"] = $orderGuid;
+ $mess["message_status"] = $orderStatus;
+ } else {
+ Yii::error('Ошибка: ' . json_encode($order->getErrors(), JSON_UNESCAPED_UNICODE));
+ $mess["result"] = 'error';
+ $mess["message_order"] = "Ошибка сохранения статуса";
+ $mess["message_order_guid"] = $orderGuid;
+ $mess["message_status"] = $orderStatus;
}
}
//MarketplaceService::updateOrderStatus($order->warehouse_id, $order->marketplace_order_id, $orderStatus1CCodes[0], $orderStatus1CCodes[1]);
- $mess["result"] = true;
- $mess["message_order"] = "Статус получен";
- $mess["message_order_guid"] = $orderGuid;
- $mess["message_status"] = $orderStatus;
LogService::apiLogs(1, json_encode($mess, JSON_UNESCAPED_UNICODE));
file_put_contents(
self::OUT_DIR . '/changed_orders_' . $fl . '.json',
'В работе' => ["PROCESSING", "STARTED"],
'Собрано' => ["PROCESSING", "READY_TO_SHIP"],
'Передано курьеру' => ["DELIVERY", "COURIER_RECEIVED"],
+ 'Успех' => ["DELIVERED", "DELIVERY_SERVICE_DELIVERED"],
'Отказ' => ["CANCELLED", "SHOP_FAILED"],
];
return $this->hasOne(MarketplaceOrderStatusTypes::class, ['id' => 'substatus_id']);
}
- public static function getStatusCodes(int $status): array
+ public function getStatus1c()
+ {
+ return $this->hasOne(MarketplaceOrder1cStatuses::class, ['status_id' => 'status_1c']);
+ }
+
+
+ public static function getStatusCodes(string $status): array
{
return self::STATUSES_TO_CODE[$status] ?? [];
}