[FIX+IMP] document_change: document workflow

bzr revid: hmo@tinyerp.com-20100122153313-sn80l2jqbsuj5udj
This commit is contained in:
Harry (Open ERP)
2010-01-22 21:03:13 +05:30
parent c87d58cabb
commit 1cc0a4f66a
3 changed files with 74 additions and 73 deletions
+20 -19
View File
@@ -111,29 +111,30 @@ class document_file(osv.osv):
_columns = {
'type_id':fields.many2one('document.change.type','Document Type'),
'state': fields.selection([('change_request', 'Change Request'),('change_proposed', 'Change Proposed'), ('in_production', 'In Production'), ('to_update', 'To Update'), ('validate', 'To Validate'), ('cancel', 'Cancel')], 'Status'),
'target_document_id': fields.many2one('document.directory', 'Target Document'),
'target':fields.binary('Target'),
'state': fields.selection([('in_production', 'In Production'), ('requested', 'Change Request'),('proposed', 'Change Proposed'), ('validated', 'To Validate'), ('cancel', 'Cancel')], 'State'),
'target_directory_id': fields.many2one('document.directory', 'Target Document'),
'target_document_id':fields.binary('Target'),
}
_defaults = {
'state': lambda *a: 'change_request',
'state': lambda *a: 'in_production',
}
def state_set_request(self, cr, uid, ids, context={}):
self.write(cr, uid, ids, {'state':'change_request'},context=context)
def do_request(self, cr, uid, ids, context={}):
self.write(cr, uid, ids, {'state':'requested'},context=context)
return True
def state_set_proposed(self, cr, uid, ids, context={}):
self.write(cr, uid, ids, {'state':'change_proposed'},context=context)
return True
def state_set_in_production(self, cr, uid, ids, context={}):
self.write(cr, uid, ids, {'state':'in_production'})
return True
def state_set_update(self, cr, uid, ids, context={}):
self.write(cr, uid, ids, {'state':'to_update'})
return True
def state_set_validated(self, cr, uid, ids, context={}):
self.write(cr, uid, ids, {'state':'validate'},context=context)
return True
def state_set_cancel(self, cr, uid, ids, context={}):
def do_propose(self, cr, uid, ids, context={}):
self.write(cr, uid, ids, {'state':'proposed'},context=context)
return True
def do_validate(self, cr, uid, ids, context={}):
self.write(cr, uid, ids, {'state':'validated'},context=context)
return True
def do_production(self, cr, uid, ids, context={}):
self.write(cr, uid, ids, {'state':'in_production'},context=context)
return True
def do_cancel(self, cr, uid, ids, context={}):
return self.write(cr, uid, ids, {'state':'cancel'},context=context)
document_file()
@@ -232,16 +232,15 @@
</group>
<separator string="Change Control" colspan="4"/>
<group col="7" colspan="4">
<field name="state"/>
<button name="button_change_proposed" states="cancel,to_update" string="Request Change" icon="gtk-apply"/>
<button name="button_change_validated" states="change_request,validate,cancel" string="Propose Change" icon="gtk-apply"/>
<button name="button_update" states="change_proposed,in_production" string="To Update" icon="gtk-ok" />
<button name="button_change_request" states="to_update" string="In Production" icon="gtk-media-play"/>
<button name="button_cancel" states="change_request,change_proposed" string="Cancel" icon="gtk-cancel"/>
<field name="state" readonly="1"/>
<button name="button_propose" states="requested" string="Propose Change" icon="gtk-apply"/>
<button name="button_validate" states="proposed" string="To Validate" icon="gtk-apply"/>
<button name="button_request" states="cancel,in_production" string="Request Change" icon="gtk-media-play"/>
<button name="button_cancel" states="requested,proposed" string="Cancel" icon="gtk-cancel"/>
</group>
<newline/>
<field name="target_document_id"/>
<field name="target"/>
<field name="target_directory_id"/>
<field name="target_document_id"/>
<newline/>
<separator string="Change Note" colspan="4"/>
<field colspan="4" name="description" nolabel="1"/>
@@ -8,72 +8,73 @@
</record>
<!-- States -->
<record id="act_request" model="workflow.activity">
<record id="act_document_production" model="workflow.activity">
<field name="wkf_id" ref="wkf_attachment"/>
<field name="flow_start">True</field>
<field name="name">state_set_request</field>
</record>
<record id="act_propose" model="workflow.activity">
<field name="wkf_id" ref="wkf_attachment"/>
<field name="name">change_proposed</field>
<field name="action">state_set_proposed()</field>
<field name="kind">function</field>
</record>
<record id="act_update" model="workflow.activity">
<field name="wkf_id" ref="wkf_attachment"/>
<field name="name">to_update</field>
<field name="action">state_set_update()</field>
<field name="kind">function</field>
</record>
<record id="act_production" model="workflow.activity">
<field name="wkf_id" ref="wkf_attachment"/>
<field name="name">in_production</field>
<field name="action">state_set_in_production()</field>
<field name="action">do_production()</field>
</record>
<record id="act_document_request" model="workflow.activity">
<field name="wkf_id" ref="wkf_attachment"/>
<field name="name">requested</field>
<field name="action">do_request()</field>
<field name="kind">function</field>
</record>
<record id="act_cancel" model="workflow.activity">
<record id="act_document_propose" model="workflow.activity">
<field name="wkf_id" ref="wkf_attachment"/>
<field name="name">cancel</field>
<field name="action">state_set_cancel()</field>
<field name="name">proposed</field>
<field name="action">do_propose()</field>
<field name="kind">function</field>
</record>
<record id="act_document_validate" model="workflow.activity">
<field name="wkf_id" ref="wkf_attachment"/>
<field name="name">validated</field>
<field name="action">do_validate()</field>
<field name="kind">function</field>
</record>
<record id="act_document_cancel" model="workflow.activity">
<field name="wkf_id" ref="wkf_attachment"/>
<field name="name">cancel</field>
<field name="action">do_cancel()</field>
<field name="kind">function</field>
</record>
<!-- Transitions -->
<record id="production_to_request" model="workflow.transition">
<field name="act_from" ref="act_document_production"/>
<field name="act_to" ref="act_document_request"/>
<field name="signal">button_request</field>
</record>
<record id="request_to_propose" model="workflow.transition">
<field name="act_from" ref="act_request"/>
<field name="act_to" ref="act_propose"/>
<field name="signal">button_change_proposed</field>
<field name="act_from" ref="act_document_request"/>
<field name="act_to" ref="act_document_propose"/>
<field name="signal">button_propose</field>
<field name="condition">(target_document_id != False)</field>
</record>
<record id="request_to_cancel" model="workflow.transition">
<field name="act_from" ref="act_request"/>
<field name="act_to" ref="act_cancel"/>
<field name="act_from" ref="act_document_request"/>
<field name="act_to" ref="act_document_cancel"/>
<field name="signal">button_cancel</field>
</record>
<record id="propose_to_update" model="workflow.transition">
<field name="act_from" ref="act_propose"/>
<field name="act_to" ref="act_update"/>
<field name="signal">button_change_validated</field>
<record id="propose_to_validate" model="workflow.transition">
<field name="act_from" ref="act_document_propose"/>
<field name="act_to" ref="act_document_validate"/>
<field name="signal">button_validate</field>
</record>
<record id="propose_to_cancel" model="workflow.transition">
<field name="act_from" ref="act_propose"/>
<field name="act_to" ref="act_cancel"/>
<field name="act_from" ref="act_document_propose"/>
<field name="act_to" ref="act_document_cancel"/>
<field name="signal">button_cancel</field>
</record>
<record id="cancel_to_request" model="workflow.transition">
<field name="act_from" ref="act_cancel"/>
<field name="act_to" ref="act_request"/>
<field name="signal">button_change_request</field>
</record>
<record id="update_to_production" model="workflow.transition">
<field name="act_from" ref="act_update"/>
<field name="act_to" ref="act_production"/>
<field name="signal">button_update</field>
</record>
<record id="production_to_request" model="workflow.transition">
<field name="act_from" ref="act_production"/>
<field name="act_to" ref="act_request"/>
<field name="signal">button_change_request</field>
<field name="act_from" ref="act_document_cancel"/>
<field name="act_to" ref="act_document_request"/>
<field name="signal">button_request</field>
</record>
<record id="validate_to_production" model="workflow.transition">
<field name="act_from" ref="act_document_validate"/>
<field name="act_to" ref="act_document_production"/>
<field name="condition">True</field>
</record>
</data>
</openerp>
</openerp>