Bug Pnl lot physic
This commit is contained in:
@@ -474,6 +474,64 @@ class PurchaseTradeTestCase(ModuleTestCase):
|
||||
self.assertEqual(values[0]['sale'], sale.id)
|
||||
self.assertEqual(values[0]['sale_line'], sale_line.id)
|
||||
|
||||
def test_purchase_open_pnl_fee_skips_zero_virtual_lot(self):
|
||||
'purchase-side fee pnl ignores open virtual lots with no quantity'
|
||||
Valuation = Pool().get('valuation.valuation')
|
||||
currency = Mock(id=1)
|
||||
unit = Mock(id=2)
|
||||
purchase_lot = Mock(id=8, sale_line=None, lot_type='virtual')
|
||||
purchase_lot.get_current_quantity_converted.return_value = Decimal('0')
|
||||
line = Mock(
|
||||
id=9,
|
||||
finished=False,
|
||||
lots=[purchase_lot],
|
||||
get_matched_lines=Mock(return_value=[]),
|
||||
purchase=Mock(id=10, currency=currency),
|
||||
unit=unit,
|
||||
)
|
||||
fee_lots = Mock()
|
||||
|
||||
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, 29))),
|
||||
'currency.currency': Mock(),
|
||||
'fee.lots': fee_lots,
|
||||
'lot.qt': Mock(),
|
||||
}[name]
|
||||
|
||||
values = Valuation.create_pnl_fee_from_line(line)
|
||||
|
||||
self.assertEqual(values, [])
|
||||
fee_lots.search.assert_not_called()
|
||||
|
||||
def test_sale_open_pnl_fee_skips_zero_virtual_lot(self):
|
||||
'sale-side fee pnl ignores open virtual lots with no quantity'
|
||||
Valuation = Pool().get('valuation.valuation')
|
||||
currency = Mock(id=1)
|
||||
unit = Mock(id=2)
|
||||
sale_lot = Mock(id=7, lot_type='virtual')
|
||||
sale_lot.get_current_quantity_converted.return_value = Decimal('0')
|
||||
sale_line = Mock(
|
||||
id=6,
|
||||
finished=False,
|
||||
lots=[sale_lot],
|
||||
sale=Mock(id=5, currency=currency),
|
||||
unit=unit,
|
||||
)
|
||||
fee_lots = Mock()
|
||||
|
||||
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, 29))),
|
||||
'currency.currency': Mock(),
|
||||
'fee.lots': fee_lots,
|
||||
}[name]
|
||||
|
||||
values = Valuation.create_pnl_fee_from_sale_line(sale_line)
|
||||
|
||||
self.assertEqual(values, [])
|
||||
fee_lots.search.assert_not_called()
|
||||
|
||||
def test_sale_report_crop_name_handles_missing_crop(self):
|
||||
'sale report crop name returns an empty string when crop is missing'
|
||||
Sale = Pool().get('sale.sale')
|
||||
|
||||
Reference in New Issue
Block a user