Odoo 11 добавить разные меню действий в двух разных областях для одной и той же модели - PullRequest
2 голосов
/ 13 мая 2019

В Odoo 11 я хочу два разных меню действий с двумя разными функциями.

В платежной ведомости за час я хотел добавить ссылку на оплату по электронной почте, поэтому я использовал этот код для добавления меню действия с платежной ведомостью по электронной почте

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data>
        <record id="action_email_payslip" model="ir.actions.server">
      <field name="name">Email Payslip</field>
            <field name="model_id" ref="hr_payroll.model_hr_payslip"/> 
            <field name="binding_model_id" ref="hr_payroll.model_hr_payslip"/>
            <field name="state">code</field> 
            <field name="code"> 
            action = records.action_email_payslip_send() 
            </field>
    </record>
    </data>
</odoo>

Но этот также добавляет меню действий в строке сотрудников. В строках сотрудников я хочу другое меню действий. Так может кто-нибудь сказать мне, как этого добиться?

1 Ответ

2 голосов
/ 13 мая 2019

Хорошо, последнее изменение, и я сдаюсь.Я надеюсь, что это именно то, что вы хотите.Используя код ответа, который я дал вам в Как отправить электронное письмо с кнопки, расположенной в раскрывающемся списке действий формы Odoo 11? , просто замените метод Python на этот:

@api.multi
def action_email_payslip_send(self):
    template = self.env.ref(
        'your_module_name.email_template_payslip',
        False,
    )
    compose_form = self.env.ref(
        'mail.email_compose_message_wizard_form',
        False,
    )
    ctx = dict(
        default_model='hr.payslip',
        default_use_template=bool(template),
        default_template_id=template and template.id or False,
    )
    if len(self) == 1:
        ctx.update({
            'default_composition_mode': 'comment',
            'default_res_id': self.ensure_one().id,
        })
    else:
        ctx.update({
            'default_composition_mode': 'mass_mail',
            'active_ids': self.ids,
        })
    return {
        'name': _('Compose Email'),
        'type': 'ir.actions.act_window',
        'view_type': 'form',
        'view_mode': 'form',
        'res_model': 'mail.compose.message',
        'views': [(compose_form.id, 'form')],
        'view_id': compose_form.id,
        'target': 'new',
        'context': ctx,
    }

Это откроет вам всплывающее сообщение электронной почты, которое вам нравится, даже когда вы выбираете несколько платежных ведомостей (в этом случае предварительный просмотр не заменит переменные Мако).

Я знаю, что это трудноначало, но, как прокомментировал @EasyOdoo, вы должны получать идеи из ответов и исследовать их, чтобы вы могли делать более мелкие и точные вопросы и легко получать хорошие ответы.

...