+ Add a field + + default_warehouse + + in sales team. +
++ Create sort kind of api where any object with field called warehouse_id will +take the default value from the sales team field +this taking into account the team defined in + + Default Sale Teams + + field defined +in the res.user model. +
++ To improve, consistency and usability we add the next features: +
++ If you try to add a default sale team where the user do not belongs wil throw +you an error message: Can not set default team is do not belongs to sale team +
++ Add an automated action/server action to update the user default sales team +every time that a sales teams by: +
++++
+- + add user's default sale team if empty. +
+- + remove default sale team from user if not longer in sale team. +
+- + dummy write to update m2m in users to make new feature for filtering +records. +
+
+ Currently this default warehouse feature applies for sale.order, +stock.picking.type and stock.picking. +
++ Also add a new feature for Permissions and Security: Taking advantage of the +default_warehouse field in the sales team model now we can filter the +records (picking type and picking model) to only show those records that match +with the user sale teams default_warehouse. To accomplish this I: +
++ To add more models use it simple do this: +
++ inherit the class that you want to set the field warehouse_id: +
++class SomeClass(models.Model): + _name = 'some.class' + _inherit = ['some.class', 'default.warehouse'] + warehouse_id = fields.Many2one('stock.warehouse', help='Warehouse were' + 'this object will belong to') ++
+ 2. Create two ir.rule to filter stock.picking and stock.picking.type taking +into account the current user warehouses. When a user is part of warehouse +teams will be able to access only the records related to that warehouses: +
++<record id="rule_group_model" model="ir.rule"> + <field name="name">Limited access to model (filtered by sales teams)</field> + <field name="model_id" search="[('model','=','model')]" model="ir.model"/> + <field name="groups" eval"[Command.set([ref('xml_id_group')])]/> + <field name="domain_force">[('warehouse_id', 'in', [team.default_warehouse.id for team in user.sale_team_ids if team.default_warehouse])]</field> +</record> +<record id="rule_group_model_2" model="ir.rule"> + <field name="name">Access to all model</field> + <field name="model_id" search="[('model','=','model')]" model="ir.model"/> + <field name="groups" eval"[Command.set([ref('xml_id_group')])]/> + <field name="domain_force">[(1, '=', 1)]</field> +</record> ++
+ The default value from this field will be the warehouse setted in the section +If the user is not related to a sales team or not warehouse setted on the +section the default warehouse will be set using the default behavior of the +system which is assign the main warehouse. +
++ Bugs are tracked on + + GitHub Issues + + . +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and +welcomed feedback + + here + +
++ + Contributors + +
+