Починил импорт + доставка в тот же город
This commit is contained in:
parent
82d6747425
commit
4da846825b
|
@ -740,30 +740,39 @@ class OrderController extends Controller
|
||||||
avia: $order_edge_supply->dlvr['type'] === 'avia'
|
avia: $order_edge_supply->dlvr['type'] === 'avia'
|
||||||
);
|
);
|
||||||
|
|
||||||
// Инициализация даты отправки
|
if ($delivery['ready'] ?? false) {
|
||||||
try {
|
// Указана дата готовности к получению
|
||||||
// Взять данные из "arrivalToOspSender" (Дата прибытия на терминал-отправитель)
|
|
||||||
|
|
||||||
$delivery_send_date = DateTime::createFromFormat('Y-m-d', $delivery['orderDates']['arrivalToOspSender'])->getTimestamp();
|
// Инициализация доставки
|
||||||
} catch (Throwable $e) {
|
$delivery = $delivery['ready'];
|
||||||
// Взять данные из "pickup" (Дата передачи груза на адресе отправителя)
|
} 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) {
|
} catch (Exception $e) {
|
||||||
// var_dump($e->getMessage());
|
// var_dump($e->getMessage());
|
||||||
// var_dump($e->getTrace());
|
// var_dump($e->getTrace());
|
||||||
|
|
|
@ -7,8 +7,9 @@ namespace app\models;
|
||||||
use yii;
|
use yii;
|
||||||
|
|
||||||
use app\models\traits\SearchByEdge;
|
use app\models\traits\SearchByEdge;
|
||||||
use app\models\connection\Dellin;
|
use app\models\Dellin as DellinModel;
|
||||||
use app\models\Settings;
|
use app\models\Settings;
|
||||||
|
use app\models\connection\Dellin;
|
||||||
|
|
||||||
use datetime;
|
use datetime;
|
||||||
use exception;
|
use exception;
|
||||||
|
@ -192,7 +193,7 @@ class Search extends Document
|
||||||
$connection['product'] = Product::searchBySupplyId($connection['supply_edge_product'][0]['_from']);
|
$connection['product'] = Product::searchBySupplyId($connection['supply_edge_product'][0]['_from']);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Инициализация данных геолокации
|
// Доставка "auto"
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$from = (int) (Warehouse::searchBySupply(Supply::searchByCatn($connection['supply']['catn']))[0]->trmn ?? Settings::searchActive()?->delivery_from_default ?? 36);
|
$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;
|
$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;
|
$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'] = $buffer_connection['data'];
|
||||||
$connection['delivery']['type'] = 'auto';
|
$connection['delivery']['type'] = 'auto';
|
||||||
|
@ -262,8 +271,8 @@ class Search extends Document
|
||||||
// var_dump(json_decode($e->getMessage(), true)['errors']);
|
// var_dump(json_decode($e->getMessage(), true)['errors']);
|
||||||
// die;
|
// die;
|
||||||
} finally {
|
} 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);
|
$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;
|
$buffer_delivery_avia = $connection;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Инициализация данных геолокации
|
// Доставка "avia"
|
||||||
|
|
||||||
if ($cost = $connection['supply']['cost'] < 1) {
|
if ($cost = $connection['supply']['cost'] < 1) {
|
||||||
// Цена меньше единицы (подразумевается как ошибка)
|
// Цена меньше единицы (подразумевается как ошибка)
|
||||||
|
@ -296,6 +305,8 @@ class Search extends Document
|
||||||
$to = 36;
|
$to = 36;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Доставка в другие города
|
||||||
|
|
||||||
// Инициализация буфера доставки
|
// Инициализация буфера доставки
|
||||||
$buffer_connection = $connection['product']['bffr']["$from-$to-avia"] ?? null;
|
$buffer_connection = $connection['product']['bffr']["$from-$to-avia"] ?? null;
|
||||||
|
|
||||||
|
@ -358,6 +369,9 @@ class Search extends Document
|
||||||
$buffer_connections[] = $buffer_delivery_avia;
|
$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>'
|
default => '<i class="mr-1 fas fa-truck"></i>'
|
||||||
};
|
};
|
||||||
|
|
||||||
// Инициализация даты отправки
|
if ($delivery['ready'] ?? false) {
|
||||||
try {
|
// Указана дата готовности к получению
|
||||||
// Взять данные из "arrivalToOspSender" (Дата прибытия на терминал-отправитель)
|
|
||||||
|
|
||||||
$delivery_send_date = datetime::createFromFormat('Y-m-d', $delivery['orderDates']['arrivalToOspSender'])->getTimestamp();
|
// Инициализация доставки
|
||||||
} catch (throwable $e) {
|
$delivery = $delivery['ready'];
|
||||||
// Взять данные из "pickup" (Дата передачи груза на адресе отправителя)
|
} 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) {
|
foreach ($analogs as $_supply) {
|
||||||
// Перебор аналогов (если найдены)
|
// Перебор аналогов (если найдены)
|
||||||
|
|
||||||
// Запись поставки
|
// Запись поставки
|
||||||
$create($_supply);
|
$create((string) $_supply);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue