В 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>
Но этот также добавляет меню действий в строку сотрудников. В строках сотрудников я хочу другое меню действий. Так может ли кто-нибудь сказать мне, как этого добиться?
На самом деле я хотел отправить электронное письмо из платежной ведомости с выбранными сотрудниками. Но меню, которое я добавил, это отправка электронной почты для одного сотрудника.
Я хочу показать меню в представлении формы hr.payslip, а не в виде списка hr.payslip. Надеюсь, вы поняли это.
@forvas есть ли другой способ отправить электронное письмо выбранным сотрудникам с помощью той же кнопки действия? На данный момент, когда я выбираю нескольких сотрудников и пытаюсь отправить сообщение об ошибке, например File "/usr/lib/python3/dist-packages/odoo/models.py", line 4393, in ensure_one raise ValueError("Expected singleton: %s" % self) ValueError: <class 'ValueError'>: "Expected singleton: hr.payslip(1, 3, 4)" while evaluating 'action = records.action_email_payslip_send()'
Итак, вам нужно, чтобы кнопка действия работала также для просмотра в виде дерева, а не только для просмотра формы, не так ли? Если вы выберете в древовидном представлении несколько платежных ведомостей и нажмете Электронная почта, вы хотите отправить электронное письмо для каждого сотрудника выбранной платежной ведомости? Если вы не хотите, чтобы сотрудники видели платежные ведомости других сотрудников в электронной почте, вам придется изменить весь функционал.
Да, для представления формы это абсолютно нормально, как сейчас. Его отправка электронной почты с вложением для человека. Но в древовидном представлении я хочу отправить их платежную ведомость, прикрепленную к электронной почте, и да, никто не может видеть другие платежные ведомости. Можете ли вы поделиться справочной ссылкой или какой-либо помощью для этого?
@forvas любая помощь в этом?
Итак, ответ наконец сработал для вас после последнего обновления?
Есть ли возможность показать модель так же, как мы это делали ранее, когда выбирается один расчетный лист.
Вы имеете в виду, что хотите показать всплывающее окно сообщения электронной почты с шаблоном, загруженным для нескольких пользователей?
Неа. Я просто хотел показать всплывающее окно с сообщением о создании электронной почты, когда был выбран один пользователь. Для нескольких пользователей это нормально, что вы ответили.
Хорошо, последнее изменение, и я сдаюсь. Я надеюсь, что это именно то, что вы хотите. Используя код ответа, который я дал вам в Как отправить электронное письмо с помощью кнопки, расположенной в раскрывающемся списке действий формы 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,
}
Это откроет вам всплывающее окно с сообщением о создании электронной почты, которое вам нравится, даже если вы выбираете несколько платежных ведомостей (в этом случае предварительный просмотр не заменит переменные Mako).
Я знаю, что поначалу это сложно, но, как прокомментировал @EasyOdoo, вы должны черпать идеи из ответов и исследовать их, чтобы вы могли задавать более мелкие и точные вопросы и легко получать хорошие ответы.
Этот показывает пустую страницу. Также нет ли способа сделать отправку отдельного электронного письма с вложением тем, что мы делали, когда пользователь выбирает одного сотрудника и отправляет электронное письмо?
любые предложения или ссылки
Мне нужно время после работы, чтобы попробовать этот метод и понять, почему он возвращает пустую страницу, как вы мне написали.
Я протестировал код. Все работает, но есть одна проблема. Допустим, я выбрал 10 сотрудников. Затем он отправляет одно и то же письмо каждому пользователю 10 раз.
Вы имеете в виду, что это происходит только тогда, когда вы выбрали 10 платежных ведомостей одного и того же сотрудника, в этом случае он получит 10 электронных писем, по одному на платежную ведомость. Если вы выберете 10 платежных ведомостей, каждая из которых принадлежит другому сотруднику, каждый сотрудник получит только одно электронное письмо.
Неа. На данный момент я выбрал 3 сотрудников из платежной ведомости. У каждого работника один расчетный лист. Но этот отправляет 3 письма каждому сотруднику, хотя у каждого сотрудника есть только одна расчетная ведомость.
Эй, подождите ... другое дело, когда я иду к другому сотруднику и пытаюсь отправить электронное письмо оттуда, но оно отправляет электронное письмо на мой адрес электронной почты. Есть ли какое-либо отношение к тому, что я установил свой идентификатор электронной почты в конфигурации электронной почты.
Ошибка копирования-вставки. Замените self.env.user.id
на payslip.id
, как я сделал в своем новом редактировании.
@NewUser все, что вам нужно сделать, это посмотреть, где ошибка, и исправить ее, просто исправить код forvas, ему не нужно писать правильный код, самое главное, это идея, если он отправляет 3 для каждого сотрудника, то вам нужно исправить одна крошечная строчка в коде, чтобы исправить это поведение
@NewUser Я изменил весь ответ. Взгляните и дайте мне знать, если это то, что вы искали.
@forvas действительно спасибо за этот ответ. На самом деле я уже исправил проблему сам. Единственное, что я искал для отображения предупреждения о подтверждении при выборе нескольких пользователей перед отправкой электронного письма. Как только пользователь подтвердит, он отправит электронные письма. дайте мне знать, если вы можете помочь в этом ответе, или мне следует задать для этого другой вопрос?
@NewUser, это еще один другой вопрос, поскольку вы говорите, что вам следует создать новый пост с вопросом, как отобразить всплывающее окно подтверждения после нажатия кнопки действия сервера. Я думаю, что атрибут XML confirm
работает только для тегов <button>
, поэтому в настоящее время я не могу найти простой ответ на этот вопрос, возможно, кто-то может дать лучшее решение, чем я. Но в этом посте можете ли вы установить этот ответ как правильный, если вы так думаете, или, по крайней мере, дать ему +1, если вы считаете, что он помог вам решить вашу проблему?
@forvas Я проголосовал и принял ваш ответ. Спасибо за помощь.
@forvas У меня проблема. Можете ли вы помочь мне? Вот адрес stackoverflow.com/questions/56544393/…
Я не очень хорошо понимаю. Вы говорите, что это действие (Электронная почта) отображается в
hr.payslip
просмотрах, а также вhr.employee
просмотрах?