diff --git a/sf_maintenance/models/sf_maintenance.py b/sf_maintenance/models/sf_maintenance.py index 74da7742..46f26257 100644 --- a/sf_maintenance/models/sf_maintenance.py +++ b/sf_maintenance/models/sf_maintenance.py @@ -38,8 +38,7 @@ class SfMaintenanceEquipment(models.Model): crea_url = "/api/machine_tool/create" - - #AGV运行日志 + # AGV运行日志 agv_logs = fields.One2many('maintenance.equipment.agv.log', 'equipment_id', string='AGV运行日志') # 1212修改后的字段 number_of_axles = fields.Selection( @@ -117,7 +116,6 @@ class SfMaintenanceEquipment(models.Model): # num = "%04d" % m # return num - equipment_maintenance_standards_ids = fields.Many2many('equipment.maintenance.standards', 'sf_maintenance_equipment_ids', string='设备维保标准') eq_maintenance_id = fields.Many2one('equipment.maintenance.standards', string='设备保养标准', @@ -179,7 +177,8 @@ class SfMaintenanceEquipment(models.Model): type_id = fields.Many2one('sf.machine_tool.type', '型号') state = fields.Selection( - [("正常", "正常"), ("故障停机", "故障停机"), ("计划维保", "计划维保"), ("空闲", "空闲"), ("封存(报废)", "封存(报废)")], + [("正常", "正常"), ("故障停机", "故障停机"), ("计划维保", "计划维保"), ("空闲", "空闲"), + ("封存(报废)", "封存(报废)")], default='正常', string="机床状态") run_time = fields.Char('总运行时长') # 0606新增字段 @@ -328,7 +327,7 @@ class SfMaintenanceEquipment(models.Model): item.tool_diameter_min = item.type_id.tool_diameter_min item.machine_tool_category = item.type_id.machine_tool_category.id item.brand_id = item.type_id.brand_id.id - #新增修改字段 + # 新增修改字段 item.taper_type_id = item.type_id.taper_type_id.id item.function_type = item.type_id.function_type item.a_axis = item.type_id.a_axis @@ -370,7 +369,6 @@ class SfMaintenanceEquipment(models.Model): item.image_id = item.type_id.jg_image_id.ids item.image_lq_id = item.type_id.lq_image_id.ids - # AGV小车设备参数 AGV_L = fields.Char('AGV尺寸(长)') AGV_W = fields.Char('AGV尺寸(宽)') @@ -461,18 +459,6 @@ class SfMaintenanceEquipment(models.Model): original_value = fields.Char('原值') incomplete_value = fields.Char('残值') - - - - - - - - - - - - # 注册同步机床 def enroll_machine_tool(self): sf_sync_config = self.env['res.config.settings'].get_values() @@ -763,7 +749,7 @@ class SfMaintenanceEquipment(models.Model): image_id = fields.Many2many('maintenance.equipment.image', 'equipment_id', domain="[('type', '=', '加工能力')]") image_lq_id = fields.Many2many('maintenance.equipment.image', 'equipment_lq_id', string='冷却方式', - domain="[('type', '=', '冷却方式')]") + domain="[('type', '=', '冷却方式')]") class SfRobotAxisNum(models.Model): @@ -777,4 +763,5 @@ class SfRobotAxisNum(models.Model): weight = fields.Char('最大负载(kg)') permissible_load_torque = fields.Char('允许负载扭矩(N-m)') permissible_inertial_torque = fields.Char('允许惯性扭矩(kg-m²)') - equipment_id = fields.Many2one('maintenance.equipment', string='机器人', domain="[('equipment_type', '=', '机器人')]") + equipment_id = fields.Many2one('maintenance.equipment', string='机器人', + domain="[('equipment_type', '=', '机器人')]") diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index 0ab2be6b..0b68852b 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -806,6 +806,10 @@ class MrpProduction(models.Model): backorders = backorders - productions_to_backorder productions_not_to_backorder._post_inventory(cancel_backorder=True) + # if self.workorder_ids.filtered(lambda w: w.routing_type in ['表面工艺']): + # move_finish = self.env['stock.move'].search([('created_production_id', '=', self.id)]) + # if move_finish: + # move_finish._action_assign() productions_to_backorder._post_inventory(cancel_backorder=True) # if completed products make other confirmed/partially_available moves available, assign them diff --git a/sf_message/__manifest__.py b/sf_message/__manifest__.py index 3a0f37d8..713a4a5e 100644 --- a/sf_message/__manifest__.py +++ b/sf_message/__manifest__.py @@ -11,7 +11,7 @@ """, 'category': 'sf', 'website': 'https://www.sf.jikimo.com', - 'depends': ['base', 'sf_base'], + 'depends': ['base', 'sf_plan', 'sf_sale'], 'data': [ 'security/ir.model.access.csv', 'views/sf_message_template_view.xml', diff --git a/sf_message/models/__init__.py b/sf_message/models/__init__.py index ec5b1c2f..b0c058fc 100644 --- a/sf_message/models/__init__.py +++ b/sf_message/models/__init__.py @@ -1 +1,8 @@ from . import sf_message_template +from . import sf_message_sale +from . import sf_message_plan +from . import sf_message_stock_picking +from . import sf_message_cam_program +from . import sf_message_functional_tool_assembly +from . import sf_message_purchase +from . import sf_message_workorder diff --git a/sf_message/models/sf_message_cam_program.py b/sf_message/models/sf_message_cam_program.py new file mode 100644 index 00000000..5a6154e5 --- /dev/null +++ b/sf_message/models/sf_message_cam_program.py @@ -0,0 +1,6 @@ +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'] diff --git a/sf_message/models/sf_message_functional_tool_assembly.py b/sf_message/models/sf_message_functional_tool_assembly.py new file mode 100644 index 00000000..6b5e4ebf --- /dev/null +++ b/sf_message/models/sf_message_functional_tool_assembly.py @@ -0,0 +1,6 @@ +from odoo import models, fields, api, _ + + +class SFMessagefunctionalToolAssembly(models.Model): + _name = 'sf.functional.tool.assembly' + _inherit = ['sf.functional.tool.assembly', 'sf.message.template'] diff --git a/sf_message/models/sf_message_plan.py b/sf_message/models/sf_message_plan.py new file mode 100644 index 00000000..913b61de --- /dev/null +++ b/sf_message/models/sf_message_plan.py @@ -0,0 +1,6 @@ +from odoo import models, fields, api, _ + + +class SFMessagePlan(models.Model): + _name = 'sf.production.plan' + _inherit = ['sf.production.plan', 'sf.message.template'] diff --git a/sf_message/models/sf_message_purchase.py b/sf_message/models/sf_message_purchase.py new file mode 100644 index 00000000..89836486 --- /dev/null +++ b/sf_message/models/sf_message_purchase.py @@ -0,0 +1,6 @@ +from odoo import models, fields, api, _ + + +class SFMessagePurchase(models.Model): + _name = 'purchase.order' + _inherit = ['purchase.order', 'sf.message.template'] diff --git a/sf_message/models/sf_message_sale.py b/sf_message/models/sf_message_sale.py new file mode 100644 index 00000000..2f9a9c01 --- /dev/null +++ b/sf_message/models/sf_message_sale.py @@ -0,0 +1,6 @@ +from odoo import models, fields, api, _ + + +class SFMessageSale(models.Model): + _name = 'sale.order' + _inherit = ['sale.order', 'sf.message.template'] diff --git a/sf_message/models/sf_message_stock_picking.py b/sf_message/models/sf_message_stock_picking.py new file mode 100644 index 00000000..894dce9d --- /dev/null +++ b/sf_message/models/sf_message_stock_picking.py @@ -0,0 +1,6 @@ +from odoo import models, fields, api, _ + + +class SFMessageStockPicking(models.Model): + _name = 'stock.picking' + _inherit = ['stock.picking', 'sf.message.template'] diff --git a/sf_message/models/sf_message_template.py b/sf_message/models/sf_message_template.py index 4d89cc2a..5f695a52 100644 --- a/sf_message/models/sf_message_template.py +++ b/sf_message/models/sf_message_template.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- from odoo import models, fields, api +from abc import ABC, abstractmethod class SfMessageTemplate(models.Model): @@ -7,30 +8,30 @@ class SfMessageTemplate(models.Model): _description = u'消息模板' name = fields.Char(string=u"名称", required=True) - type = fields.Selection([ - ('待接单', '待接单'), - ('待排程', '待排程'), - ('坯料采购', '坯料采购'), - ('坯料发料', '坯料发料'), - ('待编程', '待编程'), - ('调拨入库', '调拨入库'), - ('功能刀具组装', '功能刀具组装'), - ('功能刀具寿命到期', '功能刀具寿命到期'), - ('程序用刀计划异常', '程序用刀计划异常'), - ('工单无CNC程序', '工单无CNC程序'), - ('生产线无功能刀具', '生产线无功能刀具'), - ('工单无定位数据', '工单无定位数据'), - ('工单FTP无文件', '工单FTP无文件'), - ('工单加工失败', '工单加工失败'), - ('设备故障及异常', '设备故障及异常'), - ('工单逾期预警', '工单逾期预警'), - ('工单已逾期', '工单已逾期'), - ('销售订单逾期', '销售订单逾期'), - ('销售订单已逾期', '销售订单已逾期'), - ('待质量判定', '待质量判定'), - ('生产完工待入库', '生产完工待入库'), - ('订单发货', '订单发货') - ], string='类型', required=True) + # type = fields.Selection([ + # ('待接单', '待接单'), + # ('待排程', '待排程'), + # ('坯料采购', '坯料采购'), + # ('坯料发料', '坯料发料'), + # ('待编程', '待编程'), + # ('调拨入库', '调拨入库'), + # ('功能刀具组装', '功能刀具组装'), + # ('功能刀具寿命到期', '功能刀具寿命到期'), + # ('程序用刀计划异常', '程序用刀计划异常'), + # ('工单无CNC程序', '工单无CNC程序'), + # ('生产线无功能刀具', '生产线无功能刀具'), + # ('工单无定位数据', '工单无定位数据'), + # ('工单FTP无文件', '工单FTP无文件'), + # ('工单加工失败', '工单加工失败'), + # ('设备故障及异常', '设备故障及异常'), + # ('工单逾期预警', '工单逾期预警'), + # ('工单已逾期', '工单已逾期'), + # ('销售订单逾期', '销售订单逾期'), + # ('销售订单已逾期', '销售订单已逾期'), + # ('待质量判定', '待质量判定'), + # ('生产完工待入库', '生产完工待入库'), + # ('订单发货', '订单发货') + # ], string='类型', required=True) description = fields.Char(string=u"描述") content = fields.Html(string=u"内容", render_engine='qweb', translate=True, prefetch=True, sanitize=False) msgtype = fields.Selection( @@ -46,3 +47,9 @@ class SfMessageTemplate(models.Model): def _clear_employee_ids(self): if self.notification_department_id: self.notification_employee_ids = False + + @abstractmethod + def dispatch(self, args): + """ + 强迫继承该类必走该抽象方法' + """ diff --git a/sf_message/models/sf_message_workorder.py b/sf_message/models/sf_message_workorder.py new file mode 100644 index 00000000..cab2408d --- /dev/null +++ b/sf_message/models/sf_message_workorder.py @@ -0,0 +1,6 @@ +from odoo import models, fields, api, _ + + +class SFMessageWork(models.Model): + _name = 'mrp.workorder' + _inherit = ['mrp.workorder', 'sf.message.template'] diff --git a/sf_message/views/sf_message_template_view.xml b/sf_message/views/sf_message_template_view.xml index ac412589..9680507a 100644 --- a/sf_message/views/sf_message_template_view.xml +++ b/sf_message/views/sf_message_template_view.xml @@ -18,12 +18,11 @@ - + - @@ -38,10 +37,9 @@ - + - @@ -55,7 +53,7 @@ + filter_domain="['|','|',('name','like',self),('description','like',self)]"/>