Запрет редактирования приходов после создания складской партии
- Добавлено свойство can_edit в модель Incoming - Добавлена проверка в IncomingUpdateView для запрета редактирования обработанных приходов - Скрыта кнопка редактирования в списке приходов для обработанных записей - Добавлено предупреждение в форму редактирования Это предотвращает проблемы с целостностью данных при FIFO-списаниях, когда партия уже может быть использована в продажах.
This commit is contained in:
@@ -5,7 +5,7 @@ from django.views.generic import ListView, CreateView, UpdateView, DeleteView, V
|
||||
from django.urls import reverse_lazy
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.contrib import messages
|
||||
from django.http import JsonResponse
|
||||
from django.http import JsonResponse, Http404
|
||||
from django.views.decorators.http import require_http_methods
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.db import IntegrityError, transaction
|
||||
@@ -51,6 +51,19 @@ class IncomingUpdateView(LoginRequiredMixin, UpdateView):
|
||||
template_name = 'inventory/incoming/incoming_form.html'
|
||||
success_url = reverse_lazy('inventory:incoming-list')
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
"""Проверяем, можно ли редактировать приход"""
|
||||
obj = self.get_object()
|
||||
if not obj.can_edit:
|
||||
messages.error(
|
||||
request,
|
||||
f'Нельзя редактировать приход товара "{obj.product.name}", '
|
||||
f'так как для него уже создана складская партия. '
|
||||
f'Редактирование возможно только до обработки прихода.'
|
||||
)
|
||||
return redirect('inventory:incoming-list')
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
def form_valid(self, form):
|
||||
messages.success(self.request, f'Приход товара обновлён.')
|
||||
return super().form_valid(form)
|
||||
|
||||
Reference in New Issue
Block a user