235 lines
12 KiB
PHP
235 lines
12 KiB
PHP
<?php
|
||
|
||
declare(strict_types=1);
|
||
|
||
use yii;
|
||
use yii\bootstrap\ActiveForm;
|
||
|
||
use app\models\connection\Dellin;
|
||
use app\models\Supply;
|
||
use DateTime;
|
||
|
||
?>
|
||
|
||
<link href="/css/pages/cart.css" rel="stylesheet">
|
||
|
||
<div id="page_cart" class="container mb-auto py-3">
|
||
<article class="p-4 rounded">
|
||
<h4 class="ml-4 mt-2 mb-4"><i class="fas fa-shopping-cart mr-2"></i>Корзина</h4>
|
||
<div class="col mb-4 list rounded overflow-hidden">
|
||
<div class="row py-2">
|
||
<div class="pl-3 mr-1">
|
||
<input id="checkbox_cart_all" type="checkbox" onchange="return cart_list_checkbox(this);" />
|
||
</div>
|
||
<div class="col-2">
|
||
<span>Производитель</span>
|
||
</div>
|
||
<div class="col-2">
|
||
<span>Артикул</span>
|
||
</div>
|
||
<div class="col-2">
|
||
<span>Поставщик</span>
|
||
</div>
|
||
<div class="col-1 ml-auto px-0 text-center">
|
||
<span>Количество</span>
|
||
</div>
|
||
<div class="col-2 text-right">
|
||
<span>Доставка</span>
|
||
</div>
|
||
<div class="col-2 mr-3 text-right">
|
||
<span>Стоимость</span>
|
||
</div>
|
||
</div>
|
||
<?php
|
||
if (!empty($data['supplies'])) {
|
||
// Найдены цели для заказа
|
||
|
||
// Инициализация списка поставок
|
||
$targets = [];
|
||
|
||
foreach ($data['supplies'] as $prod => $list) {
|
||
// Перебор поставщиков
|
||
|
||
foreach ($list as $catn => $deliveries) {
|
||
// Перебор поставок
|
||
|
||
foreach ($deliveries as $delivery => $supply) {
|
||
// Перебор типов доставки
|
||
|
||
// Инициализация комментария
|
||
$comment = $supply['edge']['comm'] ?? 'Комментарий к заказу';
|
||
|
||
// Инициализация доставки
|
||
if (empty($supply['delivery'])) {
|
||
// Не удалось рассчитать доставку
|
||
|
||
// Инициализация времени
|
||
$days = '?';
|
||
} else {
|
||
// Удалось рассчитать доставку
|
||
|
||
// Инициализация даты отправки
|
||
try {
|
||
// Взять данные из "arrivalToOspSender" (Дата прибытия на терминал-отправитель)
|
||
|
||
$delivery_send_date = DateTime::createFromFormat('Y-m-d', $supply['delivery']['orderDates']['arrivalToOspSender'])->getTimestamp();
|
||
} catch (Throwable $e) {
|
||
// Взять данные из "pickup" (Дата передачи груза на адресе отправителя)
|
||
|
||
$delivery_send_date = DateTime::createFromFormat('Y-m-d', $supply['delivery']['orderDates']['pickup'])->getTimestamp();
|
||
}
|
||
|
||
// Инициализация времени доставки
|
||
try {
|
||
// Доставка по воздуху (подразумевается), данные из "giveoutFromOspReceiver" (Дата и время, с которого груз готов к выдаче на терминале)
|
||
|
||
// Оставлено на всякий случай для дальнейших разбирательств
|
||
|
||
$delivery_converted = DateTime::createFromFormat('Y-m-d H:i:s', $supply['delivery']['orderDates']['giveoutFromOspReceiver'])->getTimestamp();
|
||
} catch (Throwable $e) {
|
||
// Инициализация даты отправки
|
||
|
||
// Автоматическая доставка (подразумевается), данные из "arrivalToOspReceiver" (Дата прибытия натерминал-получатель)
|
||
$delivery_converted = DateTime::createFromFormat('Y-m-d', $supply['delivery']['orderDates']['arrivalToOspReceiver'])->getTimestamp();
|
||
}
|
||
$days = ceil(($delivery_converted - ($delivery_send_date ?? 0)) / 60 / 60 / 24) + 1;
|
||
}
|
||
|
||
// Инициализация иконки
|
||
$icon = $delivery === 'avia' ? 'fa-plane' : 'fa-truck';
|
||
|
||
// Генерация HTML
|
||
echo <<<HTML
|
||
<div class="row py-2 cart_list_target">
|
||
<div class="col">
|
||
<div class="row">
|
||
<div class="pl-3 my-auto mr-1">
|
||
<input id="cart_list_checkbox_{$prod}_{$catn}_auto" type="checkbox" onchange="return cart_list_checkbox(this);"/>
|
||
</div>
|
||
<div class="col-2 my-auto">
|
||
$prod
|
||
</div>
|
||
<div class="col-2 my-auto">
|
||
$catn
|
||
</div>
|
||
<div class="col-2 my-auto">
|
||
{$supply['account']['indx']}
|
||
</div>
|
||
<div class="col-1 my-auto ml-auto">
|
||
<input id="cart_list_amnt_{$prod}_{$catn}_auto" class="form-control text-center" type="text" value="{$supply['amount']}" onchange="return cart_list_amount_update('$prod', '$catn', 'auto', this)" aria-invalid="false">
|
||
</div>
|
||
<div class="col-2 my-auto text-right">
|
||
<p title="Ориентировочно"><i class="mr-1 fas $icon"></i> <b>~</b>$days дн</p>
|
||
</div>
|
||
<div class="col-2 my-auto mr-3 text-right">
|
||
{$supply['supply']->cost} {$supply['currency']}
|
||
</div>
|
||
</div>
|
||
<div class="dropdown-divider"></div>
|
||
<div class="row mb-1">
|
||
<div class="col-12">
|
||
<p id="cart_list_comment_{$prod}_{$catn}_auto" class="mt-0 ml-0 text-break pointer-event" role="button" onclick="return cart_list_comment_edit('$prod', '$catn', 'auto', this);">$comment</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
HTML;
|
||
}
|
||
}
|
||
}
|
||
} else {
|
||
echo <<<HTML
|
||
<div class="row py-2">
|
||
<div class="mx-auto py-2">
|
||
Корзина пуста
|
||
</div>
|
||
</div>
|
||
HTML;
|
||
}
|
||
?>
|
||
</div>
|
||
|
||
<div class="row mb-3 mx-0">
|
||
<select id="cart_list_action" class="form-control mr-3 button_clean w-auto" name="CartListAction">
|
||
<option value="none" hidden>Действие с выбранными</option>
|
||
<option value="delete" onclick="return cart_list_delete();">Удалить</option>
|
||
</select>
|
||
<a class="mr-3 btn button_red button_clean" title="Очистить корзину" href="/cart" role="button" onclick="return cart_delete();">
|
||
Очистить
|
||
</a>
|
||
</div>
|
||
|
||
<div class="dropdown-divider mb-3"></div>
|
||
|
||
<div class="p-3 mx-0 row">
|
||
<div id="cart_registration_menu" class="mr-5 col px-0">
|
||
<div class="row mb-4 mx-0">
|
||
<label id="cart_registration_individual_button" class="ml-auto btn button_white mb-0 mr-4" for="cart_registration_individual" onclick="cart_registration_choose('cart_registration_individual', <?= $account['_key'] ?>)">Физическое лицо</label>
|
||
<label id="cart_registration_entity_button" class="mr-auto btn button_white active mb-0" for="cart_registration_entity" onclick="cart_registration_choose('cart_registration_entity', <?= $account['_key'] ?>); cart_registration_entity_init(<?= $account['_key'] ?>)">Юридическое лицо</label>
|
||
</div>
|
||
<div class="cart_registration_content d-flex">
|
||
<input type="radio" id="cart_registration_individual" name="registration_panel" />
|
||
<div id="cart_registration_individual_body" class="col"></div>
|
||
<input type="radio" id="cart_registration_entity" name="registration_panel" checked />
|
||
<div id="cart_registration_entity_body" class="col"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="col-4 px-0 d-flex flex-column">
|
||
<div class="mb-3 mx-0 row mt-auto">
|
||
<?php $form = ActiveForm::begin([
|
||
'id' => 'form_profile_settings',
|
||
'action' => false,
|
||
'fieldConfig' => [
|
||
'template' => '{label}{input}',
|
||
],
|
||
'options' => [
|
||
'onsubmit' => 'return false;',
|
||
'class' => 'ml-auto px-0 col'
|
||
]
|
||
]);
|
||
|
||
// Инициализация
|
||
$model_delivery ?? $model_delivery = yii::$app->user->identity;
|
||
$delivery_to_terminal_list ?? $delivery_to_terminal_list = ['Нет данных'];
|
||
?>
|
||
|
||
<small class="mb-2"><b>Терминал для получения</b></small>
|
||
|
||
<?= $form->field($model_delivery, 'opts[delivery_to_terminal]', ['options' => ['class' => "mb-0"]])
|
||
->dropDownList($delivery_to_terminal_list, [
|
||
'onChange' => 'page_profile_settings(this.parentElement.parentElement, undefined, \'\'); cart_cost_calculate();',
|
||
'disabled' => count($delivery_to_terminal_list) <= 1
|
||
])->label(false); ?>
|
||
|
||
<?php ActiveForm::end(); ?>
|
||
</div>
|
||
|
||
<div class="mb-0 mx-0 row">
|
||
<div class="ml-auto px-0 col d-flex">
|
||
<b class="ml-auto my-auto mr-3">
|
||
<span id="cart_cost">0</span>
|
||
руб
|
||
</b>
|
||
<a class="col-5 btn button_clean button_blue" title="Оформить заказ" href="/orders" role="button" onclick="return cart_request();">Купить</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</article>
|
||
</div>
|
||
|
||
<script src="/js/textarea.js" defer></script>
|
||
<script src="/js/cart.js" defer></script>
|
||
<script src="/js/profile.js" defer></script>
|
||
<script>
|
||
document.addEventListener('cart.loaded', function(e) {
|
||
cart_cost_calculate();
|
||
|
||
cart_registration_entity_init(<?= $account['_key'] ?>);
|
||
|
||
cart_registration_choose('cart_registration_entity', <?= $account['_key'] ?>);
|
||
});
|
||
</script>
|