2

モデルへのワークフローを作成するために openerp doc を調べます。最初の 3 段階で正しく機能しました。ex :しかし、レベル'new','assigned','negotiation' では機能しません。'won','lost'

ここにモデルクラスの関連コードがあります。さらに、状態列をここに追加しました。

class bpl_work_update(osv.osv):
    def mymod_new(self, cr, uid, ids):#trigger when save work update
        self.write(cr, uid, ids, {'state': 'new'})
        return True

    def mymod_assigned(self, cr, uid, ids):
        self.write(cr, uid, ids, {'state': 'assigned'})
        return True

    def mymod_negotiation(self, cr, uid, ids):
        self.write(cr, uid, ids, {'state': 'negotiation'})
        return True

    def mymod_won(self, cr, uid, ids):
        self.write(cr, uid, ids, {'state': 'won'})
        return True

    def mymod_lost(self, cr, uid, ids):
        self.write(cr, uid, ids, {'state': 'lost'})
        return True


    _name = "bpl.work.update"
    _description = "BPL Work Update"
    _columns = {
        'bpl_company_id':fields.many2one('res.company', 'Company', help='Company'),
        'bpl_estate_id':fields.many2one(
            'bpl.estate.n.registration',
            'Estate',
            help='Estate',
            domain="[('company_id','=',bpl_company_id)]",
            required=True),
        'bpl_division_id':fields.many2one(
            'bpl.division.n.registration',
            'Division',
            help='Division',
            domain="[('estate_id','=',bpl_estate_id)]",
            required=True),
        'ref_no': fields.char('Reference No', size=10,),
        'offered_date': fields.date('Offered Date'),
        'work_offers_id':fields.many2one(
            'bpl.work.offer',
            'Work Offer',
            domain="['&',('bpl_company_id','=',bpl_company_id),
                    ('bpl_estate_id','=',bpl_estate_id),'&',
                    ('bpl_division_id','=',bpl_division_id),'|',
                    ('gang_no','=',gang_no),('date_of_offer','=',offered_date)]"),
        'gang_no': fields.char('Gang No', size=10, required=True),
        'selected_tea_workers_update_line_ids':fields.one2many(
            'bpl.selected.tea.workers.update.line',
            'work_id',
            'Tea Work Offers',
            ondelete="cascade"),
        'selected_rubber_workers_update_line_ids':fields.one2many(
            'bpl.selected.rubber.workers.update.line',
            'work_id',
            'Rubber Offers',
            ondelete="cascade"),
        'selected_sundry_workers_update_line_ids':fields.one2many(
            'bpl.selected.sundry.workers.update.line',
            'work_id',
            'Sundry Offers',
            ondelete="cascade"),
        'selected_other_workers_update_line_ids':fields.one2many(
            'bpl.selected.other.workers.update.line',
            'work_id',
            'Sundry Offers',
            ondelete="cascade"),
        'casual_eligible': fields.boolean('Casual Eligible', help="Casual Eligible"),
        'state': fields.selection([
            ('new', 'New'),
            ('assigned', 'Assigned'),
            ('negotiation', 'Negotiation'),
            ('won', 'Approved'),
            ('lost', 'Refused')],
            'Workflow',
            readonly=True),
     }
    _defaults = {
        'bpl_company_id':_default_company,
        'offered_date':fields.date.context_today,
        }

bpl_work_update()

これが私のビューxmlの関連部分であり、ここに問題があるようです。最初の3つのボタンが段階で正しく表示されるためです。しかし、勝った/負けたボタンはそこに表示されません。

<header>
<button name="mymod_assigned" string="Assigned" states="new"
    class="oe_highlight" type="workflow" />
<button name="mymod_negotiation" string="In Negotiation"
    states="assigned" class="oe_highlight" type="workflow" />
<button name="mymod_won" string="Approved" states="negotiating"
    class="oe_highlight" type="workflow" />
<button name="mymod_lost" string="Refused" states="negotiating"
    class="oe_highlight" type="workflow" />

<field name="state" widget="statusbar"
    statusbar_visible="new,assigned,negotiation,won,lost"
    statusbar_colors='{
                "new":"blue",
                "assigned":"blue",
                "negotiation":"blue",
                "won":"red",
                "lost":"red"
                }'
            />
</header>

これが私のwork_flow xml.iです。openerpのドキュメントからここにコピーして貼り付け、変更したもののみ<field name="osv">bpl.work.update</field>

<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>

<!-- workflow -->

<record model="workflow" id="wkf_mymod">
    <field name="name">mymod.wkf</field>
    <field name="osv">bpl.work.update</field>
    <field name="on_create" eval='True' />
</record>

<!-- workflow activity -->

<record model="workflow.activity" id="act_new">
    <field name="wkf_id" ref="wkf_mymod" />
    <field name="flow_start" eval='True' />
    <field name="name">new</field>
    <field name="kind">function</field>
    <field name="action">mymod_new()</field>
</record>

<record model="workflow.activity" id="act_assigned">
    <field name="wkf_id" ref="wkf_mymod" />
    <field name="name">assigned</field>
    <field name="kind">function</field>
    <field name="action">mymod_assigned()</field>
</record>

<record model="workflow.activity" id="act_negotiation">
    <field name="wkf_id" ref="wkf_mymod" />
    <field name="name">negotiation</field>
    <field name="kind">function</field>
    <field name="action">mymod_negotiation()</field>
</record>

<record model="workflow.activity" id="act_won">
    <field name="wkf_id" ref="wkf_mymod" />
    <field name="name">won</field>
    <field name="kind">function</field>
    <field name="action">mymod_won()</field>
    <field name="flow_stop" eval='True' />
</record>

<record model="workflow.activity" id="act_lost">
    <field name="wkf_id" ref="wkf_mymod" />
    <field name="name">lost</field>
    <field name="kind">function</field>
    <field name="action">mymod_lost()</field>
    <field name="flow_stop" eval='True' />
</record>

<!-- workflow transition -->

<record model="workflow.transition" id="t1">
    <field name="act_from" ref="act_new" />
    <field name="act_to" ref="act_assigned" />
    <field name="signal">mymod_assigned</field>
    <field name="group_id" ref="group_checkroll_user" />
</record>

<record model="workflow.transition" id="t2">
    <field name="act_from" ref="act_assigned" />
    <field name="act_to" ref="act_negotiation" />
    <field name="signal">mymod_negotiation</field>
    <field name="group_id" ref="group_checkroll_manager" />
</record>

<record model="workflow.transition" id="t3">
    <field name="act_from" ref="act_negotiation" />
    <field name="act_to" ref="act_won" />
    <field name="signal">mymod_won</field>
    <field name="group_id" ref="group_checkroll_manager" />
</record>
'won','lost'
<record model="workflow.transition" id="t4">
    <field name="act_from" ref="act_negotiation" />
    <field name="act_to" ref="act_lost" />
    <field name="signal">mymod_lost</field>
    <field name="group_id" ref="group_checkroll_manager" />
</record>


</data>
</openerp>

この問題を解決するのを手伝ってください。
ありがとう

簡単にするために、ここに添付写真しました。3段階しか完了していないことを確認してください。キャンセルまたは承認できません(勝った&負けた)

4

1 に答える 1