[IMP] crm: demo data of action rule
authorHarry (OpenERP) <hmo@tinyerp.com>
Tue, 9 Oct 2012 07:53:40 +0000 (13:23 +0530)
committerHarry (OpenERP) <hmo@tinyerp.com>
Tue, 9 Oct 2012 07:53:40 +0000 (13:23 +0530)
bzr revid: hmo@tinyerp.com-20121009075340-ogm51x9z2irmzijt

addons/base_action_rule/base_action_rule.py
addons/base_action_rule/base_action_rule_view.xml
addons/crm/__openerp__.py
addons/crm/crm_action_rule_demo.xml [new file with mode: 0644]

index ebc4c02..8b56bb9 100644 (file)
@@ -63,6 +63,7 @@ class base_action_rule(osv.osv):
     _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."),
@@ -71,6 +72,7 @@ when displaying a list of rules."),
         'trg_date_type':  fields.selection([
             ('none', 'None'),
             ('create', 'Creation Date'),
+            ('write', 'Last Modified Date'),
             ('action_last', 'Last Action Date'),
             ('date', 'Date'),
             ('deadline', 'Deadline'),
@@ -93,15 +95,15 @@ trigger date, like sending a reminder 15 minutes before a meeting."),
         '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'
@@ -200,6 +202,8 @@ trigger date, like sending a reminder 15 minutes before a meeting."),
                 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:
index 2bffbf5..64b1dd4 100644 (file)
@@ -15,7 +15,8 @@
                     <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>
index dd36aa1..ddeded0 100644 (file)
@@ -107,6 +107,7 @@ Dashboard for CRM will include:
         'crm_demo.xml',
         'crm_lead_demo.xml',
         'crm_phonecall_demo.xml',
+        'crm_action_rule_demo.xml',
     ],
     'test': [
         'test/process/communication_with_customer.yml',
diff --git a/addons/crm/crm_action_rule_demo.xml b/addons/crm/crm_action_rule_demo.xml
new file mode 100644 (file)
index 0000000..e1cafbc
--- /dev/null
@@ -0,0 +1,73 @@
+<?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>