Починил импорт + доставка в тот же город
This commit is contained in:
parent
82d6747425
commit
4da846825b
|
@ -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());
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
// Инициализация индекса аккаунта
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Reference in New Issue