新增采购入库时实时注册夹具产品到cloud

This commit is contained in:
jinling.yang
2023-08-04 17:33:21 +08:00
parent 30ad60c2c1
commit aa7e39c28a
4 changed files with 52 additions and 9 deletions

View File

@@ -1,8 +1,4 @@
from odoo import models, fields, api
from odoo.addons.sf_base.commons.common import Common
from odoo.exceptions import ValidationError
import requests
import json
class FixtureMaterial(models.Model):

View File

@@ -1,4 +1,8 @@
from odoo import models, fields, api
from odoo.addons.sf_base.commons.common import Common
from odoo.exceptions import ValidationError,UserError
import requests
import json
class ResProductMo(models.Model):
@@ -152,6 +156,12 @@ class ResProductMo(models.Model):
fixture_through_hole_size = fields.Integer(string="过孔大小[mm]", size=6)
fixture_screw_size = fields.Integer(string="螺牙大小[mm]", size=6)
def _json_apply_machine_tool_type_item_code(self, item):
code_arr = []
for i in item.fixture_apply_machine_tool_type_ids:
code_arr.append(i.code)
return code_arr
def _get_ids(self, param):
type_ids = []
if not param:
@@ -350,6 +360,42 @@ class ResProductMo(models.Model):
item.cutting_tool_standard_speed = False
item.image_1920 = False
# 将采购到的夹具注册到Cloud
def _register_fixture(self):
config = self.env['res.config.settings'].get_values()
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
strurl = config['sf_url'] + self.crea_url
for item in self:
val = {
'factory_token': config['token'],
'name': item.name,
'brand_id': item.brand_id.code,
'materials_type_id': item.materials_type_id.code,
'fixture_material_code': item.fixture_material_id.code,
'fixture_multi_mounting_type_id': item.fixture_multi_mounting_type_id.code,
'fixture_clamping_way': item.fixture_clamping_way,
'fixture_port_type': item.fixture_port_type,
'fixture_clamp_workpiece_length_max': item.fixture_clamp_workpiece_length_max,
'fixture_clamp_workpiece_width_max': item.fixture_clamp_workpiece_width_max,
'fixture_clamp_workpiece_height_max': item.fixture_clamp_workpiece_height_max.id,
'fixture_clamp_workpiece_diameter_max': item.fixture_clamp_workpiece_diameter_max,
'fixture_maximum_carrying_weight': item.fixture_maximum_carrying_weight,
'fixture_maximum_clamping_force': item.fixture_maximum_clamping_force,
'fixture_driving_way': item.fixture_driving_way,
'fixture_apply_machine_tool_type_ids': self._json_apply_machine_tool_type_item_code(item),
'fixture_through_hole_size': item.fixture_through_hole_size,
'fixture_screw_size': item.fixture_screw_size,
}
try:
ret = requests.post(strurl, json={}, data=val, headers=headers)
ret = ret.json()
if ret['status'] == 200:
raise UserError(ret['message'])
else:
raise UserError(ret['message'])
except Exception as e:
raise UserError("注册夹具到云端失败,请联系管理员!")
class ResMrpBomMo(models.Model):
_inherit = 'mrp.bom'

View File

@@ -276,7 +276,8 @@ class StockPicking(models.Model):
if picking_out.state != 'done':
raise UserError(
_('该入库单对应的单号为%s的出库单还未完成,不能进行验证操作!' % picking_out.name))
# 采购单验证(夹具和刀具)
if self.product_id.categ_type in ['刀具', '夹具']:
res = super().button_validate()
return res

View File

@@ -61,12 +61,12 @@ class ResConfigSettings(models.TransientModel):
_logger.info("同步夹具物料")
self.env['sf.multi_mounting.type'].sync_all_multi_mounting_type()
_logger.info("同步联装类型")
self.env['sf.fixture.model'].sync_all_fixture_model()
_logger.info("同步夹具型号")
# self.env['sf.fixture.model'].sync_all_fixture_model()
# _logger.info("同步夹具型号")
self.env['sf.functional.fixture.type'].sync_all_functional_fixture_type()
_logger.info("同步功能夹具类型")
self.env['sf.functional.fixture'].sync_all_functional_fixture()
_logger.info("同步功能夹具")
# self.env['sf.functional.fixture'].sync_all_functional_fixture()
# _logger.info("同步功能夹具")
except Exception as e:
_logger.info("捕获错误信息:%s" % e)
raise ValidationError("数据错误导致同步失败,请联系管理员")