86 lines
2.9 KiB
Python
86 lines
2.9 KiB
Python
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
|
# this repository contains the full copyright notices and license terms.
|
|
|
|
from decimal import Decimal
|
|
|
|
from trytond.modules.company.tests import create_company, set_company
|
|
from trytond.pool import Pool
|
|
from trytond.tests.test_tryton import ModuleTestCase, with_transaction
|
|
|
|
|
|
class ProductMeasurementsTestCase(ModuleTestCase):
|
|
"Test Product Measurements module"
|
|
module = 'product_measurements'
|
|
extras = ['product_price_list']
|
|
|
|
@with_transaction()
|
|
def test_price_list_context_formula_volume(self):
|
|
"Test price list context formula with volume"
|
|
pool = Pool()
|
|
Template = pool.get('product.template')
|
|
Product = pool.get('product.product')
|
|
UoM = pool.get('product.uom')
|
|
PriceList = pool.get('product.price_list')
|
|
|
|
unit, = UoM.search([('name', '=', "Unit")])
|
|
cm3, = UoM.search([('name', '=', "Cubic centimeter")])
|
|
inch3, = UoM.search([('name', '=', "Cubic inch")])
|
|
|
|
company = create_company()
|
|
with set_company(company):
|
|
template = Template(
|
|
name="Product", default_uom=unit, products=None,
|
|
list_price=Decimal('100'),
|
|
volume=2, volume_uom=cm3)
|
|
template.save()
|
|
product = Product(template=template)
|
|
product.save()
|
|
|
|
price_list = PriceList(
|
|
name="List", price='list_price',
|
|
lines=[{
|
|
'formula': 'unit_price + 5 * volume',
|
|
'volume_uom': inch3}])
|
|
price_list.save()
|
|
|
|
self.assertEqual(
|
|
price_list.compute(product, 5, unit),
|
|
Decimal('100.6102'))
|
|
|
|
@with_transaction()
|
|
def test_price_list_context_formula_weight(self):
|
|
"Test price list context formula with weight"
|
|
pool = Pool()
|
|
Template = pool.get('product.template')
|
|
Product = pool.get('product.product')
|
|
UoM = pool.get('product.uom')
|
|
PriceList = pool.get('product.price_list')
|
|
|
|
unit, = UoM.search([('name', '=', "Unit")])
|
|
gram, = UoM.search([('name', '=', "Gram")])
|
|
pound, = UoM.search([('name', '=', "Pound")])
|
|
|
|
company = create_company()
|
|
with set_company(company):
|
|
template = Template(
|
|
name="Product", default_uom=unit, products=None,
|
|
list_price=Decimal('100'),
|
|
weight=5, weight_uom=gram)
|
|
template.save()
|
|
product = Product(template=template)
|
|
product.save()
|
|
|
|
price_list = PriceList(
|
|
name="List", price='list_price',
|
|
lines=[{
|
|
'formula': 'unit_price + 5 * weight',
|
|
'weight_uom': pound}])
|
|
price_list.save()
|
|
|
|
self.assertEqual(
|
|
price_list.compute(product, 5, unit),
|
|
Decimal('100.0551'))
|
|
|
|
|
|
del ModuleTestCase
|