[IMP] account_voucher: optimized code
[odoo/odoo.git] / addons / account_voucher / account_voucher.py
index 30bc5c0..1e83d41 100644 (file)
@@ -582,18 +582,13 @@ class account_voucher(osv.osv):
         reconcile_pool = self.pool.get('account.move.reconcile')
         move_pool = self.pool.get('account.move')
         move_line_pool = self.pool.get('account.move.line')
-        wf_service = netsvc.LocalService("workflow")
-        invoice_ids = []
         for voucher in self.browse(cr, uid, ids, context=context):
             for line in voucher.move_ids:
                 if line.reconcile_id:
-                    invoice_ids += [rec_line.invoice.id for rec_line in line.reconcile_id.line_id if rec_line.invoice]
                     move_lines = [move_line.id for move_line in line.reconcile_id.line_id]
                     move_lines.remove(line.id)
                     reconcile_pool.unlink(cr, uid, line.reconcile_id.id)
                     move_line_pool.reconcile_partial(cr, uid, move_lines, 'auto',context=context)
-                elif line.reconcile_partial_id:
-                    invoice_ids += [rec_line.invoice.id for rec_line in line.reconcile_partial_id.line_partial_ids if rec_line.invoice]
             if voucher.move_id:
                 move_pool.button_cancel(cr, uid, [voucher.move_id.id])
                 move_pool.unlink(cr, uid, [voucher.move_id.id])
@@ -601,8 +596,6 @@ class account_voucher(osv.osv):
             'state':'cancel',
             'move_id':False,
         }
-        for inv_id in set(invoice_ids):
-            wf_service.trg_validate(uid, 'account.invoice', inv_id, 'open_test', cr)
         self.write(cr, uid, ids, res)
         return True
 
@@ -738,6 +731,9 @@ class account_voucher(osv.osv):
                     'debit': 0.0,
                     'date': inv.date
                 }
+                if not amount:
+                    raise osv.except_osv(_('Warning'),
+                        _("Error while processing 'account.voucher %s' (id:%s) for partner '%s', amount: %s !") % (inv.name, inv.id, inv.partner_id.name, inv.amount))
                 if amount < 0:
                     amount = -amount
                     if line.type == 'dr':