115 lines
6.6 KiB
HTML
115 lines
6.6 KiB
HTML
{% extends "admin/base.html" %}
|
||
{% import "macros/ui.html" as ui %}
|
||
|
||
{% block title %}{{ customer.name }}{% endblock title %}
|
||
{% block crumb %}{{ t(key="admin-customers", lang=lang | default(value='sk')) }}{% endblock crumb %}
|
||
|
||
{% block content %}
|
||
<div class="flex items-center justify-between gap-3">
|
||
<div>
|
||
<h1 class="text-2xl font-bold text-on-surface-strong dark:text-on-surface-dark-strong">{{ customer.name }}</h1>
|
||
<p class="text-sm text-on-surface/70 dark:text-on-surface-dark/70">{{ customer.email }}</p>
|
||
</div>
|
||
{{ ui::button(variant="outline-secondary", label=t(key="back", lang=lang | default(value='sk')), href="/admin/customers", size="px-3 py-2 text-sm") }}
|
||
</div>
|
||
|
||
{% if error %}
|
||
<div class="mt-4">{{ ui::alert_danger(message=t(key=error, lang=lang | default(value='sk'))) }}</div>
|
||
{% endif %}
|
||
|
||
<!-- assigned discount profiles -->
|
||
<section class="mt-6 rounded-radius border border-outline bg-surface p-6 dark:border-outline-dark dark:bg-surface-dark-alt">
|
||
<h2 class="text-lg font-semibold text-on-surface-strong dark:text-on-surface-dark-strong">{{ t(key="discount-profiles", lang=lang | default(value='sk')) }}</h2>
|
||
{% if profiles | length > 0 %}
|
||
<form method="post" action="/admin/customers/{{ customer.id }}/profiles" class="mt-3 space-y-3">
|
||
{{ ui::csrf_field() }}
|
||
<div class="grid gap-2 sm:grid-cols-2">
|
||
{% for profile in profiles %}
|
||
<label class="flex items-center gap-2 text-sm text-on-surface dark:text-on-surface-dark">
|
||
<input type="checkbox" name="profile_ids" value="{{ profile.id }}" {% if profile.assigned %}checked{% endif %}>
|
||
<span>{{ profile.name }} <span class="text-on-surface/60 dark:text-on-surface-dark/60">(−{{ profile.percent }}%, {% if profile.scope_type == "all_except" %}{{ t(key="scope-all-except", lang=lang | default(value='sk')) }}{% else %}{{ t(key="scope-include", lang=lang | default(value='sk')) }}{% endif %})</span></span>
|
||
</label>
|
||
{% endfor %}
|
||
</div>
|
||
{{ ui::button(label=t(key="save", lang=lang | default(value='sk')), type="submit", size="px-4 py-2 text-sm") }}
|
||
</form>
|
||
{% else %}
|
||
<p class="mt-2 text-sm text-on-surface/70 dark:text-on-surface-dark/70">
|
||
{{ t(key="admin-no-profiles", lang=lang | default(value='sk')) }}
|
||
<a href="/admin/catalog/discount-profiles/new" class="text-primary dark:text-primary-dark">{{ t(key="new-profile", lang=lang | default(value='sk')) }}</a>
|
||
</p>
|
||
{% endif %}
|
||
</section>
|
||
|
||
<p class="mt-6 text-sm text-on-surface/70 dark:text-on-surface-dark/70">{{ t(key="negotiated-prices-hint", lang=lang | default(value='sk')) }}</p>
|
||
|
||
<div class="mt-3 {{ ui::table_wrap_cls() }}">
|
||
{% if products | length > 0 %}
|
||
<table class="{{ ui::table_cls() }}">
|
||
<thead class="{{ ui::thead_cls() }}">
|
||
<tr>
|
||
{{ ui::th(label=t(key="product", lang=lang | default(value='sk'))) }}
|
||
{{ ui::th(label=t(key="public-price", lang=lang | default(value='sk'))) }}
|
||
{{ ui::th(label=t(key="automated-price", lang=lang | default(value='sk'))) }}
|
||
{{ ui::th(label=t(key="negotiated-price", lang=lang | default(value='sk'))) }}
|
||
{{ ui::th(label=t(key="effective-price", lang=lang | default(value='sk')), align="text-right") }}
|
||
</tr>
|
||
</thead>
|
||
<tbody class="{{ ui::tbody_cls() }}">
|
||
{% for product in products %}
|
||
<tr class="{{ ui::row_cls() }}">
|
||
<td class="px-4 py-3 font-medium text-on-surface-strong dark:text-on-surface-dark-strong">{{ product.name }}</td>
|
||
<td class="px-4 py-3 tabular-nums">
|
||
{% if product.on_public_sale %}
|
||
<span class="font-medium text-danger">{{ product.public_price }} {{ product.currency }}</span>
|
||
<span class="ml-1 text-xs text-on-surface/50 line-through dark:text-on-surface-dark/50">{{ product.regular_price }}</span>
|
||
{% else %}
|
||
{{ product.public_price }} {{ product.currency }}
|
||
{% endif %}
|
||
</td>
|
||
<td class="px-4 py-3 tabular-nums">
|
||
{% if product.auto_price %}
|
||
<div>{{ product.auto_price }} {{ product.currency }}</div>
|
||
{% if product.collision %}
|
||
<div class="mt-1">{{ ui::badge(label=t(key="collision", lang=lang | default(value='sk')), variant="warning") }}</div>
|
||
<form method="post" action="/admin/customers/{{ customer.id }}/resolutions/{{ product.product_id }}" class="mt-1 flex items-center gap-1">
|
||
{{ ui::csrf_field() }}
|
||
<select name="profile_id" class="rounded-radius border border-outline bg-surface-alt px-2 py-1 text-xs dark:border-outline-dark dark:bg-surface-dark-alt/50 dark:text-on-surface-dark">
|
||
{% for c in product.covering %}
|
||
<option value="{{ c.id }}" {% if c.id == product.auto_profile_id %}selected{% endif %}>{{ c.name }}</option>
|
||
{% endfor %}
|
||
</select>
|
||
{{ ui::button(label=t(key="resolve", lang=lang | default(value='sk')), type="submit", size="px-2 py-1 text-xs") }}
|
||
</form>
|
||
{% elif product.auto_profile_name %}
|
||
<div class="text-xs text-on-surface/60 dark:text-on-surface-dark/60">{{ product.auto_profile_name }}</div>
|
||
{% endif %}
|
||
{% else %}
|
||
<span class="text-on-surface/40 dark:text-on-surface-dark/40">—</span>
|
||
{% endif %}
|
||
</td>
|
||
<td class="px-4 py-3">
|
||
<form method="post" action="/admin/customers/{{ customer.id }}/prices/{{ product.product_id }}" class="flex items-center gap-2">
|
||
{{ ui::csrf_field() }}
|
||
{{ ui::input(name="price", value=product.manual_price | default(value=""), placeholder="0.00", width="w-28", attrs='inputmode="decimal"') }}
|
||
{{ ui::button(label=t(key="save", lang=lang | default(value='sk')), type="submit", size="px-3 py-1.5 text-xs") }}
|
||
{% if product.manual_price %}
|
||
{{ ui::button(variant="outline-danger", label=t(key="remove", lang=lang | default(value='sk')), type="submit", size="px-3 py-1.5 text-xs", attrs='formaction="/admin/customers/' ~ customer.id ~ '/prices/' ~ product.product_id ~ '/remove"') }}
|
||
{% endif %}
|
||
</form>
|
||
</td>
|
||
<td class="px-4 py-3 text-right tabular-nums">
|
||
<span class="font-medium {% if product.is_business %}text-primary dark:text-primary-dark{% else %}text-on-surface-strong dark:text-on-surface-dark-strong{% endif %}">{{ product.effective_price }} {{ product.currency }}</span>
|
||
</td>
|
||
</tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
{% else %}
|
||
<div class="flex flex-col items-center gap-3 px-4 py-16 text-center">
|
||
<p class="text-on-surface/70 dark:text-on-surface-dark/70">{{ t(key="admin-no-products", lang=lang | default(value='sk')) }}</p>
|
||
</div>
|
||
{% endif %}
|
||
</div>
|
||
{% endblock content %}
|