_columns = {
'name': fields.char('Rule Name', size=64, required=True),
'model_id': fields.many2one('ir.model', 'Related Document Model', required=True, domain=[('osv_memory','=', False)]),
+ 'model': fields.related('model_id', 'model', type="char", size=256, string='Model'),
'create_date': fields.datetime('Create Date', readonly=1),
'active': fields.boolean('Active', help="If the active field is set to False,\
it will allow you to hide the rule without removing it."),
'trg_date_type': fields.selection([
('none', 'None'),
('create', 'Creation Date'),
+ ('write', 'Last Modified Date'),
('action_last', 'Last Action Date'),
('date', 'Date'),
('deadline', 'Deadline'),
'regex_name': fields.char('Regex on Resource Name', size=128, help="Regular expression for matching name of the resource\
\ne.g.: 'urgent.*' will search for records having name starting with the string 'urgent'\
\nNote: This is case sensitive search."),
- 'server_action_ids': fields.one2many('ir.actions.server', 'action_rule_id', 'Server Action', help="Define Server actions.\neg:Email Reminders, Call Object Service, etc.."),
- 'filter_id':fields.many2one('ir.filters', 'Filter', required=False), #TODO: set domain [('model_id','=',model)]
+ 'server_action_ids': fields.one2many('ir.actions.server', 'action_rule_id', 'Server Action', help="Define Server actions.\neg:Email Reminders, Call Object Service, etc.."), #TODO: set domain [('model_id','=',model_id)]
+ 'filter_id':fields.many2one('ir.filters', 'Filter', required=False), #TODO: set domain [('model_id','=',model_id.model)]
'last_run': fields.datetime('Last Run', readonly=1),
}
_defaults = {
- 'active': lambda *a: True,
- 'trg_date_type': lambda *a: 'none',
- 'trg_date_range_type': lambda *a: 'day',
+ 'active': True,
+ 'trg_date_type': 'none',
+ 'trg_date_range_type': 'day',
}
_order = 'sequence'
base = False
if rule.trg_date_type=='create' and hasattr(obj, 'create_date'):
base = obj.create_date
+ elif rule.trg_date_type=='write' and hasattr(obj, 'write_date'):
+ base = obj.write_date
elif (rule.trg_date_type=='action_last'
and hasattr(obj, 'create_date')):
if hasattr(obj, 'date_action_last') and obj.date_action_last:
<group col="4">
<field name="name"/>
<field name="model_id"/>
- <field name="filter_id" domain="[('model_id','=',model_id)]" context="{'default_model_id': model_id}"/>
+ <field name="model" invisible="1"/>
+ <field name="filter_id" domain="[('model_id','=',model)]" context="{'default_model_id': model}"/>
<field name="sequence"/>
<field name="active"/>
</group>
'crm_demo.xml',
'crm_lead_demo.xml',
'crm_phonecall_demo.xml',
+ 'crm_action_rule_demo.xml',
],
'test': [
'test/process/communication_with_customer.yml',
--- /dev/null
+<?xml version="1.0"?>
+<openerp>
+ <data noupdate="1">
+ <!-- email server actions -->
+ <record id="action_email_reminder_lead" model="ir.actions.server">
+ <field name="name">Reminder to User</field>
+ <field name="model_id" ref="model_crm_lead"/>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="state">email</field>
+ <field name="email">object.user_id.email</field>
+ <field name="subject">Reminder on Lead: [[object.name ]] of [[object.partner_id.name]]</field>
+ <field name="message">Hello [[object.user_id.name]],
+can you check following lead, it's inactive since 5 days ?
+
+Lead Id: [[object.id ]]
+Customer: [[object.partner_id.name]]
+
+ [[object.description]]
+
+Thanks,
+</field>
+ </record>
+
+ <record id="action_email_reminder_customer_lead" model="ir.actions.server">
+ <field name="name">Reminder to Customer</field>
+ <field name="model_id" ref="model_crm_lead"/>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="state">email</field>
+ <field name="email">object.email_from</field>
+ <field name="subject">Reminder on Lead: [[object.name ]]</field>
+ <field name="message">Hello [[object.partner_id.name]],
+your following lead inactive since 5 days.
+
+Lead Id: [[object.id ]]
+Customer: [[object.partner_id.name]]
+
+ [[object.description]]
+
+Thanks,
+ </field>
+ </record>
+
+ <!-- automated actions -->
+ <record id="rule_set_reminder_lead" model="base.action.rule">
+ <field name="name">Set Auto Reminder on leads which are inactive since 5 days.</field>
+ <field name="model_id" ref="model_crm_lead"/>
+ <field name="sequence">1</field>
+ <field name="trg_date_type">write</field>
+ <field name="trg_date_range">5</field>
+ <field name="trg_date_range_type">day</field>
+ <field name="server_action_ids" eval="[(6,0,[ref('action_email_reminder_customer_lead'), ref('action_email_reminder_lead')])]"/>
+ </record>
+
+ <record id="filter_usa_lead" model="ir.filters">
+ <field name="name">Filter on leads which come from USA.</field>
+ <field name="model_id">crm.lead</field>
+ <field name="domain">[('country_id','=','United States')]</field>
+ </record>
+
+ <record id="rule_set_followers_lead" model="base.action.rule">
+ <field name="name">Set Auto Followers on leads which are come from USA.</field>
+ <field name="model_id" ref="model_crm_lead"/>
+ <field name="sequence">2</field>
+ <field name="regex_name">urgent.*</field>
+ <field name="filter_id" ref="filter_usa_lead"/>
+ <field name="act_followers" eval="[(6,0,[ref('base.res_partner_4'), ref('base.res_partner_5'), ref('base.res_partner_6')])]"/>
+ <field name="act_user_id" ref="base.user_root"/>
+ <field name="act_section_id" ref="section_sales_department"/>
+ </record>
+ </data>
+</openerp>