Работа над сайтом 15
This commit is contained in:
parent
bf821a9819
commit
b3b5111006
|
@ -97,6 +97,7 @@ $config = [
|
||||||
'product/<catn:[^/]+>' => 'product/index',
|
'product/<catn:[^/]+>' => 'product/index',
|
||||||
'<section:(product|cart)>/<catn:[^/]+>/<action:(read|write|edit|delete)>/<target:(title|catn|dscr|dmns|wght|image|cover|comm)>' => '<section>/<action>-<target>',
|
'<section:(product|cart)>/<catn:[^/]+>/<action:(read|write|edit|delete)>/<target:(title|catn|dscr|dmns|wght|image|cover|comm)>' => '<section>/<action>-<target>',
|
||||||
'orders' => 'order/index',
|
'orders' => 'order/index',
|
||||||
|
'orders/<type:[^/]+>' => 'order/index',
|
||||||
'orders/<_key:[^/]+>/<action:(accept)>' => 'order/<action>',
|
'orders/<_key:[^/]+>/<action:(accept)>' => 'order/<action>',
|
||||||
'orders/supply/<_key:[^/]+>/<action:(read|write|edit|delete)>' => 'order/supply-<action>',
|
'orders/supply/<_key:[^/]+>/<action:(read|write|edit|delete)>' => 'order/supply-<action>',
|
||||||
'orders/supply/<_key:[^/]+>/<action:(read|write|edit|delete)>/<target:(stts|cost|time|comm)>' => 'order/supply-<action>-<target>',
|
'orders/supply/<_key:[^/]+>/<action:(read|write|edit|delete)>/<target:(stts|cost|time|comm)>' => 'order/supply-<action>-<target>',
|
||||||
|
|
|
@ -76,13 +76,13 @@ class AuthenticationController extends Controller
|
||||||
// Запись ответа
|
// Запись ответа
|
||||||
$return['redirect'] = '/' . $cookies['redirect'];
|
$return['redirect'] = '/' . $cookies['redirect'];
|
||||||
|
|
||||||
try {
|
// try {
|
||||||
if (empty($return['main'] = $this->renderPartial($return['redirect']))) {
|
// if (empty($return['main'] = $this->renderPartial($return['redirect']))) {
|
||||||
throw new Exception('Представление найдено, но вернуло пустой результат');
|
// throw new Exception('Представление найдено, но вернуло пустой результат');
|
||||||
}
|
// }
|
||||||
} catch (Throwable $t) {
|
// } catch (Throwable $t) {
|
||||||
$return['main'] = $this->renderPartial($return['redirect'] . '/index');
|
// $return['main'] = $this->renderPartial($return['redirect'] . '/index');
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Генерация и запись
|
// Генерация и запись
|
||||||
// $controller = 'app\\controllers\\' . ucfirst($cookies['redirect']) . 'Controller';
|
// $controller = 'app\\controllers\\' . ucfirst($cookies['redirect']) . 'Controller';
|
||||||
|
@ -91,6 +91,11 @@ class AuthenticationController extends Controller
|
||||||
|
|
||||||
// Очистка cookie
|
// Очистка cookie
|
||||||
unset(yii::$app->response->cookies['redirect']);
|
unset(yii::$app->response->cookies['redirect']);
|
||||||
|
|
||||||
|
yii::$app->response->format = Response::FORMAT_HTML;
|
||||||
|
|
||||||
|
// Переадресация
|
||||||
|
return $this->redirect($return['redirect']);
|
||||||
} else {
|
} else {
|
||||||
// Не найдено cookie с переадресацией
|
// Не найдено cookie с переадресацией
|
||||||
|
|
||||||
|
|
|
@ -90,10 +90,10 @@ class OrderController extends Controller
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function actionIndex()
|
public function actionIndex(string $type = 'all')
|
||||||
{
|
{
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$orders = Order::search(type: 'all', limit: 10, page: 1, select: '{account_edge_order, order}', supplies: true);
|
$orders = Order::search(type: $type, limit: 10, page: 1, select: '{account_edge_order, order}', supplies: true);
|
||||||
$moderator_orders = self::genOrdersForModeration();
|
$moderator_orders = self::genOrdersForModeration();
|
||||||
|
|
||||||
if (yii::$app->request->isPost) {
|
if (yii::$app->request->isPost) {
|
||||||
|
|
|
@ -31,11 +31,6 @@ class ProfileController extends Controller
|
||||||
'roles' => ['@'],
|
'roles' => ['@'],
|
||||||
'actions' => ['index', 'supplies', 'import', 'monitoring', 'readGroups']
|
'actions' => ['index', 'supplies', 'import', 'monitoring', 'readGroups']
|
||||||
],
|
],
|
||||||
[
|
|
||||||
'allow' => false,
|
|
||||||
'roles' => ['?'],
|
|
||||||
'denyCallback' => [$this, 'accessDenied']
|
|
||||||
],
|
|
||||||
[
|
[
|
||||||
'allow' => true,
|
'allow' => true,
|
||||||
'actions' => ['panel', 'panel-notification-write'],
|
'actions' => ['panel', 'panel-notification-write'],
|
||||||
|
@ -49,6 +44,11 @@ class ProfileController extends Controller
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'allow' => false,
|
||||||
|
'roles' => ['?'],
|
||||||
|
'denyCallback' => [$this, 'accessDenied']
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|
|
@ -68,10 +68,27 @@ class RegistrationController extends Controller
|
||||||
|
|
||||||
// Запись ответа
|
// Запись ответа
|
||||||
$return['redirect'] = '/' . $cookies['redirect'];
|
$return['redirect'] = '/' . $cookies['redirect'];
|
||||||
$return['main'] = $this->renderPartial($return['redirect'] . '/index');
|
|
||||||
|
// try {
|
||||||
|
// if (empty($return['main'] = $this->renderPartial($return['redirect']))) {
|
||||||
|
// throw new Exception('Представление найдено, но вернуло пустой результат');
|
||||||
|
// }
|
||||||
|
// } catch (Throwable $t) {
|
||||||
|
// $return['main'] = $this->renderPartial($return['redirect'] . '/index');
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Генерация и запись
|
||||||
|
// $controller = 'app\\controllers\\' . ucfirst($cookies['redirect']) . 'Controller';
|
||||||
|
// $action = 'action' . ucfirst($cookies['redirect_action']);
|
||||||
|
// $return['main'] = (new $controller())->$action();
|
||||||
|
|
||||||
// Очистка cookie
|
// Очистка cookie
|
||||||
unset(yii::$app->response->cookies['redirect']);
|
unset(yii::$app->response->cookies['redirect']);
|
||||||
|
|
||||||
|
yii::$app->response->format = Response::FORMAT_HTML;
|
||||||
|
|
||||||
|
// Переадресация
|
||||||
|
return $this->redirect($return['redirect']);
|
||||||
} else {
|
} else {
|
||||||
// Не найдено cookie с переадресацией
|
// Не найдено cookie с переадресацией
|
||||||
|
|
||||||
|
|
|
@ -186,6 +186,7 @@ class SearchController extends Controller
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Инициализация данных геолокации
|
// Инициализация данных геолокации
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$from = (int) $connection['account']['opts']['delivery_from_terminal'] ?? Settings::search()->delivery_from_default ?? 36;
|
$from = (int) $connection['account']['opts']['delivery_from_terminal'] ?? Settings::search()->delivery_from_default ?? 36;
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
|
@ -246,11 +247,13 @@ class SearchController extends Controller
|
||||||
$connection['cost'] = ($cost['ЦенаЗаЕдиницу'] ?? $connection['supply_edge_product'][0]['onec']['Цены']['Цена']['ЦенаЗаЕдиницу']) + ($connection['delivery']['price']['all'] ?? $connection['delivery']['price']['one'] ?? 0) + ($settings['increase'] ?? 0);
|
$connection['cost'] = ($cost['ЦенаЗаЕдиницу'] ?? $connection['supply_edge_product'][0]['onec']['Цены']['Цена']['ЦенаЗаЕдиницу']) + ($connection['delivery']['price']['all'] ?? $connection['delivery']['price']['one'] ?? 0) + ($settings['increase'] ?? 0);
|
||||||
|
|
||||||
// Инициализация версии для рассчета доставки по воздуху
|
// Инициализация версии для рассчета доставки по воздуху
|
||||||
$buffer = $connection;
|
$buffer_delivery_avia = $connection;
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Инициализация данных геолокации
|
||||||
|
|
||||||
try { // Инициализация данных геолокации
|
|
||||||
try {
|
try {
|
||||||
$from = (int) $connection['account']['opts']['delivery_from_terminal'] ?? Settings::search()->delivery_from_default ?? 36;
|
$from = (int) $buffer_delivery_avia['account']['opts']['delivery_from_terminal'] ?? Settings::search()->delivery_from_default ?? 36;
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
$from = (int) Settings::search()->delivery_from_default ?? 36;
|
$from = (int) Settings::search()->delivery_from_default ?? 36;
|
||||||
}
|
}
|
||||||
|
@ -262,41 +265,41 @@ class SearchController extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
($buffer_connection = $connection['product']['bffr']["$from-$to-avia"] ?? false)
|
($buffer_connection = $buffer_delivery_avia['product']['bffr']["$from-$to-avia"] ?? false)
|
||||||
&& time() < $buffer_connection['expires']
|
&& time() < $buffer_connection['expires']
|
||||||
) {
|
) {
|
||||||
// Найдены данные доставки в буфере
|
// Найдены данные доставки в буфере
|
||||||
// и срок хранения не превышен, информация актуальна
|
// и срок хранения не превышен, информация актуальна
|
||||||
|
|
||||||
// Запись в буфер вывода
|
// Запись в буфер вывода
|
||||||
$connection['delivery'] = $buffer_connection['data'];
|
$buffer_delivery_avia['delivery'] = $buffer_connection['data'];
|
||||||
$connection['delivery']['type'] = 'avia';
|
$buffer_delivery_avia['delivery']['type'] = 'avia';
|
||||||
} else {
|
} else {
|
||||||
// Инициализация инстанции продукта в базе данных
|
// Инициализация инстанции продукта в базе данных
|
||||||
$product = Product::searchByCatn($connection['product']['catn']);
|
$product = Product::searchByCatn($buffer_delivery_avia['product']['catn']);
|
||||||
|
|
||||||
// Инициализация доставки Dellin (автоматическая)
|
// Инициализация доставки Dellin (автоматическая)
|
||||||
$product->bffr = [
|
$product->bffr = [
|
||||||
"$from-$to-avia" => [
|
"$from-$to-avia" => [
|
||||||
'data' => $connection['delivery'] = Dellin::calcDeliveryAdvanced(
|
'data' => $buffer_delivery_avia['delivery'] = Dellin::calcDeliveryAdvanced(
|
||||||
$from,
|
$from,
|
||||||
$to,
|
$to,
|
||||||
(int) ($connection['product']['wght'] ?? 0),
|
(int) ($buffer_delivery_avia['product']['wght'] ?? 0),
|
||||||
(int) ($connection['product']['dmns']['x'] ?? 0),
|
(int) ($buffer_delivery_avia['product']['dmns']['x'] ?? 0),
|
||||||
(int) ($connection['product']['dmns']['y'] ?? 0),
|
(int) ($buffer_delivery_avia['product']['dmns']['y'] ?? 0),
|
||||||
(int) ($connection['product']['dmns']['z'] ?? 0),
|
(int) ($buffer_delivery_avia['product']['dmns']['z'] ?? 0),
|
||||||
avia: true
|
avia: true
|
||||||
),
|
),
|
||||||
'expires' => time() + 86400
|
'expires' => time() + 86400
|
||||||
]
|
]
|
||||||
] + ($product->bffr ?? []);
|
] + ($product->bffr ?? []);
|
||||||
$connection['delivery']['type'] = 'avia';
|
$buffer_delivery_avia['delivery']['type'] = 'avia';
|
||||||
|
|
||||||
// Отправка в базу данных
|
// Отправка в базу данных
|
||||||
$product->update();
|
$product->update();
|
||||||
}
|
}
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
$buffer['delivery']['error'] = true;
|
$buffer_delivery_avia['delivery']['error'] = true;
|
||||||
|
|
||||||
// var_dump($e->getMessage());
|
// var_dump($e->getMessage());
|
||||||
// var_dump($e->getTrace());
|
// var_dump($e->getTrace());
|
||||||
|
@ -306,14 +309,14 @@ class SearchController extends Controller
|
||||||
// die;
|
// die;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($buffer['delivery']['error']) || $buffer['delivery']['error'] !== true) {
|
if (!isset($buffer_delivery_avia['delivery']['error']) || $buffer_delivery_avia['delivery']['error'] !== true) {
|
||||||
// Если рассчиталась доставка самолётом
|
// Если рассчиталась доставка самолётом
|
||||||
|
|
||||||
// Инициализация цены (цена поставки + цена доставки + наша наценка)
|
// Инициализация цены (цена поставки + цена доставки + наша наценка)
|
||||||
$buffer['cost'] = ($cost['ЦенаЗаЕдиницу'] ?? $buffer['supply_edge_product'][0]['onec']['Цены']['Цена']['ЦенаЗаЕдиницу']) + ($buffer['delivery']['price']['all'] ?? $buffer['delivery']['price']['one'] ?? 0) + ($settings['increase'] ?? 0);
|
$buffer_delivery_avia['cost'] = ($cost['ЦенаЗаЕдиницу'] ?? $buffer_delivery_avia['supply_edge_product'][0]['onec']['Цены']['Цена']['ЦенаЗаЕдиницу']) + ($buffer_delivery_avia['delivery']['price']['all'] ?? $buffer_delivery_avia['delivery']['price']['one'] ?? 0) + ($settings['increase'] ?? 0);
|
||||||
|
|
||||||
// Запись в буфер
|
// Запись в буфер
|
||||||
$buffer_connections[] = $buffer;
|
$buffer_connections[] = $buffer_delivery_avia;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -548,11 +548,24 @@ class Account extends Document implements IdentityInterface, PartnerInterface
|
||||||
|
|
||||||
// Функция для конвертации цифр в буквы
|
// Функция для конвертации цифр в буквы
|
||||||
$int_to_string = function (int $target): string {
|
$int_to_string = function (int $target): string {
|
||||||
$alphabet = ['А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я'];
|
// $alphabet = ['А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я'];
|
||||||
|
$alphabet = ['А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Ю', 'Я'];
|
||||||
|
|
||||||
return $alphabet[$target];
|
return $alphabet[$target];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Реестр запрещённых индексов
|
||||||
|
$registry = [
|
||||||
|
'ЧМО',
|
||||||
|
'ХЕР',
|
||||||
|
'ХУЙ',
|
||||||
|
'БЛЯ',
|
||||||
|
'СУК',
|
||||||
|
'СУЧ',
|
||||||
|
'ЖОП',
|
||||||
|
'ЛОХ'
|
||||||
|
];
|
||||||
|
|
||||||
foreach ($accounts as $account) {
|
foreach ($accounts as $account) {
|
||||||
// Перебор запрошенных аккаунтов
|
// Перебор запрошенных аккаунтов
|
||||||
|
|
||||||
|
@ -560,11 +573,18 @@ class Account extends Document implements IdentityInterface, PartnerInterface
|
||||||
// Запись только тех аккаунтов у кого не инициализирован индекс или если указано отсутствие проверки
|
// Запись только тех аккаунтов у кого не инициализирован индекс или если указано отсутствие проверки
|
||||||
|
|
||||||
// Повтор генерации
|
// Повтор генерации
|
||||||
regenerate:
|
regenerate_index:
|
||||||
|
|
||||||
// Генерация
|
// Генерация
|
||||||
$account->indx = $int_to_string(random_int(0, 32)) . $int_to_string(random_int(0, 32)) . $int_to_string(random_int(0, 32));
|
$account->indx = $int_to_string(random_int(0, 32)) . $int_to_string(random_int(0, 32)) . $int_to_string(random_int(0, 32));
|
||||||
|
|
||||||
|
if (in_array($account->indx, $registry)) {
|
||||||
|
// Сгенерированный индекс обнаружено в реестре запрещённых индексов
|
||||||
|
|
||||||
|
// Повтор генерации
|
||||||
|
goto regenerate_index;
|
||||||
|
}
|
||||||
|
|
||||||
// Запись
|
// Запись
|
||||||
if ($account->save()) {
|
if ($account->save()) {
|
||||||
// Аккаунт сохранён (в базе данных это поле проверяется на уникальность)
|
// Аккаунт сохранён (в базе данных это поле проверяется на уникальность)
|
||||||
|
@ -586,7 +606,7 @@ class Account extends Document implements IdentityInterface, PartnerInterface
|
||||||
echo "Не удалось сохранить аккаунт с псевдоанонимным идентификатором $account->indx" . PHP_EOL;
|
echo "Не удалось сохранить аккаунт с псевдоанонимным идентификатором $account->indx" . PHP_EOL;
|
||||||
}
|
}
|
||||||
|
|
||||||
goto regenerate;
|
goto regenerate_index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -126,8 +126,8 @@ class Dellin extends Model
|
||||||
$query = [];
|
$query = [];
|
||||||
|
|
||||||
// Рассчёт типа доставки
|
// Рассчёт типа доставки
|
||||||
if (
|
if ( !$avia
|
||||||
$weight <= 30
|
&& $weight <= 30
|
||||||
&& ($length <= 0.54 && $width <= 0.39 && $height <= 0.39)
|
&& ($length <= 0.54 && $width <= 0.39 && $height <= 0.39)
|
||||||
&& $length * $width * $height <= 0.1
|
&& $length * $width * $height <= 0.1
|
||||||
) {
|
) {
|
||||||
|
|
|
@ -171,7 +171,35 @@ if (
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
|
|
||||||
<article class="page_order_panel mt-3 py-3 px-4 rounded <?= $account_type ?? false ? '' : 'd-block'; ?>">
|
<article class="page_order_panel mt-3 py-3 px-4 rounded <?= $account_type ?? false ? '' : 'd-block'; ?>">
|
||||||
<h4 class="ml-4 mt-2 mb-4"><i class="fas fa-list mr-2"></i>Заказы</h4>
|
<div class="row mt-2 mb-3">
|
||||||
|
<h4 class="col ml-4"><i class="fas fa-list mr-2"></i>Заказы</h4>
|
||||||
|
<div class="col orders_panel_menu ml-auto text-right">
|
||||||
|
<a class="btn btn-sm button_white button_clean mb-0 mr-2" type="button" onclick="return orders_read('all');">Все</abs>
|
||||||
|
<a class="btn btn-sm button_white button_clean mb-0 mr-2" type="button" onclick="return orders_read('requested');">Запрошенные</a>
|
||||||
|
<a class="btn btn-sm button_white button_clean mb-0 mr-2" type="button" onclick="return orders_read('accepted');">Активные</a>
|
||||||
|
<a class="btn btn-sm button_white button_clean mb-0" type="button" onclick="return orders_read('completed');">Завершенные</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-4">
|
||||||
|
<div class="ml-auto col-3">
|
||||||
|
<div class="row mb-2">
|
||||||
|
<p class="col-2 p-0 text-right">
|
||||||
|
С
|
||||||
|
</p>
|
||||||
|
<div class="col-10">
|
||||||
|
<input class="form-control" type="date" value="<?= date('Y-m-d', time() - 604800)?>" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<p class="col-2 p-0 text-right">
|
||||||
|
По
|
||||||
|
</p>
|
||||||
|
<div class="col-10">
|
||||||
|
<input class="form-control" type="date" value="<?= date('Y-m-d', time())?>" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="col mb-4 list rounded">
|
<div class="col mb-4 list rounded">
|
||||||
<div class="row py-3 text-center">
|
<div class="row py-3 text-center">
|
||||||
<!-- <div class="pl-3 mr-1">
|
<!-- <div class="pl-3 mr-1">
|
||||||
|
@ -191,6 +219,12 @@ if (
|
||||||
// Инициализация
|
// Инициализация
|
||||||
extract($order);
|
extract($order);
|
||||||
|
|
||||||
|
if (isset($order['stts']) && $order['stts'] === 'reserved') {
|
||||||
|
// Заказ был резервирован (отменён)
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// Пропуск активного заказа (несформированного, корзины)
|
// Пропуск активного заказа (несформированного, корзины)
|
||||||
if ($account_edge_order[0]['type'] === 'current') continue;
|
if ($account_edge_order[0]['type'] === 'current') continue;
|
||||||
|
|
||||||
|
|
|
@ -182,7 +182,7 @@ use app\models\Product;
|
||||||
</p>
|
</p>
|
||||||
<!-- Вес -->
|
<!-- Вес -->
|
||||||
<p class="form-control-sm p-0 h-auto">
|
<p class="form-control-sm p-0 h-auto">
|
||||||
<b>Габариты:</b><span id="prod_<?= $model['catn'] ?>_dmns_x" class="ml-1"><?= empty($model['wght']) ? '0' : $model['wght'] ?></span><small>г</small>
|
<b>Вес:</b><span id="prod_<?= $model['catn'] ?>_dmns_x" class="ml-1"><?= empty($model['wght']) ? '0' : $model['wght'] ?></span>г
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
|
|
|
@ -55,7 +55,7 @@ if (
|
||||||
|
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$model ?? $model = yii::$app->user->identity;
|
$model ?? $model = yii::$app->user->identity;
|
||||||
$delivery_to_terminal_list or $delivery_to_terminal_list = ['Нет данных'];
|
$delivery_to_terminal_list ?? $delivery_to_terminal_list = ['Нет данных'];
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<?= $form->field($model, 'opts[delivery_to_terminal]', ['options' => ['class' => "mb-1"]])
|
<?= $form->field($model, 'opts[delivery_to_terminal]', ['options' => ['class' => "mb-1"]])
|
||||||
|
|
|
@ -117,13 +117,28 @@
|
||||||
default => '<i class="mr-1 fas fa-truck"></i>'
|
default => '<i class="mr-1 fas fa-truck"></i>'
|
||||||
};
|
};
|
||||||
|
|
||||||
// Инициализация времени
|
// Инициализация даты отправки
|
||||||
try {
|
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();
|
$delivery_converted = DateTime::createFromFormat('Y-m-d H:i:s', $delivery['orderDates']['giveoutFromOspReceiver'])->getTimestamp();
|
||||||
} catch (Exception $e) {
|
} catch (Throwable $e) {
|
||||||
|
// Автоматическая доставка (подразумевается), данные из "arrivalToOspReceiver" (Дата прибытия натерминал-получатель)
|
||||||
|
|
||||||
$delivery_converted = DateTime::createFromFormat('Y-m-d', $delivery['orderDates']['arrivalToOspReceiver'])->getTimestamp();
|
$delivery_converted = DateTime::createFromFormat('Y-m-d', $delivery['orderDates']['arrivalToOspReceiver'])->getTimestamp();
|
||||||
}
|
}
|
||||||
$delivery = ceil(($delivery_converted - time()) / 60 / 60 / 24) + 1;
|
$delivery = ceil(($delivery_converted - ($delivery_send_date ?? 0)) / 60 / 60 / 24) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Инициализация индекса аккаунта
|
// Инициализация индекса аккаунта
|
||||||
|
|
|
@ -35,3 +35,13 @@ function main_response(data, status, xhr) {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var page_loaded_for_history = window.history.state;
|
||||||
|
|
||||||
|
window.addEventListener('popstate', function() {
|
||||||
|
if (page_loaded_for_history) {
|
||||||
|
|
||||||
|
console.log('сработало');
|
||||||
|
window.location.reload();
|
||||||
|
};
|
||||||
|
}, false);
|
||||||
|
|
|
@ -1,3 +1,23 @@
|
||||||
|
// Запросить заказы
|
||||||
|
function orders_read(type = 'all') {
|
||||||
|
// Запрос
|
||||||
|
$.ajax({
|
||||||
|
url: '/orders/' + type,
|
||||||
|
type: 'post',
|
||||||
|
dataType: 'json',
|
||||||
|
data: {
|
||||||
|
'_csrf': yii.getCsrfToken()
|
||||||
|
},
|
||||||
|
success: orders_response_success,
|
||||||
|
error: orders_response_error
|
||||||
|
});
|
||||||
|
|
||||||
|
// Пересчитывание стоимости
|
||||||
|
cart_cost_calculate();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
function orders_response(data, status, xhr) {
|
function orders_response(data, status, xhr) {
|
||||||
// Обработка ответов
|
// Обработка ответов
|
||||||
|
|
||||||
|
|
|
@ -12,10 +12,10 @@ function product_search(text = '', advanced = 0) {
|
||||||
'advanced': advanced,
|
'advanced': advanced,
|
||||||
'request': text
|
'request': text
|
||||||
},
|
},
|
||||||
success: function (data, statu, xhrs) {
|
success: function (data, status, xhr) {
|
||||||
search_panel_success(text, advanced, data, status, xhr);
|
search_panel_success(text, advanced, data, status, xhr);
|
||||||
},
|
},
|
||||||
error: function (data, status) {
|
error: function (data, status, xhr) {
|
||||||
search_panel_error(text, advanced, data, status, xhr);
|
search_panel_error(text, advanced, data, status, xhr);
|
||||||
},
|
},
|
||||||
statusCode: search_panel_statusCode
|
statusCode: search_panel_statusCode
|
||||||
|
@ -37,10 +37,10 @@ function product_search_history(text = '', advanced = 0) {
|
||||||
'type': 'product',
|
'type': 'product',
|
||||||
'history': true
|
'history': true
|
||||||
},
|
},
|
||||||
success: function (data, status) {
|
success: function (data, status, xhr) {
|
||||||
search_panel_success(text, advanced, data, status, xhr);
|
search_panel_success(text, advanced, data, status, xhr);
|
||||||
},
|
},
|
||||||
error: function (data, status) {
|
error: function (data, status, xhr) {
|
||||||
search_panel_error(text, advanced, data, status, xhr);
|
search_panel_error(text, advanced, data, status, xhr);
|
||||||
},
|
},
|
||||||
statusCode: search_panel_statusCode
|
statusCode: search_panel_statusCode
|
||||||
|
|
Reference in New Issue