forked from erp-dev/erp
fix: frozen excluded from stock api
This commit is contained in:
@@ -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'
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user