Python 对于同一型号,在两个不同区域添加不同的操作菜单

Python 对于同一型号,在两个不同区域添加不同的操作菜单,python,odoo,odoo-11,Python,Odoo,Odoo 11,在Odoo11中,我需要两个具有两种不同功能的不同动作菜单 在人力资源工资单中,我想添加电子邮件工资单链接,这就是我使用此代码添加电子邮件工资单操作菜单的原因 <?xml version="1.0" encoding="utf-8"?> <odoo> <data> <record id="action_email_payslip" model="ir.actions.server"> <field name

在Odoo11中,我需要两个具有两种不同功能的不同动作菜单

在人力资源工资单中,我想添加电子邮件工资单链接,这就是我使用此代码添加电子邮件工资单操作菜单的原因

<?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>

电子邮件工资单
代码
操作=记录。操作\u电子邮件\u工资单\u发送()

但这一个也在员工行中添加了操作菜单。在员工行中,我需要一个不同的操作菜单。有人能告诉我如何做到这一点吗?

好的,最后一次改变,我放弃。我希望这正是你想要的。使用我在中给出的答案的代码,将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,
    }
这将打开您喜欢的电子邮件撰写消息弹出窗口,即使您正在选择多个工资单(在这种情况下,预览不会替换Mako变量)


我知道一开始这很难,但正如@EasyOdoo所评论的,你必须从答案中获得想法并对此进行调查,这样你才能提出更小、更准确的问题,并轻松获得好的回答。

我不太理解。您是否说此操作(电子邮件工资单)显示在
hr.paysslip
视图和
hr.employee
视图中?实际上,我想从工资单发送电子邮件给选定的员工。但是我添加的菜单是为单身员工发送电子邮件。我想在hr.paysslip表单视图中显示菜单,而不是在hr.paysslip列表视图中显示菜单。希望您理解。@forvas是否有其他方法可以通过同一操作按钮向选定的员工发送电子邮件?现在,当我选择多个员工并试图发送时,在评估“action=records.action\u email\u Paysil\u send()时,第4393行显示错误,如
File”/usr/lib/python3/dist packages/odoo/models.py“,请确保一个加薪错误(“预期单身人士:%s”%self)ValueError::“预期单身人士:hr.paysslip(1,3,4)”“
Ok,那么您是否需要使操作按钮也适用于树状视图,而不仅仅是表单视图,不是吗?如果您在树状视图中选择多个工资单并单击电子邮件工资单,是否要为所选工资单的每位员工发送电子邮件?如果您不希望员工在电子邮件中看到其他员工的工资单,则必须更改所有功能。此功能显示空白页。另外,当用户选择一名员工并发送电子邮件时,是否有任何方法可以使发送带有附件的个人电子邮件成为我们正在做的事情?任何建议或参考我需要在下班后花一些时间来尝试这种方法,并了解为什么它会在您给我写信时返回空白页。@NewUser这是另一个不同的问题,正如您所说,您应该创建一个新帖子,询问如何在单击服务器操作按钮后显示确认弹出窗口。我认为XML
confirm
属性只适用于
标记,所以目前我没有找到一个简单的答案,也许有人能给出比我更好的解决方案。但在这篇文章中,如果你这么想,你能把这个答案设定为正确的吗?或者至少如果你认为它能帮助你解决问题,那就给它1。谢谢你的帮助。