diff --git a/sf_base/__manifest__.py b/sf_base/__manifest__.py
index 11931f4c..2daf3ec0 100644
--- a/sf_base/__manifest__.py
+++ b/sf_base/__manifest__.py
@@ -23,6 +23,7 @@
],
'qweb': [
],
+ 'license': 'LGPL-3',
'installable': True,
'application': False,
'auto_install': False,
diff --git a/sf_base/models/common.py b/sf_base/models/common.py
index 987444e5..419caf17 100644
--- a/sf_base/models/common.py
+++ b/sf_base/models/common.py
@@ -75,6 +75,18 @@ class MrsMaterialModel(models.Model):
active = fields.Boolean('有效', default=True)
+class MrsProductionProcessCategory(models.Model):
+ _name = 'sf.production.process.category'
+ _description = '表面工艺类别'
+ order = 'id desc'
+
+ name = fields.Char('名称')
+ code = fields.Char("编码")
+ sequence = fields.Integer('排序')
+ production_process_ids = fields.One2many('sf.production.process', 'category_id', string="表面工艺")
+ active = fields.Boolean('有效', default=True)
+
+
# 工艺 编码,名称,备注
class MrsProductionProcess(models.Model):
_name = 'sf.production.process'
@@ -87,6 +99,8 @@ class MrsProductionProcess(models.Model):
partner_process_ids = fields.Many2many('res.partner', 'process_ids', '加工工厂')
active = fields.Boolean('有效', default=True)
parameter_ids = fields.One2many('sf.production.process.parameter', 'process_id', string='可选参数')
+ category_id = fields.Many2one('sf.production.process.category')
+ # workcenter_ids = fields.Many2many('mrp.workcenter', 'rel_workcenter_process', required=True)
class MrsProcessingTechnology(models.Model):
@@ -134,12 +148,30 @@ class SupplierSort(models.Model):
('supplier_sort_uniq', 'unique (partner_id,materials_model_id)', '排序不能重复!')
]
+
class MrsProductionProcessParameter(models.Model):
_name = 'sf.production.process.parameter'
_description = '可选参数'
- name = fields.Char('参数名')
- active = fields.Boolean('有效', default=True)
- price = fields.Float('单价')
+ # _display_name = 'name'
+
+ code = fields.Char("编码")
+ name = fields.Char('名称')
+ gain_way = fields.Selection([("自加工", "自加工"), ("外协", "外协")], default="", string="获取方式")
+ is_check = fields.Boolean(default=False)
+ # price = fields.Float('单价')
process_id = fields.Many2one('sf.production.process', string='表面工艺')
materials_model_ids = fields.Many2many('sf.materials.model', 'applicable_material', string='适用材料')
- code = fields.Char("编码")
\ No newline at end of file
+ active = fields.Boolean('有效', default=True)
+
+ def name_get(self):
+ result = []
+ for parameter in self:
+ if parameter.process_id:
+ name = parameter.process_id.name + '-' + parameter.name
+ result.append((parameter.id, name))
+ return result
+
+ # 获取表面工艺的获取方式
+ def get_gain_way(self, item):
+ process_parameter = self.env['sf.production.process.parameter'].search([('id', '=', item.id)])
+ return process_parameter
diff --git a/sf_base/security/ir.model.access.csv b/sf_base/security/ir.model.access.csv
index c9e93e5b..7c13d58d 100644
--- a/sf_base/security/ir.model.access.csv
+++ b/sf_base/security/ir.model.access.csv
@@ -13,8 +13,8 @@ access_sf_materials_model,sf_materials_model,model_sf_materials_model,base.group
access_sf_processing_technology,sf_processing_technology,model_sf_processing_technology,base.group_user,1,1,1,1
access_sf_tray,sf_tray,model_sf_tray,base.group_user,1,1,1,1
access_sf_supplier_sort,sf_supplier_sort,model_sf_supplier_sort,base.group_user,1,1,1,1
-
access_sf_production_process_parameter,sf_production_process_parameter,model_sf_production_process_parameter,base.group_user,1,1,1,1
+access_sf_production_process_category,sf_production_process_category,model_sf_production_process_category,base.group_user,1,1,1,1
diff --git a/sf_base/views/common_view.xml b/sf_base/views/common_view.xml
index be899852..82e1e918 100644
--- a/sf_base/views/common_view.xml
+++ b/sf_base/views/common_view.xml
@@ -39,6 +39,61 @@
+
+
+
+ sf.production.process.category
+
+
+
+
+
+
+ sf.production.process.category
+
+
+
+
+
+
+
+
+
+
+ search.sf.production.process.category
+ sf.production.process.category
+
+
+
+
+
+
+
+
sf.production.process
@@ -55,55 +110,65 @@
sf.production.process
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -229,26 +294,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
材料
ir.actions.act_window
@@ -288,13 +333,24 @@
sf.processing.technology
tree,form
-
加工工艺!
+
+ 表面工艺类别
+ ir.actions.act_window
+ sf.production.process.category
+ tree,form
+
+
+ 表面工艺类别!
+
+
+
+
#------------------托盘------------------
托盘
diff --git a/sf_base/views/menu_view.xml b/sf_base/views/menu_view.xml
index 3b329ccb..620712ac 100644
--- a/sf_base/views/menu_view.xml
+++ b/sf_base/views/menu_view.xml
@@ -63,6 +63,13 @@
action="sf_production_process"
/>
+
diff --git a/sf_manufacturing/views/mrp_routing_workcenter_view.xml b/sf_manufacturing/views/mrp_routing_workcenter_view.xml
index b854160a..d0db3a7b 100644
--- a/sf_manufacturing/views/mrp_routing_workcenter_view.xml
+++ b/sf_manufacturing/views/mrp_routing_workcenter_view.xml
@@ -8,6 +8,8 @@
+
diff --git a/sf_manufacturing/views/mrp_workcenter_views.xml b/sf_manufacturing/views/mrp_workcenter_views.xml
index cc6f1ba9..8c16f783 100644
--- a/sf_manufacturing/views/mrp_workcenter_views.xml
+++ b/sf_manufacturing/views/mrp_workcenter_views.xml
@@ -109,6 +109,9 @@
+
+
+
diff --git a/sf_manufacturing/views/mrp_workorder_view.xml b/sf_manufacturing/views/mrp_workorder_view.xml
index 82a78866..295a8399 100644
--- a/sf_manufacturing/views/mrp_workorder_view.xml
+++ b/sf_manufacturing/views/mrp_workorder_view.xml
@@ -5,6 +5,10 @@
mrp.workorder
+
+
+
+
@@ -113,8 +117,7 @@
('is_user_working', '!=', False),('user_permissions','=',False),('name','=','获取CNC加工程序')]}"/>
-
+
@@ -162,7 +165,7 @@
+ />
diff --git a/sf_manufacturing/views/stock_picking_view.xml b/sf_manufacturing/views/stock_picking_view.xml
new file mode 100644
index 00000000..a287fbec
--- /dev/null
+++ b/sf_manufacturing/views/stock_picking_view.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ stock.picking.form.inherit.sf
+ stock.picking
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sf_mrs_connect/__manifest__.py b/sf_mrs_connect/__manifest__.py
index 3954aa3f..b1955012 100644
--- a/sf_mrs_connect/__manifest__.py
+++ b/sf_mrs_connect/__manifest__.py
@@ -19,6 +19,7 @@
],
'qweb': [
],
+ 'license': 'LGPL-3',
'installable': True,
'application': False,
'auto_install': False,
diff --git a/sf_mrs_connect/data/ir_cron_data.xml b/sf_mrs_connect/data/ir_cron_data.xml
index 7e9d2e86..8f3a6e93 100644
--- a/sf_mrs_connect/data/ir_cron_data.xml
+++ b/sf_mrs_connect/data/ir_cron_data.xml
@@ -77,16 +77,16 @@
-
-
-
-
-
-
-
-
-
-
+
+ 同步表面工艺类别
+
+ code
+ model.sync_production_process_category()
+ 1
+ days
+ -1
+
+
同步资源库机床型号
@@ -132,7 +132,7 @@
-
+
同步表面工艺可选参数
code
diff --git a/sf_mrs_connect/models/res_config_setting.py b/sf_mrs_connect/models/res_config_setting.py
index 9a61ce8d..8aae305a 100644
--- a/sf_mrs_connect/models/res_config_setting.py
+++ b/sf_mrs_connect/models/res_config_setting.py
@@ -24,6 +24,8 @@ class ResConfigSettings(models.TransientModel):
_logger.info("同步资源库材料")
self.env['sf.materials.model'].sync_all_materials_model()
_logger.info("同步资源库材料型号")
+ self.env['sf.production.process.category'].sync_all_production_process_category()
+ _logger.info("同步资源库表面工艺类别")
self.env['sf.production.process'].sync_all_production_process()
_logger.info("同步资源库表面工艺")
self.env['sf.processing.technology'].sync_all_processing_technology()
diff --git a/sf_mrs_connect/models/sync_common.py b/sf_mrs_connect/models/sync_common.py
index 6cdd98ba..5d97dbe6 100644
--- a/sf_mrs_connect/models/sync_common.py
+++ b/sf_mrs_connect/models/sync_common.py
@@ -6,6 +6,7 @@ from odoo import models
from odoo.exceptions import ValidationError
import logging
from odoo.addons.sf_base.commons.common import Common
+
_logger = logging.getLogger(__name__)
@@ -162,6 +163,66 @@ class sfMaterialModel(models.Model):
raise ValidationError("认证未通过")
+class sfProductionProcessCategory(models.Model):
+ _inherit = 'sf.production.process.category'
+ _description = '表面工艺类别'
+ url = '/api/production_process_category/list'
+
+ # 定时同步每日表面工艺类别
+ def sync_production_process_category(self):
+ sf_sync_config = self.env['res.config.settings'].get_values()
+ token = sf_sync_config['token']
+ sf_secret_key = sf_sync_config['sf_secret_key']
+ headers = Common.get_headers(self, token, sf_secret_key)
+
+ strUrl = sf_sync_config['sf_url'] + self.url
+ r = requests.post(strUrl, json={}, data=None, headers=headers)
+ r = r.json()
+ result = json.loads(r['result'])
+ if result['status'] == 1:
+ for item in result['production_process_category_yesterday_list']:
+ if item:
+ production_process_category = self.env['sf.production.process.category'].search(
+ [("code", '=', item['code'])])
+ if production_process_category:
+ production_process_category.name = item['name'],
+ production_process_category.code = item['code'],
+ production_process_category.active = item['active']
+ else:
+ self.env['sf.production.process.category'].create({
+ "name": item['name'],
+ "code": item['code'],
+ "active": item['active'],
+ })
+ else:
+ raise ValidationError("认证未通过") # 定时同步表面工艺
+
+ # 同步所有表面工艺类别
+ def sync_all_production_process_category(self):
+ sf_sync_config = self.env['res.config.settings'].get_values()
+ token = sf_sync_config['token']
+ sf_secret_key = sf_sync_config['sf_secret_key']
+ headers = Common.get_headers(self, token, sf_secret_key)
+
+ strUrl = sf_sync_config['sf_url'] + self.url
+ r = requests.post(strUrl, json={}, data=None, headers=headers)
+ r = r.json()
+ result = json.loads(r['result'])
+ if result['status'] == 1:
+ for item in result['production_process_category_all_list']:
+ if item:
+ category = self.env['sf.production.process.category'].search(
+ [("code", '=', item['code'])])
+ if not category:
+ self.env['sf.production.process.category'].create({
+ "name": item['name'],
+ "code": item['code'],
+ "active": item['active'],
+ })
+ else:
+ raise ValidationError("认证未通过")
+
+
class sfProductionProcess(models.Model):
_inherit = 'sf.production.process'
_description = '表面工艺'
@@ -184,21 +245,21 @@ class sfProductionProcess(models.Model):
brand = self.env['sf.production.process'].search(
[("process_encode", '=', item['process_encode'])])
if brand:
- brand.id = item['id'],
brand.name = item['name'],
+ brand.category_id = self.env['sf.production.process.category'].search(
+ [("code", '=', item['category_code'])]).id,
brand.process_encode = item['process_encode'],
brand.remark = item['remark'],
brand.active = item['active'],
brand.remark = item['remark']
else:
self.env['sf.production.process'].create({
- "id": item['id'],
"name": item['name'],
+ "category_id": self.env['sf.production.process.category'].search(
+ [("code", '=', item['category_code'])]).id,
"process_encode": item['process_encode'],
"remark": item['remark'],
"active": item['active'],
- # "tag_ids": item['tag_ids']
-
})
else:
raise ValidationError("认证未通过") # 定时同步表面工艺
@@ -221,8 +282,9 @@ class sfProductionProcess(models.Model):
[("process_encode", '=', item['process_encode'])])
if not brand:
self.env['sf.production.process'].create({
- "id": item['id'],
"name": item['name'],
+ "category_id": self.env['sf.production.process.category'].search(
+ [("code", '=', item['category_code'])]).id,
"process_encode": item['process_encode'],
"remark": item['remark'],
"active": item['active'],
@@ -949,6 +1011,7 @@ class sfProcessingOrder(models.Model):
else:
raise ValidationError("认证未通过")
+
class sfProductionProcessParameter(models.Model):
_inherit = 'sf.production.process.parameter'
_description = '表面工艺可选参数'
@@ -974,13 +1037,13 @@ class sfProductionProcessParameter(models.Model):
brand.name = item['name'],
brand.code = item['code'],
brand.active = item['active'],
- brand.price = item['price'],
+ # brand.price = item['price'],
else:
self.env['sf.production.process.parameter'].create({
"name": item['name'],
"code": item['code'],
"active": item['active'],
- "price" : item['price'],
+ # "price": item['price'],
"process_id": self.env['sf.production.process'].search(
[('process_encode', '=', item['process_id_code'])]).id,
'materials_model_ids': self.env['sf.materials.model'].search(
@@ -1010,7 +1073,7 @@ class sfProductionProcessParameter(models.Model):
self.env['sf.production.process.parameter'].create({
"name": item['name'],
"code": item['code'],
- "price": item['price'],
+ # "price": item['price'],
"active": item['active'],
"process_id": self.env['sf.production.process'].search(
[('process_encode', '=', item['process_id_code'])]).id,
@@ -1019,4 +1082,4 @@ class sfProductionProcessParameter(models.Model):
})
else:
- raise ValidationError("认证未通过")
\ No newline at end of file
+ raise ValidationError("认证未通过")
diff --git a/sf_sale/__manifest__.py b/sf_sale/__manifest__.py
index 51769040..1414f297 100644
--- a/sf_sale/__manifest__.py
+++ b/sf_sale/__manifest__.py
@@ -18,6 +18,7 @@
],
'qweb': [
],
+ 'license': 'LGPL-3',
'installable': True,
'application': False,
'auto_install': False,