Scheduled actions can be set by adding this code in your xml file. This exemple will call the function schedule_action
from the model hr.employee
and send a notification by email if the boolean enable_send_notification is True.
<record id="ir_cron_schedule_action" model="ir.cron"> <field name="name">Schedule actions</field> <field name="user_id" ref="base.user_root" /> <field name="interval_number">1</field> <field name="interval_type">days</field> <field name="numbercall">-1</field> <field eval="False" name="doall" /> <field eval="'hr.employee'" name="model" /> <field eval="'schedule_action'" name="function" /> </record>
This model inherits hr.employee and defines 1 additional field, and 2 additional functions. send_notification
is sending email based on the the template my_module.email_hr_employee_notification, see this post how to create email template with xml, schedule_action
is the function called by the scheduler.
import logging import openerp.addons.decimal_precision as dp from datetime import datetime, date, timedelta from openerp.exceptions import UserError from openerp import models, fields, api, _ _logger = logging.getLogger(__name__) class HrEmployee(models.Model): _inherit = 'hr.employee' enable_send_notification = fields.Boolean(string='Send notification') @api.multi def send_notification(self): self.ensure_one() ir_model_data = self.env['ir.model.data'] template_obj = self.env.ref('my_module.email_hr_employee_notification') template_obj.send_mail(self.ids[0], force_send=True) return True def schedule_action(self, cr, uid, context=None): hr_employee_obj = self.pool.get('hr.employee') hr_employee_ids = self.pool.get('hr.employee').search(cr, uid, []) for hr_employee_id in hr_employee_ids: hr_employee = hr_employee_obj.browse(cr, uid, hr_employee_id , context=context) if hr_employee.enable_send_notification: hr_employee.send_notification()
can you share the code to this, some files are missing and I keep getting this error Uncaught Error: QWeb2: Template ‘Pos2SoWidget’ not found
Hello,
What are you trying to do ?