diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml
index 7df291dc117..481fc04912d 100644
--- a/addons/account/account_invoice_view.xml
+++ b/addons/account/account_invoice_view.xml
@@ -122,6 +122,7 @@
+
@@ -181,6 +182,7 @@
+
@@ -206,6 +208,9 @@
+
+
+
@@ -251,6 +256,7 @@
+
@@ -276,6 +282,9 @@
+
+
+
diff --git a/addons/account/invoice.py b/addons/account/invoice.py
index 86ea0fbd2b2..d8d18e3eb57 100644
--- a/addons/account/invoice.py
+++ b/addons/account/invoice.py
@@ -98,6 +98,35 @@ class account_invoice(osv.osv):
def _get_reference_type(self, cursor, user, context=None):
return [('none', 'Free Reference')]
+ def _amount_residual(self, cr, uid, ids, name, args, context={}):
+ res = {}
+ data_inv = self.browse(cr, uid, ids)
+ for inv in data_inv:
+ paid_amt = 0.0
+ to_pay = inv.amount_total
+ for lines in inv.move_lines:
+ paid_amt = paid_amt + lines.credit
+ res[inv.id] = to_pay - paid_amt
+ return res
+
+ def _get_lines(self, cr, uid, ids, name, arg, context=None):
+ res = {}
+ for id in ids:
+ move_lines = self.move_line_id_payment_get(cr,uid,[id])
+ if not move_lines:
+ res[id] = []
+ continue
+ data_lines = self.pool.get('account.move.line').browse(cr,uid,move_lines)
+ for line in data_lines:
+ ids_line = []
+ if line.reconcile_id:
+ ids_line = line.reconcile_id.line_id
+ elif line.reconcile_partial_id:
+ ids_line = line.reconcile_partial_id.line_partial_ids
+ l = map(lambda x: x.id, ids_line)
+ res[id]=[x for x in l if x <> line.id]
+ return res
+
_name = "account.invoice"
_description = 'Invoice'
_order = "number"
@@ -151,6 +180,9 @@ class account_invoice(osv.osv):
'reconciled': fields.function(_reconciled, method=True, string='Paid/Reconciled', type='boolean'),
'partner_bank': fields.many2one('res.partner.bank', 'Bank Account',
help='The bank account to pay to or to be paid from'),
+ 'move_lines':fields.function(_get_lines , method=True,type='many2many' , relation='account.move.line',string='Move Lines'),
+ 'residual': fields.function(_amount_residual, method=True, digits=(16,2),string='Residual', store=True),
+
}
_defaults = {
'type': _get_type,