[IMP] rma: pre-commit auto fixes

This commit is contained in:
Antoni Marroig Campomar
2024-05-03 13:12:08 +02:00
committed by Víctor Martínez
parent 5e49679e30
commit 3e40788c55
14 changed files with 237 additions and 219 deletions

View File

@@ -17,25 +17,25 @@ Return Merchandise Authorization Management
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3 :alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Frma-lightgray.png?logo=github .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Frma-lightgray.png?logo=github
:target: https://github.com/OCA/rma/tree/16.0/rma :target: https://github.com/OCA/rma/tree/17.0/rma
:alt: OCA/rma :alt: OCA/rma
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/rma-16-0/rma-16-0-rma :target: https://translation.odoo-community.org/projects/rma-17-0/rma-17-0-rma
:alt: Translate me on Weblate :alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/rma&target_branch=16.0 :target: https://runboat.odoo-community.org/builds?repo=OCA/rma&target_branch=17.0
:alt: Try me on Runboat :alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5| |badge1| |badge2| |badge3| |badge4| |badge5|
This module allows you to manage `Return Merchandise Authorization (RMA) This module allows you to manage `Return Merchandise Authorization
<https://en.wikipedia.org/wiki/Return_merchandise_authorization>`_. (RMA) <https://en.wikipedia.org/wiki/Return_merchandise_authorization>`__.
RMA documents can be created from scratch, from a delivery order or from RMA documents can be created from scratch, from a delivery order or from
an incoming email. Product receptions and returning delivery operations an incoming email. Product receptions and returning delivery operations
of the RMA module are fully integrated with the Receipts and Deliveries of the RMA module are fully integrated with the Receipts and Deliveries
Operations of Odoo inventory core module. It also allows you to generate Operations of Odoo inventory core module. It also allows you to generate
refunds in the same way as Odoo generates it. refunds in the same way as Odoo generates it. Besides, you have full
Besides, you have full integration of the RMA documents in the customer portal. integration of the RMA documents in the customer portal.
**Table of contents** **Table of contents**
@@ -47,23 +47,24 @@ Configuration
If you want RMAs to be created from incoming emails, you need to: If you want RMAs to be created from incoming emails, you need to:
#. Go to *Settings > General Settings*. 1. Go to *Settings > General Settings*.
#. Check 'External Email Servers' checkbox under *Discuss* section. 2. Check 'External Email Servers' checkbox under *Discuss* section.
#. Set an 'alias domain' and an incoming server. 3. Set an 'alias domain' and an incoming server.
#. Go to *RMA > Configuration > RMA Team* and select a team or create a new 4. Go to *RMA > Configuration > RMA Team* and select a team or create a
one. new one.
#. Go to 'Email' tab and set an 'Email Alias'. 5. Go to 'Email' tab and set an 'Email Alias'.
If you want to manually finish RMAs, you need to: If you want to manually finish RMAs, you need to:
#. Go to *Settings > Inventory*. 1. Go to *Settings > Inventory*.
#. Set *Finish RMAs manually* checkbox on. 2. Set *Finish RMAs manually* checkbox on.
By default, returns to customer are grouped by shipping address, warehouse and company. By default, returns to customer are grouped by shipping address,
If you want to avoid this grouping you can: warehouse and company. If you want to avoid this grouping you can:
#. Go to *Settings > Inventory*. 1. Go to *Settings > Inventory*.
#. Set *Group RMA returns by customer address and warehouse* checkbox off. 2. Set *Group RMA returns by customer address and warehouse* checkbox
off.
The users will still be able to group those pickings from the wizard. The users will still be able to group those pickings from the wizard.
@@ -72,68 +73,73 @@ Usage
To use this module, you need to: To use this module, you need to:
#. Go to *RMA > Orders* and create a new RMA. 1. Go to *RMA > Orders* and create a new RMA.
#. Select a partner, an invoice address, select a product 2. Select a partner, an invoice address, select a product (or select a
(or select a picking and a move instead), write a quantity, fill the rest picking and a move instead), write a quantity, fill the rest of the
of the form and click on 'confirm' button in the status bar. form and click on 'confirm' button in the status bar.
#. You will see an smart button labeled 'Receipt'. Click on that button to see 3. You will see an smart button labeled 'Receipt'. Click on that button
the reception operation form. to see the reception operation form.
#. If everything is right, validate the operation and go back to the RMA to 4. If everything is right, validate the operation and go back to the RMA
see it in a 'received' state. to see it in a 'received' state.
#. Now you are able to generate a refund, generate a delivery order to return 5. Now you are able to generate a refund, generate a delivery order to
to the customer the same product or another product as a replacement, split return to the customer the same product or another product as a
the RMA by extracting a part of the remaining quantity to another RMA, replacement, split the RMA by extracting a part of the remaining
preview the RMA in the website. All of these operations can be done by quantity to another RMA, preview the RMA in the website. All of these
clicking on the buttons in the status bar. operations can be done by clicking on the buttons in the status bar.
* If you click on 'Refund' button, a refund will be created, and it will be - If you click on 'Refund' button, a refund will be created, and it
accessible via the smart button labeled Refund. The RMA will be set will be accessible via the smart button labeled Refund. The RMA
automatically to 'Refunded' state when the refund is validated. will be set automatically to 'Refunded' state when the refund is
* If you click on 'Replace' or 'Return to customer' button instead, validated.
a popup wizard will guide you to create a Delivery order to the client - If you click on 'Replace' or 'Return to customer' button instead,
and this order will be accessible via the smart button labeled Delivery. a popup wizard will guide you to create a Delivery order to the
The RMA will be set automatically to 'Replaced' or 'Returned' state when client and this order will be accessible via the smart button
the RMA quantity is equal or lower than the quantity in done delivery labeled Delivery. The RMA will be set automatically to 'Replaced'
orders linked to it. or 'Returned' state when the RMA quantity is equal or lower than
#. You can also finish the RMA without further ado. To do so click on the *Finish* the quantity in done delivery orders linked to it.
button. A wizard will ask you for the reason from a selection of preconfigured ones.
Be sure to configure them in advance on *RMA > Configuration > Finalization Reasons*. 6. You can also finish the RMA without further ado. To do so click on
Once the RMA is finished, it will be set to that state and the reason will be the *Finish* button. A wizard will ask you for the reason from a
selection of preconfigured ones. Be sure to configure them in advance
on *RMA > Configuration > Finalization Reasons*. Once the RMA is
finished, it will be set to that state and the reason will be
registered. registered.
An RMA can also be created from a return of a delivery order: An RMA can also be created from a return of a delivery order:
#. Select a delivery order and click on 'Return' button to create a return. 1. Select a delivery order and click on 'Return' button to create a
#. Check "Create RMAs" checkbox in the returning wizard, select the RMA return.
2. Check "Create RMAs" checkbox in the returning wizard, select the RMA
stock location and click on 'Return' button. stock location and click on 'Return' button.
#. An RMA will be created for each product returned in the previous step. 3. An RMA will be created for each product returned in the previous
Every RMA will be in confirmed state and they will step. Every RMA will be in confirmed state and they will be linked to
be linked to the returning operation generated previously. the returning operation generated previously.
There are Optional RMA Teams that can be used for: There are Optional RMA Teams that can be used for:
- Organize RMAs in sections. - Organize RMAs in sections.
- Subscribe users to notifications. - Subscribe users to notifications.
- Create RMAs from incoming mail to special aliases (See configuration - Create RMAs from incoming mail to special aliases (See
section). configuration section).
To create an RMA Team (RMA Responsible user level required): To create an RMA Team (RMA Responsible user level required):
#. Go to *RMA > Configuration > RMA Teams* 1. Go to *RMA > Configuration > RMA Teams*
#. Create a new team and assign a name, a responsible and members. 2. Create a new team and assign a name, a responsible and members.
#. Subscribe users to notifications, that can be of these subtypes: 3. Subscribe users to notifications, that can be of these subtypes:
- RMA draft. When a new RMA is created. - RMA draft. When a new RMA is created.
- Notes, Debates, Activities. As in standard Odoo. - 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. 4. 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 Known issues / Roadmap
====================== ======================
* As soon as the picking is selected, the user should select the move, - As soon as the picking is selected, the user should select the move,
but perhaps stock.move _rec_name could be improved to better show what but perhaps stock.move \_rec_name could be improved to better show
the product of that move is. what the product of that move is.
Bug Tracker Bug Tracker
=========== ===========
@@ -141,7 +147,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues <https://github.com/OCA/rma/issues>`_. Bugs are tracked on `GitHub Issues <https://github.com/OCA/rma/issues>`_.
In case of trouble, please check there if your issue has already been reported. In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/rma/issues/new?body=module:%20rma%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. `feedback <https://github.com/OCA/rma/issues/new?body=module:%20rma%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues. Do not contact contributors directly about support or help with technical issues.
@@ -149,25 +155,25 @@ Credits
======= =======
Authors Authors
~~~~~~~ -------
* Tecnativa * Tecnativa
Contributors Contributors
~~~~~~~~~~~~ ------------
* `Tecnativa <https://www.tecnativa.com>`_: - `Tecnativa <https://www.tecnativa.com>`__:
* Ernesto Tejeda - Ernesto Tejeda
* Pedro M. Baeza - Pedro M. Baeza
* David Vidal - David Vidal
* Víctor Martínez - Víctor Martínez
* Chafique Delli <chafique.delli@akretion.com> - Chafique Delli <chafique.delli@akretion.com>
* Giovanni Serra - Ooops <giovanni@ooops404.com> - Giovanni Serra - Ooops <giovanni@ooops404.com>
Maintainers Maintainers
~~~~~~~~~~~ -----------
This module is maintained by the OCA. This module is maintained by the OCA.
@@ -190,6 +196,6 @@ Current `maintainers <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-pedrobaeza| |maintainer-chienandalu| |maintainer-pedrobaeza| |maintainer-chienandalu|
This module is part of the `OCA/rma <https://github.com/OCA/rma/tree/16.0/rma>`_ project on GitHub. This module is part of the `OCA/rma <https://github.com/OCA/rma/tree/17.0/rma>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

@@ -7,7 +7,8 @@ from odoo.exceptions import AccessError, MissingError
from odoo.http import request from odoo.http import request
from odoo.tools import consteq from odoo.tools import consteq
from odoo.addons.portal.controllers.portal import CustomerPortal, pager as portal_pager from odoo.addons.portal.controllers.portal import CustomerPortal
from odoo.addons.portal.controllers.portal import pager as portal_pager
class PortalRma(CustomerPortal): class PortalRma(CustomerPortal):

View File

@@ -555,7 +555,7 @@ class Rma(models.Model):
def _compute_access_url(self): def _compute_access_url(self):
for record in self: for record in self:
record.access_url = "/my/rmas/{}".format(record.id) record.access_url = f"/my/rmas/{record.id}"
# Constrains methods (@api.constrains) # Constrains methods (@api.constrains)
@api.constrains( @api.constrains(
@@ -1017,7 +1017,7 @@ class Rma(models.Model):
).create_returns() ).create_returns()
picking_id = picking_action["res_id"] picking_id = picking_action["res_id"]
picking = self.env["stock.picking"].browse(picking_id) picking = self.env["stock.picking"].browse(picking_id)
picking.origin = "{} ({})".format(self.name, picking.origin) picking.origin = f"{self.name} ({picking.origin})"
move = picking.move_ids move = picking.move_ids
move.priority = self.priority move.priority = self.priority
return move return move
@@ -1052,7 +1052,9 @@ class Rma(models.Model):
or self.product_id.with_context( or self.product_id.with_context(
lang=self.partner_id.lang or "en_US" lang=self.partner_id.lang or "en_US"
).display_name, ).display_name,
"location_id": self.partner_shipping_id.property_stock_customer.id, "location_id": (
self.partner_shipping_id.property_stock_customer.id
),
"location_dest_id": self.location_id.id, "location_dest_id": self.location_id.id,
"product_uom_qty": self.product_uom_qty, "product_uom_qty": self.product_uom_qty,
}, },

3
rma/pyproject.toml Normal file
View File

@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"

22
rma/readme/CONFIGURE.md Normal file
View File

@@ -0,0 +1,22 @@
If you want RMAs to be created from incoming emails, you need to:
1. Go to *Settings \> General Settings*.
2. Check 'External Email Servers' checkbox under *Discuss* section.
3. Set an 'alias domain' and an incoming server.
4. Go to *RMA \> Configuration \> RMA Team* and select a team or create
a new one.
5. Go to 'Email' tab and set an 'Email Alias'.
If you want to manually finish RMAs, you need to:
1. Go to *Settings \> Inventory*.
2. Set *Finish RMAs manually* checkbox on.
By default, returns to customer are grouped by shipping address,
warehouse and company. If you want to avoid this grouping you can:
1. Go to *Settings \> Inventory*.
2. Set *Group RMA returns by customer address and warehouse* checkbox
off.
The users will still be able to group those pickings from the wizard.

View File

@@ -1,21 +0,0 @@
If you want RMAs to be created from incoming emails, you need to:
#. Go to *Settings > General Settings*.
#. Check 'External Email Servers' checkbox under *Discuss* section.
#. Set an 'alias domain' and an incoming server.
#. Go to *RMA > Configuration > RMA Team* and select a team or create a new
one.
#. Go to 'Email' tab and set an 'Email Alias'.
If you want to manually finish RMAs, you need to:
#. Go to *Settings > Inventory*.
#. Set *Finish RMAs manually* checkbox on.
By default, returns to customer are grouped by shipping address, warehouse and company.
If you want to avoid this grouping you can:
#. Go to *Settings > Inventory*.
#. Set *Group RMA returns by customer address and warehouse* checkbox off.
The users will still be able to group those pickings from the wizard.

View File

@@ -0,0 +1,7 @@
- [Tecnativa](https://www.tecnativa.com):
- Ernesto Tejeda
- Pedro M. Baeza
- David Vidal
- Víctor Martínez
- Chafique Delli \<<chafique.delli@akretion.com>\>
- Giovanni Serra - Ooops \<<giovanni@ooops404.com>\>

View File

@@ -1,9 +0,0 @@
* `Tecnativa <https://www.tecnativa.com>`_:
* Ernesto Tejeda
* Pedro M. Baeza
* David Vidal
* Víctor Martínez
* Chafique Delli <chafique.delli@akretion.com>
* Giovanni Serra - Ooops <giovanni@ooops404.com>

View File

@@ -1,8 +1,8 @@
This module allows you to manage `Return Merchandise Authorization (RMA) This module allows you to manage [Return Merchandise Authorization
<https://en.wikipedia.org/wiki/Return_merchandise_authorization>`_. (RMA)](https://en.wikipedia.org/wiki/Return_merchandise_authorization).
RMA documents can be created from scratch, from a delivery order or from RMA documents can be created from scratch, from a delivery order or from
an incoming email. Product receptions and returning delivery operations an incoming email. Product receptions and returning delivery operations
of the RMA module are fully integrated with the Receipts and Deliveries of the RMA module are fully integrated with the Receipts and Deliveries
Operations of Odoo inventory core module. It also allows you to generate Operations of Odoo inventory core module. It also allows you to generate
refunds in the same way as Odoo generates it. refunds in the same way as Odoo generates it. Besides, you have full
Besides, you have full integration of the RMA documents in the customer portal. integration of the RMA documents in the customer portal.

3
rma/readme/ROADMAP.md Normal file
View File

@@ -0,0 +1,3 @@
- As soon as the picking is selected, the user should select the move,
but perhaps stock.move \_rec_name could be improved to better show
what the product of that move is.

View File

@@ -1,3 +0,0 @@
* As soon as the picking is selected, the user should select the move,
but perhaps stock.move _rec_name could be improved to better show what
the product of that move is.

59
rma/readme/USAGE.md Normal file
View File

@@ -0,0 +1,59 @@
To use this module, you need to:
1. Go to *RMA \> Orders* and create a new RMA.
2. Select a partner, an invoice address, select a product (or select a
picking and a move instead), write a quantity, fill the rest of the
form and click on 'confirm' button in the status bar.
3. You will see an smart button labeled 'Receipt'. Click on that button
to see the reception operation form.
4. If everything is right, validate the operation and go back to the
RMA to see it in a 'received' state.
5. Now you are able to generate a refund, generate a delivery order to
return to the customer the same product or another product as a
replacement, split the RMA by extracting a part of the remaining
quantity to another RMA, preview the RMA in the website. All of
these operations can be done by clicking on the buttons in the
status bar.
- If you click on 'Refund' button, a refund will be created, and it
will be accessible via the smart button labeled Refund. The RMA
will be set automatically to 'Refunded' state when the refund is
validated.
- If you click on 'Replace' or 'Return to customer' button instead,
a popup wizard will guide you to create a Delivery order to the
client and this order will be accessible via the smart button
labeled Delivery. The RMA will be set automatically to 'Replaced'
or 'Returned' state when the RMA quantity is equal or lower than
the quantity in done delivery orders linked to it.
6. You can also finish the RMA without further ado. To do so click on
the *Finish* button. A wizard will ask you for the reason from a
selection of preconfigured ones. Be sure to configure them in
advance on *RMA \> Configuration \> Finalization Reasons*. Once the
RMA is finished, it will be set to that state and the reason will be
registered.
An RMA can also be created from a return of a delivery order:
1. Select a delivery order and click on 'Return' button to create a
return.
2. Check "Create RMAs" checkbox in the returning wizard, select the RMA
stock location and click on 'Return' button.
3. An RMA will be created for each product returned in the previous
step. Every RMA will be in confirmed state and they will be linked
to the returning operation generated previously.
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):
> 1. Go to *RMA \> Configuration \> RMA Teams*
> 2. Create a new team and assign a name, a responsible and members.
> 3. 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.
> 4. 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

@@ -1,57 +0,0 @@
To use this module, you need to:
#. Go to *RMA > Orders* and create a new RMA.
#. Select a partner, an invoice address, select a product
(or select a picking and a move instead), write a quantity, fill the rest
of the form and click on 'confirm' button in the status bar.
#. You will see an smart button labeled 'Receipt'. Click on that button to see
the reception operation form.
#. If everything is right, validate the operation and go back to the RMA to
see it in a 'received' state.
#. Now you are able to generate a refund, generate a delivery order to return
to the customer the same product or another product as a replacement, split
the RMA by extracting a part of the remaining quantity to another RMA,
preview the RMA in the website. All of these operations can be done by
clicking on the buttons in the status bar.
* If you click on 'Refund' button, a refund will be created, and it will be
accessible via the smart button labeled Refund. The RMA will be set
automatically to 'Refunded' state when the refund is validated.
* If you click on 'Replace' or 'Return to customer' button instead,
a popup wizard will guide you to create a Delivery order to the client
and this order will be accessible via the smart button labeled Delivery.
The RMA will be set automatically to 'Replaced' or 'Returned' state when
the RMA quantity is equal or lower than the quantity in done delivery
orders linked to it.
#. You can also finish the RMA without further ado. To do so click on the *Finish*
button. A wizard will ask you for the reason from a selection of preconfigured ones.
Be sure to configure them in advance on *RMA > Configuration > Finalization Reasons*.
Once the RMA is finished, it will be set to that state and the reason will be
registered.
An RMA can also be created from a return of a delivery order:
#. Select a delivery order and click on 'Return' button to create a return.
#. Check "Create RMAs" checkbox in the returning wizard, select the RMA
stock location and click on 'Return' button.
#. An RMA will be created for each product returned in the previous step.
Every RMA will be in confirmed state and they will
be linked to the returning operation generated previously.
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

@@ -368,14 +368,15 @@ ul.auto-toc {
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:4883b701d44a55d02e769bdbf411c649efc42341792b63e965630e712a6406d9 !! source digest: sha256:4883b701d44a55d02e769bdbf411c649efc42341792b63e965630e712a6406d9
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/rma/tree/16.0/rma"><img alt="OCA/rma" src="https://img.shields.io/badge/github-OCA%2Frma-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/rma-16-0/rma-16-0-rma"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/rma&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p> <p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/rma/tree/17.0/rma"><img alt="OCA/rma" src="https://img.shields.io/badge/github-OCA%2Frma-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/rma-17-0/rma-17-0-rma"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/rma&amp;target_branch=17.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module allows you to manage <a class="reference external" href="https://en.wikipedia.org/wiki/Return_merchandise_authorization">Return Merchandise Authorization (RMA)</a>. <p>This module allows you to manage <a class="reference external" href="https://en.wikipedia.org/wiki/Return_merchandise_authorization">Return Merchandise Authorization
(RMA)</a>.
RMA documents can be created from scratch, from a delivery order or from RMA documents can be created from scratch, from a delivery order or from
an incoming email. Product receptions and returning delivery operations an incoming email. Product receptions and returning delivery operations
of the RMA module are fully integrated with the Receipts and Deliveries of the RMA module are fully integrated with the Receipts and Deliveries
Operations of Odoo inventory core module. It also allows you to generate Operations of Odoo inventory core module. It also allows you to generate
refunds in the same way as Odoo generates it. refunds in the same way as Odoo generates it. Besides, you have full
Besides, you have full integration of the RMA documents in the customer portal.</p> integration of the RMA documents in the customer portal.</p>
<p><strong>Table of contents</strong></p> <p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents"> <div class="contents local topic" id="contents">
<ul class="simple"> <ul class="simple">
@@ -398,8 +399,8 @@ Besides, you have full integration of the RMA documents in the customer portal.<
<li>Go to <em>Settings &gt; General Settings</em>.</li> <li>Go to <em>Settings &gt; General Settings</em>.</li>
<li>Check External Email Servers checkbox under <em>Discuss</em> section.</li> <li>Check External Email Servers checkbox under <em>Discuss</em> section.</li>
<li>Set an alias domain and an incoming server.</li> <li>Set an alias domain and an incoming server.</li>
<li>Go to <em>RMA &gt; Configuration &gt; RMA Team</em> and select a team or create a new <li>Go to <em>RMA &gt; Configuration &gt; RMA Team</em> and select a team or create a
one.</li> new one.</li>
<li>Go to Email tab and set an Email Alias.</li> <li>Go to Email tab and set an Email Alias.</li>
</ol> </ol>
<p>If you want to manually finish RMAs, you need to:</p> <p>If you want to manually finish RMAs, you need to:</p>
@@ -407,11 +408,12 @@ one.</li>
<li>Go to <em>Settings &gt; Inventory</em>.</li> <li>Go to <em>Settings &gt; Inventory</em>.</li>
<li>Set <em>Finish RMAs manually</em> checkbox on.</li> <li>Set <em>Finish RMAs manually</em> checkbox on.</li>
</ol> </ol>
<p>By default, returns to customer are grouped by shipping address, warehouse and company. <p>By default, returns to customer are grouped by shipping address,
If you want to avoid this grouping you can:</p> warehouse and company. If you want to avoid this grouping you can:</p>
<ol class="arabic simple"> <ol class="arabic simple">
<li>Go to <em>Settings &gt; Inventory</em>.</li> <li>Go to <em>Settings &gt; Inventory</em>.</li>
<li>Set <em>Group RMA returns by customer address and warehouse</em> checkbox off.</li> <li>Set <em>Group RMA returns by customer address and warehouse</em> checkbox
off.</li>
</ol> </ol>
<p>The users will still be able to group those pickings from the wizard.</p> <p>The users will still be able to group those pickings from the wizard.</p>
</div> </div>
@@ -420,51 +422,54 @@ If you want to avoid this grouping you can:</p>
<p>To use this module, you need to:</p> <p>To use this module, you need to:</p>
<ol class="arabic simple"> <ol class="arabic simple">
<li>Go to <em>RMA &gt; Orders</em> and create a new RMA.</li> <li>Go to <em>RMA &gt; Orders</em> and create a new RMA.</li>
<li>Select a partner, an invoice address, select a product <li>Select a partner, an invoice address, select a product (or select a
(or select a picking and a move instead), write a quantity, fill the rest picking and a move instead), write a quantity, fill the rest of the
of the form and click on confirm button in the status bar.</li> form and click on confirm button in the status bar.</li>
<li>You will see an smart button labeled Receipt. Click on that button to see <li>You will see an smart button labeled Receipt. Click on that button
the reception operation form.</li> to see the reception operation form.</li>
<li>If everything is right, validate the operation and go back to the RMA to <li>If everything is right, validate the operation and go back to the RMA
see it in a received state.</li> to see it in a received state.</li>
<li>Now you are able to generate a refund, generate a delivery order to return <li>Now you are able to generate a refund, generate a delivery order to
to the customer the same product or another product as a replacement, split return to the customer the same product or another product as a
the RMA by extracting a part of the remaining quantity to another RMA, replacement, split the RMA by extracting a part of the remaining
preview the RMA in the website. All of these operations can be done by quantity to another RMA, preview the RMA in the website. All of these
clicking on the buttons in the status bar.<ul> operations can be done by clicking on the buttons in the status bar.<ul>
<li>If you click on Refund button, a refund will be created, and it will be <li>If you click on Refund button, a refund will be created, and it
accessible via the smart button labeled Refund. The RMA will be set will be accessible via the smart button labeled Refund. The RMA
automatically to Refunded state when the refund is validated.</li> will be set automatically to Refunded state when the refund is
validated.</li>
<li>If you click on Replace or Return to customer button instead, <li>If you click on Replace or Return to customer button instead,
a popup wizard will guide you to create a Delivery order to the client a popup wizard will guide you to create a Delivery order to the
and this order will be accessible via the smart button labeled Delivery. client and this order will be accessible via the smart button
The RMA will be set automatically to Replaced or Returned state when labeled Delivery. The RMA will be set automatically to Replaced
the RMA quantity is equal or lower than the quantity in done delivery or Returned state when the RMA quantity is equal or lower than
orders linked to it.</li> the quantity in done delivery orders linked to it.</li>
</ul> </ul>
</li> </li>
<li>You can also finish the RMA without further ado. To do so click on the <em>Finish</em> <li>You can also finish the RMA without further ado. To do so click on
button. A wizard will ask you for the reason from a selection of preconfigured ones. the <em>Finish</em> button. A wizard will ask you for the reason from a
Be sure to configure them in advance on <em>RMA &gt; Configuration &gt; Finalization Reasons</em>. selection of preconfigured ones. Be sure to configure them in advance
Once the RMA is finished, it will be set to that state and the reason will be on <em>RMA &gt; Configuration &gt; Finalization Reasons</em>. Once the RMA is
finished, it will be set to that state and the reason will be
registered.</li> registered.</li>
</ol> </ol>
<p>An RMA can also be created from a return of a delivery order:</p> <p>An RMA can also be created from a return of a delivery order:</p>
<ol class="arabic simple"> <ol class="arabic simple">
<li>Select a delivery order and click on Return button to create a return.</li> <li>Select a delivery order and click on Return button to create a
return.</li>
<li>Check “Create RMAs” checkbox in the returning wizard, select the RMA <li>Check “Create RMAs” checkbox in the returning wizard, select the RMA
stock location and click on Return button.</li> stock location and click on Return button.</li>
<li>An RMA will be created for each product returned in the previous step. <li>An RMA will be created for each product returned in the previous
Every RMA will be in confirmed state and they will step. Every RMA will be in confirmed state and they will be linked to
be linked to the returning operation generated previously.</li> the returning operation generated previously.</li>
</ol> </ol>
<p>There are Optional RMA Teams that can be used for:</p> <p>There are Optional RMA Teams that can be used for:</p>
<blockquote> <blockquote>
<ul class="simple"> <ul class="simple">
<li>Organize RMAs in sections.</li> <li>Organize RMAs in sections.</li>
<li>Subscribe users to notifications.</li> <li>Subscribe users to notifications.</li>
<li>Create RMAs from incoming mail to special aliases (See configuration <li>Create RMAs from incoming mail to special aliases (See
section).</li> configuration section).</li>
</ul> </ul>
</blockquote> </blockquote>
<p>To create an RMA Team (RMA Responsible user level required):</p> <p>To create an RMA Team (RMA Responsible user level required):</p>
@@ -477,8 +482,8 @@ section).</li>
<li>Notes, Debates, Activities. As in standard Odoo.</li> <li>Notes, Debates, Activities. As in standard Odoo.</li>
</ul> </ul>
</li> </li>
<li>In the list view, use the cross handle to sort RMA Teams. The top team <li>In the list view, use the cross handle to sort RMA Teams. The top
will be the default one if no team is set.</li> team will be the default one if no team is set.</li>
</ol> </ol>
</blockquote> </blockquote>
</div> </div>
@@ -486,8 +491,8 @@ will be the default one if no team is set.</li>
<h1><a class="toc-backref" href="#toc-entry-3">Known issues / Roadmap</a></h1> <h1><a class="toc-backref" href="#toc-entry-3">Known issues / Roadmap</a></h1>
<ul class="simple"> <ul class="simple">
<li>As soon as the picking is selected, the user should select the move, <li>As soon as the picking is selected, the user should select the move,
but perhaps stock.move _rec_name could be improved to better show what but perhaps stock.move _rec_name could be improved to better show
the product of that move is.</li> what the product of that move is.</li>
</ul> </ul>
</div> </div>
<div class="section" id="bug-tracker"> <div class="section" id="bug-tracker">
@@ -495,7 +500,7 @@ the product of that move is.</li>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/rma/issues">GitHub Issues</a>. <p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/rma/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported. In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/rma/issues/new?body=module:%20rma%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p> <a class="reference external" href="https://github.com/OCA/rma/issues/new?body=module:%20rma%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p> <p>Do not contact contributors directly about support or help with technical issues.</p>
</div> </div>
<div class="section" id="credits"> <div class="section" id="credits">
@@ -529,7 +534,7 @@ mission is to support the collaborative development of Odoo features and
promote its widespread use.</p> promote its widespread use.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainers</a>:</p> <p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainers</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/pedrobaeza"><img alt="pedrobaeza" src="https://github.com/pedrobaeza.png?size=40px" /></a> <a class="reference external image-reference" href="https://github.com/chienandalu"><img alt="chienandalu" src="https://github.com/chienandalu.png?size=40px" /></a></p> <p><a class="reference external image-reference" href="https://github.com/pedrobaeza"><img alt="pedrobaeza" src="https://github.com/pedrobaeza.png?size=40px" /></a> <a class="reference external image-reference" href="https://github.com/chienandalu"><img alt="chienandalu" src="https://github.com/chienandalu.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/rma/tree/16.0/rma">OCA/rma</a> project on GitHub.</p> <p>This module is part of the <a class="reference external" href="https://github.com/OCA/rma/tree/17.0/rma">OCA/rma</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p> <p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div> </div>
</div> </div>