This repository has been archived on 2024-10-16. You can view files and clone it, but cannot push or open issues or pull requests.
Files
skillparts/mirzaev/skillparts/system/views/cart/index.php

235 lines
12 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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>