1
0
forked from erp-dev/erp

fix: frozen excluded from stock api

This commit is contained in:
2026-02-02 19:09:06 +08:00
parent 1c630606c8
commit dee1c814b9
4 changed files with 130 additions and 0 deletions

View File

@@ -314,6 +314,8 @@ class ListStockChangeDetailsView(StockChangeViewMixin, views.APIView):
stock_change_record__type=change_type,
product_id=product_id,
consumed_by_detail__isnull=True # 仅查询未被消耗的明细
).exclude(
stock_freezes__status=stock_models.StockFreezeStatusEnum.FROZEN
).select_related(
'stock_change_record',
'product'

View File

@@ -511,6 +511,29 @@ class ListStockChangeDetailsAPITestCase(TestCase):
dates = [result['record_created_at'] for result in response.data['results']]
self.assertEqual(dates, sorted(dates, reverse=True))
def test_list_stock_change_details_excludes_frozen(self):
"""库存明细列表应过滤已冻结明细"""
frozen_detail = self.details1[0]
stock_models.StockFreeze.objects.create(
merchant=self.merchant,
product=frozen_detail.product,
warehouse=self.warehouse,
stock_detail=frozen_detail,
quantity=frozen_detail.quantity,
unit=frozen_detail.unit,
status=stock_models.StockFreezeStatusEnum.FROZEN,
frozen_by=self.user,
frozen_with=1,
)
response = self.client.get(
f'/api/v1/stock-change-details/?warehouse_id={self.warehouse.id}&product_id={self.product.id}'
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
returned_ids = [item['id'] for item in response.data['results']]
self.assertNotIn(frozen_detail.id, returned_ids)
self.assertEqual(response.data['count'], 1)
def test_list_stock_change_details_missing_warehouse_id(self):
"""测试缺少warehouse_id参数"""
response = self.client.get(