上载模块到Git-> https://github.com/Kushikime/Invoice_currency_changer
此方法是从相同类 create_invoices()
的另一种方法调用的我试图继承该方法。但是只有通过 create_invoices()
才能成功因此,我想知道为什么我不能更改_create_method()(我知道它们称为私有方法,但是继承的方式必须与我相同)
代码:
#original Odoo class
class SaleAdvancePaymentInv(models.TransientModel):
_name="sale.advance.payment.inv"
...
@api.multi
def create_invoices(self):
...
self._create_invoice(order, so_line, amount)
@api.multi
def _create_invoice(self, order, so_line, amount):
...
这是代码,我如何尝试继承方法:
class myClass(models.TransientModel):
_inherit="sale.advance.payment.inv"
#INHERITING create_invoices() **SUCCESS INHERITED**
@api.multi
def create_invoices(self):
_logger.debug("PRINT TRUE IF INHERIT IS SUCCESS")
#HERE ODOO PRINT THE MESSAGE SUCCESS.
...
self._create_invoice(order, so_line, amount)#HERE I TRY TO CALL THE METHOD WHICH I WAS CREATED FOR INHERITING
_logger.debug("Print OK if all OK")
#HERE ODOO IS NOT PRINT ANYTHING
res = super(myClass, self).create_invoices()
return res
#HERE I TRY TO INHERIT THE ORIGINAL _create_invoice() method
@api.multi
def _create_invoice(self, order, so_line, amount):
_logger.debug("PRINT TRUE IF SUCCESS INHERITED")
#IN DEBUG LOGS ODOO DIDN'T PRINTED ANYTHING HERE
所以看起来就像我在继承的方法中调用_create_invoice()之后,odoo从那时开始使用原始类而不是myClass()中的代码。
答案 0 :(得分:0)
您的继承已经很好,但是您应该尝试将_logger.debug(..
更改为_logger.info(
来查看您的日志,我从日志控制台获得了此消息,另一种模式是在DEBUG模式下启动Odoo服务器:< / p>
2018-07-04 07:17:34,612 13072 INFO mydatabase odoo.addons.mymodule.models.sale: PRINT TRUE IF INHERIT IS SUCCESS
2018-07-04 07:18:19,591 13072 INFO mydatabase odoo.addons.mymodule.models.sale: PRINT TRUE IF SUCCESS INHERITED
2018-07-04 07:18:23,249 13072 INFO mydatabase werkzeug: 127.0.0.1 - - [04/Jul/2018 07:18:23] "POST /longpolling/poll HTTP/1.1" 200 -
2018-07-04 07:18:49,016 13072 INFO mydatabase odoo.addons.mymodule.models.sale: Print OK if all OK
2018-07-04 07:19:03,848 13072 INFO mydatabase odoo.addons.mymodule.models.sale: PRINT TRUE IF SUCCESS INHERITED
我希望这个答案对您有帮助。
答案 1 :(得分:0)
我知道已经晚了,但它可能对其他人有用。我遇到了同样的问题,我通过将模块“销售”作为清单文件中的依赖项来解决它。它对我有用。
希望有用。