diff --git a/jikimo_sale_order_message_notify/__init__.py b/jikimo_sale_order_message_notify/__init__.py
new file mode 100644
index 00000000..9a7e03ed
--- /dev/null
+++ b/jikimo_sale_order_message_notify/__init__.py
@@ -0,0 +1 @@
+from . import models
\ No newline at end of file
diff --git a/jikimo_sale_order_message_notify/__manifest__.py b/jikimo_sale_order_message_notify/__manifest__.py
new file mode 100644
index 00000000..45570c08
--- /dev/null
+++ b/jikimo_sale_order_message_notify/__manifest__.py
@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+{
+ 'name': '机企猫智能工厂 消息提醒',
+ 'version': '1.0',
+ 'summary': '智能工厂消息提醒模块',
+ 'sequence': 1,
+ 'description': """
+
+ """,
+ 'category': 'sf',
+ 'website': 'https://www.sf.jikimo.com',
+ 'depends': ['jikimo_message_notify'],
+ 'data': [
+ 'security/ir.model.access.csv',
+ 'data/bussiness_node.xml',
+ # 'views/sf_message_template_view.xml',
+ ],
+ 'test': [
+ ],
+ 'license': 'LGPL-3',
+ 'installable': True,
+ 'auto_install': False,
+ 'application': False,
+}
diff --git a/jikimo_sale_order_message_notify/data/bussiness_node.xml b/jikimo_sale_order_message_notify/data/bussiness_node.xml
new file mode 100644
index 00000000..e6800a48
--- /dev/null
+++ b/jikimo_sale_order_message_notify/data/bussiness_node.xml
@@ -0,0 +1,9 @@
+
+
+
+
+ 订单确认
+ sale.order
+
+
+
\ No newline at end of file
diff --git a/jikimo_sale_order_message_notify/models/__init__.py b/jikimo_sale_order_message_notify/models/__init__.py
new file mode 100644
index 00000000..c0462bbd
--- /dev/null
+++ b/jikimo_sale_order_message_notify/models/__init__.py
@@ -0,0 +1,2 @@
+from . import jikimo_message_template
+from . import sale_order
diff --git a/jikimo_sale_order_message_notify/models/jikimo_message_template.py b/jikimo_sale_order_message_notify/models/jikimo_message_template.py
new file mode 100644
index 00000000..4c2530f5
--- /dev/null
+++ b/jikimo_sale_order_message_notify/models/jikimo_message_template.py
@@ -0,0 +1,10 @@
+from odoo import models, fields, api
+
+class JikimoMessageTemplate(models.Model):
+ _inherit = "jikimo.message.template"
+
+ def _get_message_model(self):
+ res = super(JikimoMessageTemplate, self)._get_message_model()
+ res.append("sale.order")
+ return res
+
diff --git a/jikimo_sale_order_message_notify/models/sale_order.py b/jikimo_sale_order_message_notify/models/sale_order.py
new file mode 100644
index 00000000..4883fedd
--- /dev/null
+++ b/jikimo_sale_order_message_notify/models/sale_order.py
@@ -0,0 +1,12 @@
+from odoo import models, fields, api
+
+
+class SaleOrder(models.Model):
+ _name = "sale.order"
+ _description = "销售订单"
+ _inherit = ["sale.order", "jikimo.message.dispatch"]
+
+ def create(self, vals_list):
+ res = super(SaleOrder, self).create(vals_list)
+ res.add_queue('订单确认')
+ return res
diff --git a/jikimo_sale_order_message_notify/security/group_security.xml b/jikimo_sale_order_message_notify/security/group_security.xml
new file mode 100644
index 00000000..fdbc3ae5
--- /dev/null
+++ b/jikimo_sale_order_message_notify/security/group_security.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/jikimo_sale_order_message_notify/security/ir.model.access.csv b/jikimo_sale_order_message_notify/security/ir.model.access.csv
new file mode 100644
index 00000000..0b7f9c7b
--- /dev/null
+++ b/jikimo_sale_order_message_notify/security/ir.model.access.csv
@@ -0,0 +1,6 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+
+
+
+
+
diff --git a/jikimo_sale_order_message_notify/views/sf_message_template_view.xml b/jikimo_sale_order_message_notify/views/sf_message_template_view.xml
new file mode 100644
index 00000000..21920b64
--- /dev/null
+++ b/jikimo_sale_order_message_notify/views/sf_message_template_view.xml
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+ sf.message.template.view.form
+ message.template
+
+
+
+
+
+
+ sf.message.template.view.tree
+ message.template
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ sf.message.template.search.view
+ message.template
+
+
+
+
+
+
+
+
+
+
+
+ 消息模板
+ message.template
+ tree,form
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/requirements.txt b/requirements.txt
index 62ceaf1b..dd3bbd58 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,2 +1,3 @@
pystrich
cpca
+pycryptodome==3.20
diff --git a/sf_message/__manifest__.py b/sf_message/__manifest__.py
index 713a4a5e..cdfef4bd 100644
--- a/sf_message/__manifest__.py
+++ b/sf_message/__manifest__.py
@@ -11,10 +11,9 @@
""",
'category': 'sf',
'website': 'https://www.sf.jikimo.com',
- 'depends': ['base', 'sf_plan', 'sf_sale'],
+ 'depends': ['sale', 'purchase', 'sf_plan', 'jikimo_message_notify'],
'data': [
- 'security/ir.model.access.csv',
- 'views/sf_message_template_view.xml',
+ 'data/bussiness_node.xml'
],
'test': [
],
diff --git a/sf_message/data/bussiness_node.xml b/sf_message/data/bussiness_node.xml
new file mode 100644
index 00000000..eeb7cbe7
--- /dev/null
+++ b/sf_message/data/bussiness_node.xml
@@ -0,0 +1,14 @@
+
+
+
+
+ 待接单
+ sale.order
+
+
+
+ 确认接单
+ sale.order
+
+
+
\ No newline at end of file
diff --git a/sf_message/models/sf_message_cam_program.py b/sf_message/models/sf_message_cam_program.py
index 5a6154e5..38fb6ae2 100644
--- a/sf_message/models/sf_message_cam_program.py
+++ b/sf_message/models/sf_message_cam_program.py
@@ -3,4 +3,4 @@ from odoo import models, fields, api, _
class SFMessageCamProgram(models.Model):
_name = 'sf.cam.work.order.program.knife.plan'
- _inherit = ['sf.cam.work.order.program.knife.plan', 'sf.message.template']
+ _inherit = ['sf.cam.work.order.program.knife.plan', 'jikimo.message.dispatch']
diff --git a/sf_message/models/sf_message_functional_tool_assembly.py b/sf_message/models/sf_message_functional_tool_assembly.py
index 6b5e4ebf..251af2cc 100644
--- a/sf_message/models/sf_message_functional_tool_assembly.py
+++ b/sf_message/models/sf_message_functional_tool_assembly.py
@@ -3,4 +3,4 @@ from odoo import models, fields, api, _
class SFMessagefunctionalToolAssembly(models.Model):
_name = 'sf.functional.tool.assembly'
- _inherit = ['sf.functional.tool.assembly', 'sf.message.template']
+ _inherit = ['sf.functional.tool.assembly', 'jikimo.message.dispatch']
diff --git a/sf_message/models/sf_message_plan.py b/sf_message/models/sf_message_plan.py
index 913b61de..03e9528e 100644
--- a/sf_message/models/sf_message_plan.py
+++ b/sf_message/models/sf_message_plan.py
@@ -1,6 +1,25 @@
+# -*- coding: utf-8 -*-
from odoo import models, fields, api, _
class SFMessagePlan(models.Model):
_name = 'sf.production.plan'
- _inherit = ['sf.production.plan', 'sf.message.template']
+ _inherit = ['sf.production.plan', 'jikimo.message.dispatch']
+
+ # def create(self, vals_list):
+ # res = super(SFMessagePlan, self).create(vals_list)
+ # if res:
+ # try:
+ # res.add_queue('待排程')
+ # except Exception as e:
+ # logging.info('add_queue error:%s' % e)
+ # return res
+ #
+ # def _get_message(self):
+ # res = super(SFMessagePlan, self)._get_message()
+ # if res:
+ # try:
+ # res.add_queue('待排程')
+ # except Exception as e:
+ # logging.info('_get_message error:%s' % e)
+ # return res
diff --git a/sf_message/models/sf_message_purchase.py b/sf_message/models/sf_message_purchase.py
index 89836486..073a7814 100644
--- a/sf_message/models/sf_message_purchase.py
+++ b/sf_message/models/sf_message_purchase.py
@@ -3,4 +3,4 @@ from odoo import models, fields, api, _
class SFMessagePurchase(models.Model):
_name = 'purchase.order'
- _inherit = ['purchase.order', 'sf.message.template']
+ _inherit = ['purchase.order', 'jikimo.message.dispatch']
diff --git a/sf_message/models/sf_message_sale.py b/sf_message/models/sf_message_sale.py
index d8d3bd21..fb9d5976 100644
--- a/sf_message/models/sf_message_sale.py
+++ b/sf_message/models/sf_message_sale.py
@@ -1,11 +1,39 @@
+# -*- coding: utf-8 -*-
from odoo import models, fields, api, _
class SFMessageSale(models.Model):
_name = 'sale.order'
- _inherit = ['sale.order', 'sf.message.template']
+ _inherit = ['sale.order', 'jikimo.message.dispatch']
- # def create(self):
- # res = super(SFMessageSale, self).create()
- # if res is True:
+ def create(self, vals_list):
+ res = super(SFMessageSale, self).create(vals_list)
+ if res:
+ try:
+ res.add_queue('待接单')
+ except Exception as e:
+ logging.info('add_queue error:%s' % e)
+ return res
+ # 确认接单
+ def action_confirm(self):
+ res = super(SFMessageSale, self).action_confirm()
+ if res is True:
+ try:
+ self.add_queue('确认接单')
+ except Exception as e:
+ logging.info('add_queue error:%s' % e)
+ return res
+
+ # 继承并重写jikimo.message.dispatch的_get_message()
+ def _get_message(self, message_queue_ids):
+ res = super(SFMessageSale, self)._get_message(message_queue_ids)
+ if message_queue_ids.message_template_id.bussiness_node_id.name == '确认接单':
+ # sale_order = self.env['sale.order'].search([('id', '=', message_queue_ids.model.res_id)])
+ sale_order_line = self.env['sale.order.line'].search([('order_id', '=', int(message_queue_ids.res_id))])
+ if len(sale_order_line) == 1:
+ product = sale_order_line[0].product_id.name
+ elif len(sale_order_line) > 1:
+ product = '%s...' % sale_order_line[0].product_id.name
+ res[0] = res[0].replace('{{product_id}}', product)
+ return res
diff --git a/sf_message/models/sf_message_stock_picking.py b/sf_message/models/sf_message_stock_picking.py
index 894dce9d..b090549e 100644
--- a/sf_message/models/sf_message_stock_picking.py
+++ b/sf_message/models/sf_message_stock_picking.py
@@ -3,4 +3,4 @@ from odoo import models, fields, api, _
class SFMessageStockPicking(models.Model):
_name = 'stock.picking'
- _inherit = ['stock.picking', 'sf.message.template']
+ _inherit = ['stock.picking', 'jikimo.message.dispatch']
diff --git a/sf_message/models/sf_message_template.py b/sf_message/models/sf_message_template.py
index ea6e4222..7380fbe6 100644
--- a/sf_message/models/sf_message_template.py
+++ b/sf_message/models/sf_message_template.py
@@ -4,31 +4,9 @@ from abc import ABC, abstractmethod
class SfMessageTemplate(models.Model):
- _name = "sf.message.template"
- _description = u'消息模板'
+ _inherit = "jikimo.message.template"
- name = fields.Char(string=u"名称", required=True)
- description = fields.Char(string=u"描述")
- content = fields.Html(string=u"内容", render_engine='qweb', translate=True, prefetch=True, sanitize=False)
- msgtype = fields.Selection(
- [('text', u'文字'), ('markdown', u'Markdown')], u'消息类型',
- required=True, default='markdown')
- notification_department_id = fields.Many2one('hr.department', u'通知部门', required=True)
- notification_employee_ids = fields.Many2many('hr.employee', string=u'员工',
- domain="[('department_id', '=',notification_department_id)]",
- required=True)
- is_send_time = fields.Boolean(string=u"定时发送", default=False)
- send_time_1 = fields.Integer('发送时间点1')
- send_time_2 = fields.Integer('发送时间点2')
- active = fields.Boolean(string=u"是否有效", default=True)
-
- @api.onchange('notification_department_id')
- def _clear_employee_ids(self):
- if self.notification_department_id:
- self.notification_employee_ids = False
-
- @abstractmethod
- def dispatch(self, args):
- """
- 强迫继承该类必走该抽象方法'
- """
+ def _get_message_model(self):
+ res = super(SfMessageTemplate, self)._get_message_model()
+ res.append("sale.order")
+ return res
diff --git a/sf_message/models/sf_message_workorder.py b/sf_message/models/sf_message_workorder.py
index cab2408d..626c092d 100644
--- a/sf_message/models/sf_message_workorder.py
+++ b/sf_message/models/sf_message_workorder.py
@@ -3,4 +3,4 @@ from odoo import models, fields, api, _
class SFMessageWork(models.Model):
_name = 'mrp.workorder'
- _inherit = ['mrp.workorder', 'sf.message.template']
+ _inherit = ['mrp.workorder', 'jikimo.message.dispatch']
diff --git a/sf_message/security/ir.model.access.csv b/sf_message/security/ir.model.access.csv
index dbb2d6af..cb42c911 100644
--- a/sf_message/security/ir.model.access.csv
+++ b/sf_message/security/ir.model.access.csv
@@ -1,9 +1,23 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_sf_message_template_group_sale_salemanager,sf_message_template,model_sf_message_template,sf_base.group_sale_salemanager,1,1,1,0
-access_sf_message_template_group_purchase,sf_message_template,model_sf_message_template,sf_base.group_purchase,1,1,1,0
-access_sf_message_template_group_sf_stock_user,sf_message_template,model_sf_message_template,sf_base.group_sf_stock_user,1,1,1,0
-access_sf_message_template_group_sf_order_user,sf_message_template,model_sf_message_template,sf_base.group_sf_order_user,1,1,1,0
-access_sf_message_template_group_sf_tool_user,sf_message_template,model_sf_message_template,sf_base.group_sf_tool_user,1,1,1,0
+
+access_jikimo_message_template_group_sale_salemanager,jikimo_message_template,model_jikimo_message_template,sf_base.group_sale_salemanager,1,1,1,0
+access_jikimo_message_template_group_purchase,jikimo_message_template,model_jikimo_message_template,sf_base.group_purchase,1,1,1,0
+access_jikimo_message_template_group_sf_stock_user,jikimo_message_template,model_jikimo_message_template,sf_base.group_sf_stock_user,1,1,1,0
+access_jikimo_message_template_group_sf_order_user,jikimo_message_template,model_jikimo_message_template,sf_base.group_sf_order_user,1,1,1,0
+access_jikimo_message_template_group_sf_tool_user,jikimo_message_template,model_jikimo_message_template,sf_base.group_sf_tool_user,1,1,1,0
+
+access_jikimo_message_bussiness_node_group_sale_salemanager,jikimo_message_bussiness_node,model_jikimo_message_bussiness_node,sf_base.group_sale_salemanager,1,1,1,0
+access_jikimo_message_bussiness_node_group_purchase,jikimo_message_bussiness_node,model_jikimo_message_bussiness_node,sf_base.group_purchase,1,1,1,0
+access_jikimo_message_bussiness_node_group_sf_stock_user,jikimo_message_bussiness_node,model_jikimo_message_bussiness_node,sf_base.group_sf_stock_user,1,1,1,0
+access_jikimo_message_bussiness_node_group_sf_order_user,jikimo_message_bussiness_node,model_jikimo_message_bussiness_node,sf_base.group_sf_order_user,1,1,1,0
+access_jikimo_message_bussiness_node_group_sf_tool_user,jikimo_message_bussiness_node,model_jikimo_message_bussiness_node,sf_base.group_sf_tool_user,1,1,1,0
+
+access_jikimo_message_queue_group_sale_salemanager,jikimo_message_queue,model_jikimo_message_queue,sf_base.group_sale_salemanager,1,1,1,0
+access_jikimo_message_queue_group_purchase,jikimo_message_queue,model_jikimo_message_queue,sf_base.group_purchase,1,1,1,0
+access_jikimo_message_queue_group_sf_stock_user,jikimo_message_queue,model_jikimo_message_queue,sf_base.group_sf_stock_user,1,1,1,0
+access_jikimo_message_queue_group_sf_order_user,jikimo_message_queue,model_jikimo_message_queue,sf_base.group_sf_order_user,1,1,1,0
+access_jikimo_message_queue_group_sf_tool_user,jikimo_message_queue,model_jikimo_message_queue,sf_base.group_sf_tool_user,1,1,1,0
+
diff --git a/sf_message/views/sf_message_template_view.xml b/sf_message/views/sf_message_template_view.xml
index ff1bb74e..21920b64 100644
--- a/sf_message/views/sf_message_template_view.xml
+++ b/sf_message/views/sf_message_template_view.xml
@@ -7,7 +7,7 @@
sf.message.template.view.form
- sf.message.template
+ message.template