[IMP] rma: black, isort, prettier

This commit is contained in:
AaronHForgeFlow
2024-05-06 17:08:10 +02:00
parent 9e74dedb9a
commit e23335cee5
16 changed files with 706 additions and 156 deletions

View File

@@ -2,21 +2,42 @@
RMA (Return Merchandise Authorization)
======================================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:51ec7a60674dede1504836e5881ee8a0f776b770dcc8238dce37e8376e5c4301
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-ForgeFlow%2Fstock--rma-lightgray.png?logo=github
:target: https://github.com/ForgeFlow/stock-rma/tree/17.0/rma
:alt: ForgeFlow/stock-rma
|badge1| |badge2| |badge3|
A Return Merchandise Authorization (RMA), is a part of the process of
returning a product in order to receive a refund, replacement, or repair
during the product's warranty period.
The purchaser of the product must contact the manufacturer (or distributor
or retailer) to obtain authorization to return the product.
The purchaser of the product must contact the manufacturer (or
distributor or retailer) to obtain authorization to return the product.
The resulting RMA number must be displayed on or included in the returned
product's packaging.
The resulting RMA number must be displayed on or included in the
returned product's packaging.
The issuance of an RMA is a key gatekeeping moment in the reverse logistics
cycle, providing the vendor with a final opportunity to diagnose and correct
the customer's problem with the product (such as improper installation or
configuration) before the customer permanently relinquishes ownership
of the product to the manufacturer, commonly referred to as a return.
The issuance of an RMA is a key gatekeeping moment in the reverse
logistics cycle, providing the vendor with a final opportunity to
diagnose and correct the customer's problem with the product (such as
improper installation or configuration) before the customer permanently
relinquishes ownership of the product to the manufacturer, commonly
referred to as a return.
As returns are costly for the vendor and inconvenient for the customer,
any return that can be prevented benefits both parties.
@@ -30,80 +51,84 @@ Configuration
=============
Security
~~~~~~~~
--------
Go to Settings > Users and assign the appropiate permissions to users.
Different security groups grant distinct levels of access to the RMA features.
Different security groups grant distinct levels of access to the RMA
features.
* Users in group "RMA Customer User" or "RMA Supplier User" can access to,
create and process RMA's associated to customers or suppliers respectively.
* Users in group "RMA Manager" can access to, create, approve and process RMA's
associated to both customers and suppliers.
- Users in group "RMA Customer User" or "RMA Supplier User" can access
to, create and process RMA's associated to customers or suppliers
respectively.
- Users in group "RMA Manager" can access to, create, approve and
process RMA's associated to both customers and suppliers.
RMA Approval Policy
~~~~~~~~~~~~~~~~~~~
-------------------
There are two RMA approval policies in product catogories:
* One step: Always auto-approve RMAs that only contain products within
- One step: Always auto-approve RMAs that only contain products within
categories with this policy.
* Two steps: A RMA order containing a product within a category with this
policy will request the RMA manager approval.
- Two steps: A RMA order containing a product within a category with
this policy will request the RMA manager approval.
In order to change the approval policy of a product category follow the next
steps:
In order to change the approval policy of a product category follow the
next steps:
#. Go to *Inventory > Configuration > Products > Product Categories*.
#. Select one and change the field *RMA Approval Policy* to your convenience.
1. Go to *Inventory > Configuration > Products > Product Categories*.
2. Select one and change the field *RMA Approval Policy* to your
convenience.
Other Settings
~~~~~~~~~~~~~~
--------------
#. Go to RMA > Configuration > Settings > Return Merchandising
Authorization and select the option "Display 3 fields on rma: partner,
invoice address, delivery address" if needed.
#. Go to RMA > Configuration > Warehouse management > Warehouses and add
a default RMA location and RMA picking type for customers and suppliers RMA
picking type. In case the warehouse is configured to use routes, you need to
create at least one route per rma type with at least two push rules (one for
inbound another for outbound) it's very important to select the type of
operation supplier if we are moving in the company and customer if we are
moving out of the company.
1. Go to RMA > Configuration > Settings > Return Merchandising
Authorization and select the option "Display 3 fields on rma:
partner, invoice address, delivery address" if needed.
2. Go to RMA > Configuration > Warehouse management > Warehouses and add
a default RMA location and RMA picking type for customers and
suppliers RMA picking type. In case the warehouse is configured to
use routes, you need to create at least one route per rma type with
at least two push rules (one for inbound another for outbound) it's
very important to select the type of operation supplier if we are
moving in the company and customer if we are moving out of the
company.
Usage
=====
RMA are accessible though Inventory menu. There's four menus, divided by type.
Users can access to the list of RMA or RMA lines.
RMA are accessible though Inventory menu. There's four menus, divided by
type. Users can access to the list of RMA or RMA lines.
Create an RMA:
#. Select a partner. Enter RMA lines associated to an existing picking, or
manually.
#. Request approval and approve.
#. Click on RMA Lines button.
#. Click on more and select an option: "Receive products", "Create Delivery
Order".
#. Go back to the RMA. Set the RMA to done if not further action is required.
1. Select a partner. Enter RMA lines associated to an existing picking,
or manually.
2. Request approval and approve.
3. Click on RMA Lines button.
4. Click on more and select an option: "Receive products", "Create
Delivery Order".
5. Go back to the RMA. Set the RMA to done if not further action is
required.
Known issues / Roadmap
======================
* Picking operations report in customer RMA dropshipping case is showing
"Vendor Address" while it should be "Customer Address".
* Dropshipping always counted as a delivery on the smart buttons.
* Uninstall hook.
* Constraints instead of required fields on rma.order.line.
* Rename type field on rma.order and rma.order.line
- Picking operations report in customer RMA dropshipping case is
showing "Vendor Address" while it should be "Customer Address".
- Dropshipping always counted as a delivery on the smart buttons.
- Uninstall hook.
- Constraints instead of required fields on rma.order.line.
- Rename type field on rma.order and rma.order.line
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/ForgeFlow/stock-rma/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 <https://github.com/ForgeFlow/stock-rma/issues/new?body=module:%20rma%0Aversion:%2013.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/ForgeFlow/stock-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.
@@ -111,26 +136,25 @@ Credits
=======
Authors
~~~~~~~
-------
* ForgeFlow S.L.
* ForgeFlow
Contributors
~~~~~~~~~~~~
------------
* Jordi Ballester Alomar <jordi.ballester@forgeflow.com>
* Aaron Henriquez <ahenriquez@forgeflow.com>
* Lois Rilo <lois.rilo@forgeflow.com>
* Bhavesh Odedra <bodedra@opensourceintegrators.com>
* Akim Juillerat <akim.juillerat@camptocamp.com>
* Alexandre Fayolle <alexandre.fayolle@camptocamp.com>
* Chafique Delli <chafique.delli@akretion.com>
* Héctor Villarreal <hector.villarreal@forgeflow.com>
- Jordi Ballester Alomar <jordi.ballester@forgeflow.com>
- Aaron Henriquez <ahenriquez@forgeflow.com>
- Lois Rilo <lois.rilo@forgeflow.com>
- Bhavesh Odedra <bodedra@opensourceintegrators.com>
- Akim Juillerat <akim.juillerat@camptocamp.com>
- Alexandre Fayolle <alexandre.fayolle@camptocamp.com>
- Chafique Delli <chafique.delli@akretion.com>
- Héctor Villarreal <hector.villarreal@forgeflow.com>
Maintainers
~~~~~~~~~~~
-----------
This module is maintained by the ForgeFlow.
This module is part of the `ForgeFlow/stock-rma <https://github.com/ForgeFlow/stock-rma/tree/13.0/rma>`_ project on GitHub.
This module is part of the `ForgeFlow/stock-rma <https://github.com/ForgeFlow/stock-rma/tree/17.0/rma>`_ project on GitHub.
You are welcome to contribute.

View File

@@ -8,7 +8,7 @@
"category": "RMA",
"summary": "Introduces the return merchandise authorization (RMA) process in odoo",
"author": "ForgeFlow",
"website": "https://github.com/ForgeFlow/stock-rma",
"website": "https://github.com/ForgeFlow",
"depends": ["stock", "mail", "web"],
"demo": ["demo/stock_demo.xml"],
"data": [

3
rma/pyproject.toml Normal file
View File

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

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

@@ -0,0 +1,42 @@
## Security
Go to Settings \> Users and assign the appropiate permissions to users.
Different security groups grant distinct levels of access to the RMA
features.
- Users in group "RMA Customer User" or "RMA Supplier User" can access
to, create and process RMA's associated to customers or suppliers
respectively.
- Users in group "RMA Manager" can access to, create, approve and
process RMA's associated to both customers and suppliers.
## RMA Approval Policy
There are two RMA approval policies in product catogories:
- One step: Always auto-approve RMAs that only contain products within
categories with this policy.
- Two steps: A RMA order containing a product within a category with
this policy will request the RMA manager approval.
In order to change the approval policy of a product category follow the
next steps:
1. Go to *Inventory \> Configuration \> Products \> Product
Categories*.
2. Select one and change the field *RMA Approval Policy* to your
convenience.
## Other Settings
1. Go to RMA \> Configuration \> Settings \> Return Merchandising
Authorization and select the option "Display 3 fields on rma:
partner, invoice address, delivery address" if needed.
2. Go to RMA \> Configuration \> Warehouse management \> Warehouses and
add a default RMA location and RMA picking type for customers and
suppliers RMA picking type. In case the warehouse is configured to
use routes, you need to create at least one route per rma type with
at least two push rules (one for inbound another for outbound) it's
very important to select the type of operation supplier if we are
moving in the company and customer if we are moving out of the
company.

View File

@@ -1,41 +0,0 @@
Security
--------
Go to Settings > Users and assign the appropiate permissions to users.
Different security groups grant distinct levels of access to the RMA features.
* Users in group "RMA Customer User" or "RMA Supplier User" can access to,
create and process RMA's associated to customers or suppliers respectively.
* Users in group "RMA Manager" can access to, create, approve and process RMA's
associated to both customers and suppliers.
RMA Approval Policy
-------------------
There are two RMA approval policies in product catogories:
* One step: Always auto-approve RMAs that only contain products within
categories with this policy.
* Two steps: A RMA order containing a product within a category with this
policy will request the RMA manager approval.
In order to change the approval policy of a product category follow the next
steps:
#. Go to *Inventory > Configuration > Products > Product Categories*.
#. Select one and change the field *RMA Approval Policy* to your convenience.
Other Settings
--------------
#. Go to RMA > Configuration > Settings > Return Merchandising
Authorization and select the option "Display 3 fields on rma: partner,
invoice address, delivery address" if needed.
#. Go to RMA > Configuration > Warehouse management > Warehouses and add
a default RMA location and RMA picking type for customers and suppliers RMA
picking type. In case the warehouse is configured to use routes, you need to
create at least one route per rma type with at least two push rules (one for
inbound another for outbound) it's very important to select the type of
operation supplier if we are moving in the company and customer if we are
moving out of the company.

View File

@@ -0,0 +1,8 @@
- Jordi Ballester Alomar \<<jordi.ballester@forgeflow.com>\>
- Aaron Henriquez \<<ahenriquez@forgeflow.com>\>
- Lois Rilo \<<lois.rilo@forgeflow.com>\>
- Bhavesh Odedra \<<bodedra@opensourceintegrators.com>\>
- Akim Juillerat \<<akim.juillerat@camptocamp.com>\>
- Alexandre Fayolle \<<alexandre.fayolle@camptocamp.com>\>
- Chafique Delli \<<chafique.delli@akretion.com>\>
- Héctor Villarreal \<<hector.villarreal@forgeflow.com>\>

View File

@@ -1,8 +0,0 @@
* Jordi Ballester Alomar <jordi.ballester@forgeflow.com>
* Aaron Henriquez <ahenriquez@forgeflow.com>
* Lois Rilo <lois.rilo@forgeflow.com>
* Bhavesh Odedra <bodedra@opensourceintegrators.com>
* Akim Juillerat <akim.juillerat@camptocamp.com>
* Alexandre Fayolle <alexandre.fayolle@camptocamp.com>
* Chafique Delli <chafique.delli@akretion.com>
* Héctor Villarreal <hector.villarreal@forgeflow.com>

19
rma/readme/DESCRIPTION.md Normal file
View File

@@ -0,0 +1,19 @@
A Return Merchandise Authorization (RMA), is a part of the process of
returning a product in order to receive a refund, replacement, or repair
during the product's warranty period.
The purchaser of the product must contact the manufacturer (or
distributor or retailer) to obtain authorization to return the product.
The resulting RMA number must be displayed on or included in the
returned product's packaging.
The issuance of an RMA is a key gatekeeping moment in the reverse
logistics cycle, providing the vendor with a final opportunity to
diagnose and correct the customer's problem with the product (such as
improper installation or configuration) before the customer permanently
relinquishes ownership of the product to the manufacturer, commonly
referred to as a return.
As returns are costly for the vendor and inconvenient for the customer,
any return that can be prevented benefits both parties.

View File

@@ -1,18 +0,0 @@
A Return Merchandise Authorization (RMA), is a part of the process of
returning a product in order to receive a refund, replacement, or repair
during the product's warranty period.
The purchaser of the product must contact the manufacturer (or distributor
or retailer) to obtain authorization to return the product.
The resulting RMA number must be displayed on or included in the returned
product's packaging.
The issuance of an RMA is a key gatekeeping moment in the reverse logistics
cycle, providing the vendor with a final opportunity to diagnose and correct
the customer's problem with the product (such as improper installation or
configuration) before the customer permanently relinquishes ownership
of the product to the manufacturer, commonly referred to as a return.
As returns are costly for the vendor and inconvenient for the customer,
any return that can be prevented benefits both parties.

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

@@ -0,0 +1,6 @@
- Picking operations report in customer RMA dropshipping case is showing
"Vendor Address" while it should be "Customer Address".
- Dropshipping always counted as a delivery on the smart buttons.
- Uninstall hook.
- Constraints instead of required fields on rma.order.line.
- Rename type field on rma.order and rma.order.line

View File

@@ -1,6 +0,0 @@
* Picking operations report in customer RMA dropshipping case is showing
"Vendor Address" while it should be "Customer Address".
* Dropshipping always counted as a delivery on the smart buttons.
* Uninstall hook.
* Constraints instead of required fields on rma.order.line.
* Rename type field on rma.order and rma.order.line

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

@@ -0,0 +1,13 @@
RMA are accessible though Inventory menu. There's four menus, divided by
type. Users can access to the list of RMA or RMA lines.
Create an RMA:
1. Select a partner. Enter RMA lines associated to an existing picking,
or manually.
2. Request approval and approve.
3. Click on RMA Lines button.
4. Click on more and select an option: "Receive products", "Create
Delivery Order".
5. Go back to the RMA. Set the RMA to done if not further action is
required.

View File

@@ -1,12 +0,0 @@
RMA are accessible though Inventory menu. There's four menus, divided by type.
Users can access to the list of RMA or RMA lines.
Create an RMA:
#. Select a partner. Enter RMA lines associated to an existing picking, or
manually.
#. Request approval and approve.
#. Click on RMA Lines button.
#. Click on more and select an option: "Receive products", "Create Delivery
Order".
#. Go back to the RMA. Set the RMA to done if not further action is required.

View File

@@ -0,0 +1,520 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>RMA (Return Merchandise Authorization)</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="rma-return-merchandise-authorization">
<h1 class="title">RMA (Return Merchandise Authorization)</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:51ec7a60674dede1504836e5881ee8a0f776b770dcc8238dce37e8376e5c4301
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/lgpl-3.0-standalone.html"><img alt="License: LGPL-3" src="https://img.shields.io/badge/licence-LGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/ForgeFlow/stock-rma/tree/17.0/rma"><img alt="ForgeFlow/stock-rma" src="https://img.shields.io/badge/github-ForgeFlow%2Fstock--rma-lightgray.png?logo=github" /></a></p>
<p>A Return Merchandise Authorization (RMA), is a part of the process of
returning a product in order to receive a refund, replacement, or repair
during the products warranty period.</p>
<p>The purchaser of the product must contact the manufacturer (or
distributor or retailer) to obtain authorization to return the product.</p>
<p>The resulting RMA number must be displayed on or included in the
returned products packaging.</p>
<p>The issuance of an RMA is a key gatekeeping moment in the reverse
logistics cycle, providing the vendor with a final opportunity to
diagnose and correct the customers problem with the product (such as
improper installation or configuration) before the customer permanently
relinquishes ownership of the product to the manufacturer, commonly
referred to as a return.</p>
<p>As returns are costly for the vendor and inconvenient for the customer,
any return that can be prevented benefits both parties.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#configuration" id="toc-entry-1">Configuration</a><ul>
<li><a class="reference internal" href="#security" id="toc-entry-2">Security</a></li>
<li><a class="reference internal" href="#rma-approval-policy" id="toc-entry-3">RMA Approval Policy</a></li>
<li><a class="reference internal" href="#other-settings" id="toc-entry-4">Other Settings</a></li>
</ul>
</li>
<li><a class="reference internal" href="#usage" id="toc-entry-5">Usage</a></li>
<li><a class="reference internal" href="#known-issues-roadmap" id="toc-entry-6">Known issues / Roadmap</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-7">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-8">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-9">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-10">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-11">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="configuration">
<h1><a class="toc-backref" href="#toc-entry-1">Configuration</a></h1>
<div class="section" id="security">
<h2><a class="toc-backref" href="#toc-entry-2">Security</a></h2>
<p>Go to Settings &gt; Users and assign the appropiate permissions to users.
Different security groups grant distinct levels of access to the RMA
features.</p>
<ul class="simple">
<li>Users in group “RMA Customer User” or “RMA Supplier User” can access
to, create and process RMAs associated to customers or suppliers
respectively.</li>
<li>Users in group “RMA Manager” can access to, create, approve and
process RMAs associated to both customers and suppliers.</li>
</ul>
</div>
<div class="section" id="rma-approval-policy">
<h2><a class="toc-backref" href="#toc-entry-3">RMA Approval Policy</a></h2>
<p>There are two RMA approval policies in product catogories:</p>
<ul class="simple">
<li>One step: Always auto-approve RMAs that only contain products within
categories with this policy.</li>
<li>Two steps: A RMA order containing a product within a category with
this policy will request the RMA manager approval.</li>
</ul>
<p>In order to change the approval policy of a product category follow the
next steps:</p>
<ol class="arabic simple">
<li>Go to <em>Inventory &gt; Configuration &gt; Products &gt; Product Categories</em>.</li>
<li>Select one and change the field <em>RMA Approval Policy</em> to your
convenience.</li>
</ol>
</div>
<div class="section" id="other-settings">
<h2><a class="toc-backref" href="#toc-entry-4">Other Settings</a></h2>
<ol class="arabic simple">
<li>Go to RMA &gt; Configuration &gt; Settings &gt; Return Merchandising
Authorization and select the option “Display 3 fields on rma:
partner, invoice address, delivery address” if needed.</li>
<li>Go to RMA &gt; Configuration &gt; Warehouse management &gt; Warehouses and add
a default RMA location and RMA picking type for customers and
suppliers RMA picking type. In case the warehouse is configured to
use routes, you need to create at least one route per rma type with
at least two push rules (one for inbound another for outbound) its
very important to select the type of operation supplier if we are
moving in the company and customer if we are moving out of the
company.</li>
</ol>
</div>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-5">Usage</a></h1>
<p>RMA are accessible though Inventory menu. Theres four menus, divided by
type. Users can access to the list of RMA or RMA lines.</p>
<p>Create an RMA:</p>
<ol class="arabic simple">
<li>Select a partner. Enter RMA lines associated to an existing picking,
or manually.</li>
<li>Request approval and approve.</li>
<li>Click on RMA Lines button.</li>
<li>Click on more and select an option: “Receive products”, “Create
Delivery Order”.</li>
<li>Go back to the RMA. Set the RMA to done if not further action is
required.</li>
</ol>
</div>
<div class="section" id="known-issues-roadmap">
<h1><a class="toc-backref" href="#toc-entry-6">Known issues / Roadmap</a></h1>
<ul class="simple">
<li>Picking operations report in customer RMA dropshipping case is
showing “Vendor Address” while it should be “Customer Address”.</li>
<li>Dropshipping always counted as a delivery on the smart buttons.</li>
<li>Uninstall hook.</li>
<li>Constraints instead of required fields on rma.order.line.</li>
<li>Rename type field on rma.order and rma.order.line</li>
</ul>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-7">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/ForgeFlow/stock-rma/issues">GitHub Issues</a>.
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
<a class="reference external" href="https://github.com/ForgeFlow/stock-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>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-8">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-9">Authors</a></h2>
<ul class="simple">
<li>ForgeFlow</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-10">Contributors</a></h2>
<ul class="simple">
<li>Jordi Ballester Alomar &lt;<a class="reference external" href="mailto:jordi.ballester&#64;forgeflow.com">jordi.ballester&#64;forgeflow.com</a>&gt;</li>
<li>Aaron Henriquez &lt;<a class="reference external" href="mailto:ahenriquez&#64;forgeflow.com">ahenriquez&#64;forgeflow.com</a>&gt;</li>
<li>Lois Rilo &lt;<a class="reference external" href="mailto:lois.rilo&#64;forgeflow.com">lois.rilo&#64;forgeflow.com</a>&gt;</li>
<li>Bhavesh Odedra &lt;<a class="reference external" href="mailto:bodedra&#64;opensourceintegrators.com">bodedra&#64;opensourceintegrators.com</a>&gt;</li>
<li>Akim Juillerat &lt;<a class="reference external" href="mailto:akim.juillerat&#64;camptocamp.com">akim.juillerat&#64;camptocamp.com</a>&gt;</li>
<li>Alexandre Fayolle &lt;<a class="reference external" href="mailto:alexandre.fayolle&#64;camptocamp.com">alexandre.fayolle&#64;camptocamp.com</a>&gt;</li>
<li>Chafique Delli &lt;<a class="reference external" href="mailto:chafique.delli&#64;akretion.com">chafique.delli&#64;akretion.com</a>&gt;</li>
<li>Héctor Villarreal &lt;<a class="reference external" href="mailto:hector.villarreal&#64;forgeflow.com">hector.villarreal&#64;forgeflow.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-11">Maintainers</a></h2>
<p>This module is part of the <a class="reference external" href="https://github.com/ForgeFlow/stock-rma/tree/17.0/rma">ForgeFlow/stock-rma</a> project on GitHub.</p>
<p>You are welcome to contribute.</p>
</div>
</div>
</div>
</body>
</html>

View File

@@ -221,7 +221,6 @@ class TestRma(common.TransactionCase):
def _create_rma_from_move(
cls, products2move, r_type, partner, dropship, supplier_address_id=None
):
moves = []
if r_type == "customer":
picking_type = cls._get_picking_type(

View File

@@ -5,7 +5,8 @@ import time
from odoo import _, api, fields, models
from odoo.exceptions import UserError, ValidationError
from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT as DT_FORMAT, float_compare
from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT as DT_FORMAT
from odoo.tools import float_compare
class RmaMakePicking(models.TransientModel):