# -*- coding: utf-8 -*- import logging from odoo import fields, models import requests from odoo.addons.sf_base.commons.common import Common from urllib.parse import urlencode _logger = logging.getLogger(__name__) # 材料 class MrsProductionMaterials(models.Model): _name = 'sf.production.materials' _description = '材料' materials_no = fields.Char("编码") name = fields.Char('名称') partner_ids = fields.Many2many('res.partner', 'materials_ids', '加工工厂') materials_model_ids = fields.One2many('sf.materials.model', 'materials_id', '材料型号') remark = fields.Text("备注") active = fields.Boolean('有效', default=True) # def open_url_action(self): # base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') # # url = 'http://192.168.50.202:8080/api' # url = 'https://bfw.jikimo.com/' # # data = { # # 'key' : 'value' # # } # # response = requests.get(url) # response.raise_for_status() # return { # 'type': 'ir.actions.act_url', # 'url': response.url, # 'target': 'new' # } def open_url_action(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) url = 'http://192.168.50.127:8081' params = { 'user_id': self._uid } url_params = urlencode(params) return { 'type': 'ir.actions.act_url', 'url': url + '?' + url_params, # 'url': url, 'target': 'new' } # 材料型号 class MrsMaterialModel(models.Model): _name = 'sf.materials.model' _description = '材料型号' materials_no = fields.Char("编码") materials_num = fields.Char("编码号") name = fields.Char('型号名') need_h = fields.Boolean("热处理", default="false") mf_materia_post = fields.Char("热处理后密度") density = fields.Float("密度(kg/m³)") materials_id = fields.Many2one('sf.production.materials', "材料名") tensile_strength = fields.Char("拉伸强度(n/mm²)") standards_id = fields.Many2one('sf.international.standards', '制造标准') alloy_code = fields.Char('合金牌号') price = fields.Float('单价/kg') apply = fields.Many2many('material.apply', string='材料应用') materials_code = fields.Char('材料代号') hardness = fields.Float("硬度(hrc)") rough_machining = fields.Float("粗加工Vc(m/min)") finish_machining = fields.Float("精加工Vc(m/min)") remark = fields.Text("备注") gain_way = fields.Selection( [("自加工", "自加工"), ("外协", "外协"), ("采购", "采购")], default="", string="获取方式") supplier_ids = fields.One2many('sf.supplier.sort', 'materials_model_id', string='供应商') 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' _description = '表面工艺' code = fields.Char("编码") name = fields.Char('名称') remark = fields.Text("备注") processing_order_ids = fields.One2many('sf.processing.order', 'production_process_id', string='工序') 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): _name = 'sf.processing.technology' _description = '加工工艺' name = fields.Char('名称', index=True) remark = fields.Text('备注', index=True) code = fields.Char("编码") processing_order_ids = fields.Many2many('sf.processing.order', 'sf_associated_processes', index=True, string='工序') active = fields.Boolean('有效', default=True) class MrsProcessingOrder(models.Model): _name = 'sf.processing.order' _description = '工序' sequence = fields.Integer('Sequence') processing_technology_ids = fields.Many2many('sf.processing.technology', 'sf_associated_processes', index=True, string='加工工艺') production_process_id = fields.Many2one('sf.production.process', string="表面工艺") class SupplierSort(models.Model): _name = 'sf.supplier.sort' _description = '供应商排序' sequence = fields.Integer('Sequence') partner_id = fields.Many2one('res.partner', domain="[('is_company', '=', True),('supplier_rank', '!=', 0)]") materials_model_id = fields.Many2one('sf.materials.model') _sql_constraints = [ ('supplier_sort_uniq', 'unique (partner_id,materials_model_id)', '排序不能重复!') ] class MrsProductionProcessParameter(models.Model): _name = 'sf.production.process.parameter' _description = '可选参数' # _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='适用材料') 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 def _json_production_process_item_code(self, item): code_arr = [] for i in item.parameter_ids: code_arr.append(i.code) return code_arr class ModelInternationalStandards(models.Model): _name = 'sf.international.standards' _description = '制造标准' code = fields.Char('编码') name = fields.Char('名称') active = fields.Boolean('有效', default=True) class MrsMaterialApply(models.Model): _name = 'material.apply' _description = '材料应用' name = fields.Char('名称', default=True) active = fields.Boolean('有效', default=True)