[ADD] Add project_id and section_id on user object

[ADD] Add rules on crm, project, crm_project, sale_crm to open with user preference domain
[IMP] section_id no more required=True now
[ADD] add object message on project module
[ADD] add default values for project and section with all objects related with it using user prefernce fields
[IMP] overall changes on crm and project

bzr revid: mra@tinyerp.com-20100108110505-pp2s1x0bjcy0edun
This commit is contained in:
mra (Open ERP) 2010-01-08 16:35:05 +05:30
parent 8fe7d4c0a7
commit dec803c584
18 changed files with 628 additions and 225 deletions

View File

@ -408,6 +408,11 @@ class crm_case(osv.osv):
if context.get('portal', False):
return False
return uid
def _get_section(self, cr, uid, context):
user = self.pool.get('res.users').browse(cr, uid, uid)
return user.section_id.id
_defaults = {
'active': lambda *a: 1,
'user_id': _get_default_user,
@ -417,6 +422,7 @@ class crm_case(osv.osv):
'state': lambda *a: 'draft',
'priority': lambda *a: AVAILABLE_PRIORITIES[2][0],
'date': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
'section_id': _get_section,
}
_order = 'priority, date_deadline desc, date desc,id desc'
@ -946,5 +952,15 @@ class crm_email_add_cc_wizard(osv.osv_memory):
return {}
crm_email_add_cc_wizard()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
class res_users(osv.osv):
_inherit = "res.users"
_description = "users"
_columns = {
'section_id': fields.many2one('crm.case.section', 'Sales Section', required=False)
}
res_users()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -103,7 +103,7 @@ class crm_claim_assign_wizard(osv.osv_memory):
_name = 'crm.claim.assign_wizard'
_columns = {
'section_id': fields.many2one('crm.case.section', 'Section', required=True),
'section_id': fields.many2one('crm.case.section', 'Section', required=False),
'user_id': fields.many2one('res.users', 'Responsible'),
}

View File

@ -104,7 +104,7 @@ class crm_helpdesk_assign_wizard(osv.osv_memory):
_name = 'crm.helpdesk.assign_wizard'
_columns = {
'section_id': fields.many2one('crm.case.section', 'Section', required=True),
'section_id': fields.many2one('crm.case.section', 'Section', required=False),
'user_id': fields.many2one('res.users', 'Responsible'),
}

View File

@ -465,7 +465,7 @@ class crm_meeting_generic_wizard(osv.osv_memory):
_name = 'crm.meeting.generic_wizard'
_columns = {
'section_id': fields.many2one('crm.case.section', 'Section', required=True),
'section_id': fields.many2one('crm.case.section', 'Section', required=False),
'user_id': fields.many2one('res.users', 'Responsible'),
}

View File

@ -107,7 +107,7 @@ class crm_phonecall_assign_wizard(osv.osv_memory):
_name = 'crm.phonecall.assign_wizard'
_columns = {
'section_id': fields.many2one('crm.case.section', 'Section', required=True),
'section_id': fields.many2one('crm.case.section', 'Section', required=False),
'user_id': fields.many2one('res.users', 'Responsible'),
}

View File

@ -624,5 +624,31 @@
<act_window domain="[('user_id', '=', active_id),('state','&lt;&gt;','done'),('state','&lt;&gt;','cancel'),('state','&lt;&gt;','pending')]" id="act_res_users_2_crm_case_opened" name="Open cases" res_model="crm.case" src_model="res.users" view_mode="tree,form,calendar" view_type="form"/>
<record model="ir.ui.view" id="view_users_form_simple_modif_inherited1">
<field name="name">view.users.form.crm.modif.inherited1</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form_simple_modif" />
<field name="type">form</field>
<field name="arch" type="xml">
<page string="Current Activity" position="inside">
<field name="section_id" widget="selection"/>
</page>
</field>
</record>
<record id="view_users_form_simple_modif_inherited2" model="ir.ui.view">
<field name="name">view.users.form.crm.modif.inherited2</field>
<field name="model">res.users</field>
<field name="type">form</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field eval="18" name="priority"/>
<field name="arch" type="xml">
<field name="password" position="after">
<field name="section_id" widget="selection" />
</field>
</field>
</record>
</data>
</openerp>

View File

@ -18,5 +18,130 @@
<field name="groups_id" eval="[(6,0,[ref('group_crm_manager')])]"/>
</record>
<!--rule for meeting-->
<record model="ir.rule.group" id="crm_meeting_rule_group">
<field name="name">crm.meeting.rule</field>
<field name="model_id" search="[('model','=','crm.meeting')]" model="ir.model"/>
<field name="global" eval="True"/>
</record>
<record id="crm_meeting_rule" model="ir.rule">
<field model="ir.model.fields" name="field_id" search="[('model','=','crm.case'),('name','=','section_id')]"/>
<field name="operator">=</field>
<field name="operand">user.section_id.id</field>
<field name="domain_force">['|',('section_id','=',False),('section_id','=',[user.section_id.id])]</field>
<field name="rule_group" ref="crm_meeting_rule_group"/>
</record>
<!--rule for Claims-->
<record model="ir.rule.group" id="crm_claim_rule_group">
<field name="name">crm.claim.rule</field>
<field name="model_id" search="[('model','=','crm.claim')]" model="ir.model"/>
<field name="global" eval="True"/>
</record>
<record id="crm_claim_rule" model="ir.rule">
<field model="ir.model.fields" name="field_id" search="[('model','=','crm.case'),('name','=','section_id')]"/>
<field name="operator">=</field>
<field name="operand">user.section_id.id</field>
<field name="domain_force">['|',('section_id','=',False),('section_id','=',[user.section_id.id])]</field>
<field name="rule_group" ref="crm_claim_rule_group"/>
</record>
<!--rule for Fund Raising-->
<record model="ir.rule.group" id="crm_fundraising_rule_group">
<field name="name">crm.fundraising.rule</field>
<field name="model_id" search="[('model','=','crm.fundraising')]" model="ir.model"/>
<field name="global" eval="True"/>
</record>
<record id="crm_fundraising_rule" model="ir.rule">
<field model="ir.model.fields" name="field_id" search="[('model','=','crm.case'),('name','=','section_id')]"/>
<field name="operator">=</field>
<field name="operand">user.section_id.id</field>
<field name="domain_force">['|',('section_id','=',False),('section_id','=',[user.section_id.id])]</field>
<field name="rule_group" ref="crm_fundraising_rule_group"/>
</record>
<!--rule for HelpDesk-->
<record model="ir.rule.group" id="crm_helpdesk_rule_group">
<field name="name">crm.helpdesk.rule</field>
<field name="model_id" search="[('model','=','crm.helpdesk')]" model="ir.model"/>
<field name="global" eval="True"/>
</record>
<record id="crm_helpdesk_rule" model="ir.rule">
<field model="ir.model.fields" name="field_id" search="[('model','=','crm.case'),('name','=','section_id')]"/>
<field name="operator">=</field>
<field name="operand">user.section_id.id</field>
<field name="domain_force">['|',('section_id','=',False),('section_id','=',[user.section_id.id])]</field>
<field name="rule_group" ref="crm_helpdesk_rule_group"/>
</record>
<!--rule for Jobs-->
<record model="ir.rule.group" id="crm_job_rule_group">
<field name="name">crm.meeting.rule</field>
<field name="model_id" search="[('model','=','crm.job')]" model="ir.model"/>
<field name="global" eval="True"/>
</record>
<record id="crm_job_rule" model="ir.rule">
<field model="ir.model.fields" name="field_id" search="[('model','=','crm.case'),('name','=','section_id')]"/>
<field name="operator">=</field>
<field name="operand">user.section_id.id</field>
<field name="domain_force">['|',('section_id','=',False),('section_id','=',[user.section_id.id])]</field>
<field name="rule_group" ref="crm_job_rule_group"/>
</record>
<!--rule for leads-->
<record model="ir.rule.group" id="crm_leads_rule_group">
<field name="name">crm.leads.rule</field>
<field name="model_id" search="[('model','=','crm.lead')]" model="ir.model"/>
<field name="global" eval="True"/>
</record>
<record id="crm_leads_rule" model="ir.rule">
<field model="ir.model.fields" name="field_id" search="[('model','=','crm.case'),('name','=','section_id')]"/>
<field name="operator">=</field>
<field name="operand">user.section_id.id</field>
<field name="domain_force">['|',('section_id','=',False),('section_id','=',[user.section_id.id])]</field>
<field name="rule_group" ref="crm_leads_rule_group"/>
</record>
<!--rule for business opportunities-->
<record model="ir.rule.group" id="crm_opportunities_rule_group">
<field name="name">crm.opportunities.rule</field>
<field name="model_id" search="[('model','=','crm.opportunity')]" model="ir.model"/>
<field name="global" eval="True"/>
</record>
<record id="crm_opportunities_rule" model="ir.rule">
<field model="ir.model.fields" name="field_id" search="[('model','=','crm.case'),('name','=','section_id')]"/>
<field name="operator">=</field>
<field name="operand">user.section_id.id</field>
<field name="domain_force">['|',('section_id','=',False),('section_id','=',[user.section_id.id])]</field>
<field name="rule_group" ref="crm_opportunities_rule_group"/>
</record>
<!--rule for phone calls-->
<record model="ir.rule.group" id="crm_phone_calls_rule_group">
<field name="name">crm.phone.calls.rule</field>
<field name="model_id" search="[('model','=','crm.phonecall')]" model="ir.model"/>
<field name="global" eval="True"/>
</record>
<record id="crm_phone_calls_rule" model="ir.rule">
<field model="ir.model.fields" name="field_id" search="[('model','=','crm.case'),('name','=','section_id')]"/>
<field name="operator">=</field>
<field name="operand">user.section_id.id</field>
<field name="domain_force">['|',('section_id','=',False),('section_id','=',[user.section_id.id])]</field>
<field name="rule_group" ref="crm_phone_calls_rule_group"/>
</record>
<!--rule for cases-->
<record model="ir.rule.group" id="crm_case_rule_group">
<field name="name">crm.case.rule</field>
<field name="model_id" search="[('model','=','crm.case')]" model="ir.model"/>
<field name="global" eval="True"/>
</record>
<record id="crm_case_rule" model="ir.rule">
<field model="ir.model.fields" name="field_id" search="[('model','=','crm.case'),('name','=','section_id')]"/>
<field name="operator">=</field>
<field name="operand">user.section_id.id</field>
<field name="domain_force">['|',('section_id','=',False),('section_id','=',[user.section_id.id])]</field>
<field name="rule_group" ref="crm_case_rule_group"/>
</record>
</data>
</openerp>

View File

@ -39,6 +39,7 @@
'crm_bugs_menu.xml',
'crm_feature_view.xml',
'crm_feature_menu.xml',
'security/crm_project_security.xml'
],
'demo_xml': ['crm_bugs_demo.xml'],
'installable': True,

View File

@ -42,6 +42,13 @@ class crm_project_bug(osv.osv):
'project_id':fields.many2one('project.project', 'Project'),
}
def _get_project(self, cr, uid, context):
user = self.pool.get('res.users').browse(cr, uid, uid)
return user.project_id.id
_defaults = {
'project_id':_get_project
}
def _map_ids(self, method, cr, uid, ids, *args, **argv):
if isinstance(ids, (str, int, long)):
select = [ids]

View File

@ -41,7 +41,12 @@ class crm_project_future_request(osv.osv):
'inherit_case_id':fields.many2one('crm.case','Case'),
'project_id':fields.many2one('project.project', 'Project'),
}
def _get_project(self, cr, uid, context):
user = self.pool.get('res.users').browse(cr,uid,uid)
return user.project_id.id
_defaults = {
'project_id':_get_project
}
def _map_ids(self, method, cr, uid, ids, *args, **argv):
if isinstance(ids, (str, int, long)):
select = [ids]

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<record model="ir.rule.group" id="crm_project_bug_rule_group">
<field name="name">crm.project.bug.rule.group</field>
<field name="model_id" search="[('model','=','crm.project.bug')]" model="ir.model"/>
<field name="global" eval="True"/>
</record>
<record id="crm_project_bug_rule" model="ir.rule">
<field model="ir.model.fields" name="field_id" search="[('model','=','crm.project.bug'),('name','=','project_id')]"/>
<field name="operator">=</field>
<field name="operand">user.project_id.id</field>
<field name="domain_force">['|',('project_id','=',False),('project_id','=',[user.project_id.id])]</field>
<field name="rule_group" ref="crm_project_bug_rule_group"/>
</record>
<record model="ir.rule.group" id="crm_project_feature_rule_group">
<field name="name">crm.project.feature.rule.group</field>
<field name="model_id" search="[('model','=','crm.project.future')]" model="ir.model"/>
<field name="global" eval="True"/>
</record>
<record id="crm_project_feature_rule" model="ir.rule">
<field model="ir.model.fields" name="field_id" search="[('model','=','crm.project.future'),('name','=','project_id')]"/>
<field name="operator">=</field>
<field name="operand">user.project_id.id</field>
<field name="domain_force">['|',('project_id','=',False),('project_id','=',[user.project_id.id])]</field>
<field name="rule_group" ref="crm_project_feature_rule_group"/>
</record>
</data>
</openerp>

View File

@ -495,5 +495,24 @@ class config_compute_remaining(osv.osv_memory):
}
config_compute_remaining()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
class message(osv.osv):
_name = "project.message"
_description = "Message"
_columns = {
'subject': fields.char('Subject', size=128),
'description': fields.char('Description', size =128),
'project_id': fields.many2one('project.project', 'Project', ondelete='cascade'),
'date': fields.date('Date'),
'user_id': fields.many2one('res.users', 'User'),
}
message()
class users(osv.osv):
_inherit = 'res.users'
_description ="User"
_columns = {
'project_id': fields.many2one('project.project', 'Project'),
}
users()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -484,7 +484,6 @@
<field name="view_mode">tree,form,calendar,gantt,graph</field>
<field eval="False" name="view_id"/>
<field eval="True" name="filter"/>
<field name="search_view_id" ref="view_task_search_form"/>
</record>
<menuitem action="action_view_task" id="menu_action_view_task" parent="project.menu_tasks"/>
@ -560,7 +559,7 @@
<field name="search_view_id" ref="view_task_search_form"/>
<field name="domain">[('state','=','open')]</field>
</record>
menu_main
<record id="action_view_task7" model="ir.actions.act_window">
<field name="name">Unassigned Tasks</field>
<field name="res_model">project.task</field>
@ -661,6 +660,77 @@
</field>
</record>
<!-- User Form-->
<record id="view_project_users_form_simple" model="ir.ui.view">
<field name="name">res.users.project.form1</field>
<field name="model">res.users</field>
<field name="type">form</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field eval="18" name="priority"/>
<field name="arch" type="xml">
<field name="password" position="after">
<field name="project_id" widget="selection" />
</field>
</field>
</record>
<record model="ir.ui.view" id="view_users_form_project_modif_inherited1">
<field name="name">view.users.form.project.modif.inherited1</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form_simple_modif" />
<field name="type">form</field>
<field name="arch" type="xml">
<page string="Current Activity" position="inside">
<field name="project_id" widget="selection"/>
</page>
</field>
</record>
<!--- Messages-->
<record id="view_project_message_form" model="ir.ui.view">
<field name="name">project.message.form</field>
<field name="model">project.message</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Messages">
<group colspan="6">
<field name="subject" select="1"/>
<field name="description"/>
<field name="project_id" />
<field name="date" select="2"/>
<field name="user_id" select="1"/>
</group>
</form>
</field>
</record>
<record id="view_project_message_tree" model="ir.ui.view">
<field name="name">project.message.form</field>
<field name="model">project.message</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Messages">
<field name="subject" select="1"/>
<field name="description" select="1"/>
<field name="project_id" select="1"/>
<field name="date" select="1"/>
<field name="user_id" select="1"/>
</tree>
</field>
</record>
<record id="action_view_project_messages_tree" model="ir.actions.act_window">
<field name="name">Messages</field>
<field name="res_model">project.message</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_project_message_tree"/>
</record>
<menuitem id="menu_message_main" name="Message" parent="menu_main"/>
<menuitem action="action_view_project_messages_tree" id="menu_message_tree" parent="menu_message_main"/>
<act_window domain="[('user_id', '=', active_id),('state', '&lt;&gt;', 'cancelled'),('state', '&lt;&gt;', 'done')]" id="act_res_users_2_project_task_opened" name="Assigned tasks" res_model="project.task" src_model="res.users" view_mode="tree,form,gantt,calendar,graph" view_type="form"/>
<act_window domain="[('user_id', '=', active_id),('date', '&gt;=', time.strftime('%Y-%m-01'))]" id="act_res_users_2_project_task_work_month" name="Month works" res_model="project.task.work" src_model="res.users" view_mode="tree,form" view_type="form"/>

View File

@ -36,5 +36,60 @@
<field name="rule_group" ref="task_comp_rule_group"/>
</record>
<!--rule for Tasks-->
<record model="ir.rule.group" id="project_task_rule_group">
<field name="name">project.task.rule.group</field>
<field name="model_id" search="[('model','=','project.task')]" model="ir.model"/>
<field name="global" eval="True"/>
</record>
<record id="project_task_rule" model="ir.rule">
<field model="ir.model.fields" name="field_id" search="[('model','=','project.task'),('name','=','project_id')]"/>
<field name="operator">=</field>
<field name="operand">user.project_id.id</field>
<field name="domain_force">['|',('project_id','=',False),('project_id','=',[user.project_id.id])]</field>
<field name="rule_group" ref="project_task_rule_group"/>
</record>
<record model="ir.rule.group" id="project_task_work_rule_group">
<field name="name">project.task.work.rule.group</field>
<field name="model_id" search="[('model','=','project.task.work')]" model="ir.model"/>
<field name="global" eval="True"/>
</record>
<record id="project_task_work_rule" model="ir.rule">
<field model="ir.model.fields" name="field_id" search="[('model','=','project.task.work'),('name','=','task_id.project_id')]"/>
<field name="operator">=</field>
<field name="operand">user.project_id.id</field>
<field name="domain_force">['|',('task_id.project_id','=',False),('task_id.project_id','=',[user.project_id.id])]</field>
<field name="rule_group" ref="project_task_work_rule_group"/>
</record>
<record model="ir.rule.group" id="project_project_rule_group">
<field name="name">project.project.work.rule.group</field>
<field name="model_id" search="[('model','=','project.project')]" model="ir.model"/>
<field name="global" eval="True"/>
</record>
<record id="project_project_rule" model="ir.rule">
<field model="ir.model.fields" name="field_id" search="[('model','=','project.project'),('name','=','id')]"/>
<field name="operator">=</field>
<field name="operand">user.project_id.id</field>
<field name="domain_force">['|',('id','=',False),('id','=',[user.project_id.id])]</field>
<field name="rule_group" ref="project_project_rule_group"/>
</record>
<record model="ir.rule.group" id="project_message_rule_group">
<field name="name">project.project.work.rule.group</field>
<field name="model_id" search="[('model','=','project.message')]" model="ir.model"/>
<field name="global" eval="True"/>
</record>
<record id="project_message_rule" model="ir.rule">
<field model="ir.model.fields" name="field_id" search="[('model','=','project.message'),('name','=','project_id')]"/>
<field name="operator">=</field>
<field name="operand">user.project_id.id</field>
<field name="domain_force">['|',('project_id','=',False),('project_id','=',[user.project_id.id])]</field>
<field name="rule_group" ref="project_message_rule_group"/>
</record>
</data>
</openerp>

View File

@ -38,7 +38,11 @@ crm modules.
'website': 'http://www.openerp.com',
'depends': ['sale', 'crm'],
'init_xml': [],
'update_xml': ['sale_crm_wizard.xml', 'sale_crm_view.xml', 'process/sale_crm_process.xml'],
'update_xml': ['sale_crm_wizard.xml',
'sale_crm_view.xml',
'process/sale_crm_process.xml',
'security/sale_crm_security.xml',
],
'demo_xml': [],
'installable': True,
'active': False,

View File

@ -23,10 +23,19 @@ from osv import osv,fields
class sale_order(osv.osv):
_inherit = 'sale.order'
_description = 'Sale orders'
_columns = {
'section_id': fields.many2one('crm.case.section', 'Section'),
}
def _get_section(self, cr, uid, context):
user = self.pool.get('res.users').browse(cr,uid,uid)
return user.section_id.id
_defaults = {
'section_id':_get_section
}
sale_order()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -25,7 +25,7 @@
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr="/form/notebook/page[@string='Other data']/field[@name='company_id']" position="after">
<field name="section_id"/>
<field name="section_id" widget='selection'/>
</xpath>
</field>
</record>

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="0">
<record model="ir.rule.group" id="sale_order_crm_rule_group">
<field name="name">Sale Order sale_crm</field>
<field name="model_id" search="[('model','=','sale.order')]" model="ir.model"/>
<field name="global" eval="True"/>
</record>
<record model="ir.rule" id="sale_order_comp_rule">
<field name="field_id" search="[('model','=','sale.order'),('name','=','section_id')]" model="ir.model.fields"/>
<field name="operator">=</field>
<field name="operand">user.section_id.id</field>
<field name="rule_group" ref="sale_order_crm_rule_group"/>
<field name="domain_force">['|',('section_id','=',False),('section_id','=',[user.section_id.id])]</field>
</record>
<record model="ir.rule.group" id="sale_order_line_crm_rule_group">
<field name="name">Sale Order Line sale_crm</field>
<field name="model_id" search="[('model','=','sale.order.line')]" model="ir.model"/>
<field name="global" eval="True"/>
</record>
<record model="ir.rule" id="sale_order_line_comp_rule">
<field name="field_id" search="[('model','=','sale.order.line'),('name','=','order_id.section_id')]" model="ir.model.fields"/>
<field name="operator">=</field>
<field name="operand">user.section_id.id</field>
<field name="rule_group" ref="sale_order_line_crm_rule_group"/>
<field name="domain_force">['|',('order_id.section_id','=',False),('order_id.section_id','=',[user.section_id.id])]</field>
</record>
</data>
</openerp>