[REF] Hr_expense: added track on state, _track for subtypes, removed extra chatter messages.

bzr revid: tde@openerp.com-20121218165708-iij5o20k78m4xyax
This commit is contained in:
Thibault Delavallée 2012-12-18 17:57:08 +01:00
parent 6dc32eb287
commit 1efb2d6b0b
3 changed files with 24 additions and 33 deletions

View File

@ -64,6 +64,14 @@ class hr_expense_expense(osv.osv):
_inherit = ['mail.thread'] _inherit = ['mail.thread']
_description = "Expense" _description = "Expense"
_order = "id desc" _order = "id desc"
_track = {
'state': {
'hr_expense.mt_expense_approved': lambda self, cr, uid, obj, ctx=None: obj.state == 'accepted',
'hr_expense.mt_expense_refused': lambda self, cr, uid, obj, ctx=None: obj.state == 'cancelled',
'hr_expense.mt_expense_confirmed': lambda self, cr, uid, obj, ctx=None: obj.state == 'confirm',
},
}
_columns = { _columns = {
'name': fields.char('Description', size=128, required=True, readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}), 'name': fields.char('Description', size=128, required=True, readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
'id': fields.integer('Sheet ID', readonly=True), 'id': fields.integer('Sheet ID', readonly=True),
@ -89,7 +97,8 @@ class hr_expense_expense(osv.osv):
('accepted', 'Approved'), ('accepted', 'Approved'),
('done', 'Done'), ('done', 'Done'),
], ],
'Status', readonly=True, help='When the expense request is created the status is \'Draft\'.\n It is confirmed by the user and request is sent to admin, the status is \'Waiting Confirmation\'.\ 'Status', readonly=True, track_visibility=1,
help='When the expense request is created the status is \'Draft\'.\n It is confirmed by the user and request is sent to admin, the status is \'Waiting Confirmation\'.\
\nIf the admin accepts it, the status is \'Accepted\'.\n If a receipt is made for the expense request, the status is \'Done\'.'), \nIf the admin accepts it, the status is \'Accepted\'.\n If a receipt is made for the expense request, the status is \'Done\'.'),
} }
_defaults = { _defaults = {
@ -124,33 +133,17 @@ class hr_expense_expense(osv.osv):
company_id = employee.company_id.id company_id = employee.company_id.id
return {'value': {'department_id': department_id, 'company_id': company_id}} return {'value': {'department_id': department_id, 'company_id': company_id}}
def expense_confirm(self, cr, uid, ids, *args): def expense_confirm(self, cr, uid, ids, context=None):
for expense in self.browse(cr, uid, ids): for expense in self.browse(cr, uid, ids):
if expense.employee_id and expense.employee_id.parent_id.user_id: if expense.employee_id and expense.employee_id.parent_id.user_id:
self.message_subscribe_users(cr, uid, [expense.id], user_ids=[expense.employee_id.parent_id.user_id.id]) self.message_subscribe_users(cr, uid, [expense.id], user_ids=[expense.employee_id.parent_id.user_id.id])
self.message_post(cr, uid, ids, body=_("The request is <b>waiting for Approval</b>"), return self.write(cr, uid, ids, {'state': 'confirm', 'date_confirm': time.strftime('%Y-%m-%d')}, context=context)
subtype="hr_expense.mt_expense_approve")
self.write(cr, uid, ids, {
'state':'confirm',
'date_confirm': time.strftime('%Y-%m-%d')
})
return True
def expense_accept(self, cr, uid, ids, *args): def expense_accept(self, cr, uid, ids, context=None):
self.message_post(cr, uid, ids, body=_("The request has been <b>approved</b>"), return self.write(cr, uid, ids, {'state': 'accepted', 'date_valid': time.strftime('%Y-%m-%d'), 'user_valid': uid}, context=context)
subtype="hr_expense.mt_expense_approved")
self.write(cr, uid, ids, {
'state':'accepted',
'date_valid':time.strftime('%Y-%m-%d'),
'user_valid': uid,
})
return True
def expense_canceled(self, cr, uid, ids, *args): def expense_canceled(self, cr, uid, ids, context=None):
self.message_post(cr, uid, ids, body=_("Request <b>refused</b>"), return self.write(cr, uid, ids, {'state': 'cancelled'}, context=context)
subtype="hr_expense.mt_expense_refused")
self.write(cr, uid, ids, {'state':'cancelled'})
return True
def action_receipt_create(self, cr, uid, ids, context=None): def action_receipt_create(self, cr, uid, ids, context=None):
property_obj = self.pool.get('ir.property') property_obj = self.pool.get('ir.property')

View File

@ -18,23 +18,21 @@
<field name="name">Expenses</field> <field name="name">Expenses</field>
</record> </record>
<!--subtype for expense -->
<record id="mt_expense_approve" model="mail.message.subtype">
<field name="name">To Approve</field>
<field name="res_model">hr.expense.expense</field>
<field name="default" eval="False"/>
</record>
<!-- Expense-related subtypes for messaging / Chatter --> <!-- Expense-related subtypes for messaging / Chatter -->
<record id="mt_expense_approved" model="mail.message.subtype"> <record id="mt_expense_approved" model="mail.message.subtype">
<field name="name">Approved</field> <field name="name">Approved</field>
<field name="res_model">hr.expense.expense</field> <field name="res_model">hr.expense.expense</field>
<field name="default" eval="False"/> <field name="description">Expense &lt;b&gt;approved&lt;/b&gt;</field>
</record> </record>
<record id="mt_expense_refused" model="mail.message.subtype"> <record id="mt_expense_refused" model="mail.message.subtype">
<field name="name">Refused</field> <field name="name">Refused</field>
<field name="res_model">hr.expense.expense</field> <field name="res_model">hr.expense.expense</field>
<field name="default" eval="False"/> <field name="description">Expense &lt;b&gt;refused&lt;/b&gt;</field>
</record>
<record id="mt_expense_confirmed" model="mail.message.subtype">
<field name="name">To Approve</field>
<field name="res_model">hr.expense.expense</field>
<field name="description">Expense &lt;b&gt;confirmed&lt;/b&gt;, waiting confirmation</field>
</record> </record>
</data> </data>

View File

@ -375,7 +375,7 @@ class hr_holidays(osv.osv):
for record in self.browse(cr, uid, ids, context=context): for record in self.browse(cr, uid, ids, context=context):
if record.employee_id and record.employee_id.parent_id and record.employee_id.parent_id.user_id: if record.employee_id and record.employee_id.parent_id and record.employee_id.parent_id.user_id:
self.message_subscribe_users(cr, uid, [record.id], user_ids=[record.employee_id.parent_id.user_id.id], context=context) self.message_subscribe_users(cr, uid, [record.id], user_ids=[record.employee_id.parent_id.user_id.id], context=context)
return self.write(cr, uid, ids, {'state':'confirm'}) return self.write(cr, uid, ids, {'state': 'confirm'})
def holidays_refuse(self, cr, uid, ids, context=None): def holidays_refuse(self, cr, uid, ids, context=None):
obj_emp = self.pool.get('hr.employee') obj_emp = self.pool.get('hr.employee')