OpenERP 7 - 在"记录注释"中创建自动日志消息。字段作为历史日志记录

时间:2016-06-21 04:53:03

标签: openerp openerp-7 openerp-8

我现在正在为OpenERP 7中的实验室测试目的创建一个自定义模块。用户需要在此处输入他们的实验室测试组件和结果。

现在我有了一个名为" Reason For Changes"的字段。我想知道如何将此内容的输入记录为"记录注释"通过mail.thread显示在底部的消息?

步骤将是:

  1. 变更原因(ROC)为必填字段

  2. 我的其他字段中的任何更改都会调用我的onchange方法来清除ROC字段的内容。

  3. 如果用户更改了某些内容但没有在ROC字段中输入文本,则单击“保存”,出现错误消息"请输入更改原因"会弹出来的。这将禁止用户保存此内容。

  4. 如果用户更改了某些内容并将文本输入到ROC字段,然后保存,则ROC字段内容将在底部创建为消息(例如"记录注释")参考和历史日志记录。

  5. 我的问题是如何实现第3步和第4步?非常感谢您的帮助

2 个答案:

答案 0 :(得分:0)

有两种可能性,但使用过的模型必须继承email.thread!但我想这是继承,因为你写了一些关于聊天消息的内容。:

  1. 使用Odoo(以前的OpenERP)自动跟踪系统。您只需在字段定义中添加参数track_visibility,例如(new then old API)
  2. roc = fields.Char(string="Reason For Changes", track_visibility="on_change")
    
    _columns = {
        roc: fields.char(string="Reason For Changes", track_visibility="on_change"),
    }
    
    1. 自己发信息。 email.thread带来了一些简单而有用的方法。其中之一是message_post()。覆盖模型的write(),如下所示(新/旧API):
    2. @api.multi
      def write(self, vals):
          res = super(YourModel, self).write(vals)
          if 'roc' in vals:
              for your_model_record in self:
                  your_model_record.message_post(vals.get('roc'))
          return res
      
      
      def write(self, cr, uid, ids, vals, context=None):
          res = super(YourModel, self).write(vals)
          if 'roc' in vals:
              for your_model_record_id in ids:
              self.message_post(cr, uid, your_model_record_id, vals.get('roc')), context=context)
          return res
      

答案 1 :(得分:0)

我希望我的问题也可以帮助其他人。关注将是现在对我有用的完整代码示例:

  def write(self, cr, uid, ids, vals, context=None):
      res = super(test_lab, self).write(cr, uid, ids, vals, context=context)        
      if 'ROC' in vals: 
          for lab in self.browse(cr, uid, ids, context=context):               
              self.message_post(cr,uid,[lab.id],vals.get('ROC'),context=context)                
      return res   

希望这有帮助。谢谢!