Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化

This commit is contained in:
mgw
2024-03-18 08:51:30 +08:00
8 changed files with 64 additions and 94 deletions

View File

@@ -61,10 +61,10 @@ class MrsMaterialModel(models.Model):
supplier_ids = fields.One2many('sf.supplier.sort', 'materials_model_id', string='供应商')
active = fields.Boolean('有效', default=True)
@api.constrains('supplier_ids')
@api.onchange('gain_way')
def _check_gain_way(self):
if not self.gain_way:
raise UserError("输入获取方式")
raise UserError("选择获取方式")
if self.gain_way in ['外协', '采购']:
if not self.supplier_ids:
raise UserError("请添加供应商")

View File

@@ -1,38 +1,39 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<!--表面工艺可选参数-->
<record model="ir.ui.view" id="mrs_production_process_parameter_tree">
<!--表面工艺可选参数-->
<record model="ir.ui.view" id="mrs_production_process_parameter_tree">
<field name="model">sf.production.process.parameter</field>
<field name="arch" type="xml">
<tree string="表面工艺可选参数" delete="0">
<tree string="表面工艺可选参数" create="0" delete="0">
<field name="code"/>
<field name="name"/>
<field name="gain_way"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="mrs_production_process_parameter_form">
<record model="ir.ui.view" id="mrs_production_process_parameter_form">
<field name="model">sf.production.process.parameter</field>
<field name="arch" type="xml">
<form string="表面工艺可选参数" edit="0" delete="0">
<form string="表面工艺可选参数" create="0" delete="0">
<sheet>
<div class="oe_title">
<h1>
<field name="name" required="1" placeholder="名称" />
<field name="name" required="1" placeholder="名称"/>
</h1>
</div>
<group>
<group>
<field name="code" readonly="1"/>
<field name="process_id" readonly="1"/>
<field name="gain_way" />
</group>
<group>
<field name="process_id" required="1"/>
</group>
</group>
<notebook>
<page string="适用材料">
<field name="materials_model_ids"></field>
<field name="materials_model_ids" readonly="1"></field>
</page>
</notebook>
</sheet>
@@ -40,7 +41,7 @@
</field>
</record>
<record model="ir.ui.view" id="search_mrs_production_process_parameter_view">
<record model="ir.ui.view" id="search_mrs_production_process_parameter_view">
<field name="name">search.mrs.production.process.parameter</field>
<field name="model">sf.production.process.parameter</field>
<field name="arch" type="xml">
@@ -74,26 +75,26 @@
<!-- </form>-->
<!-- </field>-->
<!-- </record>-->
<!-- <record model="ir.ui.view" id="sf_processing_technology_tree">-->
<!-- <field name="model">sf.processing.technology</field>-->
<!-- <field name="arch" type="xml">-->
<!-- <tree string="加工工艺" create="0" edit="0" delete="1">-->
<!-- <field name="code"/>-->
<!-- <field name="name"/>-->
<!-- </tree>-->
<!-- </field>-->
<!-- </record>-->
<!-- <record model="ir.ui.view" id="search_sf_processing_technology_view">-->
<!-- <field name="name">search.sf.processing.technology.type</field>-->
<!-- <field name="model">sf.processing.technology</field>-->
<!-- <field name="arch" type="xml">-->
<!-- <search>-->
<!-- <field name="name" string="名称搜索" filter_domain="[('name','ilike',self)]"/>-->
<!-- <field name="code" string="编码搜索" filter_domain="[('code','ilike',self)]"/>-->
<!-- <filter name="filter_active" string="已归档" domain="[('active','=',False)]"/>-->
<!-- </search>-->
<!-- </field>-->
<!-- </record>-->
<!-- <record model="ir.ui.view" id="sf_processing_technology_tree">-->
<!-- <field name="model">sf.processing.technology</field>-->
<!-- <field name="arch" type="xml">-->
<!-- <tree string="加工工艺" create="0" edit="0" delete="1">-->
<!-- <field name="code"/>-->
<!-- <field name="name"/>-->
<!-- </tree>-->
<!-- </field>-->
<!-- </record>-->
<!-- <record model="ir.ui.view" id="search_sf_processing_technology_view">-->
<!-- <field name="name">search.sf.processing.technology.type</field>-->
<!-- <field name="model">sf.processing.technology</field>-->
<!-- <field name="arch" type="xml">-->
<!-- <search>-->
<!-- <field name="name" string="名称搜索" filter_domain="[('name','ilike',self)]"/>-->
<!-- <field name="code" string="编码搜索" filter_domain="[('code','ilike',self)]"/>-->
<!-- <filter name="filter_active" string="已归档" domain="[('active','=',False)]"/>-->
<!-- </search>-->
<!-- </field>-->
<!-- </record>-->
<!--表面工艺类别-->
<record model="ir.ui.view" id="sf_production_process_category_form">
@@ -283,7 +284,7 @@
<record model="ir.ui.view" id="sf_materials_model_tree">
<field name="model">sf.materials.model</field>
<field name="arch" type="xml">
<tree string="材料型号" delete="0">
<tree string="材料型号" delete="0">
<field name="materials_no"/>
<field name="materials_code"/>
<field name="name"/>
@@ -392,12 +393,12 @@
<field name="res_model">sf.materials.model</field>
<field name="view_mode">tree,form</field>
</record>
<!-- <record id="sf_processing_technology" model="ir.actions.act_window">-->
<!-- <field name="name">加工工艺</field>-->
<!-- <field name="type">ir.actions.act_window</field>-->
<!-- <field name="res_model">sf.processing.technology</field>-->
<!-- <field name="view_mode">tree</field>-->
<!-- </record>-->
<!-- <record id="sf_processing_technology" model="ir.actions.act_window">-->
<!-- <field name="name">加工工艺</field>-->
<!-- <field name="type">ir.actions.act_window</field>-->
<!-- <field name="res_model">sf.processing.technology</field>-->
<!-- <field name="view_mode">tree</field>-->
<!-- </record>-->
<record id="sf_production_process_category" model="ir.actions.act_window">
<field name="name">表面工艺类别</field>

View File

@@ -62,7 +62,7 @@ class Sf_Bf_Connect(http.Controller):
request.env.ref("base.user_admin")).bom_create_line(
self_machining_embryo)
if not self_machining_bom_line:
res['status'] = 2
res['status'] = -2
res['message'] = '该订单模型的材料型号在您分配的工厂里暂未有原材料,请先配置再进行分配'
request.cr.rollback()
return json.JSONEncoder().encode(res)
@@ -79,6 +79,11 @@ class Sf_Bf_Connect(http.Controller):
order_id,
'subcontract',
i)
if outsource_embryo == -3:
res['status'] = -3
res['message'] = '该订单模型的材料型号在您分配的工厂里暂未设置获取方式和供应商,请先配置再进行分配'
request.cr.rollback()
return json.JSONEncoder().encode(res)
# 创建坯料的bom
outsource_bom = request.env['mrp.bom'].with_user(request.env.ref("base.user_admin")).bom_create(
outsource_embryo,
@@ -87,7 +92,7 @@ class Sf_Bf_Connect(http.Controller):
outsource_bom_line = outsource_bom.with_user(
request.env.ref("base.user_admin")).bom_create_line(outsource_embryo)
if not outsource_bom_line:
res['status'] = 2
res['status'] = -2
res['message'] = '该订单模型的材料型号在您分配的工厂里暂未有原材料,请先配置再进行分配'
request.cr.rollback()
return json.JSONEncoder().encode(res)
@@ -101,6 +106,11 @@ class Sf_Bf_Connect(http.Controller):
item,
order_id,
'purchase', i)
if purchase_embryo == -3:
res['status'] = -3
res['message'] = '该订单模型的材料型号在您分配的工厂里暂未设置获取方式和供应商,请先配置再进行分配'
request.cr.rollback()
return json.JSONEncoder().encode(res)
# 产品配置bom
product_bom_purchase = request.env['mrp.bom'].with_user(
request.env.ref("base.user_admin")).bom_create(product, 'normal', False)

View File

@@ -100,7 +100,7 @@ class ResMrpBomMo(models.Model):
if rate_of_waste <= 20:
return embryo_has
else:
return
return None
# 查bom的原材料
def get_raw_bom(self, product):

View File

@@ -678,11 +678,14 @@ class ResProductMo(models.Model):
# 外协和采购生成的坯料需要根据材料型号绑定供应商
if route_type == 'subcontract' or route_type == 'purchase':
no_bom_copy_product_id.purchase_ok = True
no_bom_copy_product_id.seller_ids = [
(0, 0, {'partner_id': supplier.partner_id.id, 'delay': 1.0})]
if route_type == 'subcontract':
partner = self.env['res.partner'].search([('id', '=', supplier.partner_id.id)])
partner.is_subcontractor = True
if supplier:
no_bom_copy_product_id.seller_ids = [
(0, 0, {'partner_id': supplier.partner_id.id, 'delay': 1.0})]
if route_type == 'subcontract':
partner = self.env['res.partner'].search([('id', '=', supplier.partner_id.id)])
partner.is_subcontractor = True
else:
return -3
no_bom_copy_product_id.write(vals)
return no_bom_copy_product_id

View File

@@ -22,6 +22,8 @@ access_maintenance_equipment_tool_manager,maintenance_equipment_tool,model_maint
access_maintenance_equipment_tool_equipment_manager,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_maintenance.sf_group_equipment_user,1,1,1,0
access_mrp_production_group_sf_mrp_user,mrp_production,model_mrp_production,sf_base.group_sf_mrp_user,1,0,0,0
access_mrp_production_manager,mrp_production,model_mrp_production,sf_base.group_sf_mrp_manager,1,1,1,0
access_mrp_production_group_quality,mrp_production_group_quality,model_mrp_production,sf_base.group_quality,1,0,0,0
access_mrp_production_group_quality_director,mrp_production_group_quality_director,model_mrp_production,sf_base.group_quality_director,1,0,0,0
access_mrp_workorder_group_sf_mrp_user,mrp_workorder,model_mrp_workorder,sf_base.group_sf_mrp_user,1,0,0,0
access_mrp_workorder_manager,mrp_workorder,model_mrp_workorder,sf_base.group_sf_mrp_manager,1,1,1,0
access_mrp_workcenter_group_sf_mrp_user,mrp_workcenter,model_mrp_workcenter,sf_base.group_sf_mrp_user,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
22 access_maintenance_equipment_tool_equipment_manager maintenance_equipment_tool model_maintenance_equipment_tool sf_maintenance.sf_group_equipment_user 1 1 1 0
23 access_mrp_production_group_sf_mrp_user mrp_production model_mrp_production sf_base.group_sf_mrp_user 1 0 0 0
24 access_mrp_production_manager mrp_production model_mrp_production sf_base.group_sf_mrp_manager 1 1 1 0
25 access_mrp_production_group_quality mrp_production_group_quality model_mrp_production sf_base.group_quality 1 0 0 0
26 access_mrp_production_group_quality_director mrp_production_group_quality_director model_mrp_production sf_base.group_quality_director 1 0 0 0
27 access_mrp_workorder_group_sf_mrp_user mrp_workorder model_mrp_workorder sf_base.group_sf_mrp_user 1 0 0 0
28 access_mrp_workorder_manager mrp_workorder model_mrp_workorder sf_base.group_sf_mrp_manager 1 1 1 0
29 access_mrp_workcenter_group_sf_mrp_user mrp_workcenter model_mrp_workcenter sf_base.group_sf_mrp_user 1 0 0 0

View File

@@ -11,26 +11,3 @@ class SfQualityPoint(models.Model):
"('product', 'consu')), '|', ('company_id', '=', False), ('company_id', '=', company_id)]", help=
"Quality Point will apply to every selected Products.")
check_state = fields.Selection([
('enable', '启用'),
('close', '关闭')
], string='审核状态', default='close')
# 审核
def action_check(self):
self.check_state = 'enable'
# picking_type_ids = fields.Many2many(
# 'stock.picking.type', string='执行节点', required=True, check_company=True)
class ResQualityAlertTeam(models.Model):
_inherit = 'quality.alert.team'
check_state = fields.Selection([
('enable', '启用'),
('close', '关闭')
], string='审核状态', default='close')
# 审核
def action_check(self):
self.check_state = 'enable'

View File

@@ -39,13 +39,6 @@
<field name="model">quality.point</field>
<field name="inherit_id" ref="quality.quality_point_view_form"/>
<field name="arch" type="xml">
<xpath expr="//header" position="inside">
<field name="check_state" invisible="1"/>
<button name="action_check" string="审核" type="object"
attrs="{'invisible': [('check_state','=', 'enable')]}"
groups="sf_base.group_quality_director"
class="oe_highlight"/>
</xpath>
<!-- <xpath expr="//sheet//group//group//field[@name='title']" position="replace"> -->
<!-- <field name="title" class="custom_required" required="1"/> -->
<!-- </xpath> -->
@@ -67,26 +60,10 @@
<field name="arch" type="xml">
<xpath expr="//field[@name='measure_on']" position="attributes">
<attribute name="class">custom_required</attribute>
</xpath>
<xpath expr="//field[@name='measure_frequency_type']" position="attributes">
<attribute name="class">custom_required</attribute>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="quality_alert_team_view_form_inherit_sf">
<field name="name">quality.alert.team.form.inherit.sf</field>
<field name="model">quality.alert.team</field>
<field name="inherit_id" ref="quality_control.quality_alert_team_view_form"/>
<field name="arch" type="xml">
<xpath expr="//header" position="inside">
<field name="check_state" invisible="1"/>
<button name="action_check" string="审核" type="object"
attrs="{'invisible': [('check_state','=', 'enable')]}"
groups="sf_base.group_quality_director"
class="oe_highlight"/>
</xpath>
</field>
</record>
</odoo>