微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

筛选可用的合作伙伴以获取Odoo中的新发票

如何解决筛选可用的合作伙伴以获取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 举报,一经查实,本站将立刻删除。