【问题标题】:How to apply domain filter on Many2One field Using Odoo JS?如何使用 Odoo JS 在 Many2One 字段上应用域过滤器?
【发布时间】:2016-03-08 08:25:35
【问题描述】:

目前,我正在处理 POS 定制。我几乎完成了,但陷入了这个问题。

Py 文件:

class prescription(osv.osv):

     _name = 'res.prescriptions'

     _columns={

         'prescription_id':fields.many2one('res.partner',"customer"),

      }

class prescription_res_partner(osv.osv):

    _inherit = 'res.partner'

    _columns = {

        'prescriptions_ids':   fields.one2many('res.prescriptions','prescription_id','Prescriptions'),

}

我想做的是,当用户在 POS 中选择客户,然后点击 处方按钮,它只显示与特定选定客户相关的处方。目前,它显示所有处方,因为我无法正确设置过滤器域。还有.....

我尝试在 JS 中使用 .query().filter() 来解决我的问题。但是出现一些错误,而如果我输入静态 partner_id,那么它将显示给定静态 partner_id 的处方。我想为动态合作伙伴解决这个问题。它只显示选定合作伙伴的处方...!!!

在 JS 文件中:

var def = new $.Deferred();

console.log("deffffffffffffff", def);

var fields = _.find(this.models,function(model){ return model.model === 'res.prescriptions'; });

new instance.web.Model('res.prescriptions')

   .query(fields)

   .filter([['prescription_id', '=', 51]]) // Here i pass static partner_id instead of this i want to pass dynamic partner_id

   .limit(1000)

   .all()

   .then(function(prescriptions){

if (self.render_list_prescription(prescriptions)) { // Render selected partner's Prescription

    def.resolve();

    } else {

    def.reject();

    }

    }, function(err,event){ event.preventDefault(); def.reject(); });

return def;

我花了将近 3 天的时间来解决这个问题,但未能交付。请帮我解决这个问题。再次非常感谢您的帮助..!!!

【问题讨论】:

  • 点击处方按钮时,能否将所选客户的相关处方列表从python传递到js?或者使用js获取相关处方列表?

标签: javascript python openerp point-of-sale jquery-filter


【解决方案1】:

您可以尝试在这样的字段中使用域:

_columns = {

'prescriptions_ids': fields.one2many('res.prescriptions','prescription_id','Prescriptions', domain="[('prescription_id', '=', 51)]"),
}

将 51 更改为相关的另一列

【讨论】:

  • 感谢您的回答但我想在 JS 中传递此过滤器域。插件方面它工作正常但我想在 POS 中完成这些工作,.filter([['prescription_id', '=', 51]]) // 这里我想传递选定合作伙伴的处方及其动态而不是静态 ID...!!!
  • 您通过字段 id 更改“51”,例如 domain="[('prescription_id', '=', drug_id)]"
  • 之前我说过它在插件端可以完美运行不需要传递域。我想在JS中解决这个问题。想在JS中传递这个过滤器域。
【解决方案2】:

您可以在on_change 方法中执行此操作。

prescription_ids = # search for prescriptions related to the selected customer  

# self.pool.get('res.prescriptions').search(cr, uid, [('partner_id', '=', YOU SHOULD GET THE CUSTOMER ID)])

res['domain']['prescription_id'] = [('id', 'in', prescription_ids)]

return res

【讨论】:

  • Thank You Rawly.,这里的 on_change 方法不起作用,因为我想在 JS 中使用这些东西。在 POS 中,客户列表在那里,选择特定客户,点击处方按钮,所以它会显示与该选定客户相关的所有处方..!!!
  • @AyAzMansuri on_change 方法应该适用于prescription_id,我对我的模型使用了相同的方法,所以它应该可以工作。祝您在JS中找到解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多