Reviewers: ,


Please review this at http://codereview.tryton.org/359001/

Affected files:
  M sale.py


Index: sale.py
===================================================================

--- a/sale.py
+++ b/sale.py
@@ -207,6 +207,10 @@
         self._states_cached = ['confirmed', 'processing', 'done', 'cancel']

     def init(self, module_name):
+        pool = Pool()
+        sale_line_obj = pool.get('sale.line')
+ sale_line_invoice_line_obj = pool.get('sale.line-account.invoice.line')
+        move_obj = pool.get('stock.move')
         cursor = Transaction().cursor
         # Migration from 1.2: packing renamed into shipment
         cursor.execute("UPDATE ir_model_data "
@@ -236,14 +240,15 @@
         table.not_null_action('sale_date', 'remove')

         # state confirmed splitted into confirmed and processing
-        confirmed2processing = []
-        for sale in self.browse(self.search([
-                        ('state', '=', 'confirmed'),
-                        ])):
-            if sale.invoices or sale.moves:
-                confirmed2processing.append(sale.id)
-        if confirmed2processing:
-            self.write(confirmed2processing, {'state': 'processing'})
+        cursor.execute('UPDATE "' + self._table + '" AS s '
+            "SET state = 'processing' "
+            'FROM "' + sale_line_obj._table + '" AS l, '
+                '"' + sale_line_invoice_line_obj._table + '" AS li, '
+                '"' + move_obj._table + '" AS m '
+            "WHERE s.state = 'confirmed' "
+                "AND l.sale = s.id "
+                "AND (li.sale_line = l.id "
+                    "OR m.sale_line = l.id)")

         # Add index on create_date
         table = TableHandler(cursor, self, module_name)



--
[email protected] mailing list

Reply via email to