POS deferred order feature
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user