Skip to content

Commit

Permalink
[ADD] add rma_reason
Browse files Browse the repository at this point in the history
Specifying the RMA reason when creating an RMA order is crucial for effective inventory management, quality control, and customer service. It helps categorize returned items accurately, identify recurring product issues, and improve overall product quality. This data enables customer service to address issues more effectively and enhances the customer experience.

This addon allows RMA managers to pre-configure possible reasons users can specify when creating the RMA order.
  • Loading branch information
sbejaoui committed Jul 15, 2024
1 parent 3436ec6 commit 0ddd67f
Show file tree
Hide file tree
Showing 21 changed files with 894 additions and 0 deletions.
113 changes: 113 additions & 0 deletions rma_reason/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
==========
Rma Reason
==========

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:cbc6042f5078d432134c3bb0f3aa3ca2eaaca763041004ab982997f8f44b9a58
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Frma-lightgray.png?logo=github
:target: https://github.com/OCA/rma/tree/16.0/rma_reason
:alt: OCA/rma
.. |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_reason
: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/rma&target_branch=16.0
:alt: Try me on Runboat

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

Specifying the RMA reason when creating an RMA order is crucial for
effective inventory management, quality control, and customer service.
It helps categorize returned items accurately, identify recurring
product issues, and improve overall product quality. This data enables
customer service to address issues more effectively and enhances the
customer experience.

This addon allows RMA managers to pre-configure possible reasons users
can specify when creating the RMA order.

In a multi-company setup, each company can define its own reasons and
choose to make the reason mandatory or optional.

**Table of contents**

.. contents::
:local:

Configuration
=============

To configure this module, you need to:

- Go to **Inventory > Settings > Settings** and select whether the
reason is mandatory or not.
- Go to **RMA > Settings > RMA Reasons** and create the RMA reasons for
your company.

Usage
=====

When creating an RMA, select the reason for the return.

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

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.
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_reason%0Aversion:%2016.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
-------

* Raumschmiede GmbH
* BCIM
* ACSONE SA/NV

Contributors
------------

- Jacques-Etienne Baudoux - BCIM je@bcim.be
- Souheil Bejaoui - ACSONE SA/NV souheil.bejaoui@acsone.eu

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.

.. |maintainer-sbejaoui| image:: https://github.com/sbejaoui.png?size=40px
:target: https://github.com/sbejaoui
:alt: sbejaoui

Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-sbejaoui|

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

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions rma_reason/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
23 changes: 23 additions & 0 deletions rma_reason/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Copyright 2024 Raumschmiede GmbH
# Copyright 2024 BCIM
# Copyright 2024 ACSONE SA/NV
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

{
"name": "Rma Reason",
"version": "16.0.1.0.0",
"license": "AGPL-3",
"author": "Raumschmiede GmbH,BCIM,ACSONE SA/NV,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/rma",
"depends": ["rma"],
"maintainers": ["sbejaoui"],
"data": [
"security/rma_reason.xml",
"views/rma.xml",
"views/rma_reason.xml",
"views/res_config_settings.xml",
],
"demo": [
"demo/rma_reason.xml",
],
}
43 changes: 43 additions & 0 deletions rma_reason/demo/rma_reason.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2024 Raumschmiede GmbH
Copyright 2024 BCIM
Copyright 2024 ACSONE SA/NV
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo noupdate="1">

<record model="rma.reason" id="rma_reason_defective_product">
<field name="name">Defective Product</field>
<field
name="description"
>The item is malfunctioning or has a defect that affects its intended use.</field>
</record>

<record model="rma.reason" id="rma_reason_wrong_item_shipped">
<field name="name">Wrong Item Shipped</field>
<field
name="description"
>The customer received a different product than what they ordered.</field>
</record>

<record model="rma.reason" id="rma_reason_damaged_in_transit">
<field name="name">Damaged in Transit</field>
<field
name="description"
>The product was damaged during shipping and is not in usable condition upon arrival.</field>
</record>

<record model="rma.reason" id="rma_reason_unwanted_changed_mind">
<field name="name">Unwanted/Changed Mind</field>
<field
name="description"
>The customer no longer wants the item or changed their mind after purchasing it.</field>
</record>

<record model="rma.reason" id="rma_reason_not_as_described">
<field name="name">Product Not as Described</field>
<field
name="description"
>The item does not match the description or specifications provided by the seller, leading to customer dissatisfaction.</field>
</record>

</odoo>
4 changes: 4 additions & 0 deletions rma_reason/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from . import rma_reason
from . import rma
from . import res_company
from . import res_config_settings
16 changes: 16 additions & 0 deletions rma_reason/models/res_company.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Copyright 2024 Raumschmiede GmbH
# Copyright 2024 BCIM
# Copyright 2024 ACSONE SA/NV
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import fields, models


class ResCompany(models.Model):

_inherit = "res.company"

is_rma_reason_required = fields.Boolean(
string="Indicates whether specifying an RMA reason is mandatory when creating "
"an RMA order."
)
13 changes: 13 additions & 0 deletions rma_reason/models/res_config_settings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Copyright 2024 Raumschmiede GmbH
# Copyright 2024 BCIM
# Copyright 2024 ACSONE SA/NV
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import fields, models


class ResConfigSettings(models.TransientModel):

_inherit = "res.config.settings"

is_rma_reason_required = fields.Boolean(related="company_id.is_rma_reason_required")
14 changes: 14 additions & 0 deletions rma_reason/models/rma.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Copyright 2024 Raumschmiede GmbH
# Copyright 2024 BCIM
# Copyright 2024 ACSONE SA/NV
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import fields, models


class Rma(models.Model):

_inherit = "rma"

reason_id = fields.Many2one(comodel_name="rma.reason")
is_rma_reason_required = fields.Boolean(related="company_id.is_rma_reason_required")
21 changes: 21 additions & 0 deletions rma_reason/models/rma_reason.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Copyright 2024 Raumschmiede GmbH
# Copyright 2024 BCIM
# Copyright 2024 ACSONE SA/NV
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import fields, models


class RmaReason(models.Model):

_name = "rma.reason"
_description = "Rma Reason"

name = fields.Char(required=True, translate=True)
description = fields.Text()
company_id = fields.Many2one(
"res.company",
required=True,
readonly=True,
default=lambda self: self.env.company,
)
4 changes: 4 additions & 0 deletions rma_reason/readme/CONFIGURE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
To configure this module, you need to:

- Go to **Inventory > Settings > Settings** and select whether the reason is mandatory or not.
- Go to **RMA > Settings > RMA Reasons** and create the RMA reasons for your company.
2 changes: 2 additions & 0 deletions rma_reason/readme/CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- Jacques-Etienne Baudoux - BCIM <je@bcim.be>
- Souheil Bejaoui - ACSONE SA/NV <souheil.bejaoui@acsone.eu>
12 changes: 12 additions & 0 deletions rma_reason/readme/DESCRIPTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
Specifying the RMA reason when creating an RMA order is crucial for effective
inventory management, quality control, and customer service.
It helps categorize returned items accurately, identify recurring product
issues, and improve overall product quality. This data enables customer
service to address issues more effectively and enhances the customer
experience.

This addon allows RMA managers to pre-configure possible reasons users can
specify when creating the RMA order.

In a multi-company setup, each company can define its own reasons and choose
to make the reason mandatory or optional.
1 change: 1 addition & 0 deletions rma_reason/readme/USAGE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
When creating an RMA, select the reason for the return.
37 changes: 37 additions & 0 deletions rma_reason/security/rma_reason.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2024 Raumschmiede GmbH
Copyright 2024 BCIM
Copyright 2024 ACSONE SA/NV
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>

<record model="ir.model.access" id="rma_reason_access_rma_user">
<field name="name">rma.reason access rma user</field>
<field name="model_id" ref="model_rma_reason" />
<field name="group_id" ref="rma.rma_group_user_own" />
<field name="perm_read" eval="1" />
<field name="perm_create" eval="0" />
<field name="perm_write" eval="0" />
<field name="perm_unlink" eval="0" />
</record>

<record model="ir.model.access" id="rma_reason_access_rma_manager">
<field name="name">rma.reason access rma manager</field>
<field name="model_id" ref="model_rma_reason" />
<field name="group_id" ref="rma.rma_group_manager" />
<field name="perm_read" eval="1" />
<field name="perm_create" eval="1" />
<field name="perm_write" eval="1" />
<field name="perm_unlink" eval="1" />
</record>

<!-- Multi-Company Rules -->
<record id="rma_reason_rule_multi_company" model="ir.rule">
<field name="name">RMA reason multi-company</field>
<field name="model_id" ref="model_rma_reason" />
<field name="global" eval="True" />
<field
name="domain_force"
>['|',('company_id','=',False),('company_id','in',company_ids)]</field>
</record>
</odoo>
Binary file added rma_reason/static/description/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 0ddd67f

Please sign in to comment.