Основные изменения: - Создана модель IncomingBatch для группировки товаров по документам - Каждое поступление (Incoming) связано с одной батчем поступления - Автоматическое создание StockBatch для каждого товара в приходе - Реализована система нумерации партий (IN-XXXX-XXXX) с поиском максимума в БД - Обновлены все представления (views) для работы с новой архитектурой - Добавлены детальные страницы просмотра партий поступлений - Обновлены шаблоны для отображения информации о партиях и их товарах - Исправлена логика сигналов для создания StockBatch при приходе товара - Обновлены формы для работы с новой структурой IncomingBatch Архитектура FIFO: - IncomingBatch: одна партия поступления (номер IN-XXXX-XXXX) - Incoming: товар в партии поступления - StockBatch: одна партия товара на складе (создается для каждого товара) Это позволяет системе правильно применять FIFO при продаже товаров. 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
73 lines
3.1 KiB
Python
73 lines
3.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
Inventory Views Package
|
|
|
|
Организация views по модулям:
|
|
- warehouse.py: Управление складами
|
|
- incoming.py: Управление приходами товара
|
|
- sale.py: Управление продажами
|
|
- inventory_ops.py: Инвентаризация и её строки
|
|
- writeoff.py: Списания товара
|
|
- transfer.py: Перемещения между складами
|
|
- reservation.py: Резервирования товара
|
|
- stock.py: Справочник остатков (view-only)
|
|
- batch.py: Справочник партий товара (view-only)
|
|
- allocation.py: Распределение продаж по партиям (view-only)
|
|
- movements.py: Журнал складских операций (view-only)
|
|
"""
|
|
from django.shortcuts import render
|
|
from django.contrib.auth.decorators import login_required
|
|
|
|
from .warehouse import WarehouseListView, WarehouseCreateView, WarehouseUpdateView, WarehouseDeleteView
|
|
from .incoming import IncomingListView, IncomingCreateView, IncomingUpdateView, IncomingDeleteView
|
|
from .batch import IncomingBatchListView, IncomingBatchDetailView, StockBatchListView, StockBatchDetailView
|
|
from .sale import SaleListView, SaleCreateView, SaleUpdateView, SaleDeleteView, SaleDetailView
|
|
from .inventory_ops import (
|
|
InventoryListView, InventoryCreateView, InventoryDetailView,
|
|
InventoryLineCreateBulkView
|
|
)
|
|
from .writeoff import WriteOffListView, WriteOffCreateView, WriteOffUpdateView, WriteOffDeleteView
|
|
from .transfer import TransferListView, TransferCreateView, TransferUpdateView, TransferDeleteView
|
|
from .reservation import ReservationListView, ReservationCreateView, ReservationUpdateView
|
|
from .stock import StockListView, StockDetailView
|
|
from .allocation import SaleBatchAllocationListView
|
|
from .movements import StockMovementListView
|
|
|
|
|
|
@login_required
|
|
def inventory_home(request):
|
|
"""
|
|
Главная страница Склада для управления инвентаризацией
|
|
"""
|
|
return render(request, 'inventory/home.html')
|
|
|
|
|
|
__all__ = [
|
|
# Home
|
|
'inventory_home',
|
|
# Warehouse
|
|
'WarehouseListView', 'WarehouseCreateView', 'WarehouseUpdateView', 'WarehouseDeleteView',
|
|
# Incoming
|
|
'IncomingListView', 'IncomingCreateView', 'IncomingUpdateView', 'IncomingDeleteView',
|
|
# IncomingBatch
|
|
'IncomingBatchListView', 'IncomingBatchDetailView',
|
|
# Sale
|
|
'SaleListView', 'SaleCreateView', 'SaleUpdateView', 'SaleDeleteView', 'SaleDetailView',
|
|
# Inventory
|
|
'InventoryListView', 'InventoryCreateView', 'InventoryDetailView', 'InventoryLineCreateBulkView',
|
|
# WriteOff
|
|
'WriteOffListView', 'WriteOffCreateView', 'WriteOffUpdateView', 'WriteOffDeleteView',
|
|
# Transfer
|
|
'TransferListView', 'TransferCreateView', 'TransferUpdateView', 'TransferDeleteView',
|
|
# Reservation
|
|
'ReservationListView', 'ReservationCreateView', 'ReservationUpdateView',
|
|
# Stock
|
|
'StockListView', 'StockDetailView',
|
|
# StockBatch
|
|
'StockBatchListView', 'StockBatchDetailView',
|
|
# Allocation
|
|
'SaleBatchAllocationListView',
|
|
# Movement
|
|
'StockMovementListView',
|
|
]
|