forked from erp-dev/erp
fix: frozen excluded from stock api
This commit is contained in:
@@ -194,6 +194,88 @@ class SalesOrderServiceTestCase(TestCase):
|
||||
self.assertEqual(item.consume_detail_ids, ','.join(consume_ids))
|
||||
self.assertEqual(item.quantity_of_rolls, '6,4')
|
||||
|
||||
def test_review_sales_order_unfreezes_consumed_stock(self):
|
||||
stock_record = stock_models.StockChangeRecord.objects.create(
|
||||
merchant=self.merchant,
|
||||
type=stock_models.StockChangeTypeEnum.ADD,
|
||||
warehouse=self.warehouse_strict_out,
|
||||
source_type=stock_models.StockChangeSourceEnum.PURCHASE,
|
||||
created_by=self.user,
|
||||
)
|
||||
detail_1 = stock_models.StockChangeDetail.objects.create(
|
||||
merchant=self.merchant,
|
||||
product=self.product,
|
||||
unit=self.product.unit,
|
||||
stock_change_record=stock_record,
|
||||
quantity='6',
|
||||
)
|
||||
detail_2 = stock_models.StockChangeDetail.objects.create(
|
||||
merchant=self.merchant,
|
||||
product=self.product,
|
||||
unit=self.product.unit,
|
||||
stock_change_record=stock_record,
|
||||
quantity='4',
|
||||
)
|
||||
stock_models.StockFreeze.objects.create(
|
||||
merchant=self.merchant,
|
||||
product=self.product,
|
||||
warehouse=self.warehouse_strict_out,
|
||||
stock_detail=detail_1,
|
||||
quantity=detail_1.quantity,
|
||||
unit=detail_1.unit,
|
||||
status=stock_models.StockFreezeStatusEnum.FROZEN,
|
||||
frozen_by=self.user,
|
||||
frozen_with=1,
|
||||
)
|
||||
stock_models.StockFreeze.objects.create(
|
||||
merchant=self.merchant,
|
||||
product=self.product,
|
||||
warehouse=self.warehouse_strict_out,
|
||||
stock_detail=detail_2,
|
||||
quantity=detail_2.quantity,
|
||||
unit=detail_2.unit,
|
||||
status=stock_models.StockFreezeStatusEnum.FROZEN,
|
||||
frozen_by=self.user,
|
||||
frozen_with=2,
|
||||
)
|
||||
|
||||
sales_order = services.create_sales_order(
|
||||
merchant=self.merchant,
|
||||
customer=self.customer,
|
||||
order_date=timezone.now().date(),
|
||||
warehouse=self.warehouse_strict_out,
|
||||
operator=self.operator,
|
||||
items=[
|
||||
{
|
||||
'product_id': self.product.id,
|
||||
'consume_detail_ids': [detail_1.id, detail_2.id],
|
||||
'quantity': 10,
|
||||
'price': '32.0',
|
||||
'unit': '米',
|
||||
}
|
||||
],
|
||||
created_by=self.user,
|
||||
)
|
||||
|
||||
with patch('business.services.create_sales_order_stock_entries.delay') as mock_delay:
|
||||
reviewed = services.review_sales_order(
|
||||
sales_order=sales_order,
|
||||
target_status=business_models.SalesOrderStatusEnum.APPROVED,
|
||||
reviewed_by=self.user,
|
||||
)
|
||||
self.assertEqual(reviewed.status, business_models.SalesOrderStatusEnum.APPROVED)
|
||||
mock_delay.assert_called_once()
|
||||
|
||||
statuses = list(
|
||||
stock_models.StockFreeze.objects.filter(
|
||||
stock_detail_id__in=[detail_1.id, detail_2.id]
|
||||
).values_list('status', flat=True)
|
||||
)
|
||||
self.assertEqual(
|
||||
set(statuses),
|
||||
{stock_models.StockFreezeStatusEnum.COMPLETED},
|
||||
)
|
||||
|
||||
def test_sales_order_outgoing_missing_consume_ids_raises(self):
|
||||
payload = [
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user