How to get domain filter for following situation in odoo?

落爺英雄遲暮 提交于 2019-12-24 17:19:00

问题


The following code is for inspection.py file in configuration module(Own module).

class asset1_inspection(osv.Model):
    _name = "asset1.inspection"
    _rec_name="inspection_name"

    MAINTENANCE_SELECTION=[
        ('0','Daily'),
        ('1','Weekly'),
        ('2','Fortnight'),
        ('3','Bi-Monthly'),
        ('4','Quarterly'),
        ('5','Half-Yearly'),
        ('6','Yearly'),
        ('7','Bi-Yearly'),

    ]
    MAINTENANCE_TYPE=[
        ('0', 'Corrective'),
        ('1', 'Preventive'),
        ('2', 'Predictive'),

    ]
    SHOUTDOWN_SELECTION=[
        ('0','Yes'),
        ('1','No'),

    ]
    _columns = {
        'asset_catg_id' : fields.many2one('asset.catg', 'Asset Catg Selection',select=True, required=True),
            'area_id' : fields.many2one('asset.name', 'Asset Name Selection', domain="[('asset_catg_id', '=', asset_catg_id)]", select=True, required=True), 
        'assetmodelid_add' : fields.many2one('agile.portfolio1','Asset Model Code',domain="[('area_id', '=', area_id)]", select=True, required=True),
        'inspection_name':fields.char('Inspection Type',),
        'freq_sel':fields.selection(MAINTENANCE_SELECTION,'Frequency'),

        'shut_down':fields.selection(SHOUTDOWN_SELECTION,'Shut Down'),
        'main_type':fields.selection(MAINTENANCE_TYPE,'Maintenance Type',),
        'insp_id1' : fields.one2many('inspec1.grid','insp_id','BoM',),
        'msr_insp' : fields.one2many('results.measure','insp_msr','Inspection Measure',),
        'msr_insp1' : fields.one2many('results.attr','insp_msr1','Inspection Attr',),

        #'asset_type': fields.many2one('asset.cat','Asset Categ'),
        #'asset_part_id': fields.many2one('ainspcat_name','Asset Cat',)

    }

asset1_inspection()

The next code is for calendar.event.py inherited module.

class calendar_event(osv.osv):

    _inherit = "calendar.event"
    _rec_name = 'number'
    STATE_SELECTION = [
        ('1', 'Corrective'),
        ('2', 'Preventive'),
        ('3', 'Predictive'),
        ]

    _columns = {
            'number' : fields.char('Calendar Inspection ID',readonly=1),
            'tags' : fields.selection(STATE_SELECTION, 'Tags',),
            'user_id': fields.many2one('res.users','res_users_rel','Assigned', track_visibility='onchange',),

            'company_id11': fields.many2one('res.company', 'Company', required=True),


            'asset_catg_id' : fields.many2one('asset.catg','Asset Catg Selection',),


            'assetmodelid_add' : fields.many2one('agile.portfolio1','Asset Model Code',),
            'folio_num1' : fields.many2one('asset.asset','Folio Num',),


            'inspection_name' : fields.many2many('asset1.inspection','asset1_inspection_rel','super_id','asset1_inspection_id','Inspection Type'),

            }

The following code is asset.py from asset inherited module.

class asset_asset(osv.osv):
    _inherit = "asset.asset"
    #_name = "asset_asset"
    _rec_name= "folio_num"
    #_rec_name = "assetmodelid_add"
    CRITICALITY_SELECTION = [
        ('0', 'General'),
        ('1', 'Important'),
        ('2', 'Very important'),
        ('3', 'Critical')
    ]
    _columns = {
        'name': fields.char('Asset Name', size=64),
        'company_id1': fields.many2one('res.company', 'Substation', required=True),
        #'place1': fields.many2one('asset.parentlocation', 'Location'),
        'asset_catg_id' : fields.many2one('asset.catg', 'Asset Catg Selection',select=True, required=True),
            'area_id' : fields.many2one('asset.name', 'Asset Name Selection', domain="[('asset_catg_id', '=', asset_catg_id)]", select=True, required=True),
        'assetmodelid_add' : fields.many2one('agile.portfolio1','Asset Model Code',domain="[('area_id', '=', area_id)]",),
        'user_id': fields.many2one('res.users', 'Assigned to', track_visibility='onchange'),
        'criticality': fields.selection(CRITICALITY_SELECTION, 'Criticality'),
            'active': fields.boolean('Active'),
        'folio_num' : fields.char('Folio No',),
        'asse_line':fields.one2many('asset.line','emp_id','Name Plate'),
        'asse_line2':fields.one2many('asset.part','emp_id1','Parts'),
               #'assed_modelid':fields.many2one('agile.portfolio1','Asset Model ID',select=True, required=True),
        'quantity': fields.char('Quantity',size=64),
        'uom': fields.char('Uinit of Measure',size=64),
        'model_no' : fields.char('Model', size=64),

        #'asset_id':fields.many2one('agile.portfolio','Asset ID'),

    }

The following code is at feedback.py in feedback module(own module)

class feedback_form(osv.Model):
    _name = 'feedback.form'

    _columns = {
        'company_id111': fields.many2one('res.company', 'Substation', required=True),

        'folionum' : fields.many2one('calendar.event','Maintenance ID',),
        'folio_number' : fields.many2one('asset.asset','Folio number',),


        'frequency' : fields.char('Frequency'),
        'shutdown' : fields.char('Shut Down'),


        'insp_rslt' : fields.one2many('feedback.tree','insp_rsltts','Inspection Result',),

    }

    def get_detail_emp(self, cr, uid, ids, folionum, context=None):
        val = {}
            res = []
            if folionum:
                    for mom in self.pool.get('calendar.event').browse(cr,uid,folionum,context=context):
                        val = {
                                    'inspec_type' : mom.inspection_name,

                                 }
                        res.append(val)

            return {'value': val} 


    def onchange_insp(self, cr, uid, ids, folionum,context=None):
        dids = []
        res = {}
        for record in self.pool.get('calendar.event').browse(cr, uid, folionum, context=context):
            dids = [x.id for x in record.inspection_name]
        dids1 = []
        for record in self.pool.get('calendar.event').browse(cr, uid, folionum, context=context):
            dids1 = [x.id for x in record.folio_num1]
        res.update({'inspec_type':[('id','in',dids)]})
        res.update({'folio_number':[('id','in',dids1)]})
        return {'domain':res}


feedback_form()

class feedback_tree(osv.Model):
    _name = 'feedback.tree'

    _columns = {

        'inspec_type' : fields.many2one('asset1.inspection','Inspection Type',),
        'valuess' : fields.char('Values/Results'),
        'insp_rsltts': fields.many2one('feedback.form','Result Id'),
        'insp_msr1' : fields.many2one('results.measure','Result',),
    }


    def onchange_measure(self, cr, uid, ids, inspec_type, context=None):
        dids = []
        for record in self.pool.get('asset1.inspection').browse(cr, uid, inspec_type, context=context):
            dids = [x.id for x in record.msr_insp]
        return {'domain':{'insp_msr1':[('id','in',dids)]}}

feedback_tree()

My reqirement is I will create inspection at inspection.py module with asset_model_id. Then I will create Asset (using asset.py) with folio number ,asset model code. I will schedule task at calendar.event and 'number'(auto_increment) and save it. The final case is at feedback module I will select that 'folionum' ('number'(auto_increment)) and 'folio_number' . After selection folio number in grid view or tree view I should get only those Inspection name . In my case it is not getting **'inspec_type' : fields.many2one('asset1.inspection','Inspection Type',), this is not working because it is at other class . How to get out of this ?**

来源:https://stackoverflow.com/questions/33917081/how-to-get-domain-filter-for-following-situation-in-odoo

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!