Invoice Melya template

This commit is contained in:
2026-06-26 14:28:26 +02:00
parent c9dceb9c06
commit b7b54c8b7b
2 changed files with 82 additions and 32 deletions

View File

@@ -5,7 +5,7 @@ import datetime
from contextlib import nullcontext
from decimal import Decimal
from types import SimpleNamespace
from unittest.mock import ANY, Mock, patch
from unittest.mock import ANY, Mock, call, patch
from xml.etree import ElementTree
from trytond.pool import Pool
@@ -8257,8 +8257,8 @@ class PurchaseTradeTestCase(ModuleTestCase):
invoice.report_quantity_lines,
'910.00 LBS (910.00 LBS)')
def test_invoice_validation_creates_weight_snapshot_for_proforma_lines(self):
'invoice validation snapshots lot weights for pro forma invoice lines'
def test_invoice_validation_creates_weight_snapshot_for_report_lines(self):
'invoice validation snapshots lot weights for pro forma and final lines'
Invoice = Pool().get('account.invoice')
lot_ref = Mock(id=10)
@@ -8293,8 +8293,9 @@ class PurchaseTradeTestCase(ModuleTestCase):
invoice._create_lot_weight_snapshots()
snapshot_model.create_for_invoice_line.assert_called_once_with(
proforma, lot)
self.assertEqual(
snapshot_model.create_for_invoice_line.call_args_list,
[call(proforma, lot), call(final, lot)])
def test_invoice_report_lbs_converts_kilogram_to_lbs(self):
'invoice lbs helper converts kilogram quantities with the proper uom ratio'
@@ -8429,8 +8430,8 @@ class PurchaseTradeTestCase(ModuleTestCase):
'999990.0 KILOGRAM (2204597.95 LBS)',
])
def test_invoice_report_weights_use_single_virtual_lot_when_no_physical(self):
'invoice uses the unique virtual lot hist when no physical lot exists'
def test_invoice_report_weights_ignore_origin_virtual_lot(self):
'invoice report falls back to invoice quantity instead of origin virtual lot'
Invoice = Pool().get('account.invoice')
virtual = Mock(id=1, lot_type='virtual', lot_unit_line=Mock(rec_name='LBS'))
@@ -8448,13 +8449,14 @@ class PurchaseTradeTestCase(ModuleTestCase):
)
invoice = Invoice()
invoice.lines = [line]
line.invoice = invoice
self.assertEqual(invoice.report_net, Decimal('930'))
self.assertEqual(invoice.report_gross, Decimal('930'))
self.assertEqual(invoice.report_weight_unit_upper, 'LBS')
self.assertEqual(invoice.report_net, Decimal('1000'))
self.assertEqual(invoice.report_gross, Decimal('1000'))
self.assertEqual(invoice.report_weight_unit_upper, 'MT')
def test_invoice_report_weights_prefer_physical_lots_over_virtual(self):
'invoice uses physical lot hist values whenever physical lots exist'
def test_invoice_report_weights_use_lot_linked_to_invoice_line(self):
'invoice uses the physical lot explicitly linked to the invoice line'
Invoice = Pool().get('account.invoice')
virtual = Mock(id=1, lot_type='virtual', lot_unit_line=Mock(rec_name='LBS'))
@@ -8467,16 +8469,23 @@ class PurchaseTradeTestCase(ModuleTestCase):
Decimal('950'),
Decimal('980'),
)
origin = Mock(lots=[virtual, physical])
physical.sale_invoice_line = None
line = Mock(
id=100,
type='line',
quantity=Decimal('1000'),
lot=virtual,
origin=origin,
unit=Mock(rec_name='MT'),
)
physical.sale_invoice_line_prov = line
physical.invoice_line = None
physical.invoice_line_prov = None
origin = Mock(lots=[virtual, physical])
line.origin = origin
invoice = Invoice()
invoice.lines = [line]
invoice.sales = [Mock(lines=[origin])]
line.invoice = invoice
self.assertEqual(invoice.report_net, Decimal('950'))
self.assertEqual(invoice.report_gross, Decimal('980'))