POS deferred order feature

This commit is contained in:
2025-12-08 18:56:14 +03:00
parent a244d82e49
commit 6c19c9e093
4 changed files with 165 additions and 1 deletions

View File

@@ -107,6 +107,24 @@ def order_create(request):
initial_data = {}
preselected_customer = None
customer_id = request.GET.get('customer')
# Проверяем, есть ли черновик из POS
draft_token = request.GET.get('draft')
draft_items = []
if draft_token:
from django.core.cache import cache
cache_key = f'pos_draft:{draft_token}'
draft_data = cache.get(cache_key)
if draft_data:
# Загружаем клиента из черновика
customer_id = draft_data.get('customer_id')
draft_items = draft_data.get('items', [])
# Удаляем черновик из кэша (одноразовый токен)
cache.delete(cache_key)
if customer_id:
try:
from customers.models import Customer
@@ -116,7 +134,37 @@ def order_create(request):
pass
form = OrderForm(initial=initial_data)
formset = OrderItemFormSet()
# Создаем formset с предзаполненными товарами из черновика
if draft_items:
from products.models import Product, ProductKit
initial_formset_data = []
for item in draft_items:
item_data = {
'quantity': item['quantity'],
'price': item['price'],
'is_custom_price': False,
}
if item['type'] == 'product':
try:
product = Product.objects.get(id=item['id'])
item_data['product'] = product.id
initial_formset_data.append(item_data)
except Product.DoesNotExist:
pass
elif item['type'] in ['kit', 'showcase_kit']:
try:
kit = ProductKit.objects.get(id=item['id'])
item_data['product_kit'] = kit.id
initial_formset_data.append(item_data)
except ProductKit.DoesNotExist:
pass
formset = OrderItemFormSet(initial=initial_formset_data)
else:
formset = OrderItemFormSet()
context = {
'form': form,