XH_Digital_Management/application/rsc_mgnt/models.py

205 lines
9.7 KiB
Python

from django.db import models
from django.utils import timezone
# 消耗品类别管理表
class ConsumableGoodsCategory(models.Model):
category_id = models.AutoField(primary_key=True, verbose_name='类别ID')
category_name = models.CharField(max_length=255, unique=True, verbose_name='类别名称')
description = models.TextField(blank=True, verbose_name='描述')
class Meta:
verbose_name = '消耗品类别管理'
verbose_name_plural = '消耗品类别管理'
def __str__(self):
return self.category_name
# 消耗品入库管理表
class ConsumableGoodsInboundManagement(models.Model):
inbound_id = models.AutoField(primary_key=True, verbose_name='入库记录ID')
inventory = models.ForeignKey('ConsumableGoodsInventory', on_delete=models.CASCADE, verbose_name='库存')
item_name = models.CharField(max_length=255, verbose_name='物品名称')
category = models.ForeignKey(ConsumableGoodsCategory, on_delete=models.CASCADE, verbose_name='类别')
specification = models.CharField(max_length=255, verbose_name='规格', blank=True)
unit = models.CharField(max_length=255, verbose_name='单位')
quantity = models.IntegerField(verbose_name='数量')
date = models.DateField(verbose_name='日期')
checker = models.CharField(max_length=255, verbose_name='核对人')
storage_location = models.CharField(max_length=255, verbose_name='库存地')
class Meta:
verbose_name = '消耗品入库管理'
verbose_name_plural = '消耗品入库管理'
def __str__(self):
return f"{self.item_name} - {self.quantity} {self.unit} - {self.date}"
# 消耗品库存
class ConsumableGoodsInventory(models.Model):
inventory_id = models.AutoField(primary_key=True, verbose_name='库存ID')
item_name = models.CharField(max_length=255, verbose_name='物品名称')
category = models.ForeignKey(ConsumableGoodsCategory, on_delete=models.CASCADE, verbose_name='类别')
specification = models.CharField(max_length=255, verbose_name='规格', blank=True)
unit = models.CharField(max_length=255, verbose_name='单位')
current_inventory = models.IntegerField(verbose_name='当前库存量')
safety_stock = models.IntegerField(verbose_name='安全库存量')
replenishment_alert = models.BooleanField(default=False, verbose_name='补货提醒')
storage_location = models.CharField(max_length=255, verbose_name='库存地')
class Meta:
verbose_name = '消耗品库存'
verbose_name_plural = '消耗品库存'
def __str__(self):
return f"{self.item_name} - {self.current_inventory} {self.unit} in {self.storage_location}"
# 消耗品出库记录
class ConsumableGoodsOutboundRecords(models.Model):
outbound_id = models.AutoField(primary_key=True, verbose_name='出库记录ID')
inventory = models.ForeignKey(ConsumableGoodsInventory, on_delete=models.CASCADE, verbose_name='库存')
item_name = models.CharField(max_length=255, verbose_name='物品名称')
category = models.ForeignKey(ConsumableGoodsCategory, on_delete=models.CASCADE, verbose_name='类别')
specification = models.CharField(max_length=255, verbose_name='规格', blank=True)
unit = models.CharField(max_length=255, verbose_name='单位')
quantity_out = models.IntegerField(verbose_name='出库数量')
outbound_date = models.DateField(verbose_name='出库日期')
recipient = models.CharField(max_length=255, verbose_name='领用人')
purpose = models.CharField(max_length=255, verbose_name='用途', blank=True)
class Meta:
verbose_name = '消耗品出库记录'
verbose_name_plural = '消耗品出库记录'
def __str__(self):
return f"{self.item_name} - {self.quantity_out} {self.unit} - {self.outbound_date}"
# 公司手机号使用登记表
class CompanyMobilePhoneUsageRegistry(models.Model):
record_id = models.AutoField(primary_key=True, verbose_name='记录ID')
mobile_number = models.CharField(max_length=20, unique=True, verbose_name='手机号')
owner = models.CharField(max_length=255, verbose_name='机主')
current_user = models.CharField(max_length=255, verbose_name='现使用人')
purpose = models.CharField(max_length=255, verbose_name='用途')
class Meta:
verbose_name = '公司手机号使用登记'
verbose_name_plural = '公司手机号使用登记'
def __str__(self):
return f"{self.mobile_number} - {self.current_user}"
# 商务车使用登记表
class BusinessVehicleUsageRegistry(models.Model):
record_id = models.AutoField(primary_key=True, verbose_name='记录ID')
license_plate = models.CharField(max_length=20, verbose_name='车牌')
checkout_time = models.DateTimeField(verbose_name='借出时间')
borrower = models.CharField(max_length=255, verbose_name='借用人')
accompanying_personnel = models.CharField(max_length=255, verbose_name='同行人员')
reason = models.CharField(max_length=255, verbose_name='事由')
destination = models.CharField(max_length=255, verbose_name='目的地')
days_of_use = models.IntegerField(verbose_name='用车天数')
return_time = models.DateTimeField(verbose_name='还车时间')
class Meta:
verbose_name = '商务车使用登记'
verbose_name_plural = '商务车使用登记'
def __str__(self):
return f"{self.license_plate} - {self.borrower} - {self.checkout_time}"
# 会员账号登记表
class MembershipAccountsRegistry(models.Model):
STATUS_CHOICES = [
('正常', '正常'),
('过期', '过期')
]
record_id = models.AutoField(primary_key=True, verbose_name='记录ID')
platform_name = models.CharField(max_length=255, verbose_name='平台名称')
purpose = models.CharField(max_length=255, verbose_name='用途')
price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='价格(元)')
manager = models.CharField(max_length=255, verbose_name='管理人')
account = models.CharField(max_length=255, verbose_name='账号')
password = models.CharField(max_length=255, verbose_name='密码')
effective_date = models.DateField(verbose_name='会员生效日')
expiration_date = models.DateField(verbose_name='会员到期日')
status = models.CharField(max_length=10, choices=STATUS_CHOICES, verbose_name='状态')
@property
def current_status(self):
# 根据系统时间与会员到期日自动判断状态
if self.expiration_date < timezone.now().date():
return '过期'
return '正常'
class Meta:
verbose_name = '会员账号登记'
verbose_name_plural = '会员账号登记'
def __str__(self):
return f"{self.platform_name} - {self.account}"
# 会员账号变更记录表
class MembershipModificationRecord(models.Model):
change_record_id = models.AutoField(primary_key=True, verbose_name='变更记录ID')
account_record = models.ForeignKey('MembershipAccountsRegistry', on_delete=models.CASCADE,
verbose_name='会员记录ID')
modification_date = models.DateField(verbose_name='修改日期')
modification_reason = models.TextField(verbose_name='修改原因')
previous_expiration_date = models.DateField(verbose_name='修改前到期日')
new_expiration_date = models.DateField(verbose_name='修改后到期日')
class Meta:
verbose_name = '会员账号变更记录'
verbose_name_plural = '会员账号变更记录'
def __str__(self):
return f"变更记录ID: {self.change_record_id} - 会员记录ID: {self.account_record_id}"
# 储值卡登记表
class StoredValueCardRegistration(models.Model):
record_id = models.AutoField(primary_key=True, verbose_name='记录编号')
merchant_name = models.CharField(max_length=255, verbose_name='商家名称')
merchant_type = models.CharField(max_length=255, verbose_name='商家类型')
balance = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='余额(元)')
usage_records = models.TextField(verbose_name='使用记录')
class Meta:
verbose_name = '储值卡登记表'
verbose_name_plural = '储值卡登记表'
def __str__(self):
return f"{self.merchant_name} - 余额: {self.balance}"
# 储值卡使用记录表
class StoredValueCardUseRecord(models.Model):
usage_record_id = models.AutoField(primary_key=True, verbose_name='使用记录ID')
stored_value_card = models.ForeignKey(StoredValueCardRegistration, on_delete=models.CASCADE,
verbose_name='储值卡记录ID')
transaction_date = models.DateField(verbose_name='交易日期')
transaction_amount = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='交易金额')
transaction_type = models.CharField(max_length=10, choices=[('充值', '充值'), ('消费', '消费')],
verbose_name='交易类型')
current_balance = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='当前余额(元)')
consumer = models.CharField(max_length=255, blank=True, null=True, verbose_name='消费人')
primary_department = models.CharField(max_length=255, blank=True, null=True, verbose_name='一级部门')
purpose = models.CharField(max_length=255, blank=True, null=True, verbose_name='用途')
created_at = models.DateTimeField(auto_now_add=True, verbose_name='记录创建时间')
updated_at = models.DateTimeField(auto_now=True, verbose_name='记录更新时间')
class Meta:
verbose_name = '储值卡使用记录表'
verbose_name_plural = '储值卡使用记录表'
def __str__(self):
return f"记录ID: {self.usage_record_id}, 储值卡ID: {self.stored_value_card_id}, 交易类型: {self.transaction_type}"