Feature: общая сумма над блоком Товары; открытие документа по клику на строку списка
Made-with: Cursor
This commit is contained in:
@@ -1,5 +1,13 @@
|
|||||||
# История изменений ERP WaterSurf
|
# История изменений ERP WaterSurf
|
||||||
|
|
||||||
|
## 2025-02-26 16:50 UTC – Общая сумма над блоком Товары; клик по строке списка открывает документ
|
||||||
|
|
||||||
|
**Изменения**: Блок «Общая сумма заказа» перенесён над всей табличной частью «Товары» — сразу под полями Клиент/Автор. В списках заказов клиентов и заказов поставщику документ открывается при клике по строке (заказы клиентов — просмотр, заказы поставщику — редактирование); клик по ссылкам «Изменить»/«Удалить» не переходит по строке. Добавлены класс строки `ws-row-clickable`, атрибут `data-href` и скрипт перехода.
|
||||||
|
|
||||||
|
**Файлы**: order_form.html, supplier_order_form.html (общая сумма над секцией Товары), customer_order_list.html, supplier_order_list.html (кликабельные строки + extra_js), theme.css (cursor: pointer для .ws-row-clickable), theme-compact.css (отступ у .ws-order-total-row).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 2025-02-26 16:35 UTC – Общая сумма над таблицей; автор всегда подставляется при создании
|
## 2025-02-26 16:35 UTC – Общая сумма над таблицей; автор всегда подставляется при создании
|
||||||
|
|
||||||
**Изменения**: Блок «Общая сумма заказа» перенесён над табличную часть «Товары» в формах заказа клиента и заказа поставщику. Поле «Автор» в моделях — ForeignKey на справочник Employee; при создании документа автор теперь подставляется всегда: сначала из профиля пользователя (UserProfile.employee), при отсутствии — создаётся/берётся сотрудник с именем из ФИО или логина пользователя. В контексте для отображения используется тот же хелпер, чтобы надпись «Автор» показывала будущего автора уже при открытии формы создания.
|
**Изменения**: Блок «Общая сумма заказа» перенесён над табличную часть «Товары» в формах заказа клиента и заказа поставщику. Поле «Автор» в моделях — ForeignKey на справочник Employee; при создании документа автор теперь подставляется всегда: сначала из профиля пользователя (UserProfile.employee), при отсутствии — создаётся/берётся сотрудник с именем из ФИО или логина пользователя. В контексте для отображения используется тот же хелпер, чтобы надпись «Автор» показывала будущего автора уже при открытии формы создания.
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
.ws-form-compact .ws-order-total-row {
|
.ws-form-compact .ws-order-total-row {
|
||||||
margin-top: 0.75rem;
|
margin-top: 0.75rem;
|
||||||
margin-bottom: 0;
|
margin-bottom: 0.5rem;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -229,6 +229,10 @@ body {
|
|||||||
background: var(--ws-bg-hover);
|
background: var(--ws-bg-hover);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ws-table tbody tr.ws-row-clickable {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
.ws-table tbody tr:last-child td {
|
.ws-table tbody tr:last-child td {
|
||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for obj in object_list %}
|
{% for obj in object_list %}
|
||||||
<tr>
|
<tr class="ws-row-clickable" data-href="{% url 'documents:customer_order_detail' obj.pk %}">
|
||||||
<td>{{ obj.date }}</td>
|
<td>{{ obj.date }}</td>
|
||||||
<td><a href="{% url 'documents:customer_order_detail' obj.pk %}" class="ws-link">{{ obj.number }}</a></td>
|
<td><a href="{% url 'documents:customer_order_detail' obj.pk %}" class="ws-link">{{ obj.number }}</a></td>
|
||||||
<td>{{ obj.order_kind }}</td>
|
<td>{{ obj.order_kind }}</td>
|
||||||
@@ -43,3 +43,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
{% block extra_js %}
|
||||||
|
<script>
|
||||||
|
(function() {
|
||||||
|
document.querySelectorAll('.ws-row-clickable[data-href]').forEach(function(tr) {
|
||||||
|
tr.addEventListener('click', function(e) {
|
||||||
|
if (e.target.closest('a') || e.target.closest('.ws-actions')) return;
|
||||||
|
window.location = this.getAttribute('data-href');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
{% endblock %}
|
||||||
|
|||||||
@@ -40,9 +40,9 @@
|
|||||||
<span class="ws-readonly">{{ author_display|default:"—" }}</span>
|
<span class="ws-readonly">{{ author_display|default:"—" }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<p class="ws-order-total-row"><strong>Общая сумма заказа:</strong> <span id="order-total-sum" class="ws-num">—</span></p>
|
||||||
<div class="ws-form-section">
|
<div class="ws-form-section">
|
||||||
<h3 class="ws-form-section-title">Товары</h3>
|
<h3 class="ws-form-section-title">Товары</h3>
|
||||||
<p class="ws-order-total-row"><strong>Общая сумма заказа:</strong> <span id="order-total-sum" class="ws-num">—</span></p>
|
|
||||||
{{ formset.management_form }}
|
{{ formset.management_form }}
|
||||||
<div class="ws-table-wrap">
|
<div class="ws-table-wrap">
|
||||||
<table class="ws-table ws-table-items" id="order-items">
|
<table class="ws-table ws-table-items" id="order-items">
|
||||||
|
|||||||
@@ -54,9 +54,9 @@
|
|||||||
<span class="ws-readonly">{{ author_display|default:"—" }}</span>
|
<span class="ws-readonly">{{ author_display|default:"—" }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<p class="ws-order-total-row"><strong>Общая сумма заказа:</strong> <span id="supplier-order-total-sum" class="ws-num">—</span></p>
|
||||||
<div class="ws-form-section">
|
<div class="ws-form-section">
|
||||||
<h3 class="ws-form-section-title">Товары</h3>
|
<h3 class="ws-form-section-title">Товары</h3>
|
||||||
<p class="ws-order-total-row"><strong>Общая сумма заказа:</strong> <span id="supplier-order-total-sum" class="ws-num">—</span></p>
|
|
||||||
{{ formset.management_form }}
|
{{ formset.management_form }}
|
||||||
<div class="ws-table-wrap">
|
<div class="ws-table-wrap">
|
||||||
<table class="ws-table ws-table-items" id="supplier-order-items">
|
<table class="ws-table ws-table-items" id="supplier-order-items">
|
||||||
|
|||||||
@@ -22,9 +22,9 @@
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for obj in object_list %}
|
{% for obj in object_list %}
|
||||||
<tr>
|
<tr class="ws-row-clickable" data-href="{% url 'documents:supplier_order_edit' obj.pk %}">
|
||||||
<td>{{ obj.date }}</td>
|
<td>{{ obj.date }}</td>
|
||||||
<td>{{ obj.number }}</td>
|
<td><a href="{% url 'documents:supplier_order_edit' obj.pk %}" class="ws-link">{{ obj.number }}</a></td>
|
||||||
<td>{{ obj.organization }}</td>
|
<td>{{ obj.organization }}</td>
|
||||||
<td>{{ obj.supplier }}</td>
|
<td>{{ obj.supplier }}</td>
|
||||||
<td class="ws-num">{{ obj.total_in_currency|ws_num:2 }}</td>
|
<td class="ws-num">{{ obj.total_in_currency|ws_num:2 }}</td>
|
||||||
@@ -43,3 +43,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
{% block extra_js %}
|
||||||
|
<script>
|
||||||
|
(function() {
|
||||||
|
document.querySelectorAll('.ws-row-clickable[data-href]').forEach(function(tr) {
|
||||||
|
tr.addEventListener('click', function(e) {
|
||||||
|
if (e.target.closest('a') || e.target.closest('.ws-actions')) return;
|
||||||
|
window.location = this.getAttribute('data-href');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
{% endblock %}
|
||||||
|
|||||||
Reference in New Issue
Block a user