feat: 选项

This commit is contained in:
Czw 2021-11-11 00:23:25 +08:00
parent 5098177a37
commit d04e70226a
8 changed files with 22 additions and 16 deletions

View file

@ -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:

View file

@ -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):

View file

@ -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']

View file

@ -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:

View file

@ -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__ = [

View file

@ -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']

View file

@ -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__ = [

View file

@ -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):