Исправлена ошибка создания заказов в POS после рефакторинга модели доставки
- Обновлён pos/views.py: метод pos_checkout теперь создаёт Order и связанную модель Delivery - Обновлён showcase_manager.py: метод sell_showcase_item_to_customer использует новую архитектуру - Удалён устаревший скрипт create_demo_orders.py - Исправлена ошибка 'property is_delivery of Order object has no setter'
This commit is contained in:
@@ -792,6 +792,10 @@ def get_items_api(request):
|
||||
reserved = p.reserved_qty
|
||||
free_qty = available - reserved
|
||||
|
||||
# Подсчитываем активные единицы продажи
|
||||
sales_units_count = p.sales_units.filter(is_active=True).count()
|
||||
has_sales_units = sales_units_count > 0
|
||||
|
||||
products.append({
|
||||
'id': p.id,
|
||||
'name': p.name,
|
||||
@@ -804,7 +808,9 @@ def get_items_api(request):
|
||||
'available_qty': str(available),
|
||||
'reserved_qty': str(reserved),
|
||||
'free_qty': str(free_qty), # Передаём как строку для сохранения точности
|
||||
'free_qty_sort': float(free_qty) # Для сортировки отдельное поле
|
||||
'free_qty_sort': float(free_qty), # Для сортировки отдельное поле
|
||||
'sales_units_count': sales_units_count,
|
||||
'has_sales_units': has_sales_units
|
||||
})
|
||||
|
||||
# Prefetch для первого фото комплектов
|
||||
@@ -1434,21 +1440,28 @@ def pos_checkout(request):
|
||||
with db_transaction.atomic():
|
||||
# 1. Создаём заказ с текущей датой и временем в локальном часовом поясе (Europe/Minsk)
|
||||
from django.utils import timezone as tz
|
||||
from orders.models import Delivery
|
||||
now_utc = tz.now() # Текущее время в UTC
|
||||
now_local = tz.localtime(now_utc) # Конвертируем в локальный часовой пояс (Europe/Minsk)
|
||||
current_time = now_local.time() # Извлекаем время в минском часовом поясе
|
||||
|
||||
order = Order.objects.create(
|
||||
customer=customer,
|
||||
is_delivery=False, # POS - всегда самовывоз
|
||||
pickup_warehouse=warehouse,
|
||||
status=completed_status, # Сразу "Выполнен"
|
||||
delivery_date=now_local.date(), # Текущая дата в минском часовом поясе
|
||||
delivery_time_start=current_time, # Текущее время (Минск)
|
||||
delivery_time_end=current_time, # То же время (точное время)
|
||||
special_instructions=order_notes,
|
||||
modified_by=request.user
|
||||
)
|
||||
|
||||
# Создаём связанную доставку (самовывоз для POS)
|
||||
Delivery.objects.create(
|
||||
order=order,
|
||||
delivery_type=Delivery.DELIVERY_TYPE_PICKUP, # POS - всегда самовывоз
|
||||
pickup_warehouse=warehouse,
|
||||
delivery_date=now_local.date(), # Текущая дата в минском часовом поясе
|
||||
time_from=current_time, # Текущее время (Минск)
|
||||
time_to=current_time, # То же время (точное время)
|
||||
cost=0 # Самовывоз бесплатный
|
||||
)
|
||||
|
||||
# 2. Добавляем товары
|
||||
from inventory.models import ShowcaseItem
|
||||
|
||||
Reference in New Issue
Block a user