python - 在 OpenERP 7 中按下按钮时如何获取工作流程状态中的日期?

标签 python date workflow odoo openerp-7

您好,我有一个状态为待定、已批准和已完成的工作流程,我正在尝试在“WO_APPROVE_DATE”字段中自动获取日期,当按下已批准按钮时,我该如何实现?请帮忙..

按钮

<header> 
<button name="pending_draft" string="Pending" states="pending" class="oe_highlight"   type="workflow"/>
<button name="approved_draft" string="Approved" states="approved" class="oe_highlight" type="workflow"/>
<button name="complete" string="Active" states="active" class="oe_highlight" type="workflow"/>
</header>

class work_order(osv.osv):


sel_states = [
    ('pending', 'Pending'),
    ('approved', 'Approved'),
    ('active', 'Complete')
]

_name = "work_order.work_order"
_description = "Work Order Details"

_rec_name = "WO_CODE"
_columns = {
    'WO_CODE' : fields.char("Work Order Code", size=64, required=True, readonly=True ),
    'WO_ASSIGNED_TO' : fields.many2one("hr.employee", "Assigned To", ondelete="no action", domain=[('job_id', '=', ('Crew Supervisor'))]),
    'WO_NOTES' : fields.text("Description"),
    'WO_APPROVE_DATE' : fields.datetime("EngineerApproval Date"),
    'state' : fields.selection(sel_states, "Workflow"),
}

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

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

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

工作流.xml

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

    <record id="workorder_workflow" model="workflow">
        <field name="name">work_order.workflow</field>
        <field name="osv">work_order.work_order</field>
        <field name="on_create">True</field>
    </record>

    <!--workflow activity-->
    <record id="act_pending" model="workflow.activity">
        <field name="wkf_id" ref="workorder_workflow"/>
        <field name="flow_start">True</field>
        <field name="name">pending</field>
        <field name="kind">function</field>
        <field name="action">workorder_pending()</field>
    </record>

    <record id="act_approved" model="workflow.activity">
        <field name="wkf_id" ref="workorder_workflow"/>
        <field name="name">approved</field>
        <field name="kind">function</field>
        <field name="action">workorder_approved()</field>
    </record>

<record id="act_complete" model="workflow.activity">
        <field name="wkf_id" ref="workorder_workflow"/>
        <field name="flow_stop">True</field>
        <field name="name">complete</field>
        <field name="kind">function</field>
        <field name="action">workorder_complete()</field>
    </record>

<record id="trans_pending_approved" model="workflow.transition">
        <field name="act_from" ref="act_pending"/>
        <field name="act_to" ref="act_approved"/>
        <field name="signal">pending_draft</field>
    </record>

<record id="trans_approved_complete" model="workflow.transition">
        <field name="act_from" ref="act_approved"/>
        <field name="act_to" ref="act_complete"/>
        <field name="signal">complete</field>
    </record>

最佳答案

首先添加此行用于导入包

from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT, DATETIME_FORMATS_MAP, float_compare
import time
from datetime import datetime

然后像这样更改函数

def workorder_approved(self, cr, uid, ids):
        self.write(cr, uid, ids, {'state' : 'approved','WO_APPROVE_DATE':time.strftime(DEFAULT_SERVER_DATE_FORMAT)})
        return True

关于python - 在 OpenERP 7 中按下按钮时如何获取工作流程状态中的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23861887/

相关文章:

java - 状态机工作流框架

python - 如何更改 PyDev 上的构建路径

python - 当我尝试使用opencv和camgear从youtube获得实时流时,出现以下错误

date - SAP HANA 十进制转为时间戳或第二日期 SLT

javascript - Dygraph Unix 时间戳

kubernetes - 通过 REST 调用启动 Argo 工作流

python - 如何使用 Wand 更改图片的对比度?

python - 如何从文本中提取国家?

php - 将日期选择器日期转换为 mysql 日期

workflow - 如何在“分配到组合框”上获取 Kaleo 工作流程中的所有用户列表?