如何通过odoo11中的many2many字段关系更新状态和写入域

问题描述

我的模块是为制造mrp模块而定制的 我想为资源内容名称、resource_state、workcenter_id)添加新模型,并根据 workcenter_id 和 resource_state(domain) 在工作订单中添加资源列表 并根据工单状态更新 resource_state 我尝试更新和写入函数和 onchange 但是 我希望你能帮助我 python

from datetime import datetime
from typing import ByteString,DefaultDict
from odoo import models,fields,api,exceptions,_
from odoo.exceptions import ValidationError,UserError

""" Defines manufactureing resource """

class MrpWorkcenter(models.Model):
    _inherit = 'mrp.workcenter'
    _description = 'Work Center'
    _rec_name = 'name'


    name =fields.Char(string="Nmae")
   
  
class MrpResource(models.Model):
    _name = "mrp.resource"
    _description = "Mrp Resource"

 
    name = fields.Char( string="Name",required=True)
    resource_state = fields.Selection([
        ('available','Available'),('unavailable','Unavailable')],string='Status')
    work_id = fields.Many2one('mrp.workorder',ondelete="cascade",string="work order",required=True)
    workcenter_id = fields.Many2one('mrp.workcenter',string="work center",store=True)
   
    


class ManufacurWorkorder(models.Model):
    _inherit = 'mrp.workorder'
    _description = 'Work Order'
   

    workcenter_id = fields.Many2one(
        'mrp.workcenter','Work Center',required=True,states={'done': [('readonly',True)],'cancel': [('readonly',True)]},store=True)
    resource_ids = fields.Many2many('mrp.resource','mrp_resource_rel','work_id','mrp_resource_id',string="List Of Resource",store=True)
    workorder_id = fields.Many2one('mrp.workorder',string="work order")
    resource_state = fields.Selection([
        ('available',string='Status')

xml

<?xml version="1.0" encoding="utf-8"?>
<odoo>
  <data>

    <!-- Created by Mehad Mregany at 01022021 10:30 am -->
     <!-- Edited  by Mehad Mregany at 07022021 08:30 am -->

                 <!-- Manufacture Resource -->


<record id="mrp_resource_form_id" model="ir.ui.view">
    <field name="name">mrp.resource.form</field>
    <field name="model">mrp.resource</field>
    <field name="arch" type="xml">
     <form string="Resource">
<sheet>
    <group>
        <field name="name"/>
        <field name="resource_state" default="available"/>
        <field name="workcenter_id"/>
    </group>
</sheet>
     </form>
    </field>
</record>


<record id="mrp_resource_tree_id" model="ir.ui.view">
          <field name="name">mrp.resource.tree</field>
          <field name="model">mrp.resource</field>
          <field name="arch" type="xml">
              <tree string="Resource">
                  <field name="name"/>
                  <field name="resource_state"/>
                  <field name="workcenter_id"/>
                </tree>
          </field>
</record>


<record id="mrp_resource_action" model="ir.actions.act_window">
    <field name="name">Resource</field>
    <field name="type">ir.actions.act_window</field>
    <field name="res_model">mrp.resource</field>
    <field name="view_type">form</field>
    <field name="view_mode">tree,form</field>
</record>


<menuitem action="mrp_resource_action"
id="menu_mrp_resource_action"
parent="mrp.menu_mrp_bom"
sequence="6"/>
 

 
<record id="manufacture_resource_workorder_form_id" model="ir.ui.view">
    <field name="name">mrp.workorder.form</field>
    <field name="model">mrp.workorder</field>
    <field name="inherit_id" ref="mrp.mrp_production_workcenter_form_view_inherit"/>
    <field name="arch" type="xml">
        <xpath expr="//field[@name='product_id']" position="after">
            <field name="workcenter_id" readonly="True"></field>
        </xpath>
    <notebook position="inside">
     <page string= "List Of Resource">
    <field name="resource_ids" domain="[('resource_state','=','available')]">
        <tree string="Resources" editable="bottom">
            <field name="name" />
            <field name="resource_state"/>
            <field name="workcenter_id"/>
            <field name="work_id" invisible="1"/>
           
        </tree>
         </field>
     </page>
    </notebook>
    </field>
</record>

  </data>
</odoo>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)