Jauge tolerance
This commit is contained in:
@@ -11,6 +11,8 @@ from trytond.tests.test_tryton import ModuleTestCase, with_transaction
|
||||
from trytond.exceptions import UserError
|
||||
from trytond.modules.purchase_trade import valuation as valuation_module
|
||||
from trytond.modules.purchase_trade import lot as lot_module
|
||||
from trytond.modules.purchase_trade import purchase as purchase_module
|
||||
from trytond.modules.purchase_trade import sale as sale_module
|
||||
from trytond.modules.purchase_trade import stock as stock_module
|
||||
from trytond.modules.purchase_trade import fee as fee_module
|
||||
from trytond.modules.purchase_trade.service import ContractFactory
|
||||
@@ -2835,6 +2837,66 @@ class PurchaseTradeTestCase(ModuleTestCase):
|
||||
self.assertEqual(result['lot_s'][0]['lot_qt_max'], Decimal('80.00000'))
|
||||
self.assertEqual(result['lot_s'][0]['lot_cp'], 40)
|
||||
|
||||
def test_purchase_tolerance_used_sums_open_and_physical_quantities(self):
|
||||
'purchase tolerance gauge uses lot.qt plus physical lot quantities'
|
||||
unit = Mock()
|
||||
virtual = Mock(id=10, lot_type='virtual')
|
||||
physical = Mock(lot_type='physic')
|
||||
physical.get_current_quantity_converted.return_value = Decimal('10')
|
||||
line = Mock(
|
||||
type='line', unit=unit, quantity_theorical=Decimal('100'),
|
||||
lots=[virtual, physical])
|
||||
purchase = purchase_module.Purchase()
|
||||
purchase.lines = [line]
|
||||
purchase.tol_min = Decimal('5')
|
||||
purchase.tol_max = Decimal('10')
|
||||
lot_qt_model = Mock()
|
||||
lot_qt_model.search.return_value = [
|
||||
Mock(lot_quantity=Decimal('95'), lot_unit=unit)]
|
||||
pool = Mock()
|
||||
pool.get.return_value = lot_qt_model
|
||||
|
||||
with patch.object(purchase_module, 'Pool', return_value=pool):
|
||||
self.assertEqual(
|
||||
purchase.get_tolerance_used('tolerance_used'),
|
||||
Decimal('5.00000'))
|
||||
self.assertEqual(
|
||||
purchase.get_tolerance_min('tolerance_min'),
|
||||
Decimal('-5'))
|
||||
self.assertEqual(
|
||||
purchase.get_tolerance_max('tolerance_max'),
|
||||
Decimal('10'))
|
||||
|
||||
def test_sale_tolerance_used_sums_open_and_physical_quantities(self):
|
||||
'sale tolerance gauge uses absolute lot.qt plus physical quantities'
|
||||
unit = Mock()
|
||||
virtual = Mock(id=20, lot_type='virtual')
|
||||
physical = Mock(lot_type='physic')
|
||||
physical.get_current_quantity_converted.return_value = Decimal('10')
|
||||
line = Mock(
|
||||
type='line', unit=unit, quantity_theorical=Decimal('100'),
|
||||
lots=[virtual, physical])
|
||||
sale = sale_module.Sale()
|
||||
sale.lines = [line]
|
||||
sale.tol_min = Decimal('5')
|
||||
sale.tol_max = Decimal('10')
|
||||
lot_qt_model = Mock()
|
||||
lot_qt_model.search.return_value = [
|
||||
Mock(lot_quantity=Decimal('-95'), lot_unit=unit)]
|
||||
pool = Mock()
|
||||
pool.get.return_value = lot_qt_model
|
||||
|
||||
with patch.object(sale_module, 'Pool', return_value=pool):
|
||||
self.assertEqual(
|
||||
sale.get_tolerance_used('tolerance_used'),
|
||||
Decimal('5.00000'))
|
||||
self.assertEqual(
|
||||
sale.get_tolerance_min('tolerance_min'),
|
||||
Decimal('-5'))
|
||||
self.assertEqual(
|
||||
sale.get_tolerance_max('tolerance_max'),
|
||||
Decimal('10'))
|
||||
|
||||
def test_lot_context_group_defaults_to_all(self):
|
||||
'lots management opens without grouping by physical lot'
|
||||
self.assertEqual(lot_module.LotContext.default_group(), 'all')
|
||||
|
||||
Reference in New Issue
Block a user