回退代码

This commit is contained in:
胡尧
2025-05-15 10:36:38 +08:00
parent 9c4d545915
commit 5446ef18e2
2 changed files with 92 additions and 92 deletions

View File

@@ -1,16 +1,16 @@
import logging # import logging
from odoo import fields, models, api # from odoo import fields, models, api
from odoo.exceptions import UserError # from odoo.exceptions import UserError
from odoo.tools import str2bool # from odoo.tools import str2bool
class ResMrpRoutingWorkcenter(models.Model): # class ResMrpRoutingWorkcenter(models.Model):
_inherit = 'mrp.routing.workcenter' # _inherit = 'mrp.routing.workcenter'
def init(self): # def init(self):
super(ResMrpRoutingWorkcenter, self).init() # super(ResMrpRoutingWorkcenter, self).init()
# 在模块初始化时触发计算字段的更新 # # 在模块初始化时触发计算字段的更新
records = self.search([]) # records = self.search([])
if str2bool(self.env['ir.config_parameter'].get_param('sf.production.process.parameter.is_init_workcenter',default='False')): # if str2bool(self.env['ir.config_parameter'].get_param('sf.production.process.parameter.is_init_workcenter',default='False')):
return # return
records.optional_process_parameters_date() # records.optional_process_parameters_date()
self.env['ir.config_parameter'].set_param('sf.production.process.parameter.is_init_workcenter', True) # self.env['ir.config_parameter'].set_param('sf.production.process.parameter.is_init_workcenter', True)

View File

@@ -1,85 +1,85 @@
# -*- coding: utf-8 -*- # # -*- coding: utf-8 -*-
import logging # import logging
from odoo import fields, models, api # from odoo import fields, models, api
from odoo.exceptions import UserError # from odoo.exceptions import UserError
from odoo.tools import str2bool # from odoo.tools import str2bool
class SfProductionProcessParameter(models.Model): # class SfProductionProcessParameter(models.Model):
_inherit = 'sf.production.process.parameter' # _inherit = 'sf.production.process.parameter'
@api.model # @api.model
def create(self, vals): # def create(self, vals):
# if vals.get('code', '/') == '/' or vals.get('code', '/') is False: # # if vals.get('code', '/') == '/' or vals.get('code', '/') is False:
# vals['code'] = '101'+self.routing_id.code +self.env['ir.sequence'].next_by_code('sf.production.process.parameter') # # vals['code'] = '101'+self.routing_id.code +self.env['ir.sequence'].next_by_code('sf.production.process.parameter')
if vals.get('routing_id'): # if vals.get('routing_id'):
# vals['gain_way'] = '外协' # # vals['gain_way'] = '外协'
routing_id = self.env['mrp.routing.workcenter'].browse(vals.get('routing_id')) # routing_id = self.env['mrp.routing.workcenter'].browse(vals.get('routing_id'))
if routing_id.surface_technics_id and not vals.get('process_id'): # if routing_id.surface_technics_id and not vals.get('process_id'):
vals['process_id'] = routing_id.surface_technics_id.id # vals['process_id'] = routing_id.surface_technics_id.id
if vals.get('code', '/') == '/' or vals.get('code', '/') is False: # if vals.get('code', '/') == '/' or vals.get('code', '/') is False:
vals['code'] = '101' + routing_id.code + self.env['ir.sequence'].next_by_code( # vals['code'] = '101' + routing_id.code + self.env['ir.sequence'].next_by_code(
'sf.production.process.parameter') # 'sf.production.process.parameter')
obj = super(SfProductionProcessParameter, self).create(vals) # obj = super(SfProductionProcessParameter, self).create(vals)
return obj # return obj
def create_service_product(self): # def create_service_product(self):
service_categ = self.env.ref( # service_categ = self.env.ref(
'sf_dlm.product_category_surface_technics_sf').sudo() # 'sf_dlm.product_category_surface_technics_sf').sudo()
product_name = f"{self.process_id.name}_{self.name}" # product_name = f"{self.process_id.name}_{self.name}"
product_id = self.env['product.template'].search( # product_id = self.env['product.template'].search(
[("name", '=', product_name)]) # [("name", '=', product_name)])
if product_id: # if product_id:
product_id.server_product_process_parameters_id = self.id # product_id.server_product_process_parameters_id = self.id
else: # else:
res_partner = self.env['res.partner'].search([('name','=','湖南傲派自动化设备有限公司')]) # res_partner = self.env['res.partner'].search([('name','=','湖南傲派自动化设备有限公司')])
self.env['product.template'].create({ # self.env['product.template'].create({
'detailed_type': 'service', # 'detailed_type': 'service',
'name': product_name, # 'name': product_name,
'invoice_policy': 'delivery', # 'invoice_policy': 'delivery',
'categ_id': service_categ.id, # 'categ_id': service_categ.id,
'description': f"基于{self.name}创建的服务产品", # 'description': f"基于{self.name}创建的服务产品",
'sale_ok': True, # 可销售 # 'sale_ok': True, # 可销售
'purchase_ok': True, # 可采购 # 'purchase_ok': True, # 可采购
'server_product_process_parameters_id': self.id, # 'server_product_process_parameters_id': self.id,
'seller_ids': [(0, 0, { # 'seller_ids': [(0, 0, {
# 'delay': 1, # # 'delay': 1,
'partner_id': res_partner.id, # 'partner_id': res_partner.id,
'price': 1, })], # 'price': 1, })],
}) # })
def create_work_center(self): # def create_work_center(self):
production_process_parameter = self # production_process_parameter = self
if not production_process_parameter.process_id: # if not production_process_parameter.process_id:
return # return
if not production_process_parameter.routing_id: # if not production_process_parameter.routing_id:
workcenter_id = self.env['mrp.routing.workcenter'].search( # workcenter_id = self.env['mrp.routing.workcenter'].search(
[("surface_technics_id", '=', production_process_parameter.process_id.id)]) # [("surface_technics_id", '=', production_process_parameter.process_id.id)])
if not workcenter_id: # if not workcenter_id:
outsourcing_work_center = self.env['mrp.workcenter'].search( # outsourcing_work_center = self.env['mrp.workcenter'].search(
[("name", '=', '外协工作中心')]) # [("name", '=', '外协工作中心')])
routing_id = self.env['mrp.routing.workcenter'].create({ # routing_id = self.env['mrp.routing.workcenter'].create({
'workcenter_ids': [(6, 0, outsourcing_work_center.ids)], # 'workcenter_ids': [(6, 0, outsourcing_work_center.ids)],
'routing_tag': 'special', # 'routing_tag': 'special',
'routing_type': '表面工艺', # 'routing_type': '表面工艺',
'is_outsource': True, # 'is_outsource': True,
'surface_technics_id': production_process_parameter.process_id.id, # 'surface_technics_id': production_process_parameter.process_id.id,
'name': production_process_parameter.process_id.name, # 'name': production_process_parameter.process_id.name,
}) # })
production_process_parameter.routing_id = routing_id.id # production_process_parameter.routing_id = routing_id.id
else: # else:
production_process_parameter.routing_id = workcenter_id.id # production_process_parameter.routing_id = workcenter_id.id
def init(self): # def init(self):
super(SfProductionProcessParameter, self).init() # super(SfProductionProcessParameter, self).init()
# 在模块初始化时触发计算字段的更新 # # 在模块初始化时触发计算字段的更新
records = self.search([]) # records = self.search([])
if str2bool(self.env['ir.config_parameter'].get_param('sf.production.process.parameter.is_init_process', # if str2bool(self.env['ir.config_parameter'].get_param('sf.production.process.parameter.is_init_process',
default='False')): # default='False')):
return # return
for record in records: # for record in records:
if not record.outsourced_service_products: # if not record.outsourced_service_products:
record.create_service_product() # record.create_service_product()
record.create_work_center() # record.create_work_center()
self.env['ir.config_parameter'].set_param('sf.production.process.parameter.is_init_process', True) # self.env['ir.config_parameter'].set_param('sf.production.process.parameter.is_init_process', True)