Price composition

This commit is contained in:
2026-05-20 14:29:31 +02:00
parent 9ad0217a69
commit ea3cb65d7d
4 changed files with 61 additions and 36 deletions

View File

@@ -2612,25 +2612,38 @@ class PurchaseTradeTestCase(ModuleTestCase):
self.assertEqual(
sale.report_price_composition_lines.splitlines(),
[
'FOB EUR 2500.0000 PER MT',
'FREIGHT EUR 25.0000 PER MT',
'FOB value in EUR',
'FREIGHT value in EUR',
])
self.assertEqual(
sale.report_price_composition_rows,
[
{'label': 'FOB value in EUR', 'amount': Decimal('2500')},
{'label': 'FREIGHT value in EUR', 'amount': Decimal('25')},
])
def test_invoice_report_rate_lines_prefers_sale_price_composition(self):
'invoice_melya rate block uses sale price composition when available'
Invoice = Pool().get('account.invoice')
sale = Mock(
report_price_composition_lines=(
'FOB EUR 2500.0000 PER MT\n'
'FREIGHT EUR 25.0000 PER MT'))
report_price_composition_rows=[
{'label': 'FOB value in EUR', 'amount': Decimal('2500')},
{'label': 'FREIGHT value in EUR', 'amount': Decimal('25')},
])
invoice = Invoice()
invoice.sales = [sale]
self.assertEqual(
invoice.report_rate_lines.splitlines(),
[
'FOB EUR 2500.0000 PER MT',
'FREIGHT EUR 25.0000 PER MT',
'FOB value in EUR',
'FREIGHT value in EUR',
])
self.assertEqual(
invoice.report_rate_rows,
[
{'label': 'FOB value in EUR', 'amount': Decimal('2500')},
{'label': 'FREIGHT value in EUR', 'amount': Decimal('25')},
])
def test_sale_report_converts_mixed_units_for_total_and_words(self):