Починил импорт + доставка в тот же город

This commit is contained in:
Arsen Mirzaev Tatyano-Muradovich 2022-03-11 08:39:10 +10:00
parent 82d6747425
commit 4da846825b
3 changed files with 88 additions and 55 deletions

View File

@ -740,30 +740,39 @@ class OrderController extends Controller
avia: $order_edge_supply->dlvr['type'] === 'avia'
);
// Инициализация даты отправки
try {
// Взять данные из "arrivalToOspSender" (Дата прибытия на терминал-отправитель)
if ($delivery['ready'] ?? false) {
// Указана дата готовности к получению
$delivery_send_date = DateTime::createFromFormat('Y-m-d', $delivery['orderDates']['arrivalToOspSender'])->getTimestamp();
} catch (Throwable $e) {
// Взять данные из "pickup" (Дата передачи груза на адресе отправителя)
// Инициализация доставки
$delivery = $delivery['ready'];
} else {
// Не указана дата готовности к получению
$delivery_send_date = DateTime::createFromFormat('Y-m-d', $delivery['orderDates']['pickup'])->getTimestamp();
// Инициализация даты отправки
try {
// Взять данные из "arrivalToOspSender" (Дата прибытия на терминал-отправитель)
$delivery_send_date = DateTime::createFromFormat('Y-m-d', $delivery['orderDates']['arrivalToOspSender'])->getTimestamp();
} catch (Throwable $e) {
// Взять данные из "pickup" (Дата передачи груза на адресе отправителя)
$delivery_send_date = DateTime::createFromFormat('Y-m-d', $delivery['orderDates']['pickup'])->getTimestamp();
}
// Инициализация времени доставки
try {
// Доставка по воздуху (подразумевается), данные из "giveoutFromOspReceiver" (Дата и время, с которого груз готов к выдаче на терминале)
$delivery_converted = DateTime::createFromFormat('Y-m-d H:i:s', $delivery['orderDates']['giveoutFromOspReceiver'])->getTimestamp();
} catch (Throwable $e) {
// Автоматическая доставка (подразумевается), данные из "arrivalToOspReceiver" (Дата прибытия натерминал-получатель)
$delivery_converted = DateTime::createFromFormat('Y-m-d', $delivery['orderDates']['arrivalToOspReceiver'])->getTimestamp();
}
// Инициализация доставки
$delivery = ceil(($delivery_converted - ($delivery_send_date ?? 0)) / 60 / 60 / 24) + 1;
}
// Инициализация времени доставки
try {
// Доставка по воздуху (подразумевается), данные из "giveoutFromOspReceiver" (Дата и время, с которого груз готов к выдаче на терминале)
$delivery_converted = DateTime::createFromFormat('Y-m-d H:i:s', $delivery['orderDates']['giveoutFromOspReceiver'])->getTimestamp();
} catch (Throwable $e) {
// Автоматическая доставка (подразумевается), данные из "arrivalToOspReceiver" (Дата прибытия натерминал-получатель)
$delivery_converted = DateTime::createFromFormat('Y-m-d', $delivery['orderDates']['arrivalToOspReceiver'])->getTimestamp();
}
// Рассчет времени доставки
$delivery = ceil(($delivery_converted - ($delivery_send_date ?? 0)) / 60 / 60 / 24) + 1;
} catch (Exception $e) {
// var_dump($e->getMessage());
// var_dump($e->getTrace());

View File

@ -7,8 +7,9 @@ namespace app\models;
use yii;
use app\models\traits\SearchByEdge;
use app\models\connection\Dellin;
use app\models\Dellin as DellinModel;
use app\models\Settings;
use app\models\connection\Dellin;
use datetime;
use exception;
@ -192,7 +193,7 @@ class Search extends Document
$connection['product'] = Product::searchBySupplyId($connection['supply_edge_product'][0]['_from']);
try {
// Инициализация данных геолокации
// Доставка "auto"
try {
$from = (int) (Warehouse::searchBySupply(Supply::searchByCatn($connection['supply']['catn']))[0]->trmn ?? Settings::searchActive()?->delivery_from_default ?? 36);
@ -206,6 +207,21 @@ class Search extends Document
$to = 36;
}
if (DellinModel::searchByTerminalId($from)->data['cityID'] === DellinModel::searchByTerminalId($to)->data['cityID']) {
// Доставка в пределах города
$connection['delivery'] = [
'price' => [
'all' => 1
],
'ready' => 1,
'type' => 'auto'
];
goto skip_avia;
}
// Доставка в другие города
// Инициализация буфера доставки
$buffer_connection = $connection['product']['bffr']["$from-$to"] ?? null;
@ -213,13 +229,6 @@ class Search extends Document
// Найдены данные доставки в буфере
// и срок хранения не превышен, информация актуальна
// var_dump($buffer_connection);
// var_dump(isset($buffer_connection['data']));
// var_dump(isset($buffer_connection));
// var_dump(time() < $buffer_connection['expires'] ?? 0);
// var_dump(isset($buffer_connection) && time() < $buffer_connection['expires'] ?? 0);
// die;
// Запись в буфер вывода
$connection['delivery'] = $buffer_connection['data'];
$connection['delivery']['type'] = 'auto';
@ -262,8 +271,8 @@ class Search extends Document
// var_dump(json_decode($e->getMessage(), true)['errors']);
// die;
} finally {
// echo $connection['delivery']['price']['all'];
// Инициализация цены (цена поставки + цена доставки + наша наценка)
// echo $connection['delivery']['price']['all'];
// Инициализация цены (цена поставки + цена доставки + наша наценка)
$connection['cost'] = $cost + ($connection['delivery']['price']['all'] ?? $connection['delivery']['price']['one'] ?? 0) + ($settings['increase'] ?? 0);
}
@ -271,7 +280,7 @@ class Search extends Document
$buffer_delivery_avia = $connection;
try {
// Инициализация данных геолокации
// Доставка "avia"
if ($cost = $connection['supply']['cost'] < 1) {
// Цена меньше единицы (подразумевается как ошибка)
@ -296,6 +305,8 @@ class Search extends Document
$to = 36;
}
// Доставка в другие города
// Инициализация буфера доставки
$buffer_connection = $connection['product']['bffr']["$from-$to-avia"] ?? null;
@ -358,6 +369,9 @@ class Search extends Document
$buffer_connections[] = $buffer_delivery_avia;
}
}
// Пропуск доставки "avia"
skip_avia:
}
@ -513,29 +527,39 @@ class Search extends Document
default => '<i class="mr-1 fas fa-truck"></i>'
};
// Инициализация даты отправки
try {
// Взять данные из "arrivalToOspSender" (Дата прибытия на терминал-отправитель)
if ($delivery['ready'] ?? false) {
// Указана дата готовности к получению
$delivery_send_date = datetime::createFromFormat('Y-m-d', $delivery['orderDates']['arrivalToOspSender'])->getTimestamp();
} catch (throwable $e) {
// Взять данные из "pickup" (Дата передачи груза на адресе отправителя)
// Инициализация доставки
$delivery = $delivery['ready'];
} else {
// Не указана дата готовности к получению
$delivery_send_date = datetime::createFromFormat('Y-m-d', $delivery['orderDates']['pickup'])->getTimestamp();
// Инициализация даты отправки
try {
// Взять данные из "arrivalToOspSender" (Дата прибытия на терминал-отправитель)
$delivery_send_date = datetime::createFromFormat('Y-m-d', $delivery['orderDates']['arrivalToOspSender'])->getTimestamp();
} catch (throwable $e) {
// Взять данные из "pickup" (Дата передачи груза на адресе отправителя)
$delivery_send_date = datetime::createFromFormat('Y-m-d', $delivery['orderDates']['pickup'])->getTimestamp();
}
// Инициализация времени доставки
try {
// Доставка по воздуху (подразумевается), данные из "giveoutFromOspReceiver" (Дата и время, с которого груз готов к выдаче на терминале)
$delivery_converted = @datetime::createFromFormat('Y-m-d H:i:s', $delivery['orderDates']['giveoutFromOspReceiver'])->getTimestamp();
} catch (Throwable $e) {
// Автоматическая доставка (подразумевается), данные из "arrivalToOspReceiver" (Дата прибытия натерминал-получатель)
$delivery_converted = @datetime::createFromFormat('Y-m-d', $delivery['orderDates']['arrivalToOspReceiver'])->getTimestamp();
}
// Инициализация доставки
$delivery = ceil(($delivery_converted - ($delivery_send_date ?? 0)) / 60 / 60 / 24) + 1;
}
// Инициализация времени доставки
try {
// Доставка по воздуху (подразумевается), данные из "giveoutFromOspReceiver" (Дата и время, с которого груз готов к выдаче на терминале)
$delivery_converted = datetime::createFromFormat('Y-m-d H:i:s', $delivery['orderDates']['giveoutFromOspReceiver'])->getTimestamp();
} catch (Throwable $e) {
// Автоматическая доставка (подразумевается), данные из "arrivalToOspReceiver" (Дата прибытия натерминал-получатель)
$delivery_converted = datetime::createFromFormat('Y-m-d', $delivery['orderDates']['arrivalToOspReceiver'])->getTimestamp();
}
$delivery = ceil(($delivery_converted - ($delivery_send_date ?? 0)) / 60 / 60 / 24) + 1;
}
// Инициализация индекса аккаунта

View File

@ -650,13 +650,13 @@ class Supply extends Product implements ProductInterface, OfferInterface
};
// Запись поставки
$create($article);
$create((string) $article);
foreach ($analogs as $_supply) {
// Перебор аналогов (если найдены)
// Запись поставки
$create($_supply);
$create((string) $_supply);
}
}
}