refactor(inventory): remove individual writeoff views and templates, shift to document-based writeoffs
- Remove WriteOffForm from forms.py and add comment directing to WriteOffDocumentForm - Update navigation templates to remove writeoff links and sections - Add 'Сумма' column to sale list with multiplication filter - Delete writeoff-related templates (list, form, confirm delete) - Add 'multiply' filter to inventory_filters.py for calculations - Comment out writeoff URLs in urls.py, keeping WriteOff model for automatic creation - Remove WriteOff views from __init__.py and delete writeoff.py view file This change simplifies writeoff management by removing direct individual writeoff operations and enforcing use of WriteOffDocument for all writeoffs, with WriteOff records created automatically upon document processing.
This commit is contained in:
@@ -7,7 +7,7 @@ Inventory Views Package
|
||||
- incoming.py: Управление приходами товара
|
||||
- sale.py: Управление продажами
|
||||
- inventory_ops.py: Инвентаризация и её строки
|
||||
- writeoff.py: Списания товара
|
||||
- writeoff_document.py: Документы списания товара
|
||||
- transfer.py: Перемещения между складами
|
||||
- reservation.py: Резервирования товара (view-only)
|
||||
- stock.py: Справочник остатков (view-only)
|
||||
@@ -25,7 +25,6 @@ from .inventory_ops import (
|
||||
InventoryLineCreateBulkView, InventoryLineAddView, InventoryLineUpdateView,
|
||||
InventoryLineDeleteView, InventoryCompleteView, InventoryDeleteView
|
||||
)
|
||||
from .writeoff import WriteOffListView, WriteOffCreateView, WriteOffUpdateView, WriteOffDeleteView
|
||||
from .writeoff_document import (
|
||||
WriteOffDocumentListView, WriteOffDocumentCreateView, WriteOffDocumentDetailView,
|
||||
WriteOffDocumentAddItemView, WriteOffDocumentUpdateItemView, WriteOffDocumentRemoveItemView,
|
||||
@@ -61,8 +60,6 @@ __all__ = [
|
||||
'InventoryListView', 'InventoryCreateView', 'InventoryDetailView', 'InventoryLineCreateBulkView',
|
||||
'InventoryLineAddView', 'InventoryLineUpdateView', 'InventoryLineDeleteView',
|
||||
'InventoryCompleteView', 'InventoryDeleteView',
|
||||
# WriteOff
|
||||
'WriteOffListView', 'WriteOffCreateView', 'WriteOffUpdateView', 'WriteOffDeleteView',
|
||||
# WriteOffDocument
|
||||
'WriteOffDocumentListView', 'WriteOffDocumentCreateView', 'WriteOffDocumentDetailView',
|
||||
'WriteOffDocumentAddItemView', 'WriteOffDocumentUpdateItemView', 'WriteOffDocumentRemoveItemView',
|
||||
|
||||
@@ -1,61 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
WriteOff (Списание товара) views
|
||||
GROUP 2: MEDIUM PRIORITY
|
||||
"""
|
||||
from django.views.generic import ListView, CreateView, UpdateView, DeleteView
|
||||
from django.urls import reverse_lazy
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.contrib import messages
|
||||
from ..models import WriteOff
|
||||
from ..forms import WriteOffForm
|
||||
from products.models import ProductCategory, ProductTag
|
||||
|
||||
|
||||
class WriteOffListView(LoginRequiredMixin, ListView):
|
||||
model = WriteOff
|
||||
template_name = 'inventory/writeoff/writeoff_list.html'
|
||||
context_object_name = 'writeoffs'
|
||||
paginate_by = 20
|
||||
|
||||
def get_queryset(self):
|
||||
return WriteOff.objects.select_related('batch', 'batch__product').order_by('-date')
|
||||
|
||||
|
||||
class WriteOffCreateView(LoginRequiredMixin, CreateView):
|
||||
model = WriteOff
|
||||
form_class = WriteOffForm
|
||||
template_name = 'inventory/writeoff/writeoff_form.html'
|
||||
success_url = reverse_lazy('inventory:writeoff-list')
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context['categories'] = ProductCategory.objects.filter(is_active=True).order_by('name')
|
||||
context['tags'] = ProductTag.objects.filter(is_active=True).order_by('name')
|
||||
return context
|
||||
|
||||
def form_valid(self, form):
|
||||
messages.success(self.request, f'Списание товара успешно создано.')
|
||||
return super().form_valid(form)
|
||||
|
||||
|
||||
class WriteOffUpdateView(LoginRequiredMixin, UpdateView):
|
||||
model = WriteOff
|
||||
form_class = WriteOffForm
|
||||
template_name = 'inventory/writeoff/writeoff_form.html'
|
||||
success_url = reverse_lazy('inventory:writeoff-list')
|
||||
|
||||
def form_valid(self, form):
|
||||
messages.success(self.request, f'Списание товара обновлено.')
|
||||
return super().form_valid(form)
|
||||
|
||||
|
||||
class WriteOffDeleteView(LoginRequiredMixin, DeleteView):
|
||||
model = WriteOff
|
||||
template_name = 'inventory/writeoff/writeoff_confirm_delete.html'
|
||||
success_url = reverse_lazy('inventory:writeoff-list')
|
||||
|
||||
def form_valid(self, form):
|
||||
writeoff = self.get_object()
|
||||
messages.success(self.request, f'Списание товара отменено.')
|
||||
return super().form_valid(form)
|
||||
Reference in New Issue
Block a user