如何解决筛选可用的合作伙伴以获取Odoo中的新发票
在odoo中创建发票时,我想为“客户”过滤可用的合作伙伴选择。具体来说,我想将合作伙伴的联系记录限制为“发票地址”类型的记录,即res_partner
的{{1}}上的域。
有人可以指出我的正确方向吗?
我可以看到[('type','=','invoice')]
将接受Args,而从res_partner._name_search
中的代码来看,Args可能是必需的域,成为where子句。但是,我看不到如何在xml(或其他任何地方)中指定它。客户下拉菜单的标准xml是
models.py
<field name="partner_id" widget="res_partner_many2one" context="{'res_partner_search_mode': 'customer','show_address': 1,'show_vat': True}" options='{"always_reload": True}'/>
看起来很有前途,但似乎仅用于设置res_partner_search_mode
,因此这里没有帮助。也许只是覆盖_name_search来过滤记录??我会很高兴有任何帮助。谢谢!
解决方法
尝试类似的事情
<field name="partner_id" widget="res_partner_many2one" domain="[('type','=','invoice')]" ...```
,
已解决。 Paxmees的建议不起作用(XML中的域似乎没有流到python代码中的任何地方)。但是_name_search中的args最终是一个域。因此,我对_name_search进行了覆盖:
def _name_search(self,name,args,operator,limit,name_get_uid=None):
restrict = self.env.context.get('restrict_types')
if restrict == 'invoice':
args.append(('type',restrict))
return super()._name_search(name,operator=operator,limit=limit,name_get_uid=name_get_uid)
,然后在xml中为我希望发生这种情况的视图添加控制上下文:
<xpath expr="//field[@name='partner_id']" position="attributes">
<attribute name="context">{'restrict_types': 'invoice'}</attribute>
</xpath>
这正常。感谢您阅读我的问题!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。