[IMP] hr_holidays: workflow update

starts in confirm
from confirm, possible to get back to draft with reset signal, calling old set_to_draft, now
renamed holidays_reset, in the same workflow
from draft, possible to go to confirm

bzr revid: tde@openerp.com-20130805113023-1cs1s18dd5m4mi20
This commit is contained in:
Thibault Delavallée 2013-08-05 13:30:23 +02:00
parent a87af992bb
commit 7f1e1c7246
5 changed files with 27 additions and 17 deletions

View File

@ -165,7 +165,7 @@ class hr_holidays(osv.osv):
} }
_defaults = { _defaults = {
'employee_id': _employee_get, 'employee_id': _employee_get,
'state': 'draft', 'state': 'confirm',
'type': 'remove', 'type': 'remove',
'user_id': lambda obj, cr, uid, context: uid, 'user_id': lambda obj, cr, uid, context: uid,
'holiday_type': 'employee' 'holiday_type': 'employee'
@ -306,18 +306,16 @@ class hr_holidays(osv.osv):
raise osv.except_osv(_('Warning!'),_('You cannot modify a leave request that has been approved. Contact a human resource manager.')) raise osv.except_osv(_('Warning!'),_('You cannot modify a leave request that has been approved. Contact a human resource manager.'))
return super(hr_holidays, self).write(cr, uid, ids, vals, context=context) return super(hr_holidays, self).write(cr, uid, ids, vals, context=context)
def set_to_draft(self, cr, uid, ids, context=None): def holidays_reset(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, { self.write(cr, uid, ids, {
'state': 'draft', 'state': 'draft',
'manager_id': False, 'manager_id': False,
'manager_id2': False, 'manager_id2': False,
}) })
self.delete_workflow(cr, uid, ids)
self.create_workflow(cr, uid, ids)
to_unlink = [] to_unlink = []
for record in self.browse(cr, uid, ids, context=context): for record in self.browse(cr, uid, ids, context=context):
for record2 in record.linked_request_ids: for record2 in record.linked_request_ids:
self.set_to_draft(cr, uid, [record2.id], context=context) self.holidays_reset(cr, uid, [record2.id], context=context)
to_unlink.append(record2.id) to_unlink.append(record2.id)
if to_unlink: if to_unlink:
self.unlink(cr, uid, to_unlink, context=context) self.unlink(cr, uid, to_unlink, context=context)

View File

@ -49,7 +49,7 @@
<record id="mt_holidays_confirmed" model="mail.message.subtype"> <record id="mt_holidays_confirmed" model="mail.message.subtype">
<field name="name">To Approve</field> <field name="name">To Approve</field>
<field name="res_model">hr.holidays</field> <field name="res_model">hr.holidays</field>
<field name="description">Request created and waiting confirmation</field> <field name="description">Request confirmed and waiting approval</field>
</record> </record>
<record id="mt_holidays_approved" model="mail.message.subtype"> <record id="mt_holidays_approved" model="mail.message.subtype">
<field name="name">Approved</field> <field name="name">Approved</field>

View File

@ -54,10 +54,11 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Leave Request" version="7.0"> <form string="Leave Request" version="7.0">
<header> <header>
<button string="Confirm" name="confirm" states="draft" type="workflow" groups="base.group_hr_user" class="oe_highlight"/>
<button string="Approve" name="validate" states="confirm" type="workflow" groups="base.group_hr_user" class="oe_highlight"/> <button string="Approve" name="validate" states="confirm" type="workflow" groups="base.group_hr_user" class="oe_highlight"/>
<button string="Validate" name="second_validate" states="validate1" type="workflow" groups="base.group_hr_user" class="oe_highlight"/> <button string="Validate" name="second_validate" states="validate1" type="workflow" groups="base.group_hr_user" class="oe_highlight"/>
<button string="Refuse" name="refuse" states="confirm,validate1,validate" type="workflow" groups="base.group_hr_user"/> <button string="Refuse" name="refuse" states="confirm,validate1,validate" type="workflow" groups="base.group_hr_user"/>
<button string="Reset to New" name="set_to_draft" states="refuse" type="object" groups="base.group_hr_user"/> <button string="Reset to Draft" name="reset" states="confirm" type="workflow" groups="base.group_hr_manager"/>
<field name="state" widget="statusbar" statusbar_visible="draft,confirm,validate" statusbar_colors='{"confirm":"blue","validate1":"blue","refuse":"red"}'/> <field name="state" widget="statusbar" statusbar_visible="draft,confirm,validate" statusbar_colors='{"confirm":"blue","validate1":"blue","refuse":"red"}'/>
</header> </header>
<sheet string="Leave Request"> <sheet string="Leave Request">
@ -102,7 +103,7 @@
<button string="Approve" name="validate" states="confirm" type="workflow" groups="base.group_hr_user" class="oe_highlight"/> <button string="Approve" name="validate" states="confirm" type="workflow" groups="base.group_hr_user" class="oe_highlight"/>
<button string="Validate" name="second_validate" states="validate1" type="workflow" groups="base.group_hr_user" class="oe_highlight"/> <button string="Validate" name="second_validate" states="validate1" type="workflow" groups="base.group_hr_user" class="oe_highlight"/>
<button string="Refuse" name="refuse" states="confirm,validate,validate1" type="workflow" groups="base.group_hr_user"/> <button string="Refuse" name="refuse" states="confirm,validate,validate1" type="workflow" groups="base.group_hr_user"/>
<button string="Reset to New" name="set_to_draft" states="cancel,refuse" type="object" groups="base.group_hr_user"/> <button string="Reset to Draft" name="reset" states="confirm" type="workflow" groups="base.group_hr_manager"/>
<field name="state" widget="statusbar" statusbar_visible="draft,confirm,validate" statusbar_colors='{"confirm":"blue","validate1":"blue","refuse":"red"}'/> <field name="state" widget="statusbar" statusbar_visible="draft,confirm,validate" statusbar_colors='{"confirm":"blue","validate1":"blue","refuse":"red"}'/>
</header> </header>
<sheet> <sheet>
@ -163,7 +164,7 @@
<button string="Submit to Manager" name="confirm" states="draft" type="workflow" icon="gtk-yes"/> <button string="Submit to Manager" name="confirm" states="draft" type="workflow" icon="gtk-yes"/>
<button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply"/> <button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply"/>
<button string="Refuse" name="refuse" states="confirm,validate,draft" type="workflow" icon="gtk-no"/> <button string="Refuse" name="refuse" states="confirm,validate,draft" type="workflow" icon="gtk-no"/>
<button string="Reset to New" name="set_to_draft" states="cancel" type="object" icon="gtk-convert"/> <button string="Reset to Draft" name="reset" states="confirm" type="workflow" groups="base.group_hr_manager"/>
<field name="state"/> <field name="state"/>
</header> </header>
<group col="4"> <group col="4">

View File

@ -2,15 +2,14 @@
<openerp> <openerp>
<data> <data>
<!-- Workflow definition <!-- Workflow definition
1. draft->submitted (no signal) 1. draft->submitted (confirm signal)
2. submitted->accepted (validate signal) if not double_validation 2. submitted->accepted (validate signal) if not double_validation
2. submitted -> first_accepted (validate signal) if double_validation 2. submitted->first_accepted (validate signal) if double_validation
2. submitted->refused (refuse signal) 2. submitted->refused (refuse signal)
3. accepted->refused (refuse signal) 3. accepted->refused (refuse signal)
4. first_accepted -> accepted (second_validate signal) 4. first_accepted -> accepted (second_validate signal)
4. first_accepted -> refused (refuse signal) 4. first_accepted -> refused (refuse signal)
--> -->
<record model="workflow" id="wkf_holidays"> <record model="workflow" id="wkf_holidays">
@ -21,13 +20,15 @@
<record model="workflow.activity" id="act_draft"> <!-- draft --> <record model="workflow.activity" id="act_draft"> <!-- draft -->
<field name="wkf_id" ref="wkf_holidays" /> <field name="wkf_id" ref="wkf_holidays" />
<field name="flow_start">True</field>
<field name="name">draft</field> <field name="name">draft</field>
<field name="kind">function</field>
<field name="action">holidays_reset()</field>
</record> </record>
<record model="workflow.activity" id="act_confirm"> <!-- submitted --> <record model="workflow.activity" id="act_confirm"> <!-- submitted -->
<field name="wkf_id" ref="wkf_holidays" /> <field name="wkf_id" ref="wkf_holidays" />
<field name="name">confirm</field> <field name="name">confirm</field>
<field name="flow_start">True</field>
<field name="kind">function</field> <field name="kind">function</field>
<field name="action">holidays_confirm()</field> <field name="action">holidays_confirm()</field>
<field name="split_mode">OR</field> <field name="split_mode">OR</field>
@ -61,9 +62,20 @@
workflow transition workflow transition
--> -->
<record model="workflow.transition" id="holiday_draft2confirm"> <!-- 1. draft->submitted (no signal) --> <record model="workflow.transition" id="holiday_draft2confirm"> <!-- 1. draft->submitted (confirm signal) -->
<field name="act_from" ref="act_draft" /> <field name="act_from" ref="act_draft" />
<field name="act_to" ref="act_confirm" /> <field name="act_to" ref="act_confirm" />
<field name="signal">confirm</field>
<field name="condition">True</field>
<field name="group_id" ref="base.group_hr_user"/>
</record>
<record model="workflow.transition" id="holiday_confirm2draft"> <!-- 1. submitted->draft (reset signal) -->
<field name="act_from" ref="act_confirm" />
<field name="act_to" ref="act_draft" />
<field name="signal">reset</field>
<field name="condition">True</field>
<field name="group_id" ref="base.group_hr_user"/>
</record> </record>
<record model="workflow.transition" id="holiday_confirm2validate"> <!-- 2. submitted->accepted (validate signal) if not double_validation--> <record model="workflow.transition" id="holiday_confirm2validate"> <!-- 2. submitted->accepted (validate signal) if not double_validation-->
@ -82,7 +94,6 @@
<field name="group_id" ref="base.group_hr_user"/> <field name="group_id" ref="base.group_hr_user"/>
</record> </record>
<record model="workflow.transition" id="holiday_confirm2refuse"> <!-- 2. submitted->refused (refuse signal) --> <record model="workflow.transition" id="holiday_confirm2refuse"> <!-- 2. submitted->refused (refuse signal) -->
<field name="act_from" ref="act_confirm" /> <field name="act_from" ref="act_confirm" />
<field name="act_to" ref="act_refuse" /> <field name="act_to" ref="act_refuse" />

View File

@ -18,7 +18,7 @@
I again set to draft and then confirm. I again set to draft and then confirm.
- -
!python {model: hr.holidays}: | !python {model: hr.holidays}: |
self.set_to_draft(cr, uid, [ref('hr_holidays_employee1_cl')]) self.holidays_reset(cr, uid, [ref('hr_holidays_employee1_cl')])
self.signal_confirm(cr, uid, [ref('hr_holidays_employee1_cl')]) self.signal_confirm(cr, uid, [ref('hr_holidays_employee1_cl')])
- -
I validate the holiday request by clicking on "To Approve" button. I validate the holiday request by clicking on "To Approve" button.