1
0
forked from erp-dev/erp

feat: salesitem can change/soft delete

This commit is contained in:
2026-04-06 14:49:02 +08:00
parent d7bc43082e
commit 9afbb73799
16 changed files with 1075 additions and 10 deletions

View File

@@ -302,12 +302,30 @@ class SalesItem(ModelBase):
default='',
verbose_name='备注'
)
delete_at = models.DateTimeField(
null=True,
blank=True,
verbose_name='删除时间',
)
delete_by = models.ForeignKey(
User,
on_delete=models.SET_NULL,
null=True,
blank=True,
related_name='deleted_sales_items',
verbose_name='删除人',
)
class Meta:
db_table = 'sales_item'
verbose_name = '销售品'
verbose_name_plural = '销售品'
ordering = ['id']
permissions = [
('soft_delete_salesitem', 'Can soft delete sales item'),
]
def __str__(self):
return f'{self.name} x {self.quantity} {self.get_unit_display()}'
@@ -342,6 +360,55 @@ class SalesItem(ModelBase):
return None
class SalesItemChangeRecord(ModelBase):
"""
销售品修改记录。
记录允许修改字段的变更前后值,以及操作者与操作时间。
"""
sales_item = models.ForeignKey(
SalesItem,
on_delete=models.CASCADE,
related_name="change_records",
verbose_name="销售品",
)
operator = models.ForeignKey(
User,
on_delete=models.SET_NULL,
null=True,
blank=True,
related_name="sales_item_change_records",
verbose_name="操作者",
)
operated_at = models.DateTimeField(
verbose_name="操作时间",
)
before_values = models.JSONField(
default=dict,
blank=True,
verbose_name="修改前的值",
)
after_values = models.JSONField(
default=dict,
blank=True,
verbose_name="修改目标值",
)
class Meta:
db_table = "sales_item_change_record"
verbose_name = "销售品修改记录"
verbose_name_plural = "销售品修改记录"
ordering = ["-operated_at", "-id"]
def __str__(self) -> str:
return f"SalesItemChangeRecord #{self.id} - sales_item={self.sales_item_id}"
class ShipmentDelivery(ModelBase):
"""
送货单