[IMP] rma: teams flow

- If no RMA Team is set, we'll assign a default one to the new RMA.
- A sequence is now used to search for the top team and assign it.
- No default user is assigned when it's not in the context (i.e. portal
rmas).
This commit is contained in:
david
2020-08-18 12:26:49 +02:00
parent 04299968c6
commit fe6993e882
7 changed files with 73 additions and 11 deletions

View File

@@ -89,8 +89,23 @@ An RMA can also be created from a return of a delivery order:
Every RMA will be in confirmed state and they will
be linked to the returning operation generated previously.
**Note: An RMA can also be created from an incoming email (See configuration
section).**
There are Optional RMA Teams that can be used for:
- Organize RMAs in sections.
- Subscribe users to notifications.
- Create RMAs from incoming mail to special aliases (See configuration
section).
To create an RMA Team (RMA Responsible user level required):
#. Go to *RMA > Configuration > RMA Teams*
#. Create a new team and assign a name, a responsible and members.
#. Subscribe users to notifications, that can be of these subtypes:
- RMA draft. When a new RMA is created.
- Notes, Debates, Activities. As in standard Odoo.
#. In the list view, use the cross handle to sort RMA Teams. The top team
will be the default one if no team is set.
Known issues / Roadmap
======================

View File

@@ -55,7 +55,6 @@ class Rma(models.Model):
comodel_name="res.users",
string="Responsible",
track_visibility="always",
default=lambda self: self.env.user,
states={
'locked': [('readonly', True)],
'cancelled': [('readonly', True)],
@@ -499,6 +498,9 @@ class Rma(models.Model):
ir_sequence = ir_sequence.with_context(
force_company=vals['company_id'])
vals['name'] = ir_sequence.next_by_code('rma')
# Assign a default team_id which will be the first in the sequence
if "team_id" not in vals:
vals["team_id"] = self.env["rma.team"].search([], limit=1).id
return super().create(vals)
def copy(self, default=None):

View File

@@ -8,8 +8,9 @@ class RmaTeam(models.Model):
_name = "rma.team"
_inherit = ['mail.alias.mixin', 'mail.thread']
_description = "RMA Team"
_order = "name"
_order = "sequence, name"
sequence = fields.Integer()
name = fields.Char(
required=True,
translate=True,

View File

@@ -33,5 +33,20 @@ An RMA can also be created from a return of a delivery order:
Every RMA will be in confirmed state and they will
be linked to the returning operation generated previously.
**Note: An RMA can also be created from an incoming email (See configuration
section).**
There are Optional RMA Teams that can be used for:
- Organize RMAs in sections.
- Subscribe users to notifications.
- Create RMAs from incoming mail to special aliases (See configuration
section).
To create an RMA Team (RMA Responsible user level required):
#. Go to *RMA > Configuration > RMA Teams*
#. Create a new team and assign a name, a responsible and members.
#. Subscribe users to notifications, that can be of these subtypes:
- RMA draft. When a new RMA is created.
- Notes, Debates, Activities. As in standard Odoo.
#. In the list view, use the cross handle to sort RMA Teams. The top team
will be the default one if no team is set.

View File

@@ -440,8 +440,29 @@ stock location and click on Return button.</li>
Every RMA will be in confirmed state and they will
be linked to the returning operation generated previously.</li>
</ol>
<p><strong>Note: An RMA can also be created from an incoming email (See configuration
section).</strong></p>
<p>There are Optional RMA Teams that can be used for:</p>
<blockquote>
<ul class="simple">
<li>Organize RMAs in sections.</li>
<li>Subscribe users to notifications.</li>
<li>Create RMAs from incoming mail to special aliases (See configuration
section).</li>
</ul>
</blockquote>
<p>To create an RMA Team (RMA Responsible user level required):</p>
<blockquote>
<ol class="arabic simple">
<li>Go to <em>RMA &gt; Configuration &gt; RMA Teams</em></li>
<li>Create a new team and assign a name, a responsible and members.</li>
<li>Subscribe users to notifications, that can be of these subtypes:<ul>
<li>RMA draft. When a new RMA is created.</li>
<li>Notes, Debates, Activities. As in standard Odoo.</li>
</ul>
</li>
<li>In the list view, use the cross handle to sort RMA Teams. The top team
will be the default one if no team is set.</li>
</ol>
</blockquote>
</div>
<div class="section" id="known-issues-roadmap">
<h1><a class="toc-backref" href="#id3">Known issues / Roadmap</a></h1>

View File

@@ -2,6 +2,17 @@
<!-- Copyright 2020 Tecnativa - Ernesto Tejeda
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="rma_team_view_tree" model="ir.ui.view">
<field name="model">rma.team</field>
<field name="arch" type="xml">
<tree>
<field name="sequence" widget="handle" />
<field name="name" />
<field name="user_id" />
<field name="company_id" groups="base.group_multi_company" />
</tree>
</field>
</record>
<record id="rma_team_view_form" model="ir.ui.view">
<field name="name">rma.team.view.form</field>
<field name="model">rma.team</field>

View File

@@ -29,9 +29,6 @@ class SaleOrderRmaWizard(models.TransientModel):
default=lambda r: r.order_id.warehouse_id.rma_loc_id.id,
)
def create_rma_from_portal(self):
self.ensure_one()
def create_rma(self, from_portal=None):
self.ensure_one()
lines = self.line_ids.filtered(lambda r: r.quantity > 0.0)