[FIX]account_voucher: partial payments went away when doing partial recincilation
authorRifakat (OpenERP) <rha@tinyerp.com>
Wed, 1 Feb 2012 08:00:00 +0000 (13:30 +0530)
committerRifakat (OpenERP) <rha@tinyerp.com>
Wed, 1 Feb 2012 08:00:00 +0000 (13:30 +0530)
bzr revid: rha@tinyerp.com-20120201080000-y88in0okr4q2y4uc

1  2 
addons/account_voucher/account_voucher.py

@@@ -581,17 -581,28 +581,29 @@@ class account_voucher(osv.osv)
      def cancel_voucher(self, cr, uid, ids, context=None):
          reconcile_pool = self.pool.get('account.move.reconcile')
          move_pool = self.pool.get('account.move')
++        wf_service = netsvc.LocalService("workflow")
  
          for voucher in self.browse(cr, uid, ids, context=context):
              recs = []
              for line in voucher.move_ids:
                  if line.reconcile_id:
-                     recs += [line.reconcile_id.id]
-                 if line.reconcile_partial_id:
-                     recs += [line.reconcile_partial_id.id]
-             reconcile_pool.unlink(cr, uid, recs)
 -                    recs = [rec.id for rec in line.reconcile_id.line_id]
 -                    recs.remove(line.id)
++                    invoice_id = [rec_line.invoice.id for rec_line in line.reconcile_id.line_id if rec_line.invoice]
++                    recs.append(line.reconcile_id.id)
++                    move_lines = [move_line.id for move_line in line.reconcile_id.line_id]
++                    move_lines.remove(line.id)
+                     partial_ids = reconcile_pool.create(cr, uid, {
+                         'type': 'auto',
+                         'line_id': False,
 -                        'line_partial_ids': [(6, 0, recs)]})
 -                    self.pool.get('account.move.line').write(cr, uid, [line.id], {
 -                        'reconcile_id': False,
 -                        'reconcile_partial_id': False
 -                        }, update_check=False)
++                        'line_partial_ids': [(6, 0, move_lines)]})
+                     
 -                    self.pool.get('account.move.line').write(cr, uid, recs, {
++                    self.pool.get('account.move.line').write(cr, uid, move_lines, {
+                         'reconcile_id': False,
+                         'reconcile_partial_id': partial_ids
+                     }, update_check=False)
++                elif line.reconcile_partial_id:
++                    invoice_id = [rec_line.invoice.id for rec_line in line.reconcile_partial_id.line_partial_ids if rec_line.invoice]
+             if recs:
+                 reconcile_pool.unlink(cr, uid, recs)
              if voucher.move_id:
                  move_pool.button_cancel(cr, uid, [voucher.move_id.id])
                  move_pool.unlink(cr, uid, [voucher.move_id.id])
              'state':'cancel',
              'move_id':False,
          }
++        wf_service.trg_validate(uid, 'account.invoice', invoice_id[0], 'open_test', cr)
          self.write(cr, uid, ids, res)
          return True