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>
This commit is contained in:
36
myproject/products/services/kit_availability.py
Normal file
36
myproject/products/services/kit_availability.py
Normal file
@@ -0,0 +1,36 @@
|
||||
"""
|
||||
Сервис для проверки доступности комплектов.
|
||||
"""
|
||||
|
||||
|
||||
class KitAvailabilityChecker:
|
||||
"""
|
||||
Проверяет доступность комплектов на основе остатков товаров.
|
||||
"""
|
||||
|
||||
@staticmethod
|
||||
def check_availability(kit, stock_manager=None):
|
||||
"""
|
||||
Проверяет доступность всего комплекта.
|
||||
|
||||
Комплект доступен, если для каждой позиции в комплекте
|
||||
есть хотя бы один доступный вариант товара.
|
||||
|
||||
Args:
|
||||
kit (ProductKit): Комплект для проверки
|
||||
stock_manager: Объект управления складом (если не указан, используется стандартный)
|
||||
|
||||
Returns:
|
||||
bool: True, если комплект полностью доступен, иначе False
|
||||
"""
|
||||
from ..utils.stock_manager import StockManager
|
||||
|
||||
if stock_manager is None:
|
||||
stock_manager = StockManager()
|
||||
|
||||
for kit_item in kit.kit_items.all():
|
||||
best_product = kit_item.get_best_available_product(stock_manager)
|
||||
if not best_product:
|
||||
return False
|
||||
|
||||
return True
|
||||
Reference in New Issue
Block a user