Duplicate custom
This commit is contained in:
@@ -6207,9 +6207,24 @@ class PurchaseTradeTestCase(ModuleTestCase):
|
||||
'custom duplicate can default mirror party from the matched sale'
|
||||
purchase_party = SimpleNamespace(id=1)
|
||||
sale_party = SimpleNamespace(id=2)
|
||||
sale_currency = SimpleNamespace(id=30)
|
||||
sale_payment_term = SimpleNamespace(id=31)
|
||||
sale_incoterm = SimpleNamespace(id=32)
|
||||
sale_unit = SimpleNamespace(id=33)
|
||||
purchase_lot = SimpleNamespace(id=10)
|
||||
sale = SimpleNamespace(party=sale_party)
|
||||
sale_line = SimpleNamespace(id=20, sale=sale)
|
||||
sale = SimpleNamespace(
|
||||
party=sale_party,
|
||||
currency=sale_currency,
|
||||
payment_term=sale_payment_term,
|
||||
incoterm=sale_incoterm)
|
||||
sale_line = SimpleNamespace(
|
||||
id=20,
|
||||
sale=sale,
|
||||
unit=sale_unit,
|
||||
quantity=Decimal('99'),
|
||||
quantity_theorical=Decimal('99'),
|
||||
unit_price=Decimal('52'),
|
||||
price_type='basis')
|
||||
lot_qt = SimpleNamespace(lot_s=SimpleNamespace(sale_line=sale_line))
|
||||
|
||||
class FakeLotQt:
|
||||
@@ -6248,6 +6263,110 @@ class PurchaseTradeTestCase(ModuleTestCase):
|
||||
|
||||
self.assertEqual(values['mirror_mode'], 'duplicate_pair')
|
||||
self.assertEqual(values['mirror_party'], sale_party.id)
|
||||
self.assertEqual(values['mirror_currency'], sale_currency.id)
|
||||
self.assertEqual(values['mirror_payment_term'], sale_payment_term.id)
|
||||
self.assertEqual(values['mirror_incoterm'], sale_incoterm.id)
|
||||
self.assertEqual(values['mirror_quantity'], Decimal('99'))
|
||||
self.assertEqual(values['mirror_unit'], sale_unit.id)
|
||||
self.assertEqual(values['mirror_unit_price'], Decimal('52'))
|
||||
self.assertEqual(values['mirror_price_type'], 'basis')
|
||||
|
||||
def test_custom_duplicate_defaults_new_mirror_from_source_purchase(self):
|
||||
'new mirror options default from the duplicated source contract'
|
||||
purchase_party = SimpleNamespace(id=1)
|
||||
purchase_currency = SimpleNamespace(id=4)
|
||||
purchase_payment_term = SimpleNamespace(id=5)
|
||||
purchase_incoterm = SimpleNamespace(id=6)
|
||||
unit = SimpleNamespace(id=3)
|
||||
|
||||
class FakeLotQt:
|
||||
@classmethod
|
||||
def search(cls, domain):
|
||||
return []
|
||||
|
||||
pool = Mock()
|
||||
pool.get.side_effect = lambda name: {'lot.qt': FakeLotQt}[name]
|
||||
line = SimpleNamespace(
|
||||
__name__='purchase.line',
|
||||
id=11,
|
||||
type='line',
|
||||
product=Mock(),
|
||||
lots=[],
|
||||
unit=unit,
|
||||
quantity=Decimal('100'),
|
||||
quantity_theorical=Decimal('100'),
|
||||
unit_price=Decimal('25'),
|
||||
price_type='priced',
|
||||
)
|
||||
record = SimpleNamespace(
|
||||
__name__='purchase.purchase',
|
||||
id=12,
|
||||
lines=[line],
|
||||
party=purchase_party,
|
||||
currency=purchase_currency,
|
||||
payment_term=purchase_payment_term,
|
||||
incoterm=purchase_incoterm,
|
||||
btb=None,
|
||||
)
|
||||
wizard = duplicate_module.TradeCustomDuplicate()
|
||||
wizard.records = [record]
|
||||
|
||||
with patch.object(duplicate_module, 'Pool', return_value=pool):
|
||||
values = wizard.default_start(None)
|
||||
|
||||
self.assertEqual(values['mirror_mode'], 'new_mirror')
|
||||
self.assertEqual(values['mirror_party'], purchase_party.id)
|
||||
self.assertEqual(values['mirror_currency'], purchase_currency.id)
|
||||
self.assertEqual(values['mirror_payment_term'], purchase_payment_term.id)
|
||||
self.assertEqual(values['mirror_incoterm'], purchase_incoterm.id)
|
||||
self.assertEqual(values['mirror_quantity'], Decimal('100'))
|
||||
self.assertEqual(values['mirror_unit'], unit.id)
|
||||
self.assertEqual(values['mirror_unit_price'], Decimal('25'))
|
||||
self.assertEqual(values['mirror_price_type'], 'priced')
|
||||
|
||||
def test_custom_duplicate_mirror_mode_change_refreshes_source_defaults(self):
|
||||
'changing mirror mode refreshes mirror fields from the source contract'
|
||||
purchase_party = SimpleNamespace(id=1)
|
||||
purchase_currency = SimpleNamespace(id=4)
|
||||
purchase_payment_term = SimpleNamespace(id=5)
|
||||
purchase_incoterm = SimpleNamespace(id=6)
|
||||
unit = SimpleNamespace(id=3)
|
||||
line = SimpleNamespace(
|
||||
__name__='purchase.line',
|
||||
id=11,
|
||||
type='line',
|
||||
product=Mock(),
|
||||
lots=[],
|
||||
unit=unit,
|
||||
quantity=Decimal('100'),
|
||||
quantity_theorical=Decimal('100'),
|
||||
unit_price=Decimal('25'),
|
||||
price_type='priced',
|
||||
)
|
||||
record = SimpleNamespace(
|
||||
__name__='purchase.purchase',
|
||||
id=12,
|
||||
lines=[line],
|
||||
party=purchase_party,
|
||||
currency=purchase_currency,
|
||||
payment_term=purchase_payment_term,
|
||||
incoterm=purchase_incoterm,
|
||||
)
|
||||
start = duplicate_module.TradeCustomDuplicateStart()
|
||||
start.source = record
|
||||
start.mirror_mode = 'new_mirror'
|
||||
start.mirror_party = SimpleNamespace(id=99)
|
||||
|
||||
start.on_change_mirror_mode()
|
||||
|
||||
self.assertIs(start.mirror_party, purchase_party)
|
||||
self.assertIs(start.mirror_currency, purchase_currency)
|
||||
self.assertIs(start.mirror_payment_term, purchase_payment_term)
|
||||
self.assertIs(start.mirror_incoterm, purchase_incoterm)
|
||||
self.assertEqual(start.mirror_quantity, Decimal('100'))
|
||||
self.assertIs(start.mirror_unit, unit)
|
||||
self.assertEqual(start.mirror_unit_price, Decimal('25'))
|
||||
self.assertEqual(start.mirror_price_type, 'priced')
|
||||
|
||||
def test_custom_duplicate_defaults_mirror_from_back_to_back_sale(self):
|
||||
'custom duplicate can use the back-to-back sale as matched pair'
|
||||
|
||||
Reference in New Issue
Block a user