Files
octopus/myproject/customers/templates/customers/customer_detail.html
Andrey Smakotin 6c8af5ab2c fix: Улучшения системы ценообразования комплектов
Исправлены 4 проблемы:
1. Расчёт цены первого товара - улучшена валидация в getProductPrice и calculateFinalPrice
2. Отображение actual_price в Select2 вместо обычной цены
3. Количество по умолчанию = 1 для новых форм компонентов
4. Auto-select текста при клике на поле количества для удобства редактирования

Изменённые файлы:
- products/forms.py: добавлен __init__ в KitItemForm для quantity.initial = 1
- products/templates/includes/select2-product-init.html: обновлена formatSelectResult
- products/templates/productkit_create.html: добавлен focus handler для auto-select
- products/templates/productkit_edit.html: добавлен focus handler для auto-select

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-02 19:04:03 +03:00

120 lines
5.6 KiB
HTML
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.
{% extends "base.html" %}
{% block title %}{{ customer.full_name }}{% endblock %}
{% block content %}
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="d-flex justify-content-between align-items-center mb-3">
<h1>Клиент: {{ customer.full_name }}</h1>
<div>
<a href="{% url 'customers:customer-update' customer.pk %}" class="btn btn-primary">Редактировать</a>
<a href="{% url 'customers:customer-delete' customer.pk %}" class="btn btn-danger">Удалить</a>
<a href="{% url 'customers:customer-list' %}" class="btn btn-secondary">Назад к списку</a>
</div>
</div>
</div>
</div>
<div class="row">
<!-- Customer Info -->
<div class="col-md-6">
<div class="card mb-4">
<div class="card-header">
<h5>Информация о клиенте</h5>
</div>
<div class="card-body">
<table class="table table-borderless">
<tr>
<th>Имя:</th>
<td>{{ customer.full_name }}</td>
</tr>
<tr>
<th>Email:</th>
<td>{{ customer.email }}</td>
</tr>
<tr>
<th>Телефон:</th>
<td>{{ customer.phone }}</td>
</tr>
<tr>
<th>Уровень лояльности:</th>
<td>
<span>({{ customer.get_loyalty_discount }}% скидка)</span>
<span class="badge ms-2
{% if customer.loyalty_tier == 'bronze' %}bg-secondary text-dark
{% elif customer.loyalty_tier == 'silver' %}bg-light text-dark
{% elif customer.loyalty_tier == 'gold' %}bg-warning text-dark
{% elif customer.loyalty_tier == 'platinum' %}bg-primary text-white
{% endif %}">
{{ customer.get_loyalty_tier_display }}
</span>
</td>
</tr>
<tr>
<th>Сумма покупок:</th>
<td>{{ customer.total_spent|floatformat:2 }} руб.</td>
</tr>
<tr>
<th>VIP:</th>
<td>
{% if customer.is_vip %}
<span class="badge bg-success">Да</span>
{% else %}
<span class="badge bg-secondary">Нет</span>
{% endif %}
</td>
</tr>
<tr>
<th>Заметки:</th>
<td>{{ customer.notes|default:"Нет" }}</td>
</tr>
<tr>
<th>Дата создания:</th>
<td>{{ customer.created_at|date:"d.m.Y H:i" }}</td>
</tr>
<tr>
<th>Дата обновления:</th>
<td>{{ customer.updated_at|date:"d.m.Y H:i" }}</td>
</tr>
</table>
</div>
</div>
</div>
<!-- Addresses -->
<div class="col-md-6">
<div class="card mb-4">
<div class="card-header d-flex justify-content-between align-items-center">
<h5>Адреса доставки</h5>
<a href="#" class="btn btn-sm btn-outline-primary">Добавить адрес</a>
</div>
<div class="card-body">
{% if addresses %}
{% for address in addresses %}
<div class="border p-3 mb-3 rounded {% if address.is_default %}border-primary border-2{% endif %}">
{% if address.is_default %}
<span class="badge bg-primary mb-2">Адрес по умолчанию</span>
{% endif %}
<h6>{{ address.recipient_name }}</h6>
<p class="mb-1">
<strong>Адрес:</strong> {{ address.full_address }}, {{ address.district }}
</p>
{% if address.delivery_instructions %}
<p class="mb-1">
<strong>Инструкции:</strong> {{ address.delivery_instructions }}
</p>
{% endif %}
</div>
{% endfor %}
{% else %}
<p>У клиента нет сохраненных адресов доставки.</p>
{% endif %}
</div>
</div>
</div>
</div>
</div>
{% endblock %}