Bug lot.qt

This commit is contained in:
2026-07-14 13:29:44 +02:00
parent cf4bd94d03
commit ac3198ee70
2 changed files with 56 additions and 10 deletions

View File

@@ -704,6 +704,9 @@ class PurchaseTradeTestCase(ModuleTestCase):
lot_quantity=Decimal('40'),
lot_p=lot,
lot_s=sale_lot,
lot_shipment_in=Mock(),
lot_shipment_internal=None,
lot_shipment_out=None,
lot_shipment_origin='stock.shipment.in,12',
)
lqt.is_planned_transport.return_value = True
@@ -722,14 +725,53 @@ class PurchaseTradeTestCase(ModuleTestCase):
state = wizard.transition_start()
self.assertEqual(state, 'end')
lot.updateVirtualPart.assert_called_once_with(
Decimal('-40'), 'stock.shipment.in,12', sale_lot, 'both')
lot.updateVirtualPart.assert_not_called()
LotQt.restore_planned_open_quantity.assert_called_once_with(
lqt, Decimal('40'))
LotQt.delete.assert_called_once_with([lqt])
lot.createVirtualPart.assert_not_called()
Lot.assert_lines_quantity_consistency.assert_called_once_with([
purchase_line, sale_line])
def test_lot_unship_deletes_zero_scheduled_lotqt_without_restore(self):
'unlinking a residual zero scheduled lot.qt only cleans the shipment tab'
wizard = lot_module.LotUnship()
wizard.records = [Mock(id=10000007, r_lot_type='virtual')]
purchase_line = Mock()
sale_line = Mock()
lot = Mock(line=purchase_line)
sale_lot = Mock(sale_line=sale_line)
lqt = Mock(
lot_quantity=Decimal('0'),
lot_p=lot,
lot_s=sale_lot,
lot_shipment_in=Mock(),
lot_shipment_internal=None,
lot_shipment_out=None,
)
lqt.is_planned_transport.return_value = True
Lot = Mock()
Lot.return_value = Mock()
Lot.skip_quantity_consistency.return_value.__enter__ = Mock()
Lot.skip_quantity_consistency.return_value.__exit__ = Mock()
LotQt = Mock()
LotQt.return_value = lqt
Move = Mock()
pool = Mock()
pool.get.side_effect = [Lot, LotQt, Move]
with patch('trytond.modules.purchase_trade.lot.Pool',
return_value=pool):
state = wizard.transition_start()
self.assertEqual(state, 'end')
LotQt.restore_planned_open_quantity.assert_not_called()
lot.updateVirtualPart.assert_not_called()
lot.createVirtualPart.assert_not_called()
LotQt.delete.assert_called_once_with([lqt])
Lot.assert_lines_quantity_consistency.assert_called_once_with([
purchase_line, sale_line])
def test_add_physical_lots_requires_linked_transport(self):
'physical lots can only be added from a scheduled quantity'
LotQt = Pool().get('lot.qt')