Purchase & Sale Lines

This commit is contained in:
2026-06-28 13:43:26 +02:00
parent f45cdb0807
commit 104d5c616c
7 changed files with 394 additions and 16 deletions

View File

@@ -4161,6 +4161,66 @@ class PurchaseTradeTestCase(ModuleTestCase):
'estimated_date': datetime.date(2026, 5, 1),
}])])
def test_purchase_line_reporting_parent_fields_and_counts(self):
'purchase line reporting fields mirror parent values and relation counts'
PurchaseLine = Pool().get('purchase.line')
line = PurchaseLine()
line.purchase = Mock(
trader=Mock(id=10),
operator=Mock(id=11),
broker=Mock(id=12),
contract_template=Mock(id=13),
our_reference='OUR-PUR',
lc_date=datetime.date(2026, 5, 2),
product_origin='Origin',
)
line.price_components = [Mock(), Mock()]
line.price_pricing = [Mock()]
line.mtm = [Mock(), Mock(), Mock()]
line.lots = []
self.assertEqual(line.get_parent_field('parent_trader'), 10)
self.assertEqual(line.get_parent_field('parent_operator'), 11)
self.assertEqual(
line.get_parent_field('parent_contract_template'), 13)
self.assertEqual(line.get_parent_field('parent_our_reference'), 'OUR-PUR')
self.assertEqual(
line.get_relation_count('price_component_count'), 2)
self.assertEqual(line.get_relation_count('pricing_count'), 1)
self.assertEqual(line.get_relation_count('mtm_count'), 3)
self.assertEqual(line.get_relation_count('lot_count'), 0)
def test_sale_line_reporting_parent_fields_and_counts(self):
'sale line reporting fields mirror parent values and relation counts'
SaleLine = Pool().get('sale.line')
line = SaleLine()
line.sale = Mock(
trader=Mock(id=20),
operator=Mock(id=21),
invoice_party=Mock(id=22),
shipment_party=Mock(id=23),
contract_template=Mock(id=24),
our_reference='OUR-SALE',
lc_date=datetime.date(2026, 5, 3),
product_origin='Origin',
)
line.price_components = [Mock()]
line.price_composition = [Mock(), Mock()]
line.price_pricing = []
line.fees = [Mock(), Mock(), Mock()]
self.assertEqual(line.get_parent_field('parent_trader'), 20)
self.assertEqual(line.get_parent_field('parent_operator'), 21)
self.assertEqual(line.get_parent_field('parent_invoice_party'), 22)
self.assertEqual(line.get_parent_field('parent_shipment_party'), 23)
self.assertEqual(line.get_parent_field('parent_our_reference'), 'OUR-SALE')
self.assertEqual(
line.get_relation_count('price_component_count'), 1)
self.assertEqual(
line.get_relation_count('price_composition_count'), 2)
self.assertEqual(line.get_relation_count('pricing_count'), 0)
self.assertEqual(line.get_relation_count('fee_count'), 3)
def test_purchase_and_sale_line_keep_explicit_estimated_bl_date(self):
'new lines keep explicit estimated BL date'
PurchaseLine = Pool().get('purchase.line')