1
0
forked from erp-dev/erp

feat: added print_count api, added merchant setting model, added manual mode setting for purchase order

This commit is contained in:
2025-11-28 15:01:11 +08:00
parent 53f2a24b20
commit 0c62398120
36 changed files with 1634 additions and 478 deletions

View File

@@ -452,3 +452,52 @@ class VehicleTransportRecord(ModelBase):
class Meta:
verbose_name = '司机车次'
verbose_name_plural = '司机车次'
class MerchantSettingTypeEnum(models.TextChoices):
"""商户设置类型枚举"""
STR = 'str', '字符串'
INT = 'int', '整数'
FLOAT = 'float', '浮点数'
BOOL = 'bool', '布尔值'
class MerchantSetting(ModelBase):
id = models.BigAutoField(primary_key=True)
merchant = models.ForeignKey('Merchant', on_delete=models.PROTECT, related_name='settings', verbose_name='所属商户')
key = models.CharField(max_length=100, verbose_name='设置项')
type = models.CharField(
max_length=20,
choices=MerchantSettingTypeEnum.choices,
default=MerchantSettingTypeEnum.STR,
verbose_name='设置类型',
)
val_str = models.CharField(max_length=100, null=True, blank=True, verbose_name='设置值(字符串)')
val_int = models.IntegerField(null=True, blank=True, verbose_name='设置值(整数)')
val_float = models.FloatField(null=True, blank=True, verbose_name='设置值(浮点数)')
val_bool = models.BooleanField(null=True, blank=True, verbose_name='设置值(布尔值)')
description = models.TextField(blank=True, null=True, verbose_name='备注')
@property
def value(self):
if self.type == MerchantSettingTypeEnum.STR:
return self.val_str
elif self.type == MerchantSettingTypeEnum.INT:
return self.val_int
elif self.type == MerchantSettingTypeEnum.FLOAT:
return self.val_float
elif self.type == MerchantSettingTypeEnum.BOOL:
return self.val_bool
raise ValueError(f'Invalid setting type: {self.type}')
def __str__(self):
return f'{self.merchant.name} - {self.key}'
class Meta:
verbose_name = '商户设置'
verbose_name_plural = '商户设置'
class MerchantSettingKeyEnum(models.TextChoices):
"""商户设置项枚举"""
AUTO_CREATE_STOCK_CHANGE_TASKS = 'auto_create_stock_change_tasks', '自动创建出入库记录任务'