forked from erp-dev/erp
feat: human_id for all objects in business module
This commit is contained in:
@@ -9,6 +9,13 @@ from flower.common import ModelBase
|
||||
from basic_info import models as basic_info_models
|
||||
|
||||
|
||||
def build_business_human_id(prefix: str, created_at, object_id) -> str:
|
||||
"""生成业务单据的人类可读编号(虚拟编号,不落库)。"""
|
||||
if object_id is None or created_at is None:
|
||||
return ''
|
||||
return f"{prefix}{created_at.year}{created_at.month:02d}{created_at.day:02d}{object_id:06d}"
|
||||
|
||||
|
||||
class PurchaseOrderKindEnum(models.IntegerChoices):
|
||||
"""采购单类型"""
|
||||
WHOLESALE = 1, '大货'
|
||||
@@ -154,9 +161,7 @@ class PurchaseOrder(OrderItemsAggregationMixin, OrderDirectionMixin, OrderCounte
|
||||
|
||||
规则与 SalesOrder.human_id 保持一致:CG + YYYYMMDD{6位id}
|
||||
"""
|
||||
if self.id is None or self.created_at is None:
|
||||
return ""
|
||||
return f"CG{self.created_at.year}{self.created_at.month:02d}{self.created_at.day:02d}{self.id:06d}"
|
||||
return build_business_human_id('CG', self.created_at, self.id)
|
||||
|
||||
class Meta:
|
||||
verbose_name = '采购单'
|
||||
@@ -309,9 +314,7 @@ class SalesOrder(OrderItemsAggregationMixin, OrderDirectionMixin, OrderCounterpa
|
||||
|
||||
规则:XS + YYYYMMDD{6位id}
|
||||
"""
|
||||
if self.id is None or self.created_at is None:
|
||||
return ""
|
||||
return f"XS{self.created_at.year}{self.created_at.month:02d}{self.created_at.day:02d}{self.id:06d}"
|
||||
return build_business_human_id('XS', self.created_at, self.id)
|
||||
|
||||
class Meta:
|
||||
verbose_name = '销售单'
|
||||
@@ -505,9 +508,7 @@ class PreSalesOrder(ModelBase):
|
||||
|
||||
规则:YS + YYYYMMDD{6位id}
|
||||
"""
|
||||
if self.id is None or self.created_at is None:
|
||||
return ""
|
||||
return f"YS{self.created_at.year}{self.created_at.month:02d}{self.created_at.day:02d}{self.id:06d}"
|
||||
return build_business_human_id('YS', self.created_at, self.id)
|
||||
|
||||
class Meta:
|
||||
verbose_name = '预销售单'
|
||||
@@ -710,9 +711,7 @@ class PrePurchaseOrder(ModelBase):
|
||||
规则:YC + YYYYMMDD{6位id}
|
||||
"""
|
||||
|
||||
if self.id is None or self.created_at is None:
|
||||
return ''
|
||||
return f"YC{self.created_at.year}{self.created_at.month:02d}{self.created_at.day:02d}{self.id:06d}"
|
||||
return build_business_human_id('YC', self.created_at, self.id)
|
||||
|
||||
class Meta:
|
||||
verbose_name = '预采购单'
|
||||
@@ -823,9 +822,7 @@ class PurchaseReturnOrder(OrderItemsAggregationMixin, OrderDirectionMixin, Order
|
||||
|
||||
规则与 SalesOrder.human_id 保持一致:CT + YYYYMMDD{6位id}
|
||||
"""
|
||||
if self.id is None or self.created_at is None:
|
||||
return ""
|
||||
return f"CT{self.created_at.year}{self.created_at.month:02d}{self.created_at.day:02d}{self.id:06d}"
|
||||
return build_business_human_id('CT', self.created_at, self.id)
|
||||
|
||||
def get_direction(self) -> int:
|
||||
return -1
|
||||
@@ -955,9 +952,7 @@ class SalesReturnOrder(OrderItemsAggregationMixin, OrderDirectionMixin, OrderCou
|
||||
|
||||
规则与 SalesOrder.human_id 保持一致:XT + YYYYMMDD{6位id}
|
||||
"""
|
||||
if self.id is None or self.created_at is None:
|
||||
return ""
|
||||
return f"XT{self.created_at.year}{self.created_at.month:02d}{self.created_at.day:02d}{self.id:06d}"
|
||||
return build_business_human_id('XT', self.created_at, self.id)
|
||||
|
||||
def get_direction(self) -> int:
|
||||
return 1
|
||||
@@ -1149,6 +1144,11 @@ class PaymentOrder(OrderDirectionMixin, OrderCounterpartyMixin, ModelBase):
|
||||
def __str__(self):
|
||||
return f'付款单 {self.id} - {self.supplier.name}'
|
||||
|
||||
@property
|
||||
def human_id(self) -> str:
|
||||
"""人类可读编号(虚拟编号,不落库):FK + YYYYMMDD{6位id}。"""
|
||||
return build_business_human_id('FK', self.created_at, self.id)
|
||||
|
||||
@property
|
||||
def settlement_amount(self) -> Decimal:
|
||||
discount = self.discount_amount or Decimal('0')
|
||||
@@ -1235,6 +1235,11 @@ class ReceiptOrder(OrderDirectionMixin, OrderCounterpartyMixin, ModelBase):
|
||||
def __str__(self):
|
||||
return f'收款单 {self.id} - {self.customer.name}'
|
||||
|
||||
@property
|
||||
def human_id(self) -> str:
|
||||
"""人类可读编号(虚拟编号,不落库):SK + YYYYMMDD{6位id}。"""
|
||||
return build_business_human_id('SK', self.created_at, self.id)
|
||||
|
||||
@property
|
||||
def settlement_amount(self) -> Decimal:
|
||||
discount = self.discount_amount or Decimal('0')
|
||||
|
||||
Reference in New Issue
Block a user