mirror of
https://github.com/himool/HimoolERP.git
synced 2024-09-20 14:56:00 +08:00
186 lines
6.8 KiB
Python
186 lines
6.8 KiB
Python
from extensions.common.schema import *
|
|
from extensions.common.base import *
|
|
from extensions.permissions import *
|
|
from extensions.exceptions import *
|
|
from extensions.viewsets import *
|
|
from apps.option.serializers import *
|
|
from apps.option.permissions import *
|
|
from apps.option.filters import *
|
|
from apps.option.schemas import *
|
|
from apps.system.models import *
|
|
from apps.data.models import *
|
|
from apps.goods.models import *
|
|
from apps.purchase.models import *
|
|
from apps.sales.models import *
|
|
|
|
|
|
# System
|
|
class RoleOptionViewSet(InfiniteOptionViewSet):
|
|
serializer_class = RoleOptionSerializer
|
|
permission_classes = [IsAuthenticated, RoleOptionPermission]
|
|
search_fields = ['name']
|
|
queryset = Role.objects.all()
|
|
|
|
|
|
class UserOptionViewSet(InfiniteOptionViewSet):
|
|
serializer_class = UserOptionSerializer
|
|
permission_classes = [IsAuthenticated, UserOptionPermission]
|
|
filterset_fields = ['is_active']
|
|
search_fields = ['username', 'name']
|
|
queryset = User.objects.all()
|
|
|
|
|
|
# Data
|
|
class WarehouseOptionViewSet(InfiniteOptionViewSet):
|
|
serializer_class = WarehouseOptionSerializer
|
|
permission_classes = [IsAuthenticated, WarehouseOptionPermission]
|
|
filterset_fields = ['manager', 'is_active']
|
|
search_fields = ['number', 'name']
|
|
ordering_fields = ['id', 'number']
|
|
ordering = ['number', 'id']
|
|
queryset = Warehouse.objects.all()
|
|
|
|
|
|
class ClientOptionViewSet(InfiniteOptionViewSet):
|
|
serializer_class = ClientOptionSerializer
|
|
permission_classes = [IsAuthenticated, ClientOptionPermission]
|
|
filterset_fields = ['level', 'has_arrears', 'is_active']
|
|
search_fields = ['number', 'name']
|
|
ordering_fields = ['id', 'number']
|
|
ordering = ['number', 'id']
|
|
queryset = Client.objects.all()
|
|
|
|
|
|
class SupplierOptionViewSet(InfiniteOptionViewSet):
|
|
serializer_class = SupplierOptionSerializer
|
|
permission_classes = [IsAuthenticated, SupplierOptionPermission]
|
|
filterset_fields = ['has_arrears', 'is_active']
|
|
search_fields = ['number', 'name']
|
|
ordering_fields = ['id', 'number']
|
|
ordering = ['number', 'id']
|
|
queryset = Supplier.objects.all()
|
|
|
|
|
|
class AccountOptionViewSet(InfiniteOptionViewSet):
|
|
serializer_class = AccountOptionSerializer
|
|
permission_classes = [IsAuthenticated, AccountOptionPermission]
|
|
filterset_fields = ['is_active']
|
|
search_fields = ['number', 'name']
|
|
ordering_fields = ['id', 'number']
|
|
ordering = ['number', 'id']
|
|
queryset = Account.objects.all()
|
|
|
|
|
|
class ChargeItemOptionViewSet(InfiniteOptionViewSet):
|
|
serializer_class = ChargeItemOptionSerializer
|
|
permission_classes = [IsAuthenticated, ChargeItemOptionPermission]
|
|
search_fields = ['name']
|
|
queryset = ChargeItem.objects.all()
|
|
|
|
|
|
# Goods
|
|
class GoodsCategoryOptionViewSet(InfiniteOptionViewSet):
|
|
serializer_class = GoodsCategoryOptionSerializer
|
|
permission_classes = [IsAuthenticated, GoodsCategoryOptionPermission]
|
|
search_fields = ['name']
|
|
queryset = GoodsCategory.objects.all()
|
|
|
|
|
|
class GoodsUnitOptionViewSet(InfiniteOptionViewSet):
|
|
serializer_class = GoodsUnitOptionSerializer
|
|
permission_classes = [IsAuthenticated, GoodsUnitOptionPermission]
|
|
search_fields = ['name']
|
|
queryset = GoodsUnit.objects.all()
|
|
|
|
|
|
class GoodsOptionViewSet(LimitedOptionViewSet):
|
|
serializer_class = GoodsOptionSerializer
|
|
permission_classes = [IsAuthenticated, GoodsOptionPermission]
|
|
filterset_fields = ['category', 'is_active']
|
|
search_fields = ['number', 'name']
|
|
ordering_fields = ['id', 'number']
|
|
ordering = ['number', 'id']
|
|
queryset = Goods.objects.all()
|
|
|
|
|
|
class BatchOptionViewSet(InfiniteOptionViewSet):
|
|
serializer_class = BatchOptionSerializer
|
|
permission_classes = [IsAuthenticated, BatchOptionPermission]
|
|
filterset_class = BatchOptionFilter
|
|
ordering_fields = ['id', 'number']
|
|
ordering = ['-number', 'id']
|
|
select_related_fields = ['goods__unit']
|
|
queryset = Batch.objects.all()
|
|
|
|
|
|
class InventoryOptionViewSet(LimitedOptionViewSet):
|
|
serializer_class = InventoryOptionSerializer
|
|
permission_classes = [IsAuthenticated, InventoryOptionPermission]
|
|
filterset_class = InventoryOptionFilter
|
|
search_fields = ['goods__name', 'goods__number']
|
|
ordering_fields = ['id', 'total_quantity']
|
|
ordering = ['id']
|
|
select_related_fields = ['goods__unit']
|
|
queryset = Inventory.objects.all()
|
|
|
|
|
|
# Purchase
|
|
class PurchaseOrderOptionViewSet(LimitedOptionViewSet):
|
|
serializer_class = PurchaseOrderOptionSerializer
|
|
permission_classes = [IsAuthenticated, PurchaseOrderOptionPermission]
|
|
filterset_class = PurchaseOrderOptionFilter
|
|
ordering_fields = ['id', 'number']
|
|
ordering = ['-number', 'id']
|
|
select_related_fields = ['warehouse', 'supplier', 'handler', 'creator']
|
|
prefetch_related_fields = ['purchase_goods_set', 'purchase_goods_set__goods',
|
|
'purchase_goods_set__goods__unit',
|
|
'purchase_accounts', 'purchase_accounts__account']
|
|
queryset = PurchaseOrder.objects.all()
|
|
|
|
|
|
# Sales
|
|
class SalesOrderOptionViewSet(LimitedOptionViewSet):
|
|
serializer_class = SalesOrderOptionSerializer
|
|
permission_classes = [IsAuthenticated, SalesOrderOptionPermission]
|
|
filterset_class = SalesOrderOptionFilter
|
|
ordering_fields = ['id', 'number']
|
|
ordering = ['-number', 'id']
|
|
select_related_fields = ['warehouse', 'client', 'handler', 'creator']
|
|
prefetch_related_fields = ['sales_goods_set', 'sales_goods_set__goods',
|
|
'sales_goods_set__goods__unit',
|
|
'sales_accounts', 'sales_accounts__account']
|
|
queryset = SalesOrder.objects.all()
|
|
|
|
|
|
# Finance
|
|
class ClientArrearsOptionViewSet(InfiniteOptionViewSet):
|
|
serializer_class = ClientArrearsOptionSerializer
|
|
permission_classes = [IsAuthenticated, ClientArrearsOptionPermission]
|
|
filterset_fields = ['level', 'is_active', 'has_arrears']
|
|
search_fields = ['number', 'name', 'contact', 'remark']
|
|
ordering_fields = ['id', 'number', 'name', 'arrears_amount']
|
|
ordering = ['id']
|
|
queryset = Client.objects.all()
|
|
|
|
|
|
class SupplierArrearsOptionViewSet(InfiniteOptionViewSet):
|
|
serializer_class = SupplierArrearsOptionSerializer
|
|
permission_classes = [IsAuthenticated, SupplierArrearsOptionPermission]
|
|
filterset_fields = ['is_active', 'has_arrears']
|
|
search_fields = ['number', 'name', 'contact', 'remark']
|
|
ordering_fields = ['id', 'number', 'name', 'arrears_amount']
|
|
ordering = ['id']
|
|
queryset = Supplier.objects.all()
|
|
|
|
|
|
__all__ = [
|
|
'RoleOptionViewSet', 'UserOptionViewSet',
|
|
'WarehouseOptionViewSet', 'ClientOptionViewSet', 'SupplierOptionViewSet',
|
|
'AccountOptionViewSet', 'ChargeItemOptionViewSet',
|
|
'GoodsCategoryOptionViewSet', 'GoodsUnitOptionViewSet', 'GoodsOptionViewSet',
|
|
'BatchOptionViewSet', 'InventoryOptionViewSet',
|
|
'PurchaseOrderOptionViewSet',
|
|
'SalesOrderOptionViewSet',
|
|
'ClientArrearsOptionViewSet', 'SupplierArrearsOptionViewSet',
|
|
]
|