Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
1 Trả lời
1725 Lượt xem

I wanted to edit the email template that generates emails when I send an invoice to a customer.

I should have made a copy of the template but I didn't, so now i'm here.

The generated email should look like this:

Dear JOHN DOE,

Here is your invoice INV/2023/03/0007 amounting in $ 1.00 from COMPANY LTD. This invoice is already paid.

Do not hesitate to contact us if you have any questions.

The actual Generated Email looks like this:

Dear % if object.partner_id.parent_id: JOHN DOE (False), % else: JOHN DOE, % endif

Here is your % if object.name: invoice INV/2023/03/0007 % else: invoice %endif % if object.invoice_origin: (with reference: False) % endif amounting in $ 1.00 from COMPANY LTD. % if object.payment_state in ('paid', 'in_payment'): This invoice is already paid. % else: Please remit payment at your earliest convenience. % if object.payment_reference:

Please use the following communication for your payment: INV/2023/03/0007. % endif % endif

Do not hesitate to contact us if you have any questions. % if object.invoice_user_id.signature: % endif 


This whole mess is due to the PRESUMPTION that I could copy (ctrl + c) the template text to preserve it and paste (ctrl + v) it back when I had "tested" some changes, now i have a useless template. Any help would be greatly appreciated.

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

Hi,

If you are familiar with code you can try the following codes to make a custom module for this purpose.

You can create another email template for generating emails when you send an invoice to a customer.

<odoo>
    <data noupdate="1">
        <record id="email_template_id"
                model="mail.template">
            <field name="name">Custom Invoice Email</field>
            <field name="model_id"
                   ref="account.model_account_move"/>
            <field name="email_from">{{ (object.user_id.email_formatted or
                user.email_formatted or '') }}</field>
            <field name="partner_to">{{ object.partner_id.id }}</field>
            <field name="email_to">{{ object.partner_id.email }}</field>
            <field name="subject">(Invoice of Passengers,
                Ref{{ object.name }})</field>
            <field name="reply_to">{{ (object.user_id.email_formatted or
                user.email_formatted or '') }}</field>
            <field name="description">description</field>
            <field name="body_html" type="html">
                <div style="margin: 0px; padding: 0px;">
                    <p style="margin: 0px; padding: 0px; font-size: 13px;">
                        Dear <span t-out="object.partner_id.name or ''"/,
                        <br/>
                        Here is your invoice
                        <span style="font-weight: bold;"
                              t-out="object.name or ''"/>

                        amounting in <span style="font-weight: bold;"
                                           t-out="object.amount_total or
                                           ''"/> from COMPANY LTD. This invoice is already paid.
                        <br/>
                        Do not hesitate to contact us if you have any questions.
                        <t t-if="not is_html_empty(object.user_id.signature)">
                            <br/><br/>
                            <t t-out="object.user_id.signature or ''">--<br/></t>
                        </t>
                        <br/><br/>
                    </p>
                </div>
            </field>
            <field name="report_template" ref="account_invoices"/>
            <field name="report_name">{{ (object.name or '').replace('/','_') }}</field>
            <field name="lang">{{ object.partner_id.lang }}</field>
            <field name="auto_delete" eval="True"/>
        </record>
    </data>
</odoo>

After creating an email template you can show the template via action_invoice_sent() function by overriding

def action_invoice_sent(self):
  "" Open a window to compose an email, with the invoice template
            message loaded by default
        """
       
      self.ensure_one()
       mail_template = self.env.ref(
   '          module_name.email_template_id',
              raise_if_not_found=False)
      ctx = dict(
            default_model='account.move',
            default_res_id=self.id,
            default_res_model='account.move',
            default_use_template=bool(mail_template),
            default_template_id=mail_template.id if mail_template else None,
            default_composition_mode='comment',
            mark_invoice_as_sent=True,
            default_email_layout_xmlid=
           "mail.mail_notification_layout_with_responsible_signature",
            force_email=True,
            )

      report_action = {
            'name': _('Send Invoice'),
            'type': 'ir.actions.act_window',
            'view_type': 'form',
            'view_mode': 'form',
            'res_model': 'mail.compose.message',
            'views': [(False, 'form')],
            'view_id': False,
            'target': 'new',
            'context': ctx,
       }  

      if self.env.is_admin() \
                and not self.env.company.external_report_layout_id \
                and not self.env.context.get(
            'discard_logo_check'):
            return self.env['ir.actions.report']._action_configure_external_report_layout(
                report_action)

       return report_action  

Regards

Ảnh đại diện
Huỷ bỏ