Fee rules
This commit is contained in:
@@ -1784,6 +1784,75 @@ class PurchaseTradeTestCase(ModuleTestCase):
|
||||
self.assertEqual(Sale.default_tolerance_option(), '')
|
||||
self.assertEqual(Purchase.default_tolerance_option(), '')
|
||||
|
||||
def test_fee_rule_matches_purchase_line_conditions(self):
|
||||
'fee rule matches purchase line conditions'
|
||||
party = Mock(id=1)
|
||||
product = Mock(id=2)
|
||||
incoterm = Mock(id=3)
|
||||
from_location = Mock(id=4)
|
||||
to_location = Mock(id=5)
|
||||
plan = Mock(id=6)
|
||||
contract = Mock(
|
||||
party=party,
|
||||
incoterm=incoterm,
|
||||
from_location=from_location,
|
||||
to_location=to_location,
|
||||
plan=plan,
|
||||
)
|
||||
line = Mock(product=product, purchase=contract, sale=None)
|
||||
rule = fee_module.FeeRule()
|
||||
rule.apply_on = 'purchase_line'
|
||||
rule.party = party
|
||||
rule.line_product = product
|
||||
rule.incoterm = incoterm
|
||||
rule.from_location = from_location
|
||||
rule.to_location = to_location
|
||||
rule.execution_plan = plan
|
||||
|
||||
self.assertTrue(rule._matches_line(line, 'purchase_line'))
|
||||
|
||||
def test_fee_rule_builds_budgeted_sale_fee_values(self):
|
||||
'fee rule builds budgeted fee values for a sale line'
|
||||
currency = Mock(id=1)
|
||||
unit = Mock(id=2)
|
||||
party = Mock(id=3)
|
||||
product = Mock(id=4)
|
||||
fee_product = Mock(id=5)
|
||||
sale = Mock(party=party, currency=currency)
|
||||
line = Mock(
|
||||
id=10,
|
||||
product=product,
|
||||
sale=sale,
|
||||
purchase=None,
|
||||
unit=unit,
|
||||
quantity_theorical=Decimal('100'),
|
||||
quantity=Decimal('90'),
|
||||
)
|
||||
rule = fee_module.FeeRule()
|
||||
rule.id = 20
|
||||
rule.fee_product = fee_product
|
||||
rule.supplier = None
|
||||
rule.p_r = 'pay'
|
||||
rule.mode = 'perqt'
|
||||
rule.price = Decimal('12.50')
|
||||
rule.quantity = None
|
||||
rule.currency = None
|
||||
rule.unit = None
|
||||
rule.qt_state = None
|
||||
rule.weight_type = 'brut'
|
||||
|
||||
values = rule._fee_values(line, 'sale_line')
|
||||
|
||||
self.assertEqual(values['source_rule'], 20)
|
||||
self.assertTrue(values['generated_by_rule'])
|
||||
self.assertEqual(values['type'], 'budgeted')
|
||||
self.assertEqual(values['sale_line'], 10)
|
||||
self.assertEqual(values['product'], 5)
|
||||
self.assertEqual(values['supplier'], 3)
|
||||
self.assertEqual(values['currency'], 1)
|
||||
self.assertEqual(values['unit'], 2)
|
||||
self.assertEqual(values['quantity'], Decimal('100'))
|
||||
|
||||
def test_sale_line_basis_price_and_progress_use_manual_summary_without_component(self):
|
||||
'sale line basis values use manual summary rows even without a component'
|
||||
SaleLine = Pool().get('sale.line')
|
||||
|
||||
Reference in New Issue
Block a user