Добавлена функциональность редактирования заказов с обновлением резервов товаров
This commit is contained in:
@@ -202,6 +202,20 @@ def order_update(request, pk):
|
||||
messages.success(request, f'Заказ #{order.order_number} успешно обновлен!')
|
||||
return redirect('orders:order-detail', pk=order.pk)
|
||||
else:
|
||||
# Логируем ошибки для отладки
|
||||
print("\n=== ОШИБКИ ВАЛИДАЦИИ ФОРМЫ ===")
|
||||
if not form.is_valid():
|
||||
print(f"OrderForm errors: {form.errors}")
|
||||
if not formset.is_valid():
|
||||
print(f"OrderItemFormSet errors: {formset.errors}")
|
||||
print(f"OrderItemFormSet non_form_errors: {formset.non_form_errors()}")
|
||||
for i, item_form in enumerate(formset):
|
||||
if item_form.errors:
|
||||
print(f" Item form {i} errors: {item_form.errors}")
|
||||
if not payment_formset.is_valid():
|
||||
print(f"PaymentFormSet errors: {payment_formset.errors}")
|
||||
print(f"PaymentFormSet non_form_errors: {payment_formset.non_form_errors()}")
|
||||
print("=== КОНЕЦ ОШИБОК ===\n")
|
||||
messages.error(request, 'Пожалуйста, исправьте ошибки в форме.')
|
||||
else:
|
||||
form = OrderForm(instance=order)
|
||||
@@ -662,3 +676,43 @@ def apply_wallet_payment(request, pk):
|
||||
messages.error(request, f'Ошибка при оплате из кошелька: {str(e)}')
|
||||
|
||||
return redirect('orders:order-detail', pk=pk)
|
||||
|
||||
|
||||
@require_http_methods(["POST"])
|
||||
@login_required
|
||||
def set_order_status(request, pk):
|
||||
"""
|
||||
Update order status via AJAX.
|
||||
Accepts POST with 'status_id' (can be empty to clear).
|
||||
Returns JSON with the resulting status info.
|
||||
"""
|
||||
try:
|
||||
order = get_object_or_404(Order, pk=pk)
|
||||
status_id = request.POST.get('status_id', '').strip()
|
||||
|
||||
# Allow clearing status if empty
|
||||
if status_id == '':
|
||||
order.status = None
|
||||
order.modified_by = request.user
|
||||
order.save(update_fields=['status', 'modified_by', 'updated_at'])
|
||||
return JsonResponse({'success': True, 'status': None})
|
||||
|
||||
try:
|
||||
status = OrderStatus.objects.get(pk=status_id)
|
||||
except OrderStatus.DoesNotExist:
|
||||
return JsonResponse({'success': False, 'error': 'Status not found'}, status=404)
|
||||
|
||||
order.status = status
|
||||
order.modified_by = request.user
|
||||
order.save(update_fields=['status', 'modified_by', 'updated_at'])
|
||||
|
||||
return JsonResponse({
|
||||
'success': True,
|
||||
'status': {
|
||||
'id': status.pk,
|
||||
'name': status.label or status.name,
|
||||
'color': status.color
|
||||
}
|
||||
})
|
||||
except Exception as e:
|
||||
return JsonResponse({'success': False, 'error': f'Server error: {str(e)}'}, status=500)
|
||||
|
||||
Reference in New Issue
Block a user