1
0
forked from erp-dev/erp

feat: mission replied calling task

This commit is contained in:
2026-04-17 23:26:33 +08:00
parent e109c00837
commit 8b1afc64c5
22 changed files with 1056 additions and 95 deletions

View File

@@ -1968,7 +1968,49 @@ class ShipmentStatusServiceTestCase(TestCase):
self.assertEqual(self.shipment.approved_by, self.user)
self.assertIsNotNone(self.shipment.status_modified_at)
def test_modify_status_allows_rejected_to_approved(self):
def test_modify_status_rejected_unbinds_sales_items_and_snapshots_ids(self):
from shipment.services import modify_status
sales_item_1 = shipment_models.SalesItem.objects.create(
merchant=self.merchant,
shipment=self.shipment,
name="驳回销售品1",
quantity=Decimal("10.00"),
unit=shipment_models.UnitChoices.METER,
created_by=self.user,
)
sales_item_2 = shipment_models.SalesItem.objects.create(
merchant=self.merchant,
shipment=self.shipment,
name="驳回销售品2",
quantity=Decimal("20.00"),
unit=shipment_models.UnitChoices.METER,
created_by=self.user,
)
modify_status(
self.shipment,
target_status=shipment_models.ShipmentStatus.PUBLISHED,
operator=self.user,
)
modify_status(
self.shipment,
target_status=shipment_models.ShipmentStatus.REJECTED,
operator=self.user,
)
self.shipment.refresh_from_db()
sales_item_1.refresh_from_db()
sales_item_2.refresh_from_db()
self.assertEqual(self.shipment.status, shipment_models.ShipmentStatus.REJECTED)
self.assertEqual(
self.shipment.rejected_sales_item_ids,
[sales_item_1.id, sales_item_2.id],
)
self.assertIsNone(sales_item_1.shipment_id)
self.assertIsNone(sales_item_2.shipment_id)
def test_modify_status_rejects_rejected_to_approved(self):
from shipment.services import modify_status
modify_status(
@@ -1981,16 +2023,14 @@ class ShipmentStatusServiceTestCase(TestCase):
target_status=shipment_models.ShipmentStatus.REJECTED,
operator=self.user,
)
modify_status(
self.shipment,
target_status=shipment_models.ShipmentStatus.APPROVED,
operator=self.user,
approved_by=self.user,
)
self.shipment.refresh_from_db()
self.assertEqual(self.shipment.status, shipment_models.ShipmentStatus.APPROVED)
self.assertEqual(self.shipment.approved_by, self.user)
with self.assertRaisesMessage(ValueError, "不允许将出货单状态从 已驳回 修改为 已审核"):
modify_status(
self.shipment,
target_status=shipment_models.ShipmentStatus.APPROVED,
operator=self.user,
approved_by=self.user,
)
def test_modify_status_rejects_rejected_to_published(self):
from shipment.services import modify_status
@@ -2146,6 +2186,15 @@ class ShipmentStatusAPITestCase(APITestCase):
def test_patch_status_published_to_rejected_success(self):
from shipment.services import modify_status
sales_item = shipment_models.SalesItem.objects.create(
merchant=self.merchant,
shipment=self.shipment,
name="状态API驳回销售品",
quantity=Decimal("15.00"),
unit=shipment_models.UnitChoices.METER,
created_by=self.user,
)
modify_status(
self.shipment,
target_status=shipment_models.ShipmentStatus.PUBLISHED,
@@ -2160,7 +2209,10 @@ class ShipmentStatusAPITestCase(APITestCase):
self.assertEqual(resp.status_code, status.HTTP_200_OK)
self.shipment.refresh_from_db()
sales_item.refresh_from_db()
self.assertEqual(self.shipment.status, shipment_models.ShipmentStatus.REJECTED)
self.assertEqual(self.shipment.rejected_sales_item_ids, [sales_item.id])
self.assertIsNone(sales_item.shipment_id)
def test_patch_status_to_cancelled_sets_cancelled_by(self):
from shipment.services import modify_status