mirror of
https://github.com/zhtyyx/ioe.git
synced 2026-06-03 21:02:59 +08:00
66 lines
3.2 KiB
Python
66 lines
3.2 KiB
Python
from django.db import models
|
|
from django.contrib.auth.models import User
|
|
from django.contrib.contenttypes.models import ContentType
|
|
|
|
|
|
class OperationLog(models.Model):
|
|
"""
|
|
通用操作日志模型,记录系统中所有类型的操作,支持关联到不同的对象
|
|
"""
|
|
OPERATION_TYPES = [
|
|
('SALE', '销售'),
|
|
('INVENTORY', '库存调整'),
|
|
('MEMBER', '会员管理'),
|
|
('INVENTORY_CHECK', '库存盘点'),
|
|
('OTHER', '其他')
|
|
]
|
|
|
|
operator = models.ForeignKey(User, on_delete=models.PROTECT, verbose_name='操作员')
|
|
operation_type = models.CharField(max_length=20, choices=OPERATION_TYPES, verbose_name='操作类型')
|
|
details = models.TextField(verbose_name='操作详情')
|
|
timestamp = models.DateTimeField(auto_now_add=True, verbose_name='操作时间')
|
|
related_object_id = models.PositiveIntegerField(verbose_name='关联对象ID')
|
|
related_content_type = models.ForeignKey(ContentType, on_delete=models.PROTECT, verbose_name='关联类型')
|
|
|
|
class Meta:
|
|
verbose_name = '操作日志'
|
|
verbose_name_plural = '操作日志'
|
|
ordering = ['-timestamp']
|
|
|
|
def __str__(self):
|
|
return f'{self.operator.username} - {self.get_operation_type_display()} - {self.timestamp}'
|
|
|
|
|
|
class SystemConfig(models.Model):
|
|
"""系统配置模型"""
|
|
company_name = models.CharField(max_length=100, verbose_name="公司名称", default="我的商店")
|
|
company_address = models.TextField(verbose_name="公司地址", blank=True, null=True)
|
|
company_phone = models.CharField(max_length=20, verbose_name="联系电话", blank=True, null=True)
|
|
company_email = models.EmailField(verbose_name="电子邮箱", blank=True, null=True)
|
|
company_website = models.URLField(verbose_name="网站", blank=True, null=True)
|
|
company_logo = models.ImageField(upload_to='logos/', verbose_name="公司标志", blank=True, null=True)
|
|
|
|
# 条码设置
|
|
barcode_width = models.IntegerField(verbose_name="条码宽度", default=300)
|
|
barcode_height = models.IntegerField(verbose_name="条码高度", default=100)
|
|
barcode_font_size = models.IntegerField(verbose_name="条码字体大小", default=12)
|
|
barcode_show_price = models.BooleanField(verbose_name="显示价格", default=True)
|
|
barcode_show_name = models.BooleanField(verbose_name="显示商品名称", default=True)
|
|
barcode_show_company = models.BooleanField(verbose_name="显示公司名称", default=True)
|
|
|
|
# 打印设置
|
|
receipt_header = models.TextField(verbose_name="小票页眉", blank=True, null=True)
|
|
receipt_footer = models.TextField(verbose_name="小票页脚", blank=True, null=True)
|
|
|
|
# 系统设置
|
|
enable_low_stock_alert = models.BooleanField(verbose_name="启用低库存提醒", default=True)
|
|
default_tax_rate = models.DecimalField(max_digits=5, decimal_places=2, verbose_name="默认税率", default=0)
|
|
currency_symbol = models.CharField(max_length=10, verbose_name="货币符号", default="¥")
|
|
timezone = models.CharField(max_length=50, verbose_name="时区", default="Asia/Shanghai")
|
|
|
|
class Meta:
|
|
verbose_name = '系统配置'
|
|
verbose_name_plural = '系统配置'
|
|
|
|
def __str__(self):
|
|
return self.company_name |