refactor: мигрировать на новую систему документов поступления

Удалена старая одноэтапная система incoming и оставлена только новая
двухэтапная система IncomingDocument (черновик → проведение).

Изменения:
- URL структура изменена с /incoming-documents/ на /incoming/
- URL names: incoming-document-* → incoming-*
- Удалены старые views, forms, templates для Incoming/IncomingBatch
- Обновлена навигация и все ссылки в шаблонах
- Модели IncomingBatch/Incoming сохранены как внутренняя архитектура

Удалено ~1590 строк кода:
- inventory/views/incoming.py (389 строк)
- inventory/forms.py (206 строк старых форм)
- inventory/admin.py (56 строк)
- 4 шаблона incoming/*.html (895 строк)

Обновлено:
- inventory/urls.py - новая URL структура
- inventory/views/incoming_document.py - обновлены redirects
- Все шаблоны с ссылками на incoming

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-26 17:33:00 +03:00
parent d2384394c8
commit c9ff778630
16 changed files with 30 additions and 1590 deletions

View File

@@ -45,7 +45,7 @@ class IncomingDocumentCreateView(LoginRequiredMixin, CreateView):
created_by=self.request.user
)
messages.success(self.request, f'Документ {document.document_number} создан')
return redirect('inventory:incoming-document-detail', pk=document.pk)
return redirect('inventory:incoming-detail', pk=document.pk)
class IncomingDocumentDetailView(LoginRequiredMixin, DetailView):
@@ -110,7 +110,7 @@ class IncomingDocumentAddItemView(LoginRequiredMixin, View):
for error in errors:
messages.error(request, f'{field}: {error}')
return redirect('inventory:incoming-document-detail', pk=pk)
return redirect('inventory:incoming-detail', pk=pk)
class IncomingDocumentUpdateItemView(LoginRequiredMixin, View):
@@ -146,7 +146,7 @@ class IncomingDocumentUpdateItemView(LoginRequiredMixin, View):
return JsonResponse({'success': False, 'error': str(e)}, status=400)
messages.error(request, str(e))
return redirect('inventory:incoming-document-detail', pk=pk)
return redirect('inventory:incoming-detail', pk=pk)
class IncomingDocumentRemoveItemView(LoginRequiredMixin, View):
@@ -174,7 +174,7 @@ class IncomingDocumentRemoveItemView(LoginRequiredMixin, View):
return JsonResponse({'success': False, 'error': str(e)}, status=400)
messages.error(request, str(e))
return redirect('inventory:incoming-document-detail', pk=pk)
return redirect('inventory:incoming-detail', pk=pk)
class IncomingDocumentConfirmView(LoginRequiredMixin, View):
@@ -197,7 +197,7 @@ class IncomingDocumentConfirmView(LoginRequiredMixin, View):
except ValidationError as e:
messages.error(request, str(e))
return redirect('inventory:incoming-document-detail', pk=pk)
return redirect('inventory:incoming-detail', pk=pk)
class IncomingDocumentCancelView(LoginRequiredMixin, View):
@@ -213,5 +213,5 @@ class IncomingDocumentCancelView(LoginRequiredMixin, View):
except ValidationError as e:
messages.error(request, str(e))
return redirect('inventory:incoming-document-list')
return redirect('inventory:incoming-list')