diff --git a/addons/account_followup/__openerp__.py b/addons/account_followup/__openerp__.py
index acc4ea3ae41..6a5e144d6e0 100644
--- a/addons/account_followup/__openerp__.py
+++ b/addons/account_followup/__openerp__.py
@@ -61,7 +61,7 @@ Note that if you want to check the follow-up level for a given partner/account e
'demo': [],
'test': [
'test/account_followup.yml',
- #'test/account_followup_report.yml',
+ 'test/account_followup_report.yml',
],
'installable': True,
'auto_install': False,
diff --git a/addons/account_followup/account_followup.py b/addons/account_followup/account_followup.py
index e058977dff5..9ff6d3be372 100644
--- a/addons/account_followup/account_followup.py
+++ b/addons/account_followup/account_followup.py
@@ -161,6 +161,37 @@ class res_partner(osv.osv):
def get_latest_followup_level(self):
amls = self.accountmoveline_ids
+ def _get_next_followup_level_id_optimized(self, cr, uid, ids, name, arg, context=None):
+ res = {}
+ for partner in self.browse(cr, uid, ids):
+ latest_id = partner.latest_followup_level_id
+ if latest_id:
+ latest = latest_id
+ else:
+ latest = False
+
+ delay = False
+ newlevel = False
+ if latest: #if latest exists
+ newlevel = latest.id
+ old_delay = latest.delay
+ else:
+ old_delay = False
+ fl_ar = self.pool.get('account_followup.followup.line').search(cr, uid, [('followup_id.company_id.id','=', partner.company_id.id)])
+
+ for fl_obj in self.pool.get('account_followup.followup.line').browse(cr, uid, fl_ar):
+ if not old_delay:
+ if not delay or fl_obj.delay < delay:
+ delay = fl_obj.delay
+ newlevel = fl_obj.id
+ else:
+ if (not delay and (fl_obj.delay > old_delay)) or ((fl_obj.delay < delay) and (fl_obj.delay > old_delay)):
+ delay = fl_obj.delay
+ newlevel = fl_obj.id
+ res[partner.id] = newlevel
+ #Now search one level higher
+ return res
+
def _get_next_followup_level_id(self, cr, uid, ids, name, arg, context=None):
res = {}
@@ -203,7 +234,8 @@ class res_partner(osv.osv):
for partner in self.browse(cr, uid, ids, context):
res[partner.id] = 0.0
for aml in partner.accountmoveline_ids:
- res[partner.id] = res[partner.id] + aml.debit
+ if ((not aml.date_maturity) and (aml.date > fields.date.context_today(cr, uid, context))) or (aml.date_maturity > fields.date.context_today(cr, uid, context)):
+ res[partner.id] = res[partner.id] + aml.debit
return res
@@ -355,7 +387,12 @@ class res_partner(osv.osv):
# }
-
+ def action_done(self, cr, uid, ids, context=None):
+
+ self.write(cr, uid, ids, {'payment_next_action_date': False, 'payment_next_action':''}, context)
+
+
+
_inherit = "res.partner"
_columns = {
@@ -369,8 +406,8 @@ class res_partner(osv.osv):
'latest_followup_date':fields.function(_get_latest_followup_date, method=True, type='date', string="latest followup date", store=True),
'latest_followup_level_id':fields.function(_get_latest_followup_level_id, method=True,
type='many2one', relation='account_followup.followup.line', string="Latest Followup Level", store=True),
- 'next_followup_level_id':fields.function(_get_next_followup_level_id, method=True, type='many2one', relation='account_followup.followup.line', string="Next Level"),
- 'payment_amount_outstanding':fields.function(_get_amount, method=True, type='float', string="Amount", store=True),
+ 'next_followup_level_id':fields.function(_get_next_followup_level_id_optimized, method=True, type='many2one', relation='account_followup.followup.line', string="Next Level", help="Next level that will be printed"),
+ 'payment_amount_outstanding':fields.function(_get_amount, method=True, type='float', string="Amount Overdue", store=True),
}
res_partner()
diff --git a/addons/account_followup/account_followup_customers.xml b/addons/account_followup/account_followup_customers.xml
index 70a373814e3..a88ba06e504 100644
--- a/addons/account_followup/account_followup_customers.xml
+++ b/addons/account_followup/account_followup_customers.xml
@@ -10,13 +10,16 @@
form
-
@@ -80,10 +97,19 @@
search
-
-
+
+
+
+
+
+
+
+
+
+
@@ -113,6 +139,35 @@
+
+
+
+ res.partner.followup.form.inherit
+
+ res.partner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/account_followup/account_followup_view.xml b/addons/account_followup/account_followup_view.xml
index 1a080d71b45..5fd4487ffd8 100644
--- a/addons/account_followup/account_followup_view.xml
+++ b/addons/account_followup/account_followup_view.xml
@@ -168,6 +168,5 @@
-
-
+
\ No newline at end of file
diff --git a/addons/account_followup/test/account_followup.yml b/addons/account_followup/test/account_followup.yml
index dbcde7bc15b..d015e30d7fd 100644
--- a/addons/account_followup/test/account_followup.yml
+++ b/addons/account_followup/test/account_followup.yml
@@ -3,7 +3,15 @@
-
!record {model: account.invoice, id: account.demo_invoice_0}:
check_total: 14.0
--
+ date_invoice: 2012-06-2
+ invoice_line:
+ - account_id : account.a_sale
+ name: 'Stupid PC'
+ quantity: 1.0
+ journal_id: account.bank_journal
+ partner_id: base.res_partner_12
+ reference_type: none
+-
!workflow {model: account.invoice, action: invoice_open, ref: account.demo_invoice_0}
-
I create a follow-up.
@@ -14,4 +22,13 @@
I will process follow-ups
-
!python {model: account.followup.print}: |
- self.do_process(cr, uid, [ref("account_followup_print_0")], {"active_ids": [ref("account_followup.account_followup_print_menu")], "active_id": ref("account_followup.account_followup_print_menu"),})
\ No newline at end of file
+ self.do_process(cr, uid, [ref("account_followup_print_0")], {"active_ids": [ref("account_followup.account_followup_print_menu")], "active_id": ref("account_followup.account_followup_print_menu"),})
+#-
+# Test it has everything
+#-
+# !assert {model: account.invoice, id: account.demo_invoice_0}:
+# - reference_type = None
+ #!assert {model: res.partner, id: base.res_partner_12} :
+ # -
+ #latest_followup_level_id == ref("demo_followup_line1")
+
diff --git a/addons/account_followup/wizard/account_followup_print.py b/addons/account_followup/wizard/account_followup_print.py
index dadc5994338..4a7a22887b5 100644
--- a/addons/account_followup/wizard/account_followup_print.py
+++ b/addons/account_followup/wizard/account_followup_print.py
@@ -132,7 +132,6 @@ class account_followup_print(osv.osv_memory):
partner_obj.do_partner_mail(cr, uid, [partner.partner_id.id], context)
if partner.max_followup_id.send_letter:
partner_ids_to_print.append(partner.id)
-
action = partner_obj.do_partner_print(cr, uid, partner_ids_to_print, data, context)
return action or {}