Compare commits

...

2 Commits

Author SHA1 Message Date
4b384ef359 fix(kits): не допускать отрицательного количества комплектов
Добавить проверку min_available <= 0 и возвращать 0 в таких случаях,
вместо того чтобы возвращать отрицательное значение после int().
2026-01-19 23:35:09 +03:00
d76fd2e7b2 fix(discounts): исправить предзаполнение полей при редактировании
Заменить условный рендеринг {% if %} на фильтр |default:'' для
числовых полей, чтобы значения корректно отображались при
редактировании существующей скидки.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 23:31:43 +03:00
2 changed files with 9 additions and 4 deletions

View File

@@ -64,7 +64,7 @@
<div class="col-md-4">
<label for="id_value" class="form-label">Значение *</label>
<input type="number" class="form-control" id="id_value" name="value"
value="{% if form.value.value %}{{ form.value.value }}{% endif %}"
value="{{ form.value.value|default:'' }}"
step="0.01" min="0" required>
</div>
<div class="col-md-4">
@@ -123,14 +123,14 @@
<div class="col-md-6">
<label for="id_min_order_amount" class="form-label">Мин. сумма заказа</label>
<input type="number" class="form-control" id="id_min_order_amount" name="min_order_amount"
value="{% if form.min_order_amount.value %}{{ form.min_order_amount.value }}{% endif %}"
value="{{ form.min_order_amount.value|default:'' }}"
step="0.01" min="0">
<div class="form-text">Для скидок на заказ</div>
</div>
<div class="col-md-6">
<label for="id_max_usage_count" class="form-label">Макс. использований</label>
<input type="number" class="form-control" id="id_max_usage_count" name="max_usage_count"
value="{% if form.max_usage_count.value %}{{ form.max_usage_count.value }}{% endif %}"
value="{{ form.max_usage_count.value|default:'' }}"
min="1">
<div class="form-text">Оставьте пустым для безлимитного использования</div>
</div>

View File

@@ -301,7 +301,12 @@ class ProductKit(BaseProductEntity):
min_available = kits_from_this_component
# Возвращаем целую часть (нельзя собрать половину комплекта)
return Decimal(int(min_available)) if min_available is not None else Decimal('0')
# Нельзя собрать отрицательное количество комплектов
if min_available is not None:
if min_available <= 0:
return Decimal('0')
return Decimal(int(min_available))
return Decimal('0')
def make_permanent(self):
"""