[IMP] account: only generate email and pdf once on send&print invoice

action_invoice_sent() triggers two onchanges which normally don't happen at the same time. Added a check to one of them (onchange_is_email()), so that on action_invoice_sent(), only one of them calls the computationally expensive onchange_template_id_wrapper(), effectively halving the time taken.

Time for executing the action for one invoice dropped from over 3 seconds to a bit over 1.

closes odoo/odoo#74160

Signed-off-by: Laurent Smet <smetl@users.noreply.github.com>
This commit is contained in:
dasa-odoo
2021-07-23 11:22:19 +00:00
parent b97d360ade
commit 90d23eb3e2
2 changed files with 4 additions and 2 deletions
+2 -1
View File
@@ -2779,7 +2779,8 @@ class AccountMove(models.Model):
mark_invoice_as_sent=True,
custom_layout="mail.mail_notification_paynow",
model_description=self.with_context(lang=lang).type_name,
force_email=True
force_email=True,
wizard_opened=True
)
return {
'name': _('Send Invoice'),
@@ -93,7 +93,8 @@ class AccountInvoiceSend(models.TransientModel):
self.composer_id.composition_mode = 'comment' if len(res_ids) == 1 else 'mass_mail'
self.composer_id.template_id = self.template_id.id
self._compute_composition_mode()
self.composer_id.onchange_template_id_wrapper()
if not self.env.context.get("wizard_opened"):
self.composer_id.onchange_template_id_wrapper()
@api.onchange('is_email')
def _compute_invoice_without_email(self):