mirror of
https://github.com/himool/HimoolERP.git
synced 2024-09-20 23:06:02 +08:00
feat: 选项
This commit is contained in:
parent
396fafd8a9
commit
5098177a37
|
@ -166,5 +166,6 @@ class GoodsUnit(Model):
|
|||
|
||||
__all__ = [
|
||||
'Warehouse', 'Client', 'Supplier', 'Account',
|
||||
'ChargeItem', 'ClientCategory', 'SupplierCategory', 'GoodsCategory', 'GoodsUnit',
|
||||
'ChargeItem', 'ClientCategory', 'SupplierCategory',
|
||||
'GoodsCategory', 'GoodsUnit',
|
||||
]
|
||||
|
|
|
@ -1,6 +1,33 @@
|
|||
from extensions.permissions import InterfacePermission
|
||||
from extensions.permissions import BasePermission
|
||||
from apps.system.permissions import *
|
||||
from apps.data.permissions import *
|
||||
from apps.goods.permissions import *
|
||||
|
||||
|
||||
# System
|
||||
RoleOptionPermission = BasePermission
|
||||
UserOptionPermission = BasePermission
|
||||
|
||||
# Data
|
||||
WarehouseOptionPermission = BasePermission
|
||||
ClientOptionPermission = BasePermission
|
||||
SupplierOptionPermission = BasePermission
|
||||
AccountOptionPermission = BasePermission
|
||||
ChargeItemOptionPermission = BasePermission
|
||||
ClientCategoryOptionPermission = BasePermission
|
||||
SupplierCategoryOptionPermission = BasePermission
|
||||
GoodsCategoryOptionPermission = BasePermission
|
||||
GoodsUnitOptionPermission = BasePermission
|
||||
|
||||
# Goods
|
||||
GoodsOptionPermission = BasePermission
|
||||
BatchOptionPermission = BasePermission
|
||||
|
||||
|
||||
__all__ = [
|
||||
|
||||
'RoleOptionPermission', 'UserOptionPermission',
|
||||
'WarehouseOptionPermission', 'ClientOptionPermission', 'SupplierOptionPermission', 'AccountOptionPermission',
|
||||
'ChargeItemOptionPermission', 'ClientCategoryOptionPermission', 'SupplierCategoryOptionPermission',
|
||||
'GoodsCategoryOptionPermission', 'GoodsUnitOptionPermission', '',
|
||||
'GoodsOptionPermission', 'BatchOptionPermission',
|
||||
]
|
||||
|
|
|
@ -1,7 +1,110 @@
|
|||
from extensions.serializers import *
|
||||
from extensions.exceptions import *
|
||||
from apps.system.models import *
|
||||
from apps.data.models import *
|
||||
from apps.goods.models import *
|
||||
|
||||
|
||||
# System
|
||||
class RoleOptionSerializer(ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = Role
|
||||
fields = ['id', 'name']
|
||||
|
||||
|
||||
class UserOptionSerializer(ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
fields = ['id', 'username', 'name']
|
||||
|
||||
|
||||
# Data
|
||||
class WarehouseOptionSerializer(ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = Warehouse
|
||||
fields = ['id', 'number', 'name', 'is_locked']
|
||||
|
||||
|
||||
class ClientOptionSerializer(ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = Client
|
||||
fields = ['id', 'number', 'name', 'level']
|
||||
|
||||
|
||||
class SupplierOptionSerializer(ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = Supplier
|
||||
fields = ['id', 'number', 'name']
|
||||
|
||||
|
||||
class AccountOptionSerializer(ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = Account
|
||||
fields = ['id', 'number', 'name']
|
||||
|
||||
|
||||
class ChargeItemOptionSerializer(ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = ChargeItem
|
||||
fields = ['id', 'name']
|
||||
|
||||
|
||||
class ClientCategoryOptionSerializer(ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = ClientCategory
|
||||
fields = ['id', 'name']
|
||||
|
||||
|
||||
class SupplierCategoryOptionSerializer(ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = SupplierCategory
|
||||
fields = ['id', 'name']
|
||||
|
||||
|
||||
class GoodsCategoryOptionSerializer(ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = GoodsCategory
|
||||
fields = ['id', 'name']
|
||||
|
||||
|
||||
class GoodsUnitOptionSerializer(ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = GoodsUnit
|
||||
fields = ['id', 'name']
|
||||
|
||||
|
||||
# Goods
|
||||
class GoodsOptionSerializer(ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = Goods
|
||||
fields = ['id', 'number', 'name', 'barcode', 'enable_shelf_life', 'shelf_life_days',
|
||||
'purchase_price', 'retail_price', 'level_price1', 'level_price2', 'level_price3']
|
||||
|
||||
|
||||
class BatchOptionSerializer(ModelSerializer):
|
||||
unit_name = CharField(source='goods.unit.name', read_only=True, label='单位名称')
|
||||
|
||||
class Meta:
|
||||
model = Batch
|
||||
fields = ['id', 'number', 'remain_quantity', 'unit_name', 'production_date', 'expiration_date']
|
||||
|
||||
|
||||
__all__ = [
|
||||
|
||||
'RoleOptionSerializer', 'UserOptionSerializer',
|
||||
'WarehouseOptionSerializer', 'ClientOptionSerializer', 'SupplierOptionSerializer', 'AccountOptionSerializer',
|
||||
'ChargeItemOptionSerializer', 'ClientCategoryOptionSerializer', 'SupplierCategoryOptionSerializer',
|
||||
'GoodsCategoryOptionSerializer', 'GoodsUnitOptionSerializer',
|
||||
'GoodsOptionSerializer', 'BatchOptionSerializer',
|
||||
]
|
||||
|
|
|
@ -1,5 +1,26 @@
|
|||
from extensions.routers import *
|
||||
from apps.option.views import *
|
||||
|
||||
|
||||
router = BaseRouter()
|
||||
|
||||
# System
|
||||
router.register('roles/options', RoleOptionViewSet, 'role_option')
|
||||
router.register('users/options', UserOptionViewSet, 'user_option')
|
||||
|
||||
# Data
|
||||
router.register('warehouses/options', WarehouseOptionViewSet, 'warehouse_option')
|
||||
router.register('clients/options', ClientOptionViewSet, 'client_option')
|
||||
router.register('suppliers/options', SupplierOptionViewSet, 'supplier_option')
|
||||
router.register('accounts/options', AccountOptionViewSet, 'account_option')
|
||||
router.register('charge_items/options', ChargeItemOptionViewSet, 'charge_item_option')
|
||||
router.register('client_categories/options', ClientCategoryOptionViewSet, 'client_category_option')
|
||||
router.register('supplier_categories/options', SupplierCategoryOptionViewSet, 'supplier_category_option')
|
||||
router.register('goods_categories/options', GoodsCategoryOptionViewSet, 'goods_category_option')
|
||||
router.register('goods_units/options', GoodsUnitOptionViewSet, 'goods_unit_option')
|
||||
|
||||
# Goods
|
||||
router.register('goods/options', GoodsOptionViewSet, 'goods_option')
|
||||
router.register('batchs/options', BatchOptionViewSet, 'batch_option')
|
||||
|
||||
urlpatterns = router.urls
|
||||
|
|
|
@ -1,8 +1,130 @@
|
|||
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 *
|
||||
|
||||
|
||||
# System
|
||||
class RoleOptionViewSet(OptionViewSet):
|
||||
serializer_class = RoleOptionSerializer
|
||||
permission_classes = [IsAuthenticated, RoleOptionPermission]
|
||||
search_fields = ['name']
|
||||
queryset = Role.objects.all()
|
||||
|
||||
|
||||
class UserOptionViewSet(OptionViewSet):
|
||||
serializer_class = UserOptionSerializer
|
||||
permission_classes = [IsAuthenticated, UserOptionPermission]
|
||||
search_fields = ['username', 'name']
|
||||
queryset = User.objects.filter(is_active=True)
|
||||
|
||||
|
||||
# Data
|
||||
class WarehouseOptionViewSet(OptionViewSet):
|
||||
serializer_class = WarehouseOptionSerializer
|
||||
permission_classes = [IsAuthenticated, WarehouseOptionPermission]
|
||||
filterset_fields = ['manager']
|
||||
search_fields = ['number', 'name']
|
||||
ordering_fields = ['id', 'number', 'order']
|
||||
ordering = ['order', 'number', 'id']
|
||||
queryset = Warehouse.objects.filter(is_active=True)
|
||||
|
||||
|
||||
class ClientOptionViewSet(OptionViewSet):
|
||||
serializer_class = ClientOptionSerializer
|
||||
permission_classes = [IsAuthenticated, ClientOptionPermission]
|
||||
filterset_fields = ['level', 'category']
|
||||
search_fields = ['number', 'name']
|
||||
ordering_fields = ['id', 'number', 'order']
|
||||
ordering = ['order', 'number', 'id']
|
||||
queryset = Client.objects.filter(is_active=True)
|
||||
|
||||
|
||||
class SupplierOptionViewSet(OptionViewSet):
|
||||
serializer_class = SupplierOptionSerializer
|
||||
permission_classes = [IsAuthenticated, SupplierOptionPermission]
|
||||
filterset_fields = ['category']
|
||||
search_fields = ['number', 'name']
|
||||
ordering_fields = ['id', 'number', 'order']
|
||||
ordering = ['order', 'number', 'id']
|
||||
queryset = Supplier.objects.filter(is_active=True)
|
||||
|
||||
|
||||
class AccountOptionViewSet(OptionViewSet):
|
||||
serializer_class = AccountOptionSerializer
|
||||
permission_classes = [IsAuthenticated, AccountOptionPermission]
|
||||
search_fields = ['number', 'name']
|
||||
ordering_fields = ['id', 'number', 'order']
|
||||
ordering = ['order', 'number', 'id']
|
||||
queryset = Account.objects.filter(is_active=True)
|
||||
|
||||
|
||||
class ChargeItemOptionViewSet(OptionViewSet):
|
||||
serializer_class = ChargeItemOptionSerializer
|
||||
permission_classes = [IsAuthenticated, ChargeItemOptionPermission]
|
||||
search_fields = ['name']
|
||||
queryset = ChargeItem.objects.all()
|
||||
|
||||
|
||||
class ClientCategoryOptionViewSet(OptionViewSet):
|
||||
serializer_class = ClientCategoryOptionSerializer
|
||||
permission_classes = [IsAuthenticated, ClientCategoryOptionPermission]
|
||||
search_fields = ['name']
|
||||
queryset = ClientCategory.objects.all()
|
||||
|
||||
|
||||
class SupplierCategoryOptionViewSet(OptionViewSet):
|
||||
serializer_class = SupplierCategoryOptionSerializer
|
||||
permission_classes = [IsAuthenticated, SupplierCategoryOptionPermission]
|
||||
search_fields = ['name']
|
||||
queryset = SupplierCategory.objects.all()
|
||||
|
||||
|
||||
class GoodsCategoryOptionViewSet(OptionViewSet):
|
||||
serializer_class = GoodsCategoryOptionSerializer
|
||||
permission_classes = [IsAuthenticated, GoodsCategoryOptionPermission]
|
||||
search_fields = ['name']
|
||||
queryset = GoodsCategory.objects.all()
|
||||
|
||||
|
||||
class GoodsUnitOptionViewSet(OptionViewSet):
|
||||
serializer_class = GoodsUnitOptionSerializer
|
||||
permission_classes = [IsAuthenticated, GoodsUnitOptionPermission]
|
||||
search_fields = ['name']
|
||||
queryset = GoodsUnit.objects.all()
|
||||
|
||||
|
||||
# Goods
|
||||
class GoodsOptionViewSet(OptionViewSet):
|
||||
serializer_class = GoodsOptionSerializer
|
||||
permission_classes = [IsAuthenticated, GoodsOptionPermission]
|
||||
filterset_fields = ['category']
|
||||
search_fields = ['number', 'name']
|
||||
ordering_fields = ['id', 'number', 'order']
|
||||
ordering = ['order', 'number', 'id']
|
||||
queryset = Goods.objects.filter(is_active=True)
|
||||
|
||||
|
||||
class BatchOptionViewSet(OptionViewSet):
|
||||
serializer_class = BatchOptionSerializer
|
||||
permission_classes = [IsAuthenticated, BatchOptionPermission]
|
||||
filterset_fields = ['warehouse', 'goods']
|
||||
ordering_fields = ['id', 'number']
|
||||
ordering = ['-number', 'id']
|
||||
select_related_fields = ['goods__unit']
|
||||
queryset = Batch.objects.filter(is_empty=False)
|
||||
|
||||
|
||||
__all__ = [
|
||||
|
||||
'RoleOptionViewSet', 'UserOptionViewSet',
|
||||
'WarehouseOptionViewSet', 'ClientOptionViewSet', 'SupplierOptionViewSet', 'AccountOptionViewSet',
|
||||
'ChargeItemOptionViewSet', 'ClientCategoryOptionViewSet', 'SupplierCategoryOptionViewSet',
|
||||
'GoodsCategoryOptionViewSet', 'GoodsUnitOptionViewSet',
|
||||
'GoodsOptionViewSet', 'BatchOptionViewSet',
|
||||
]
|
||||
|
|
Loading…
Reference in a new issue