diff --git a/sf_manufacturing/models/product_template.py b/sf_manufacturing/models/product_template.py
index 071f1167..37fa02bd 100644
--- a/sf_manufacturing/models/product_template.py
+++ b/sf_manufacturing/models/product_template.py
@@ -9,8 +9,8 @@ from odoo.exceptions import ValidationError, UserError
from odoo.modules import get_resource_path
-from OCC.Extend.DataExchange import read_step_file
-from OCC.Extend.DataExchange import write_stl_file
+# from OCC.Extend.DataExchange import read_step_file
+# from OCC.Extend.DataExchange import write_stl_file
class ResProductMo(models.Model):
diff --git a/sf_manufacturing/models/stock.py b/sf_manufacturing/models/stock.py
index daf049eb..6c4ba7ff 100644
--- a/sf_manufacturing/models/stock.py
+++ b/sf_manufacturing/models/stock.py
@@ -292,78 +292,78 @@ class StockRule(models.Model):
for product_id, all_production in grouped_product_ids.items():
# 为同一个product_id创建一个生产订单名称列表
product_id_to_production_names[product_id] = [production.name for production in all_production]
- for production_item in productions:
-
- production_programming = self.env['mrp.production'].search(
- [('product_id.id', '=', production_item.product_id.id),
- ('origin', '=', production_item.origin)],
- limit=1, order='id asc')
- if production_item.product_id.id in product_id_to_production_names:
- if not production_programming.programming_no:
- if production_item.product_id.model_process_parameters_ids:
- is_purchase = False
- sorted_process_parameters = sorted(production_item.product_id.model_process_parameters_ids,
- key=lambda w: w.id)
-
- consecutive_process_parameters = []
- m = 0
- for i in range(len(sorted_process_parameters) - 1):
- if m == 0:
- is_purchase = False
- if self.env['product.template']._get_process_parameters_product(
- sorted_process_parameters[i]).partner_id == self.env[
- 'product.template']._get_process_parameters_product(sorted_process_parameters[
- i + 1]).partner_id and \
- sorted_process_parameters[i].gain_way == '外协':
- if sorted_process_parameters[i] not in consecutive_process_parameters:
- consecutive_process_parameters.append(sorted_process_parameters[i])
- consecutive_process_parameters.append(sorted_process_parameters[i + 1])
- m += 1
- continue
- else:
- if m == len(consecutive_process_parameters) - 1 and m != 0:
- self.env['purchase.order'].get_purchase_order(consecutive_process_parameters,
- production_item,
- product_id_to_production_names)
- if sorted_process_parameters[i] in consecutive_process_parameters:
- is_purchase = True
- consecutive_process_parameters = []
- m = 0
- # 当前面的连续外协采购单生成再生成当前外协采购单
- if is_purchase is False:
- self.env['purchase.order'].get_purchase_order(consecutive_process_parameters,
- production_item,
- product_id_to_production_names)
- if m == len(consecutive_process_parameters) - 1 and m != 0:
- self.env['purchase.order'].get_purchase_order(consecutive_process_parameters,
- production_item,
- product_id_to_production_names)
- if sorted_process_parameters[i] in consecutive_process_parameters:
- is_purchase = True
- consecutive_process_parameters = []
- m = 0
- if m == len(consecutive_process_parameters) - 1 and m != 0:
- self.env['purchase.order'].get_purchase_order(consecutive_process_parameters,
- production_item,
- product_id_to_production_names)
- if is_purchase is False and m == 0:
- if len(sorted_process_parameters) == 1:
- self.env['purchase.order'].get_purchase_order(sorted_process_parameters,
- production_item,
- product_id_to_production_names)
- else:
- self.env['purchase.order'].get_purchase_order(sorted_process_parameters[i],
- production_item,
- product_id_to_production_names)
- # # 同一个产品多个制造订单对应一个编程单和模型库
- # # 只调用一次fetchCNC,并将所有生产订单的名称作为字符串传递
- if not production_item.programming_no:
- if not production_programming.programming_no:
- production_item.fetchCNC(
- ', '.join(product_id_to_production_names[production_item.product_id.id]))
- else:
- production_item.write({'programming_no': production_programming.programming_no,
- 'programming_state': '编程中'})
+ # for production_item in productions:
+ #
+ # production_programming = self.env['mrp.production'].search(
+ # [('product_id.id', '=', production_item.product_id.id),
+ # ('origin', '=', production_item.origin)],
+ # limit=1, order='id asc')
+ # if production_item.product_id.id in product_id_to_production_names:
+ # if not production_programming.programming_no:
+ # if production_item.product_id.model_process_parameters_ids:
+ # is_purchase = False
+ # sorted_process_parameters = sorted(production_item.product_id.model_process_parameters_ids,
+ # key=lambda w: w.id)
+ #
+ # consecutive_process_parameters = []
+ # m = 0
+ # for i in range(len(sorted_process_parameters) - 1):
+ # if m == 0:
+ # is_purchase = False
+ # if self.env['product.template']._get_process_parameters_product(
+ # sorted_process_parameters[i]).partner_id == self.env[
+ # 'product.template']._get_process_parameters_product(sorted_process_parameters[
+ # i + 1]).partner_id and \
+ # sorted_process_parameters[i].gain_way == '外协':
+ # if sorted_process_parameters[i] not in consecutive_process_parameters:
+ # consecutive_process_parameters.append(sorted_process_parameters[i])
+ # consecutive_process_parameters.append(sorted_process_parameters[i + 1])
+ # m += 1
+ # continue
+ # else:
+ # if m == len(consecutive_process_parameters) - 1 and m != 0:
+ # self.env['purchase.order'].get_purchase_order(consecutive_process_parameters,
+ # production_item,
+ # product_id_to_production_names)
+ # if sorted_process_parameters[i] in consecutive_process_parameters:
+ # is_purchase = True
+ # consecutive_process_parameters = []
+ # m = 0
+ # # 当前面的连续外协采购单生成再生成当前外协采购单
+ # if is_purchase is False:
+ # self.env['purchase.order'].get_purchase_order(consecutive_process_parameters,
+ # production_item,
+ # product_id_to_production_names)
+ # if m == len(consecutive_process_parameters) - 1 and m != 0:
+ # self.env['purchase.order'].get_purchase_order(consecutive_process_parameters,
+ # production_item,
+ # product_id_to_production_names)
+ # if sorted_process_parameters[i] in consecutive_process_parameters:
+ # is_purchase = True
+ # consecutive_process_parameters = []
+ # m = 0
+ # if m == len(consecutive_process_parameters) - 1 and m != 0:
+ # self.env['purchase.order'].get_purchase_order(consecutive_process_parameters,
+ # production_item,
+ # product_id_to_production_names)
+ # if is_purchase is False and m == 0:
+ # if len(sorted_process_parameters) == 1:
+ # self.env['purchase.order'].get_purchase_order(sorted_process_parameters,
+ # production_item,
+ # product_id_to_production_names)
+ # else:
+ # self.env['purchase.order'].get_purchase_order(sorted_process_parameters[i],
+ # production_item,
+ # product_id_to_production_names)
+ # # # 同一个产品多个制造订单对应一个编程单和模型库
+ # # # 只调用一次fetchCNC,并将所有生产订单的名称作为字符串传递
+ # if not production_item.programming_no:
+ # if not production_programming.programming_no:
+ # production_item.fetchCNC(
+ # ', '.join(product_id_to_production_names[production_item.product_id.id]))
+ # else:
+ # production_item.write({'programming_no': production_programming.programming_no,
+ # 'programming_state': '编程中'})
return True
diff --git a/sf_message/__manifest__.py b/sf_message/__manifest__.py
index 713a4a5e..671abb85 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': ['base', '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..1a9fe70b 100644
--- a/sf_message/models/sf_message_sale.py
+++ b/sf_message/models/sf_message_sale.py
@@ -1,11 +1,43 @@
+# -*- 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):
+ 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 = super(SFMessageSale, self)._get_message(message_queue_ids)
+ 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_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..fd6de5be 100644
--- a/sf_message/security/ir.model.access.csv
+++ b/sf_message/security/ir.model.access.csv
@@ -1,9 +1,5 @@
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
+
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