details:   https://code.tryton.org/tryton/commit/0b20fea4600b
branch:    default
user:      Cédric Krier <[email protected]>
date:      Wed Jun 05 14:48:53 2024 +0200
description:
        Group sale invoices from rental
diffstat:

 modules/sale_invoice_grouping/CHANGELOG  |   1 +
 modules/sale_invoice_grouping/sale.py    |  24 +++++++++++++++++++++---
 modules/sale_invoice_grouping/tryton.cfg |   6 ++++++
 3 files changed, 28 insertions(+), 3 deletions(-)

diffs (80 lines):

diff -r 8e15abd1a20c -r 0b20fea4600b modules/sale_invoice_grouping/CHANGELOG
--- a/modules/sale_invoice_grouping/CHANGELOG   Wed Feb 21 15:07:52 2024 +0100
+++ b/modules/sale_invoice_grouping/CHANGELOG   Wed Jun 05 14:48:53 2024 +0200
@@ -1,3 +1,4 @@
+* Group with rental invoices
 
 Version 7.6.0 - 2025-04-28
 --------------------------
diff -r 8e15abd1a20c -r 0b20fea4600b modules/sale_invoice_grouping/sale.py
--- a/modules/sale_invoice_grouping/sale.py     Wed Feb 21 15:07:52 2024 +0100
+++ b/modules/sale_invoice_grouping/sale.py     Wed Jun 05 14:48:53 2024 +0200
@@ -7,8 +7,8 @@
 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 @@
 
     @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 @@
                 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 @@
                     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 -r 8e15abd1a20c -r 0b20fea4600b modules/sale_invoice_grouping/tryton.cfg
--- a/modules/sale_invoice_grouping/tryton.cfg  Wed Feb 21 15:07:52 2024 +0100
+++ b/modules/sale_invoice_grouping/tryton.cfg  Wed Jun 05 14:48:53 2024 +0200
@@ -6,6 +6,8 @@
     party
     account_invoice
     sale
+extras_depend:
+    sale_rental
 xml:
     party.xml
     configuration.xml
@@ -17,3 +19,7 @@
     configuration.Configuration
     configuration.ConfigurationSaleMethod
     sale.Sale
+
+[register sale_rental]
+model:
+    sale.Rental

Reply via email to