Добавлена функциональность редактирования заказов с обновлением резервов товаров

This commit is contained in:
2025-11-27 21:13:42 +03:00
parent da5d4001b5
commit 82ed5a409e
6 changed files with 296 additions and 113 deletions

View File

@@ -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)