$marketplaceOrder->save();
$updatedOrdersCount += 1;
// Обновление истории статусов, если изменился статус
- $statusHistoryRecord = MarketplaceOrderStatusHistory::find()->where(['order_id' => $marketplaceOrder->id])->one();
+ $statusHistoryRecord = MarketplaceOrderStatusHistory::find()
+ ->where(['order_id' => $marketplaceOrder->id])
+ ->andWhere(['active' => 1])
+ ->one();
if (
$statusHistoryRecord &&
($statusHistoryRecord->status_id !== (int)$statusId ||
}
}
- public static function getFlowwowOrdersFromMail($date = null, $useSince = false, $useAlternateMailbox = false, $progressCallback = null, $seen = false)
- {
+ public static function getFlowwowOrdersFromMail(
+ $date = null,
+ $useSince = false,
+ $useAlternateMailbox = false,
+ $progressCallback = null,
+ $seen = false
+ ) {
set_time_limit(300);
// Устанавливаем таймауты IMAP
imap_timeout(IMAP_OPENTIMEOUT, 120);
$searchCriteria = '';
$searchCriteria .= ($useSince ? 'SINCE ' : 'ON ');
-
if (!$date) {
$date = date('d-M-Y');
$searchCriteria .= '"' . $date . '" ';
if ($messages) {
foreach ($messages as $message) {
$store = MarketplaceStore::getWarehouseGuidByAccountEmail($message['to']) ?? 206008;
- // Yii::warning('Message' . json_encode($message, JSON_UNESCAPED_UNICODE));
+
$order = self::getOrdersDataFromMessage($message);
- Yii::warning('Order' . json_encode($order, JSON_UNESCAPED_UNICODE));
+
if ($message['subject_index'] == self::SUBJECT_INDEX[self::SUBJECT_NEW]) {
$statusCode = 'PROCESSING';
$substatusCode = 'STARTED';
} elseif ($message['subject_index'] == self::SUBJECT_INDEX[self::SUBJECT_DELIVERED]) {
$statusCode = 'DELIVERED';
$substatusCode = 'DELIVERY_SERVICE_DELIVERED';
- } else {
- $statusCode = 'PROCESSING';
- $substatusCode = 'STARTED';
}
$count += self::processFlowwowOrders($order, $store, $statusCode, $substatusCode, $message['subject_index']);
}
return $count;
}
- public static function getOrdersDataFromMessage($message) {
+ public static function getOrdersDataFromMessage($message)
+ {
$html = $message['body'];
- // Yii::warning('Message body' . $html);
$orderDetails = null;
$order = null;
if (!empty($html)) {
// Декодируем HTML-сущности
$html = html_entity_decode($html, ENT_COMPAT, 'UTF-8');
- // Удаляем лишние пробелы и переносы строк
- // $html = preg_replace('/\s+/', ' ', $html);
- // Yii::warning('Message body' . $html);
-
$doc = new HtmlDomParser($html);
$orderNumber = '';
$main = $doc->findOneOrFalse("body");
$orderDetails['number'] = $orderNumber;
$orderDetails['date'] = $message['date'];
$deliveryText = '';
- $commentText = '';
$clientText = '';
- $recipientText = '';
$orderItems = [];
- $orderLink = '';
+
$linkBlock = $main->findOneOrFalse('a:contains("Перейти в заказ ")');
if ($linkBlock) {