18 changed files with 489 additions and 2 deletions
			
			
		| @ -0,0 +1,23 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ############################################################################## | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| #    Copyright (C) 2009-TODAY Cybrosys Technologies(<http://www.cybrosys.com>). | |||
| #    Author: Nilmar Shereef(<http://www.cybrosys.com>) | |||
| #    you can modify it under the terms of the GNU LESSER | |||
| #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | |||
| # | |||
| #    It is forbidden to publish, distribute, sublicense, or sell copies | |||
| #    of the Software or modified copies of the Software. | |||
| # | |||
| #    This program is distributed in the hope that it will be useful, | |||
| #    but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
| #    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | |||
| # | |||
| #    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | |||
| #    GENERAL PUBLIC LICENSE (LGPL v3) along with this program. | |||
| #    If not, see <http://www.gnu.org/licenses/>. | |||
| # | |||
| ############################################################################## | |||
| import models | |||
| @ -0,0 +1,43 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ############################################################################## | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| #    Copyright (C) 2009-TODAY Cybrosys Technologies(<http://www.cybrosys.com>). | |||
| #    Author: Nilmar Shereef(<http://www.cybrosys.com>) | |||
| #    you can modify it under the terms of the GNU LESSER | |||
| #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | |||
| # | |||
| #    It is forbidden to publish, distribute, sublicense, or sell copies | |||
| #    of the Software or modified copies of the Software. | |||
| # | |||
| #    This program is distributed in the hope that it will be useful, | |||
| #    but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
| #    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | |||
| # | |||
| #    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | |||
| #    GENERAL PUBLIC LICENSE (LGPL v3) along with this program. | |||
| #    If not, see <http://www.gnu.org/licenses/>. | |||
| # | |||
| ############################################################################## | |||
| { | |||
|     'name': 'CRM Kanban Drag Back Permission', | |||
|     'version': '0.2', | |||
|     'category': 'CRM', | |||
|     'sequence': 6, | |||
|     'summary': 'Permission for Drag Back in CRM', | |||
|     'author': 'Cybrosys Techno Solutions', | |||
|     'company': 'Cybrosys Techno Solutions', | |||
|     'website': 'http://www.cybrosys.com', | |||
|     'depends': ['crm', 'sale', 'sales_team'], | |||
|     'images': ['static/description/banner.jpg'], | |||
|     'data': [ | |||
|         'views/crm_sales_team.xml', | |||
|         'views/crm_lead_update.xml', | |||
|         'views/templates.xml', | |||
|         'security/ir.model.access.csv', | |||
| 
 | |||
|     ], | |||
|     'installable': True, | |||
|     'auto_install': False, | |||
| } | |||
| @ -0,0 +1,25 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ############################################################################## | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| #    Copyright (C) 2009-TODAY Cybrosys Technologies(<http://www.cybrosys.com>). | |||
| #    Author: Nilmar Shereef(<http://www.cybrosys.com>) | |||
| #    you can modify it under the terms of the GNU LESSER | |||
| #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | |||
| # | |||
| #    It is forbidden to publish, distribute, sublicense, or sell copies | |||
| #    of the Software or modified copies of the Software. | |||
| # | |||
| #    This program is distributed in the hope that it will be useful, | |||
| #    but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
| #    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | |||
| # | |||
| #    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | |||
| #    GENERAL PUBLIC LICENSE (LGPL v3) along with this program. | |||
| #    If not, see <http://www.gnu.org/licenses/>. | |||
| # | |||
| ############################################################################## | |||
| import update_kanban_record | |||
| 
 | |||
| 
 | |||
| @ -0,0 +1,136 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ############################################################################## | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| #    Copyright (C) 2009-TODAY Cybrosys Technologies(<http://www.cybrosys.com>). | |||
| #    Author: Nilmar Shereef(<http://www.cybrosys.com>) | |||
| #    you can modify it under the terms of the GNU LESSER | |||
| #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | |||
| # | |||
| #    It is forbidden to publish, distribute, sublicense, or sell copies | |||
| #    of the Software or modified copies of the Software. | |||
| # | |||
| #    This program is distributed in the hope that it will be useful, | |||
| #    but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
| #    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | |||
| # | |||
| #    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | |||
| #    GENERAL PUBLIC LICENSE (LGPL v3) along with this program. | |||
| #    If not, see <http://www.gnu.org/licenses/>. | |||
| # | |||
| ############################################################################## | |||
| from openerp import models, fields, api | |||
| 
 | |||
| 
 | |||
| class StageChange(models.Model): | |||
|     _inherit = 'crm.lead' | |||
| 
 | |||
|     stage_previous = fields.Integer(string="Previous stage", default=False) | |||
|     stage_next = fields.Integer(string="Next stage", default=False) | |||
|     stage_type = fields.Char() | |||
|     new_stage_id = fields.Selection([('previous', 'Previous'), ('current', 'Current'), ('next', 'Next')], readonly=True) | |||
|     previous = fields.Char(string="Previous Stage", compute='get_previous_stage') | |||
|     next_stage = fields.Char(string="Next Stage", compute='get_next_stage') | |||
| 
 | |||
|     @api.one | |||
|     def get_previous_stage(self): | |||
|         self.previous = self.env['crm.case.stage'].search([('id', '=', self.stage_previous)]).name | |||
| 
 | |||
|     @api.one | |||
|     def get_next_stage(self): | |||
|         self.next_stage = self.env['crm.case.stage'].search([('id', '=', self.stage_next)]).name | |||
| 
 | |||
|     @api.one | |||
|     def approve_oppor(self): | |||
|         self.write({'stage_id': self.env['crm.case.stage'].browse([self.stage_next]).id, 'stage_previous': self.stage_id.id, 'stage_next': 0, 'new_stage_id': ''}) | |||
|         return | |||
| 
 | |||
|     @api.one | |||
|     def decline_oppor(self): | |||
|         self.write({'stage_id': self.env['crm.case.stage'].browse([self.stage_previous]).id, 'stage_previous': self.stage_id.id, 'stage_next': 0, 'new_stage_id': ''}) | |||
|         return | |||
| 
 | |||
|     @api.multi | |||
|     def write(self, vals): | |||
|         if not vals.get('stage_previous') and vals.get('stage_id'): | |||
|             last_stage = self.browse(self.ids).stage_id | |||
| 
 | |||
|             if self.env['crm.case.stage'].browse([vals['stage_id']]).stage_order < last_stage.stage_order \ | |||
|                     and not self.env['res.users'].browse(self._uid).has_group('base.group_sale_manager') \ | |||
|                     and not self.env['res.users'].browse(self._uid).has_group('base.group_sale_salesman_all_leads'): | |||
|                 vals['stage_previous'] = last_stage.id | |||
|                 vals['stage_next'] = vals['stage_id'] | |||
|                 vals['stage_type'] = "approval" | |||
|                 vals['new_stage_id'] = 'current' | |||
|                 to_approve = self.env['crm.case.stage'].search([('type', '=', 'approval'), ('name', '=', 'Waiting for approval')]) | |||
|                 if to_approve: | |||
|                     vals['stage_id'] = to_approve.id | |||
|                 else: | |||
|                     values = { | |||
|                         'name': "Waiting for approval", | |||
|                         'type': "approval", | |||
|                         'stage_order': -1, | |||
|                     } | |||
|                     result = self.env['crm.case.stage'].create(values) | |||
|                     vals['stage_id'] = result.id | |||
| 
 | |||
|         elif vals.get('stage_id'): | |||
|             vals['stage_type'] = "" | |||
|         res = super(StageChange, self).write(vals) | |||
|         return res | |||
| 
 | |||
|     def get_approvals(self, cr, uid, context=None): | |||
|         tree_res = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'crm', | |||
|                                                                        'crm_case_tree_view_oppor') | |||
|         x = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'crm_drag_back_permission', 'action_waiting_approval_window') | |||
|         tree_id = tree_res and tree_res[1] or False | |||
|         form_res = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'crm', | |||
|                                                                        'crm_case_form_view_leads') | |||
|         form_id = form_res and form_res[1] or False | |||
|         approval_stage = self.pool.get('crm.lead') | |||
|         approvals = approval_stage.search(cr, uid, [('stage_id.type', '=', "approval")]) | |||
|         user_obj = self.pool.get('res.users') | |||
|         u_id = user_obj.browse(cr, uid, uid, context=context) | |||
|         if u_id.has_group('base.group_sale_salesman_all_leads') and u_id.has_group( | |||
|                 'base.group_sale_salesman') and u_id.has_group('base.group_sale_manager'): | |||
|             object_list = approvals | |||
|         elif u_id.has_group('base.group_sale_salesman_all_leads') and u_id.has_group('base.group_sale_salesman'): | |||
|             teams = self.pool.get('crm.case.section').search(cr, uid, [('user_id.id', '=', uid)]) | |||
|             object_list = [] | |||
|             if approvals: | |||
|                 for obj in approvals: | |||
|                     if self.pool.get('crm.lead').browse(cr, uid, [obj]).section_id.id in teams: | |||
|                         object_list.append(obj) | |||
|         elif u_id.has_group('base.group_sale_salesman'): | |||
|             object_list = [] | |||
|             if approvals: | |||
|                 for obj in approvals: | |||
|                     if self.pool.get('crm.lead').browse(cr, uid, [obj]).user_id.id == uid: | |||
|                         object_list.append(obj) | |||
|         return { | |||
|             'model': 'ir.actions.act_window', | |||
|             'name': 'Waiting Approval', | |||
|             'type': 'ir.actions.act_window', | |||
|             'view_type': 'form', | |||
|             'view_mode': 'form,tree', | |||
|             'res_model': 'crm.lead', | |||
|             'views': [(tree_id, 'tree'), (form_id, 'form')], | |||
|             'domain': [('id', 'in', object_list)], | |||
|             'id': x[1], | |||
|         } | |||
| 
 | |||
| 
 | |||
| class NewStage(models.Model): | |||
|     _inherit = 'crm.case.stage' | |||
| 
 | |||
|     stage_order = fields.Integer(string='Order') | |||
|     type = fields.Selection([('lead', 'Lead'), ('opportunity', 'Opportunity'), ('both', 'Both'), ('approval', '')], | |||
|                             string='Type', required=True, | |||
|                             help="This field is used to distinguish stages related to Leads from stages related to " | |||
|                                  "Opportunities or to specify stages available for both types.") | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | 
| After Width: | Height: | Size: 120 KiB | 
| After Width: | Height: | Size: 9.3 KiB | 
| After Width: | Height: | Size: 64 KiB | 
| After Width: | Height: | Size: 56 KiB | 
| After Width: | Height: | Size: 42 KiB | 
| After Width: | Height: | Size: 61 KiB | 
| @ -0,0 +1,93 @@ | |||
| <section class="oe_container"> | |||
|     <div class="oe_row oe_spaced"> | |||
|         <h2 class="oe_slogan">CRM Kanban Drag Back</h2> | |||
|         <h3 class="oe_slogan">Permission for Back Drag in CRM Kanban view</h3> | |||
|          <h4 class="oe_slogan">Author : Cybrosys Techno Solutions , www.cybrosys.com</h4> | |||
|     </div> | |||
|     <div class="oe_row oe_spaced"> | |||
|         <div> | |||
|             This module restricts some users to drag    leads backwards in sales pipeline without permission. | |||
|         </div> | |||
|     </div> | |||
| 
 | |||
|     <div class="oe_row oe_spaced"> | |||
|         <div class="oe_span12"> | |||
|             <div class="oe_demo oe_picture oe_screenshot"> | |||
|                 <img src="image1.png"> | |||
|             </div> | |||
|         </div> | |||
|         <div class="oe_span12"> | |||
|             <p class='oe_mt32'> | |||
|                 Go to Settings -> Configuration -> Sales, and enable the 'Manage Sales Teams' option | |||
|                 under the Sales Teams. | |||
|             </p> | |||
|         </div> | |||
|         <div class="oe_span12"> | |||
|             <div class="oe_demo oe_picture oe_screenshot"> | |||
|                 <img src="image2.png"> | |||
|             </div> | |||
|         </div> | |||
|         <div class="oe_span12"> | |||
|             <p class='oe_mt32'> | |||
|                 Go to Configuration -> Stages, and set an 'order'(integer value) for each stage you want to use in the pipeline. | |||
|                 The drag back is working based on this 'order' field value. When a user tries to drag a lead from one stage to another, | |||
|                 we will check the 'order' of those two stages. | |||
|                 If the movement is from a stage with higher order value to a stage with lower order value, it will be considered | |||
|                 as a back drag. | |||
|             </p> | |||
|         </div> | |||
|     </div> | |||
| </section> | |||
| 
 | |||
| <section> | |||
|     <div class="oe_row oe_spaced"> | |||
|         <div class="oe_span12"> | |||
|             <p class='oe_mt32'> | |||
|                When a salesperson tries to perform a back drag, the lead will go to a new stage, 'Waiting for Approval'. | |||
|                 From this stage, the Administrator or the Head of Sales of team which the lead belongs to, can | |||
|                 approve the lead to the stage requested by the user or decline the lead back to it's previous stage. | |||
|                 The salesperson can't move the lead from this stage. | |||
|             </p> | |||
|             <div class="oe_span12"> | |||
|                 <div class="oe_demo oe_picture oe_screenshot"> | |||
|                     <img src="image3.png"> | |||
|                 </div> | |||
|             </div> | |||
| 
 | |||
|         </div> | |||
|     </div> | |||
| </section> | |||
|  <section> | |||
|     <div class="oe_row oe_spaced"> | |||
|         <div class="oe_span12"> | |||
|             <p class='oe_mt32'> | |||
|                In the 'Waiting for Approval' stage, a lead will be visible only to the administrator, | |||
|                 the user to which the lead is assigned to and the head of sales  of team that the lead belongs to. | |||
|                 When we select a lead in the 'Waiting for Approval' stage, we can see the stages, the lead comes from and where the lead is headed to. | |||
|             </p> | |||
|         </div> | |||
|         <div class="oe_span12"> | |||
|              <div class="oe_demo oe_picture oe_screenshot"> | |||
|                 <img src="image5.png"> | |||
|             </div> | |||
|         </div> | |||
|     </div> | |||
| </section> | |||
| 
 | |||
| <section class="oe_container oe_dark"> | |||
|     <h2 class="oe_slogan">Need Any Help?</h2> | |||
|     <div class="oe_slogan"> | |||
|         <a  class="btn btn-primary btn-lg mt8" | |||
|             style="color: #FFFFFF !important;" href="http://www.cybrosys.com"><i | |||
|             class="fa fa-envelope"></i> Email </a> <a | |||
|             class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;" | |||
|             href="http://www.cybrosys.com/contact/"><i | |||
|             class="fa fa-phone"></i> Contact Us </a> <a | |||
|             class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;" | |||
|             href="http://www.cybrosys.com/odoo-customization-and-installation/"><i | |||
|             class="fa fa-check-square"></i> Request Customization </a> | |||
|     </div> | |||
| </section> | |||
| 
 | |||
| 
 | |||
| 
 | |||
| @ -0,0 +1,16 @@ | |||
| openerp.crm_drag_back_permission = function (instance) { | |||
|     var kanbanview = instance.web_kanban; | |||
|     kanbanview.KanbanView.include({ | |||
|         do_process_groups: function (groups) { | |||
|             var x = [] ; | |||
|             for (var i in groups) { | |||
|                 if (groups[i]['attributes']['value'][1] != 'Waiting for approval') { | |||
|                     x[i] = groups[i]; | |||
|                 } | |||
| 
 | |||
|             } | |||
|             this._super(x); | |||
| 
 | |||
|         }, | |||
|         }); | |||
| } | |||
| @ -0,0 +1,115 @@ | |||
| <?xml version="1.0" encoding="UTF-8" ?> | |||
| <openerp> | |||
|     <data> | |||
|         <record id="crm_case_form_view_lead_updated" model="ir.ui.view"> | |||
|             <field name="name">Leads updated</field> | |||
|             <field name="model">crm.lead</field> | |||
|             <field name="inherit_id" ref="crm.crm_case_form_view_leads" /> | |||
|             <field name="arch" type="xml"> | |||
|                 <xpath expr="//field[@name='partner_id']" position="after"> | |||
|                     <field name="stage_previous" invisible="1" /> | |||
|                     <field name="stage_next" invisible="1" /> | |||
|                     <field name="stage_type" invisible="1" /> | |||
|                 </xpath> | |||
|                 <xpath expr="//field[@name='user_id']" position="attributes"> | |||
|                     <attribute name="required">1</attribute> | |||
|                 </xpath> | |||
|                 <xpath expr="//form/header/field[@name='stage_id']" position="attributes"> | |||
|                     <attribute name="attrs">{'invisible': [('stage_type','=','approval')]}</attribute> | |||
|                 </xpath> | |||
| 
 | |||
|                 <xpath expr="//form/header" position="inside"> | |||
|                     <button name="approve_oppor" string="Approve" groups="base.group_sale_manager,base.group_sale_salesman_all_leads" | |||
|                             type="object" class="oe_highlight o_wow" attrs="{'invisible': [('stage_type','!=','approval')]}"/> | |||
|                     <button name="decline_oppor" string="Decline" groups="base.group_sale_manager,base.group_sale_salesman_all_leads" | |||
|                             type="object" class="oe_highlight o_wow"  attrs="{'invisible': [('stage_type','!=','approval')]}"/> | |||
| 
 | |||
|                 </xpath> | |||
|                 <xpath expr="//form/header/button[1]" position="attributes"> | |||
|                     <attribute name="attrs">{'invisible': [('stage_type','=','approval')]} | |||
|                     </attribute> | |||
|                 </xpath> | |||
| 
 | |||
|                 <xpath expr="//group[1]/group[2]" position="before"> | |||
|                     <group> | |||
|                         <field name="previous" /> | |||
|                         <field name="next_stage"/> | |||
|                     </group> | |||
|                 </xpath> | |||
| 
 | |||
|             </field> | |||
|         </record> | |||
| 
 | |||
|         <record id="crm_case_form_view_opport_updated" model="ir.ui.view"> | |||
|             <field name="name">Opportunity updated</field> | |||
|             <field name="model">crm.lead</field> | |||
|             <field name="inherit_id" ref="crm.crm_case_form_view_oppor" /> | |||
|             <field name="arch" type="xml"> | |||
|                 <xpath expr="//field[@name='partner_id']" position="after"> | |||
|                     <field name="stage_previous" invisible="1" /> | |||
|                     <field name="stage_next" invisible="1" /> | |||
|                     <field name="stage_type" invisible="1" /> | |||
|                 </xpath> | |||
|                 <xpath expr="//field[@name='user_id']" position="attributes"> | |||
|                     <attribute name="required">1</attribute> | |||
|                 </xpath> | |||
| 
 | |||
|                 <xpath expr="//form/header/field[@name='stage_id']" position="attributes"> | |||
|                     <attribute name="attrs">{'invisible': [('stage_type','=','approval')]}</attribute> | |||
|                 </xpath> | |||
| 
 | |||
| 
 | |||
|                 <xpath expr="//form/header" position="inside"> | |||
|                     <button name="approve_oppor" string="Approve" groups="base.group_sale_manager,base.group_sale_salesman_all_leads" | |||
|                             type="object" class="oe_highlight o_wow" attrs="{'invisible': [('stage_type','!=','approval')]}"/> | |||
|                     <button name="decline_oppor" string="Decline" groups="base.group_sale_manager,base.group_sale_salesman_all_leads" | |||
|                             type="object" class="oe_highlight o_wow" attrs="{'invisible': [('stage_type','!=','approval')]}" /> | |||
| 
 | |||
|                 </xpath> | |||
|                 <xpath expr="//form/header/button[1]" position="attributes"> | |||
|                     <attribute name="attrs">{'invisible': [('stage_type','=','approval')]}</attribute> | |||
|                 </xpath> | |||
| 
 | |||
|                 <xpath expr="//group[1]/group[2]" position="before"> | |||
|                     <group> | |||
|                         <field name="previous" /> | |||
|                         <field name="next_stage"/> | |||
|                     </group> | |||
|                 </xpath> | |||
|             </field> | |||
|         </record> | |||
| 
 | |||
|         <record id="crm_case_stage_updated" model="ir.ui.view"> | |||
|             <field name="name">Stages Updated</field> | |||
|             <field name="model">crm.case.stage</field> | |||
|             <field name="inherit_id" ref="crm.crm_case_stage_form"/> | |||
|             <field name="arch" type="xml"> | |||
|                 <xpath expr="//field[@name='on_change']" position="after"> | |||
|                     <field name="stage_order" /> | |||
|                 </xpath> | |||
|             </field> | |||
|         </record> | |||
| 
 | |||
|         <record id="action_waiting_approval_window" model="ir.actions.act_window"> | |||
|             <field name="name">Waiting</field> | |||
|             <field name="res_model">crm.lead</field> | |||
|             <field name="view_type">form</field> | |||
|             <field name="view_mode">tree,form</field> | |||
|         </record> | |||
| 
 | |||
| 
 | |||
|         <record id="action_waiting_approval" model="ir.actions.server"> | |||
|             <field name="name">Waiting</field> | |||
|             <field name="type">ir.actions.server</field> | |||
|             <field name="res_model">crm.lead</field> | |||
|             <field name="model_id" ref="model_crm_lead"/> | |||
|             <field name="view_type">form</field> | |||
|             <field name="view_mode">tree,form</field> | |||
|             <field name="state">code</field> | |||
|             <field name="code">action = self.get_approvals(cr, uid, context=context)</field> | |||
|         </record> | |||
| 
 | |||
|         <menuitem name="Waiting for approval" id="waiting_approval" action="action_waiting_approval" parent="base.menu_sales" /> | |||
| 
 | |||
|     </data> | |||
| </openerp> | |||
| @ -0,0 +1,21 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <openerp> | |||
| <data> | |||
|     <record id="base.group_sale_manager" model="res.groups"> | |||
|         <field name="name">CEO/Head of Business strategy</field> | |||
|         <field name="implied_ids" eval="[(4, ref('base.group_sale_salesman'))]"/> | |||
|     </record> | |||
|     <record id="base.group_sale_salesman_all_leads" model="res.groups"> | |||
|         <field name="name">Head Of Sales</field> | |||
|         <field name="category_id" ref="base.module_category_sales_management"/> | |||
|         <field name="implied_ids" eval="[(4, ref('base.group_sale_salesman'))]"/> | |||
|         <field name="comment">the user will have access to all records of everyone in the sales application.</field> | |||
|     </record> | |||
|     <record id="base.group_sale_salesman" model="res.groups"> | |||
|         <field name="name">SalesPerson</field> | |||
|         <field name="category_id" ref="base.module_category_sales_management"/> | |||
|         <field name="implied_ids" eval="[(4, ref('base.group_user'))]"/> | |||
|         <field name="comment">the user will have access to his own data in the sales application.</field> | |||
|     </record> | |||
| </data> | |||
| </openerp> | |||
| @ -0,0 +1,12 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <openerp> | |||
|     <data> | |||
|         <template id="assets_backend" name="hide_stage_kanban" inherit_id="web.assets_backend"> | |||
|             <xpath expr="." position="inside"> | |||
| 
 | |||
|                 <script type="text/javascript" src="/crm_drag_back_permission/static/src/js/hide_stage.js"></script> | |||
| 
 | |||
|             </xpath> | |||
|         </template> | |||
|     </data> | |||
| </openerp> | |||
					Loading…
					
					
				
		Reference in new issue