forked from erp-dev/erp
fix: sales order retrieve, human_id for sales_order
This commit is contained in:
@@ -127,7 +127,7 @@ class SalesReturnOrderItemAdmin(admin.ModelAdmin):
|
||||
|
||||
@admin.register(models.SalesOrder)
|
||||
class SalesOrderAdmin(admin.ModelAdmin):
|
||||
list_display = ('id', 'customer', 'sales_date', 'operator', 'status', '_total_amount', '_diff_quantity', '_total_quantity', 'created_at')
|
||||
list_display = ('id', 'human_id', 'customer', 'sales_date', 'operator', 'status', '_total_amount', '_diff_quantity', '_total_quantity', 'created_at')
|
||||
search_fields = ('customer__name',)
|
||||
list_filter = ('operator', 'warehouse', 'status', 'created_at')
|
||||
ordering = ('-created_at',)
|
||||
|
||||
@@ -255,7 +255,19 @@ class SalesOrder(OrderItemsAggregationMixin, OrderDirectionMixin, OrderCounterpa
|
||||
remarks = models.TextField(blank=True, null=True, verbose_name='备注')
|
||||
|
||||
def __str__(self):
|
||||
return f'销售订单 {self.id} - {self.customer.name}'
|
||||
order_id = self.human_id or str(self.id)
|
||||
return f'销售订单 {order_id} - {self.customer.name}'
|
||||
|
||||
@property
|
||||
def human_id(self) -> str:
|
||||
"""
|
||||
人类可读编号(虚拟编号,不落库)。
|
||||
|
||||
规则与 printing.PrintingOrder.human_id 保持一致:YYYYMMDD{6位id}
|
||||
"""
|
||||
if self.id is None or self.created_at is None:
|
||||
return ""
|
||||
return f"{self.created_at.year}{self.created_at.month:02d}{self.created_at.day:02d}{self.id:06d}"
|
||||
|
||||
class Meta:
|
||||
verbose_name = '销售单'
|
||||
|
||||
@@ -389,6 +389,24 @@ class SalesOrderServiceTestCase(TestCase):
|
||||
self.assertEqual(item.split_quantity_of_rolls(), [6, 4])
|
||||
mock_delay.assert_not_called()
|
||||
|
||||
def test_sales_order_human_id_generation(self):
|
||||
sales_order = services.create_sales_order(
|
||||
merchant=self.merchant,
|
||||
customer=self.customer,
|
||||
order_date=timezone.now().date(),
|
||||
warehouse=self.warehouse_strict,
|
||||
operator=self.operator,
|
||||
items=self.strict_items,
|
||||
created_by=self.user,
|
||||
)
|
||||
|
||||
self.assertIsNotNone(sales_order.human_id)
|
||||
self.assertTrue(len(sales_order.human_id) >= 14)
|
||||
self.assertEqual(
|
||||
sales_order.human_id,
|
||||
f"{sales_order.created_at.strftime('%Y%m%d')}{sales_order.id:06d}",
|
||||
)
|
||||
|
||||
def test_review_sales_order_triggers_task(self):
|
||||
sales_order = services.create_sales_order(
|
||||
merchant=self.merchant,
|
||||
|
||||
Reference in New Issue
Block a user