Chào cả nhà, mình là thành viên mới, có gì mong mọi người chỉ giúp. Công ty mình đang dùng OpenERP 7.0. Mình đang gặp một vấn đề như sau: Khi hệ thống thực hiện workflow, mình muốn tại một node nào đó, nó sẽ gửi email theo template mà mình đã thiết kế.
Theo mình biết thì tại một node của workflow nó có cho phép mình thực hiện một server action. Trong server action có type là email, nếu theo hướng này thì mình đã làm được rồi. Nhưng mình muốn nó gửi email theo template của mình. Mình làm mãi mà không được? Có đại ca nào chỉ mình với. Thanks!
6 Trả lời
Chào Vũ Trọng Đạt,
Bạn tuy là mem mới nhưng có câu hỏi rất thú vị. Mình xin trả lời câu hỏi của bạn như sau:
1. Bạn chọn server action type là Python Code
2. Thực hiện đoạn code sau (đã test):
if not object.partner_id.opt_out: template_obj = self.pool.get('email.template') template_id = template_obj.search(cr,uid,[('name','=','My Email Template Name')])[0] action = template_obj.send_mail(cr, uid, template_id, context['active_id'], True)
@Đạt,
Cái này là do bộ code của bạn bị lỗi, nếu bạn dùng bản OpenERP nightly build mới nhất thì lỗi này đã được fix. Để fix lỗi này, bạn vào file /opt/openerp/standard/addons/email_template/email_template.py, thay thế đoạn code dòng 376 thành đoạn code sau
attachments = dict(values.pop('attachments')) or {}
@Đạt,
Thắc mắc của bạn rất hợp lý, trong trường hợp này, theo mình không còn cách nào khác. Lý do: ở đây chúng ta viết code trực tiếp trên webclient và lưu code vào database tương ứng và code trong server action đc chạy ngầm, không thông qua giao diện. Do đó việc hack code là điều không thể tranh khỏi, bạn không hack name thì cũng phải hack id. Tùy bạn chọn