Skip to content

Commit

Permalink
Merge pull request #483 from ForgeFlow/17.0-mig-rma
Browse files Browse the repository at this point in the history
[17.0][MIG] rma
  • Loading branch information
CarlosVForgeFlow authored Mar 12, 2024
2 parents 6d46617 + 775b519 commit af4f57a
Show file tree
Hide file tree
Showing 55 changed files with 11,480 additions and 0 deletions.
1,171 changes: 1,171 additions & 0 deletions c

Large diffs are not rendered by default.

171 changes: 171 additions & 0 deletions rma/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
======================================
RMA (Return Merchandise Authorization)
======================================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:320013d460e1f02cfc3ff65322457095d8a01aa5d18f2e850b3c7174c16b9bdd
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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-OCA%2F-lightgray.png?logo=github
:target: https://github.com/OCA//tree/17.0/rma
:alt: OCA/
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/-17-0/-17-0-rma
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/&target_branch=17.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

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.

**Table of contents**

.. contents::
:local:

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.

* 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.

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.

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.

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

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA//issues>`_.
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
`feedback <https://github.com/OCA//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.

Credits
=======

Authors
~~~~~~~

* ForgeFlow

Contributors
~~~~~~~~~~~~

* Jordi Ballester Alomar <[email protected]>
* Aaron Henriquez <[email protected]>
* Lois Rilo <[email protected]>
* Bhavesh Odedra <[email protected]>
* Akim Juillerat <[email protected]>
* Alexandre Fayolle <[email protected]>
* Chafique Delli <[email protected]>
* Héctor Villarreal <[email protected]>

Maintainers
~~~~~~~~~~~

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/ <https://github.com/OCA//tree/17.0/rma>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
5 changes: 5 additions & 0 deletions rma/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Copyright (C) 2017-20 ForgeFlow S.L.
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html)

from . import models
from . import wizards
39 changes: 39 additions & 0 deletions rma/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Copyright (C) 2017-20 ForgeFlow S.L.
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html)

{
"name": "RMA (Return Merchandise Authorization)",
"version": "17.0.1.0.0",
"license": "LGPL-3",
"category": "RMA",
"summary": "Introduces the return merchandise authorization (RMA) process in odoo",
"author": "ForgeFlow",
"website": "https://github.com/OCA/",
"depends": ["stock", "mail", "web"],
"demo": ["demo/stock_demo.xml"],
"data": [
"security/rma.xml",
"security/ir.model.access.csv",
"data/rma_sequence.xml",
"data/stock_data.xml",
"data/rma_operation.xml",
"report/rma_report.xml",
"report/rma_report_templates.xml",
"views/rma_order_view.xml",
"views/rma_operation_view.xml",
"views/rma_order_line_view.xml",
"views/stock_view.xml",
"views/stock_warehouse.xml",
"views/product_view.xml",
"views/res_partner_view.xml",
"views/res_config_settings_views.xml",
"views/rma_menu.xml",
"wizards/rma_make_picking_view.xml",
"wizards/rma_add_stock_move_view.xml",
"wizards/rma_order_line_make_supplier_rma_view.xml",
"report/report_deliveryslip.xml",
"wizards/rma_add_serial_views.xml",
],
"installable": True,
"application": True,
}
45 changes: 45 additions & 0 deletions rma/data/rma_operation.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<?xml version="1.0" ?>
<odoo noupdate="1">
<record id="rma_operation_customer_replace" model="rma.operation">
<field name="name">Replace After Receive</field>
<field name="code">RPL-C</field>
<field name="receipt_policy">ordered</field>
<field name="delivery_policy">received</field>
<field name="type">customer</field>
<field name="in_route_id" ref="rma.route_rma_customer" />
<field name="out_route_id" ref="rma.route_rma_customer" />
</record>

<record id="rma_operation_supplier_replace" model="rma.operation">
<field name="name">Replace</field>
<field name="code">RPL-S</field>
<field name="receipt_policy">ordered</field>
<field name="delivery_policy">ordered</field>
<field name="type">supplier</field>
<field name="in_route_id" ref="rma.route_rma_supplier" />
<field name="out_route_id" ref="rma.route_rma_supplier" />
</record>

<record id="rma_operation_ds_replace" model="rma.operation">
<field name="name">Dropship - Deliver to vendor</field>
<field name="code">DS-RPL-C</field>
<field name="receipt_policy">ordered</field>
<field name="delivery_policy">no</field>
<field name="type">customer</field>
<field name="customer_to_supplier" eval="True" />
<field name="out_route_id" ref="rma.route_rma_dropship" />
<field name="in_route_id" ref="rma.route_rma_dropship" />
</record>

<record id="rma_operation_ds_replace_supplier" model="rma.operation">
<field name="name">Dropship - Deliver to customer</field>
<field name="code">DS-RPL-S</field>
<field name="receipt_policy">no</field>
<field name="delivery_policy">ordered</field>
<field name="type">supplier</field>
<field name="supplier_to_customer" eval="True" />
<field name="out_route_id" ref="rma.route_rma_dropship" />
<field name="in_route_id" ref="rma.route_rma_dropship" />
</record>

</odoo>
42 changes: 42 additions & 0 deletions rma/data/rma_sequence.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<?xml version="1.0" ?>
<odoo noupdate="1">
<record id="rma_seq" model="ir.sequence">
<field name="name">Customer RMA sequence</field>
<field name="code">rma.order.customer</field>
<field name="padding">5</field>
<field name="prefix">RMAG/%(year)s/</field>
<field eval="1" name="number_next" />
<field eval="1" name="number_increment" />
</record>

<record id="rma_supplier_seq" model="ir.sequence">
<field name="name">Supplier RMA sequence</field>
<field name="code">rma.order.supplier</field>
<field name="padding">5</field>
<field name="prefix">RTVG/%(year)s/</field>
<field eval="1" name="number_next" />
<field eval="1" name="number_increment" />
<field name="company_id" eval="False" />
</record>

<record id="rma_line_seq" model="ir.sequence">
<field name="name">Customer RMA Line sequence</field>
<field name="code">rma.order.line.customer</field>
<field name="padding">5</field>
<field name="prefix">RMA/%(year)s/</field>
<field eval="1" name="number_next" />
<field eval="1" name="number_increment" />
<field name="company_id" eval="False" />
</record>

<record id="rma_line_supplier_seq" model="ir.sequence">
<field name="name">Supplier RMA Line sequence</field>
<field name="code">rma.order.line.supplier</field>
<field name="padding">5</field>
<field name="prefix">RTV/%(year)s/</field>
<field eval="1" name="number_next" />
<field eval="1" name="number_increment" />
<field name="company_id" eval="False" />
</record>

</odoo>
Loading

0 comments on commit af4f57a

Please sign in to comment.