diff --git a/modules/sale_invoice_grouping/CHANGELOG b/modules/sale_invoice_grouping/CHANGELOG index 5fcb7958d0..26b3d89372 100644 --- a/modules/sale_invoice_grouping/CHANGELOG +++ b/modules/sale_invoice_grouping/CHANGELOG @@ -1,3 +1,4 @@ +* Group with rental invoices Version 7.6.0 - 2025-04-28 -------------------------- diff --git a/modules/sale_invoice_grouping/sale.py b/modules/sale_invoice_grouping/sale.py index 6563b769e9..11636f6cbb 100644 --- a/modules/sale_invoice_grouping/sale.py +++ b/modules/sale_invoice_grouping/sale.py @@ -7,8 +7,8 @@ from trytond.pool import PoolMeta from trytond.transaction import Transaction -class Sale(metaclass=PoolMeta): - __name__ = 'sale.sale' +class InvoiceGroupingMixin: + __slots__ = () @property def invoice_grouping_method(self): @@ -17,7 +17,7 @@ class Sale(metaclass=PoolMeta): @property def _invoice_grouping_origins(self): - return ['sale.line'] + return ['sale.line', 'sale.rental.line'] def _get_invoice_grouping_fields(self, invoice): return {'state', 'company', 'type', 'journal', 'party', @@ -59,6 +59,10 @@ class Sale(metaclass=PoolMeta): invoice, = grouped_invoices return invoice + +class Sale(InvoiceGroupingMixin, metaclass=PoolMeta): + __name__ = 'sale.sale' + @classmethod def _process_invoice(cls, sales): for method, sales in groupby( @@ -68,3 +72,17 @@ class Sale(metaclass=PoolMeta): super()._process_invoice([sale]) else: super()._process_invoice(list(sales)) + + +class Rental(InvoiceGroupingMixin, metaclass=PoolMeta): + __name__ = 'sale.rental' + + @classmethod + def invoice(cls, rentals): + for method, rentals in groupby( + rentals, lambda r: r.invoice_grouping_method): + if method: + for rental in rentals: + super().invoice([rental]) + else: + super().invoice(list(rentals)) diff --git a/modules/sale_invoice_grouping/tryton.cfg b/modules/sale_invoice_grouping/tryton.cfg index c8e62988bd..90432b587d 100644 --- a/modules/sale_invoice_grouping/tryton.cfg +++ b/modules/sale_invoice_grouping/tryton.cfg @@ -6,6 +6,8 @@ depends: party account_invoice sale +extras_depend: + sale_rental xml: party.xml configuration.xml @@ -17,3 +19,7 @@ model: configuration.Configuration configuration.ConfigurationSaleMethod sale.Sale + +[register sale_rental] +model: + sale.Rental