openerp-dev-web team mailing list archive
-
openerp-dev-web team
-
Mailing list archive
-
Message #04345
lp:~openerp-dev/openobject-addons/trunk-automated_rules-crm_lead_tab-uco into lp:~openerp-dev/openobject-addons/trunk-automated_rules
Ujjvala Collins (OpenERP) has proposed merging lp:~openerp-dev/openobject-addons/trunk-automated_rules-crm_lead_tab-uco into lp:~openerp-dev/openobject-addons/trunk-automated_rules.
Requested reviews:
OpenERP R&D Team (openerp-dev)
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-automated_rules-crm_lead_tab-uco/+merge/53948
Backlog 3 : crm_automated_rules
-------------------------------------------------------
[CRM Action tab]
* Tab should appear only when the object selected is crm.lead (for Lead and opportunity)
* Tab shoud appear before generic rules
--
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-automated_rules-crm_lead_tab-uco/+merge/53948
Your team OpenERP R&D Team is requested to review the proposed merge of lp:~openerp-dev/openobject-addons/trunk-automated_rules-crm_lead_tab-uco into lp:~openerp-dev/openobject-addons/trunk-automated_rules.
=== modified file 'crm_action_rule/crm_action_rule.py'
--- crm_action_rule/crm_action_rule.py 2011-03-15 11:48:39 +0000
+++ crm_action_rule/crm_action_rule.py 2011-03-18 05:03:46 +0000
@@ -37,7 +37,11 @@
return crm.AVAILABLE_STATES
_columns = {
+<<<<<<< TREE
# 'model': fields.related('model_id','model',type='char', size=60),
+=======
+ 'model': fields.char('Model', size=60),
+>>>>>>> MERGE-SOURCE
'crm_trg_section_id' : fields.many2one('crm.case.section', 'Sale Team'),
'crm_trg_categ_id' : fields.many2one('crm.case.categ', 'Category',domain=[('object_id.model','=','crm.lead')]),
'crm_trg_partner_id' : fields.many2one('res.partner', 'Partner'),
@@ -55,6 +59,7 @@
'crm_to_state' : fields.selection(_crm_state_get, 'Set State To', size=16),
}
+<<<<<<< TREE
_defaults = {
'crm_trg_date_range_type' : 'hours',
}
@@ -161,4 +166,108 @@
domain.extend(date_domain)
return domain, context
+=======
+ _defaults = {
+ 'crm_trg_date_range_type' : 'hours',
+ }
+
+ def onchange_model_id(self, cr, uid, ids, model_id, context=None):
+ vals = {'value':{}}
+ if model_id:
+ model_pool = self.pool.get('ir.model')
+ model = model_pool.browse(cr, uid, model_id, context=context)
+ vals['value'] = {'model': model.model}
+ return vals
+
+ def _do_run(self, cr, uid, rule=None, model=None, domain=[], context=None):
+ """
+ Method to run the server action on given model with specified domian
+ @param rule :pointer to current rule to be evalated
+ @param model : model on which srevr action to be triggered
+ @param domain : pointer to domain usinf which model will be filtered
+ """
+ flag = super(base_action_rule, self)._do_run( cr, uid, rule, model, domain, context)
+ if flag:
+ model_pool = self.pool.get(model)
+ try:
+ for object_rec in model_pool.search(cr, uid, domain, context=context):
+ vals = {}
+ if rule.crm_to_responsible_id:
+ vals.update({'user_id' : rule.crm_to_responsible_id.id})
+ if rule.crm_to_categ_id:
+ vals.update({'categ_id' : rule.crm_to_categ_id.id})
+ if rule.crm_to_section_id:
+ vals.update({'section_id' : rule.crm_to_section_id.id})
+ if rule.crm_to_state:
+ btn_press = {
+ 'draft' : lambda cr, uid, ids: model_pool.case_reset(cr, uid, ids) ,
+ 'open' : lambda cr, uid, ids : model_pool.case_open(cr, uid, ids) ,
+ 'cancel' : lambda cr, uid, ids : model_pool.case_cancel(cr, uid, ids) ,
+ 'done' : lambda cr, uid, ids : model_pool.case_mark_lost(cr, uid, ids) ,
+ 'pending' : lambda cr, uid, ids : model_pool.case_pending(cr, uid, ids) ,
+ }
+
+ btn_press[rule.crm_to_state](cr, uid, [object_rec])
+ model_pool.write(cr, uid, object_rec, vals, context)
+ except Exception, e:
+ return False
+ return True
+
+
+ def _get_filters(self, cr, uid, rule=None, domain=[], context=None):
+ """Preparing the filter using crm filter option"""
+ domain, context = super(base_action_rule, self)._get_filters(cr, uid, rule, domain, context)
+ message_pool = self.pool.get('mailgate.message')
+ #Domain on crm case section
+ if rule.crm_trg_section_id:
+ section_domain = ('section_id','=',rule.crm_trg_section_id.id)
+ if section_domain not in domain:
+ domain.extend([section_domain])
+ #Doamin on crm category
+ if rule.crm_trg_categ_id:
+ categ_domain = ('categ_id','=',rule.crm_trg_categ_id.id)
+ if categ_domain not in domain:
+ domain.extend([categ_domain])
+ if rule.crm_trg_partner_id:
+ domain.extend([('partner_id','=',rule.crm_trg_partner_id.id)])
+ if rule.crm_trg_partner_catg_id:
+ domain.extend([('partner_id.category_id','in',[rule.crm_trg_partner_catg_id.id])])
+ if rule.crm_trg_state or rule.crm_trg_btn_pressed:
+ stat = []
+ if rule.crm_trg_state:
+ stat.extend([(rule.crm_trg_state)])
+ if rule.crm_trg_btn_pressed:
+ stat.extend([(rule.crm_trg_btn_pressed)])
+ domain.extend([('state','in',stat)])
+ if rule.crm_trg_responsible_id:
+ domain.extend([('user_id','=',rule.crm_trg_responsible_id.id)])
+
+ if rule.crm_trg_regex:
+ messages = message_pool.search(cr, uid, [('model', '=' , 'crm.lead')])
+ history = []
+ regex = re.compile(str(rule.crm_trg_regex))
+ for msg in message_pool.browse(cr, uid, messages, context):
+ result = regex.search(str(msg.name))
+ if result:
+ history.extend([msg.id])
+ if history:
+ domain.extend([('message_ids','in',history)])
+ if rule.crm_trg_field_id:
+ deltaFunc = {
+ 'minutes' : lambda interval : timedelta(minutes=interval),
+ 'hours' : lambda interval : timedelta(hours=interval),
+ 'days' : lambda interval : timedelta(days=interval),
+ 'weeks' : lambda interval : timedelta(weeks=interval),
+ }
+ delay_delta = deltaFunc[rule.crm_trg_date_range_type](rule.crm_trg_date_range)
+ delay = datetime.now() + delay_delta
+ date_domain = []
+ if rule.crm_trg_date_range < 0:
+ date_domain = [(rule.crm_trg_field_id.name,'>',delay.strftime("%Y-%m-%d %H:%M:%S"))]
+ else:
+ date_domain = [(rule.crm_trg_field_id.name,'<',delay.strftime("%Y-%m-%d %H:%M:%S"))]
+ domain.extend(date_domain)
+ return domain, context
+
+>>>>>>> MERGE-SOURCE
base_action_rule()
=== modified file 'crm_action_rule/crm_action_rule_view.xml'
--- crm_action_rule/crm_action_rule_view.xml 2011-03-15 11:48:39 +0000
+++ crm_action_rule/crm_action_rule_view.xml 2011-03-18 05:03:46 +0000
@@ -7,6 +7,7 @@
<field name="inherit_id" ref="base_action_rule.view_base_action_rule_form"/>
<field name="type">form</field>
<field name="arch" type="xml">
+<<<<<<< TREE
<data>
<xpath expr="//field[@name='model_id']" position="replace">
<field name="model_id" />
@@ -58,6 +59,60 @@
</page>
</xpath>
</data>
+=======
+ <data>
+ <xpath expr="//field[@name='model_id']" position="replace">
+ <field name="model_id" on_change="onchange_model_id(model_id)"/>
+ <field name="model" invisible="1"/>
+ </xpath>
+ <xpath expr="/form/notebook/page[@string='Generic Rule']" position="before" >
+ <page string="CRM Condition" >
+ <group colspan="2" col="2">
+ <separator string="Condition Case Fields" colspan="2" />
+ <field name="crm_trg_section_id" widget="selection" />
+ <field name="crm_trg_categ_id" widget="selection" />
+ </group>
+ <group colspan="2" col="2">
+ <separator string="Condition On Partner" colspan="2" />
+ <field name="crm_trg_partner_id" />
+ <field name="crm_trg_partner_catg_id" widget="selection" />
+ </group>
+ <group colspan="2" col="2">
+ <separator string="Condition on State" colspan="2" />
+ <field name="crm_trg_state"/>
+ <field name="crm_trg_btn_pressed"/>
+ </group>
+ <group colspan="2" col="2">
+ <separator colspan="4" string="Condition on Communication History"/>
+ <field name="crm_trg_regex"/>
+ </group>
+ <group col="2" colspan="2">
+ <separator colspan="2" string="Conditions on Timing"/>
+ <field name="crm_trg_field_id" domain="[('model_id','=',model_id),('ttype','=','datetime')]"/>
+ <group col="3" colspan="2" attrs="{'invisible': [('crm_trg_field_id', '=', False)]}">
+ <field name="crm_trg_date_range" string="Delay After Trigger Date"/>
+ <field name="crm_trg_date_range_type" nolabel="1"/>
+ </group>
+ </group>
+ <group colspan="2" col="2">
+ <separator colspan="4" string="Condition Responsible"/>
+ <field name="crm_trg_responsible_id"/>
+ </group>
+ </page>
+ <page string="CRM Action" attrs="{'invisible': [('model','!=','crm.lead')]}">
+ <separator string="Fields to Change" colspan="4" />
+ <group colspan="2" col="2">
+ <field name="crm_to_responsible_id" widget="selection" />
+ <field name="crm_to_categ_id" widget="selection" />
+ </group>
+ <group colspan="2" col="2">
+ <field name="crm_to_section_id"/>
+ <field name="crm_to_state"/>
+ </group>
+ </page>
+ </xpath>
+ </data>
+>>>>>>> MERGE-SOURCE
</field>
</record>
</data>