İçereği Atla
Menü
Bu soru işaretlendi
2 Cevaplar
4624 Görünümler

Hello everyone,

I am using Odoo 12 and need to run a code after printing a report.

The code I am inheriting from 'account.invoice' is:

    @api.multi
    def invoice_print(self):

         res = super(AccountInvoice, self).invoice_print()

         # First, I need to print the report... and then
         # ...run the code here (after printing the report)...

First, I need to print the report and then execute a code to change a value of a field.

Can anyone help me please?

Thank you all in advance

Regards

PM

Avatar
Vazgeç
En İyi Yanıt

Hi Paulo,

If the order doesn't strictly matter, then the following code is the easiest approach:

@api.multi
def invoice_print(self):
    res = super(ReportController, self).invoice_print()
    self.write({'print_button_pressed': True})
    return res

The main thing to note is that you are returning the result of the super, which contains the print action. As I mentioned, the order wrong in this, but in most case it shouldn't matter. This change will technically come into effect before the invoice is printed, which will only matter if you are showing that field on the invoice and need the value from before the change.

If you do need the original value, you can use the following at the end of the invoice report:

<t t-set="dummy" t-value="o.your_function_name()"/>

Then create a function your_function_name on the invoice with the code you need.


Avatar
Vazgeç
Üretici

Thank you @Jake Robinson,

This is what I need: <t t-set="dummy" t-value="o.your_function_name()"/>

Best regards

PM

En İyi Yanıt

Report will print only if you return report action from a function which means you can not run code after print report.

You can call another function from qweb report which will get called during report print. With browse object you can call function of same class in qweb code.

Thanks

Avatar
Vazgeç
İlgili Gönderiler Cevaplar Görünümler Aktivite
1
Oca 20
4292
2
Ara 19
4940
3
Ara 19
7420
1
Şub 19
9763
1
Kas 24
1517