From 709a97761aac55a3102c2b0e68722cc995442e99 Mon Sep 17 00:00:00 2001
From: "RGA(OpenERP)" <>
Date: Mon, 19 Mar 2012 16:08:23 +0530
Subject: [PATCH 1/2] [IMP] Added chatter notification for account invoice
bzr revid: rgaopenerp-20120319103823-rg7euc8iw260m21h
---
addons/account/account_invoice.py | 56 +++++++++++++++++----
addons/account/account_invoice_view.xml | 2 +
addons/account/account_invoice_workflow.xml | 2 +-
3 files changed, 49 insertions(+), 11 deletions(-)
diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py
index 5e5ac5f482b..569abbd32ed 100644
--- a/addons/account/account_invoice.py
+++ b/addons/account/account_invoice.py
@@ -178,6 +178,7 @@ class account_invoice(osv.osv):
return invoice_ids
_name = "account.invoice"
+ _inherit = "mail.thread"
_description = 'Invoice'
_order = "id desc"
@@ -357,12 +358,8 @@ class account_invoice(osv.osv):
context = {}
try:
res = super(account_invoice, self).create(cr, uid, vals, context)
- for inv_id, name in self.name_get(cr, uid, [res], context=context):
- ctx = context.copy()
- if vals.get('type', 'in_invoice') in ('out_invoice', 'out_refund'):
- ctx = self.get_log_context(cr, uid, context=ctx)
- message = _("Invoice '%s' is waiting for validation.") % name
- self.log(cr, uid, inv_id, message, context=ctx)
+ if res:
+ self.create_send_note(cr, uid, [res], context=context)
return res
except Exception, e:
if '"journal_id" viol' in e.args[0]:
@@ -375,9 +372,7 @@ class account_invoice(osv.osv):
if context is None:
context = {}
self.write(cr, uid, ids, {'state':'paid'}, context=context)
- for inv_id, name in self.name_get(cr, uid, ids, context=context):
- message = _("Invoice '%s' is paid.") % name
- self.log(cr, uid, inv_id, message)
+ self.invoice_paid_send_note(cr, uid, ids, context=context)
return True
def unlink(self, cr, uid, ids, context=None):
@@ -949,6 +944,11 @@ class account_invoice(osv.osv):
move_obj.post(cr, uid, [move_id], context=ctx)
self._log_event(cr, uid, ids)
return True
+
+ def invoice_validate(self, cr, uid, ids, context=None):
+ self.write(cr, uid, ids, {'state':'open'}, context=context)
+ self.invoice_validate_send_note(cr, uid, ids, context=context)
+ return True
def line_get_convert(self, cr, uid, x, part, date, context=None):
return {
@@ -1039,6 +1039,7 @@ class account_invoice(osv.osv):
# will be automatically deleted too
account_move_obj.unlink(cr, uid, move_ids, context=context)
self._log_event(cr, uid, ids, -1.0, 'Cancel Invoice')
+ self.invoice_cancel_send_note(cr, uid, ids, context=context)
return True
###################
@@ -1246,7 +1247,42 @@ class account_invoice(osv.osv):
# Update the stored value (fields.function), so we write to trigger recompute
self.pool.get('account.invoice').write(cr, uid, ids, {}, context=context)
return True
-
+ # -----------------------------
+ # OpenChatter and notifications
+ # -----------------------------
+ def _get_document_type(self, type):
+ type_dict = {
+ 'out_invoice': 'Customer invoice',
+ 'in_invoice': 'Supplier invoice',
+ 'out_refund': 'Customer Refund',
+ 'in_refund': 'Supplier Refund',
+ }
+ return type_dict[type]
+
+ def create_send_note(self, cr, uid, ids, context=None):
+ for obj in self.browse(cr, uid, ids, context=context):
+ self.message_append_note(cr, uid, [obj.id], _('System notification'),
+ _("""%s created.""") % (self._get_document_type(obj.type)),
+ type='notification', context=context)
+
+ def invoice_validate_send_note(self, cr, uid, ids, context=None):
+ for obj in self.browse(cr, uid, ids, context=context):
+ self.message_append_note(cr, uid, [obj.id], _('System notification'),
+ _("""%s validated.""") % (self._get_document_type(obj.type)),
+ type='notification', context=context)
+
+ def invoice_paid_send_note(self, cr, uid, ids, context=None):
+ for obj in self.browse(cr, uid, ids, context=context):
+ self.message_append_note(cr, uid, [obj.id], _('System notification'),
+ _("""%s paid.""") % (self._get_document_type(obj.type)),
+ type='notification', context=context)
+
+ def invoice_cancel_send_note(self, cr, uid, ids, context=None):
+ for obj in self.browse(cr, uid, ids, context=context):
+ self.message_append_note(cr, uid, [obj.id], _('System notification'),
+ _("""%s cancelled.""") % (self._get_document_type(obj.type)),
+ type='notification', context=context)
+
account_invoice()
class account_invoice_line(osv.osv):
diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml
index 59977c252f9..b3144816795 100644
--- a/addons/account/account_invoice_view.xml
+++ b/addons/account/account_invoice_view.xml
@@ -245,6 +245,7 @@
+
@@ -343,6 +344,7 @@
+
diff --git a/addons/account/account_invoice_workflow.xml b/addons/account/account_invoice_workflow.xml
index 2af1e192a9b..13db193af8d 100644
--- a/addons/account/account_invoice_workflow.xml
+++ b/addons/account/account_invoice_workflow.xml
@@ -27,7 +27,7 @@
action_date_assign()
action_move_create()
action_number()
-write({'state':'open'})
+invoice_validate()
function
From 3a5ce2a3120f453d5fcb7c5cc6605e1ccd91b2dd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?=
Date: Tue, 20 Mar 2012 15:45:48 +0100
Subject: [PATCH 2/2] [IMP] Minor tweak: protected a dictionary access with
dict.get
bzr revid: tde@openerp.com-20120320144548-coumjq28pn7ce4zg
---
addons/account/account_invoice.py | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py
index 569abbd32ed..7c4bd88e3c5 100644
--- a/addons/account/account_invoice.py
+++ b/addons/account/account_invoice.py
@@ -1247,9 +1247,11 @@ class account_invoice(osv.osv):
# Update the stored value (fields.function), so we write to trigger recompute
self.pool.get('account.invoice').write(cr, uid, ids, {}, context=context)
return True
- # -----------------------------
- # OpenChatter and notifications
- # -----------------------------
+
+ # -----------------------------------------
+ # OpenChatter notifications and need_action
+ # -----------------------------------------
+
def _get_document_type(self, type):
type_dict = {
'out_invoice': 'Customer invoice',
@@ -1257,7 +1259,7 @@ class account_invoice(osv.osv):
'out_refund': 'Customer Refund',
'in_refund': 'Supplier Refund',
}
- return type_dict[type]
+ return type_dict.get(type, 'Invoice')
def create_send_note(self, cr, uid, ids, context=None):
for obj in self.browse(cr, uid, ids, context=context):