在 Odoo 15 中创建新付款方式时出错

问题描述 投票:0回答:2

我想创建新的付款方式,但它在 Odoo V15 中给我这个错误。

` 文件 “/cityvape/cityvape-server/addons/account/models/account_payment_method.py”, 第 28 行,在创建 if information.get('mode') == 'multi': 异常

上面的异常是下面异常的直接原因:

Traceback(最后一次调用):文件 “/cityvape/cityvape-server/odoo/http.py”,第 643 行,在 _handle_exception 返回 super(JsonRequest, self)._handle_exception(exception) 文件“/cityvape/cityvape-server/odoo/http.py”,第 301 行,在 _handle_exception raise exception.with_traceback(None) from new_cause AttributeError: 'NoneType' 对象没有属性 'get'`

这是代码

@api.model_create_multi
    def create(self, vals_list):
        payment_methods = super().create(vals_list)
        methods_info = self._get_payment_method_information()
        for method in payment_methods:
            information = methods_info.get(method.code)

            if information.get('mode') == 'multi':
                method_domain = method._get_payment_method_domain()

                journals = self.env['account.journal'].search(method_domain)

                self.env['account.payment.method.line'].create([{
                    'name': method.name,
                    'payment_method_id': method.id,
                    'journal_id': journal.id
                } for journal in journals])
        return payment_methods

我安装了第三方模块,但它给了我同样的错误。

python odoo odoo-15
2个回答
0
投票

information = methods_info.get(method.code)
这一行有错误......它正在返回
None Value
因为它似乎
methods_info.get(method.code)
正在返回一个空字典或者
information.get('mode')
有时会返回一个空字典。

使用

Logger info
跟踪两者的值或使用
print function
在终端中打印值以检查是否传递了正确的值


0
投票

我在 Odoo 16 中有这个错误,我解决了它扩展

_get_payment_method_information()
并添加代码。

首先,我在 XML 数据文件中创建了支付方式:

<data noupdate="0">
    <record id="account_payment_method_check_out" model="account.payment.method">
        <field name="name">Check</field>
        <field name="code">check</field>
        <field name="payment_type">outbound</field>
    </record>

    <record id="account_payment_method_transfer_in" model="account.payment.method">
        <field name="name">Transfer</field>
        <field name="code">transfer</field>
        <field name="payment_type">inbound</field>
    </record>
    <record id="account_payment_method_transfer_out" model="account.payment.method">
        <field name="name">Transfer</field>
        <field name="code">transfer</field>
        <field name="payment_type">outbound</field>
    </record>
</data>

然后我将代码添加到

_get_payment_method_information()

class AccountPaymentMethod(models.Model):
_inherit = 'account.payment.method'

    @api.model
    def _get_payment_method_information(self):
        res = super()._get_payment_method_information()
        res['transfer'] = {'mode': 'multi', 'domain': [('type', '=', 'bank')]}
        res['check'] = {'mode': 'multi', 'domain': [('type', '=', 'bank')]}
        return res
© www.soinside.com 2019 - 2024. All rights reserved.