Planned
This commit is contained in:
@@ -206,6 +206,106 @@ class PurchaseTradeTestCase(ModuleTestCase):
|
||||
|
||||
self.assertEqual(affected_lines, [purchase_line, sale_line])
|
||||
|
||||
def test_plan_transport_defaults_multiple_lines(self):
|
||||
'plan transport wizard opens one planning line per selected quantity'
|
||||
wizard = lot_module.LotPlanTransport()
|
||||
wizard.records = [
|
||||
Mock(
|
||||
id=10000001,
|
||||
r_lot_quantity=Decimal('100'),
|
||||
r_lot_matched=Decimal('0'),
|
||||
r_lot_unit_line=Mock(id=3),
|
||||
r_planned_from_location=Mock(id=10),
|
||||
r_planned_to_location=Mock(id=20),
|
||||
r_planned_transport_type='vessel',
|
||||
r_planned_from_date=datetime.date(2026, 7, 1),
|
||||
r_planned_to_date=datetime.date(2026, 7, 5),
|
||||
r_planned_note='First leg'),
|
||||
Mock(
|
||||
id=10000002,
|
||||
r_lot_quantity=Decimal('200'),
|
||||
r_lot_matched=Decimal('0'),
|
||||
r_lot_unit_line=Mock(id=4),
|
||||
r_planned_from_location=None,
|
||||
r_planned_to_location=None,
|
||||
r_planned_transport_type=None,
|
||||
r_planned_from_date=None,
|
||||
r_planned_to_date=None,
|
||||
r_planned_note=None),
|
||||
]
|
||||
|
||||
values = wizard.default_plan(None)
|
||||
|
||||
self.assertEqual(len(values['lines']), 2)
|
||||
self.assertEqual(values['lines'][0]['lotqt'], 1)
|
||||
self.assertEqual(values['lines'][0]['quantity'], Decimal('100'))
|
||||
self.assertEqual(values['lines'][0]['planned_from_location'], 10)
|
||||
self.assertTrue(values['lines'][0]['cancel_plan'])
|
||||
self.assertEqual(values['lines'][1]['lotqt'], 2)
|
||||
self.assertEqual(values['lines'][1]['quantity'], Decimal('200'))
|
||||
self.assertFalse(values['lines'][1]['cancel_plan'])
|
||||
|
||||
def test_plan_transport_applies_each_planning_line(self):
|
||||
'plan transport wizard applies each line independently'
|
||||
wizard = lot_module.LotPlanTransport()
|
||||
lotqt_a = Mock(
|
||||
lot_p=Mock(line=Mock()),
|
||||
lot_s=None)
|
||||
lotqt_b = Mock(
|
||||
lot_p=None,
|
||||
lot_s=Mock(sale_line=Mock()))
|
||||
wizard.plan = Mock(lines=[
|
||||
Mock(
|
||||
lotqt=lotqt_a,
|
||||
cancel_plan=False,
|
||||
quantity=Decimal('100'),
|
||||
planned_from_location=Mock(id=10),
|
||||
planned_to_location=Mock(id=20),
|
||||
planned_transport_type='vessel',
|
||||
planned_from_date=datetime.date(2026, 7, 1),
|
||||
planned_to_date=datetime.date(2026, 7, 5),
|
||||
planned_note='A'),
|
||||
Mock(
|
||||
lotqt=lotqt_b,
|
||||
cancel_plan=False,
|
||||
quantity=Decimal('200'),
|
||||
planned_from_location=Mock(id=11),
|
||||
planned_to_location=Mock(id=21),
|
||||
planned_transport_type='truck',
|
||||
planned_from_date=datetime.date(2026, 7, 6),
|
||||
planned_to_date=datetime.date(2026, 7, 8),
|
||||
planned_note='B'),
|
||||
])
|
||||
Lot = Mock()
|
||||
Lot.skip_quantity_consistency.return_value.__enter__ = Mock()
|
||||
Lot.skip_quantity_consistency.return_value.__exit__ = Mock()
|
||||
LotQt = Mock()
|
||||
pool = Mock()
|
||||
pool.get.side_effect = [Lot, LotQt]
|
||||
|
||||
with patch('trytond.modules.purchase_trade.lot.Pool',
|
||||
return_value=pool):
|
||||
state = wizard.transition_planning()
|
||||
|
||||
self.assertEqual(state, 'end')
|
||||
LotQt.plan_to_transport.assert_any_call(lotqt_a, Decimal('100'), {
|
||||
'planned_from_location': 10,
|
||||
'planned_to_location': 20,
|
||||
'planned_transport_type': 'vessel',
|
||||
'planned_from_date': datetime.date(2026, 7, 1),
|
||||
'planned_to_date': datetime.date(2026, 7, 5),
|
||||
'planned_note': 'A',
|
||||
})
|
||||
LotQt.plan_to_transport.assert_any_call(lotqt_b, Decimal('200'), {
|
||||
'planned_from_location': 11,
|
||||
'planned_to_location': 21,
|
||||
'planned_transport_type': 'truck',
|
||||
'planned_from_date': datetime.date(2026, 7, 6),
|
||||
'planned_to_date': datetime.date(2026, 7, 8),
|
||||
'planned_note': 'B',
|
||||
})
|
||||
Lot.assert_lines_quantity_consistency.assert_called_once()
|
||||
|
||||
def test_lot_shipping_defaults_planned_locations(self):
|
||||
'link to transport carries planned locations into shipment create'
|
||||
wizard = lot_module.LotShipping()
|
||||
|
||||
Reference in New Issue
Block a user