Reviewers: ,


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

Affected files:
  M __init__.py
  M purchase.py


Index: __init__.py
===================================================================
--- a/__init__.py
+++ b/__init__.py
@@ -13,3 +13,6 @@
         PurchaseIgnoredInvoiceLine,
         InvoiceLine,
         module='purchase_invoice_line_standalone', type_='model')
+    Pool.register(
+        HandleInvoiceException,
+        module='purchase_invoice_line_standalone', type_='wizard')
Index: purchase.py
===================================================================
--- a/purchase.py
+++ b/purchase.py
@@ -4,7 +4,8 @@
 from trytond.transaction import Transaction
 from trytond.pool import Pool, PoolMeta

-__all__ = ['Purchase', 'PurchaseInvoiceLine', 'PurchaseIgnoredInvoiceLine']
+__all__ = ['Purchase', 'PurchaseInvoiceLine', 'PurchaseIgnoredInvoiceLine',
+    'HandleInvoiceException']
 __metaclass__ = PoolMeta


@@ -77,20 +78,6 @@
         default['invoice_lines_ignored'] = None
         return super(Purchase, cls).copy(purchases, default=default)

-    def ignore_invoice_exception(self):
-        super(Purchase, self).ignore_invoice_exception()
-        invoice_lines = []
-        for invoice_line in self.invoice_lines:
-            if invoice_line.invoice \
-                    and invoice_line.invoice.state == 'cancel':
-                invoice_lines.append(invoice_line)
-        if invoice_lines:
-            self.write([self], {
-                    'invoice_lines_ignored': [
-                        ('add', [x.id for x in invoice_lines]),
-                        ],
-                    })
-

 class PurchaseInvoiceLine(ModelSQL):
     'Purchase - Invoice Line'
@@ -110,3 +97,25 @@
             ondelete='CASCADE', select=True, required=True)
     invoice = fields.Many2One('account.invoice.line', 'Invoice Line',
             ondelete='RESTRICT', select=True, required=True)
+
+
+class HandleInvoiceException:
+    __name__ = 'purchase.handle.invoice.exception'
+
+    def transition_handle(self):
+        Purchase = Pool().get('purchase.purchase')
+
+        state = super(HandleInvoiceException, self).transition_handle()
+
+        purchase = Purchase(Transaction().context['active_id'])
+        invoice_lines = []
+        for invoice_line in purchase.invoice_lines:
+            if (invoice_line.invoice
+                    and invoice_line.invoice.state == 'cancel'):
+                invoice_lines.append(invoice_line.id)
+        if invoice_lines:
+            Purchase.write([purchase], {
+                    'invoice_lines_ignored': [('add', invoice_lines)],
+                    })
+        Purchase.process([purchase])
+        return state


--
[email protected] mailing list

Reply via email to