我想创建新的付款方式,但它在 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
我安装了第三方模块,但它给了我同样的错误。
information = methods_info.get(method.code)
这一行有错误......它正在返回None Value
因为它似乎methods_info.get(method.code)
正在返回一个空字典或者information.get('mode')
有时会返回一个空字典。
使用
Logger info
跟踪两者的值或使用print function
在终端中打印值以检查是否传递了正确的值
我在 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