mirror of
https://github.com/himool/HimoolERP.git
synced 2024-09-21 07:16:02 +08:00
feat: 选项
This commit is contained in:
parent
5098177a37
commit
d04e70226a
|
@ -45,6 +45,7 @@ class Client(Model):
|
|||
is_active = BooleanField(default=True, verbose_name='激活状态')
|
||||
initial_arrears_amount = AmountField(default=0, verbose_name='初期欠款金额')
|
||||
arrears_amount = AmountField(default=0, verbose_name='欠款金额')
|
||||
has_arrears = BooleanField(default=False, verbose_name='欠款状态')
|
||||
team = ForeignKey('system.Team', on_delete=CASCADE, related_name='clients')
|
||||
|
||||
class Meta:
|
||||
|
@ -69,6 +70,7 @@ class Supplier(Model):
|
|||
is_active = BooleanField(default=True, verbose_name='激活状态')
|
||||
initial_arrears_amount = AmountField(default=0, verbose_name='初期欠款金额')
|
||||
arrears_amount = AmountField(default=0, verbose_name='欠款金额')
|
||||
has_arrears = BooleanField(default=False, verbose_name='欠款状态')
|
||||
team = ForeignKey('system.Team', on_delete=CASCADE, related_name='suppliers')
|
||||
|
||||
class Meta:
|
||||
|
|
|
@ -29,11 +29,12 @@ class WarehouseSerializer(BaseSerializer):
|
|||
|
||||
|
||||
class ClientSerializer(BaseSerializer):
|
||||
level_display = CharField(source='get_level_display', read_only=True, label='等级')
|
||||
category_name = CharField(source='category.name', read_only=True, label='分类名称')
|
||||
|
||||
class Meta:
|
||||
model = Client
|
||||
read_only_fields = ['id', 'category_name', 'arrears_amount']
|
||||
read_only_fields = ['id', 'level_display', 'category_name', 'arrears_amount', 'has_arrears']
|
||||
fields = ['number', 'name', 'level', 'category', 'contact', 'phone', 'email', 'address',
|
||||
'remark', 'order', 'is_active', 'initial_arrears_amount', *read_only_fields]
|
||||
|
||||
|
@ -66,7 +67,7 @@ class SupplierSerializer(BaseSerializer):
|
|||
|
||||
class Meta:
|
||||
model = Supplier
|
||||
read_only_fields = ['id', 'category_name', 'arrears_amount']
|
||||
read_only_fields = ['id', 'category_name', 'arrears_amount', 'has_arrears']
|
||||
fields = ['number', 'name', 'category', 'contact', 'phone', 'email', 'address', 'bank_account',
|
||||
'bank_name', 'remark', 'order', 'is_active', 'initial_arrears_amount', *read_only_fields]
|
||||
|
||||
|
@ -95,10 +96,11 @@ class SupplierSerializer(BaseSerializer):
|
|||
|
||||
|
||||
class AccountSerializer(BaseSerializer):
|
||||
type_display = CharField(source='get_type_display', read_only=True, label='账户类型')
|
||||
|
||||
class Meta:
|
||||
model = Account
|
||||
read_only_fields = ['id', 'balance_amount']
|
||||
read_only_fields = ['id', 'type_display', 'balance_amount']
|
||||
fields = ['number', 'name', 'type', 'holder', 'remark', 'order', 'is_active',
|
||||
'initial_balance_amount', *read_only_fields]
|
||||
|
||||
|
@ -123,10 +125,11 @@ class AccountSerializer(BaseSerializer):
|
|||
|
||||
|
||||
class ChargeItemSerializer(BaseSerializer):
|
||||
type_display = CharField(source='get_type_display', read_only=True, label='收支类型')
|
||||
|
||||
class Meta:
|
||||
model = ChargeItem
|
||||
read_only_fields = ['id']
|
||||
read_only_fields = ['id', 'type_display']
|
||||
fields = ['name', 'type', 'remark', *read_only_fields]
|
||||
|
||||
def validate_name(self, value):
|
||||
|
|
|
@ -55,7 +55,7 @@ class ClientViewSet(BaseViewSet, ReadWriteMixin):
|
|||
|
||||
serializer_class = ClientSerializer
|
||||
permission_classes = [IsAuthenticated, ClientPermission]
|
||||
filterset_fields = ['level', 'category', 'is_active']
|
||||
filterset_fields = ['level', 'category', 'has_arrears', 'is_active']
|
||||
search_fields = ['number', 'name', 'contact', 'remark']
|
||||
ordering_fields = ['id', 'number', 'name', 'order']
|
||||
ordering = ['order', 'id']
|
||||
|
@ -88,7 +88,7 @@ class SupplierViewSet(BaseViewSet, ReadWriteMixin):
|
|||
|
||||
serializer_class = SupplierSerializer
|
||||
permission_classes = [IsAuthenticated, SupplierPermission]
|
||||
filterset_fields = ['category', 'is_active']
|
||||
filterset_fields = ['category', 'has_arrears', 'is_active']
|
||||
search_fields = ['number', 'name', 'contact', 'remark']
|
||||
ordering_fields = ['id', 'number', 'name', 'order']
|
||||
ordering = ['order', 'id']
|
||||
|
|
|
@ -44,7 +44,7 @@ class Batch(Model):
|
|||
production_date = DateField(null=True, verbose_name='生产日期')
|
||||
shelf_life_days = IntegerField(default=0, verbose_name='保质期天数')
|
||||
expiration_date = DateField(null=True, verbose_name='过期日期')
|
||||
is_empty = BooleanField(default=False, verbose_name='库存状态')
|
||||
has_stock = BooleanField(default=True, verbose_name='库存状态')
|
||||
create_time = DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
team = ForeignKey('system.Team', on_delete=CASCADE, related_name='batchs')
|
||||
|
||||
|
@ -58,7 +58,7 @@ class Inventory(Model):
|
|||
warehouse = ForeignKey('data.Warehouse', on_delete=CASCADE, related_name='inventories', verbose_name='仓库')
|
||||
goods = ForeignKey('goods.Goods', on_delete=CASCADE, related_name='inventories', verbose_name='商品')
|
||||
total_quantity = FloatField(default=0, verbose_name='库存总数')
|
||||
is_empty = BooleanField(default=True, verbose_name='库存状态')
|
||||
has_stock = BooleanField(default=False, verbose_name='库存状态')
|
||||
team = ForeignKey('system.Team', on_delete=CASCADE, related_name='inventories')
|
||||
|
||||
class Meta:
|
||||
|
|
|
@ -54,7 +54,7 @@ class BatchSerializer(BaseSerializer):
|
|||
model = Batch
|
||||
fields = ['id', 'number', 'warehouse', 'warehouse_number', 'warehouse_name', 'goods', 'goods_number',
|
||||
'goods_name', 'goods_barcode', 'total_quantity', 'remain_quantity', 'unit_name',
|
||||
'production_date', 'shelf_life_days', 'expiration_date', 'is_empty', 'create_time']
|
||||
'production_date', 'shelf_life_days', 'expiration_date', 'has_stock', 'create_time']
|
||||
|
||||
|
||||
class InventorySerializer(BaseSerializer):
|
||||
|
@ -68,7 +68,7 @@ class InventorySerializer(BaseSerializer):
|
|||
class Meta:
|
||||
model = Inventory
|
||||
fields = ['id', 'warehouse', 'warehouse_number', 'warehouse_name', 'goods', 'goods_number',
|
||||
'goods_name', 'goods_barcode', 'total_quantity', 'unit_name']
|
||||
'goods_name', 'goods_barcode', 'total_quantity', 'unit_name', 'has_stock']
|
||||
|
||||
|
||||
__all__ = [
|
||||
|
|
|
@ -55,7 +55,7 @@ class BatchViewSet(BaseViewSet, ReadOnlyMixin):
|
|||
|
||||
serializer_class = BatchSerializer
|
||||
permission_classes = [IsAuthenticated, BatchPermission]
|
||||
filterset_fields = ['number', 'warehouse', 'goods', 'is_empty']
|
||||
filterset_fields = ['number', 'warehouse', 'goods', 'has_stock']
|
||||
search_fields = ['number', 'goods__number', 'goods__name']
|
||||
ordering_fields = ['id', 'number', 'total_quantity', 'remain_quantity', 'production_date',
|
||||
'expiration_date', 'create_time']
|
||||
|
@ -68,7 +68,7 @@ class InventoryViewSet(BaseViewSet, ReadOnlyMixin):
|
|||
|
||||
serializer_class = InventorySerializer
|
||||
permission_classes = [IsAuthenticated, InventoryPermission]
|
||||
filterset_fields = ['warehouse', 'goods', 'is_empty']
|
||||
filterset_fields = ['warehouse', 'goods', 'has_stock']
|
||||
search_fields = ['goods__number', 'goods__name']
|
||||
ordering_fields = ['id', 'total_quantity']
|
||||
select_related_fields = ['warehouse', 'goods', 'goods__unit']
|
||||
|
|
|
@ -39,7 +39,7 @@ class WarehouseOptionViewSet(OptionViewSet):
|
|||
class ClientOptionViewSet(OptionViewSet):
|
||||
serializer_class = ClientOptionSerializer
|
||||
permission_classes = [IsAuthenticated, ClientOptionPermission]
|
||||
filterset_fields = ['level', 'category']
|
||||
filterset_fields = ['level', 'category', 'has_arrears']
|
||||
search_fields = ['number', 'name']
|
||||
ordering_fields = ['id', 'number', 'order']
|
||||
ordering = ['order', 'number', 'id']
|
||||
|
@ -49,7 +49,7 @@ class ClientOptionViewSet(OptionViewSet):
|
|||
class SupplierOptionViewSet(OptionViewSet):
|
||||
serializer_class = SupplierOptionSerializer
|
||||
permission_classes = [IsAuthenticated, SupplierOptionPermission]
|
||||
filterset_fields = ['category']
|
||||
filterset_fields = ['category', 'has_arrears']
|
||||
search_fields = ['number', 'name']
|
||||
ordering_fields = ['id', 'number', 'order']
|
||||
ordering = ['order', 'number', 'id']
|
||||
|
@ -118,7 +118,7 @@ class BatchOptionViewSet(OptionViewSet):
|
|||
ordering_fields = ['id', 'number']
|
||||
ordering = ['-number', 'id']
|
||||
select_related_fields = ['goods__unit']
|
||||
queryset = Batch.objects.filter(is_empty=False)
|
||||
queryset = Batch.objects.filter(has_stock=True)
|
||||
|
||||
|
||||
__all__ = [
|
||||
|
|
|
@ -28,10 +28,11 @@ class RoleSerializer(BaseSerializer):
|
|||
|
||||
|
||||
class UserSerializer(BaseSerializer):
|
||||
sex_display = CharField(source='get_sex_display', read_only=True, label='性别')
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
read_only_fields = ['id', 'is_manager', 'create_time']
|
||||
read_only_fields = ['id', 'sex_display', 'is_manager', 'create_time']
|
||||
fields = ['username', 'name', 'phone', 'email', 'sex', 'roles', 'is_active', *read_only_fields]
|
||||
|
||||
def validate_username(self, value):
|
||||
|
|
Loading…
Reference in a new issue