Valuation fee
This commit is contained in:
@@ -1218,6 +1218,8 @@ class PurchaseTradeTestCase(ModuleTestCase):
|
||||
currency=currency,
|
||||
shipment_in=None,
|
||||
sale_line=None,
|
||||
shipment_out=None,
|
||||
shipment_internal=None,
|
||||
unit=unit,
|
||||
)
|
||||
fee.get_amount.return_value = None
|
||||
@@ -1228,6 +1230,44 @@ class PurchaseTradeTestCase(ModuleTestCase):
|
||||
purchase=Mock(id=7, currency=currency),
|
||||
unit=unit,
|
||||
)
|
||||
fee.line = line
|
||||
fee_lots = Mock()
|
||||
fee_lots.search.return_value = [Mock(fee=fee)]
|
||||
|
||||
with patch('trytond.modules.purchase_trade.valuation.Pool') as PoolMock:
|
||||
PoolMock.return_value.get.side_effect = lambda name: {
|
||||
'ir.date': Mock(today=Mock(return_value=datetime.date(2026, 4, 23))),
|
||||
'currency.currency': Mock(),
|
||||
'fee.lots': fee_lots,
|
||||
'lot.qt': Mock(),
|
||||
}[name]
|
||||
|
||||
values = Valuation.create_pnl_fee_from_line(line)
|
||||
|
||||
self.assertEqual(values[0]['amount'], Decimal('0'))
|
||||
self.assertEqual(values[0]['fee'], fee.id)
|
||||
|
||||
def test_create_pnl_fee_from_line_ignores_orphan_fee_lot(self):
|
||||
'purchase fee valuation ignores fees without business attachment'
|
||||
Valuation = Pool().get('valuation.valuation')
|
||||
currency = Mock(id=1)
|
||||
unit = Mock(id=2)
|
||||
lot = Mock(id=5, sale_line=None, lot_type='virtual')
|
||||
lot.get_current_quantity_converted.return_value = Decimal('10')
|
||||
fee = Mock(
|
||||
line=None,
|
||||
sale_line=None,
|
||||
shipment_in=None,
|
||||
shipment_out=None,
|
||||
shipment_internal=None,
|
||||
)
|
||||
line = Mock(
|
||||
id=6,
|
||||
lots=[lot],
|
||||
get_matched_lines=Mock(return_value=[]),
|
||||
purchase=Mock(id=7, currency=currency),
|
||||
unit=unit,
|
||||
)
|
||||
fee_lots = Mock()
|
||||
fee_lots.search.return_value = [Mock(fee=fee)]
|
||||
|
||||
@@ -1241,8 +1281,7 @@ class PurchaseTradeTestCase(ModuleTestCase):
|
||||
|
||||
values = Valuation.create_pnl_fee_from_line(line)
|
||||
|
||||
self.assertEqual(values[0]['amount'], Decimal('0'))
|
||||
self.assertEqual(values[0]['fee'], fee.id)
|
||||
self.assertEqual(values, [])
|
||||
|
||||
def test_fee_quantity_sync_uses_physical_lots_when_present(self):
|
||||
'fee quantity sync ignores virtual lot once physical lots exist'
|
||||
@@ -1356,6 +1395,8 @@ class PurchaseTradeTestCase(ModuleTestCase):
|
||||
currency=currency,
|
||||
shipment_in=None,
|
||||
sale_line=None,
|
||||
shipment_out=None,
|
||||
shipment_internal=None,
|
||||
unit=unit,
|
||||
)
|
||||
fee.is_effective_fee_lot.side_effect = lambda lot: lot is physical
|
||||
@@ -1367,6 +1408,7 @@ class PurchaseTradeTestCase(ModuleTestCase):
|
||||
purchase=Mock(id=8, currency=currency),
|
||||
unit=unit,
|
||||
)
|
||||
fee.line = line
|
||||
fee_lots = Mock()
|
||||
fee_lots.search.return_value = [Mock(fee=fee)]
|
||||
|
||||
@@ -1670,6 +1712,8 @@ class PurchaseTradeTestCase(ModuleTestCase):
|
||||
currency=currency,
|
||||
shipment_in=None,
|
||||
sale_line=None,
|
||||
shipment_out=None,
|
||||
shipment_internal=None,
|
||||
unit=unit,
|
||||
)
|
||||
line = Mock(
|
||||
@@ -1680,6 +1724,7 @@ class PurchaseTradeTestCase(ModuleTestCase):
|
||||
purchase=Mock(id=10, currency=currency),
|
||||
unit=unit,
|
||||
)
|
||||
fee.line = line
|
||||
lot_qt_model = Mock()
|
||||
lot_qt_model.search.return_value = [
|
||||
Mock(
|
||||
@@ -1774,6 +1819,9 @@ class PurchaseTradeTestCase(ModuleTestCase):
|
||||
currency=currency,
|
||||
shipment_in=None,
|
||||
sale_line=sale_line,
|
||||
line=None,
|
||||
shipment_out=None,
|
||||
shipment_internal=None,
|
||||
unit=unit,
|
||||
)
|
||||
fee.is_effective_fee_lot.return_value = True
|
||||
|
||||
Reference in New Issue
Block a user