2016-11-16 2 views
0

Я стартер в оду. Может ли кто-нибудь помочь мне найти решение проблемы, упомянутой ниже?Как уведомить администратора о любом виде уведомления о том, что статус задачи изменился, достигнут крайний срок и заканчивается задача в оном автоматически

Рассмотрите, что я являюсь администратором ERP Odoo, мне нужно автоматически замечать изменение статуса задачи, достижение мертвой линии, завершение задачи в виде сообщения или уведомления.

Ожидаемая цель: администратор создаст проекты и некоторые задачи внутри проектов. Эти задачи будут назначены работникам. Сотрудники будут добавлять свою работу по конкретным задачам, назначенным конкретному сотруднику. Следовательно, мы хотим, чтобы администратор знал о статусе задач, если эта задача автоматически достигает уведомления по уведомлению. Также администратор должен заметить о смене этапа задач.

Может ли кто-нибудь помочь мне достичь этой цели. Заранее спасибо.

+0

Пожалуйста, отредактируйте ваш вопрос и добавьте: 1. Ваш код/​​ваши попытки 2. Ваш ввод, текущий вывод и ожидаемый результат –

+0

Обновлен мой ожидаемый результат. Ожидание ответа с вашего конца .. спасибо –

+0

С заданием вы имеете в виду запись в * project.task * model? Правильно? – Nope

ответ

0

Попробуйте следующее. Я ожидаю базовых знаний о том, как написать модуль для odoo.

Первый шаг Добавить шаблон электронной почты, который будет отправлен администратору. Вы можете сделать это, добавив файл /your_module_name/data/data.xml в ваш модуль. И заполните его следующим кодом.

<?xml version="1.0" encoding="utf-8"?> 
    <openerp> 
     <data> 
     <record id="mail_to_admin_when_task_changed" model="email.template"> 
      <field name="name">Notification for admin</field> 
      <field name="email_from">${object.user_id.login}</field> 
      <field name="subject">Task state changed</field> 
      <field name="email_to">[email protected]</field> 
      <field name="model_id" ref="project.model_project_task"/> 
      <field name="lang">${object.user_id.lang}</field> 
      <field name="body_html"><![CDATA[ 
       Hello admin, the new state for <b>${object.name}</b> is <b>${object.state}</b>. 
      ]]></field> 
      </record> 
     </data> 
    </openerp> 

Regist ваш data.xml файл на свой __openerp__.py, добавив путь к данн-список.

# ...other openerp definition 
'data': [ 
     'data/data.xml' 
     #...paths to views 
    ], 
# ...other openerp definition 

Второй шаг Перезапись метод write() в project.task модели. Вы можете сделать это, наследуя модель project.task. Создайте project_task.py в ваших моделях папке. Зарегистрируйте его до __init__.py. Затем напишите следующий код на project_task.py.

# -*- coding: utf-8 -*- 
from openerp import models, fields, api, osv 

class project_task(models.Model): 
    _inherit = "project.task" 

    def write(self,cr,uid,ids,vals,context=None): 
     mtp = self.pool.get('email.template') 
     mail_to_admin_template_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'your_module_name', 'mail_to_admin_when_task_changed')[1] 

     if "state" in vals: 
      for id in ids: 
       mtp.send_mail(cr,uid,mail_to_admin_template_id,id,force_send=True,context=context) 


     return super(project_task,self).write(cr,uid,ids,vals,context=context) 

Сообщите мне, если что-то изменить.

+0

Это одна возможность, еще одна - использовать внутреннюю почтовую систему Odoo с некоторыми пользовательскими модификациями. – CZoellner

+0

@CZoellner Возможно, ваше решение легче понять. Не могли бы вы объяснить это в ответ. Я, вероятно, проголосую за ваш ответ. – Nope

+0

На самом деле я не думаю, что другое решение легче понять. И для этого нет официального документа (для текущих документов). Он просто использует модель 'mail.thread' и все ее функции: болтовня, последователи, инициированные письма, заметки и т. Д. Pp. – CZoellner