changeset 70573a158a18 in modules/purchase_request_quotation:default
details: 
https://hg.tryton.org/modules/purchase_request_quotation?cmd=changeset&node=70573a158a18
description:
        Add method to create quotation and pass quotation to line

        issue9612
        review302171002
diffstat:

 purchase.py |  24 +++++++++++++++---------
 1 files changed, 15 insertions(+), 9 deletions(-)

diffs (47 lines):

diff -r e0ffac13c47c -r 70573a158a18 purchase.py
--- a/purchase.py       Sat Apr 10 23:46:24 2021 +0200
+++ b/purchase.py       Mon Apr 12 09:27:43 2021 +0200
@@ -513,20 +513,16 @@
 
         reqs = [r for r in self.records if r.state in ['draft', 'quotation']]
         for supplier in self.ask_suppliers.suppliers:
-            quotation = Quotation()
-            quotation.supplier = supplier
-            quotation.supplier_address = supplier.address_get()
             reqs = [r for r in reqs if self.filter_request(r, supplier)]
             sorted_reqs = sorted(reqs, key=lambda r: r.company)
             for key, grouped_requests in groupby(sorted_reqs,
                     key=self._group_request_key):
-                for f, v in key:
-                    setattr(quotation, f, v)
-                quotations.append(quotation)
-                for r in grouped_requests:
-                    line = self.get_quotation_line(r)
+                quotation = self.get_quotation(supplier, key)
+                for request in grouped_requests:
+                    line = self.get_quotation_line(request, quotation)
                     line.quotation = quotation
                     lines.append(line)
+                quotations.append(quotation)
         QuotationLine.save(lines)
         Quotation.save(quotations)
 
@@ -534,7 +530,17 @@
         self.succeed.number_quotations = len(quotations)
         return 'succeed'
 
-    def get_quotation_line(self, request):
+    def get_quotation(self, supplier, key):
+        pool = Pool()
+        Quotation = pool.get('purchase.request.quotation')
+        quotation = Quotation()
+        quotation.supplier = supplier
+        quotation.supplier_address = supplier.address_get()
+        for f, v in key:
+            setattr(quotation, f, v)
+        return quotation
+
+    def get_quotation_line(self, request, quotation):
         pool = Pool()
         QuotationLine = pool.get('purchase.request.quotation.line')
         quotation_line = QuotationLine()

Reply via email to