Skip to content

Commit a39bbdf

Browse files
committed
Merge PR #409 into 16.0
Signed-off-by pedrobaeza
2 parents b02f7dd + 618c595 commit a39bbdf

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+2032
-2
lines changed

rma_reason/README.rst

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
==========
2+
Rma Reason
3+
==========
4+
5+
..
6+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
7+
!! This file is generated by oca-gen-addon-readme !!
8+
!! changes will be overwritten. !!
9+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10+
!! source digest: sha256:cbc6042f5078d432134c3bb0f3aa3ca2eaaca763041004ab982997f8f44b9a58
11+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
12+
13+
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
14+
:target: https://odoo-community.org/page/development-status
15+
:alt: Beta
16+
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
17+
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
18+
:alt: License: AGPL-3
19+
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Frma-lightgray.png?logo=github
20+
:target: https://github.com/OCA/rma/tree/16.0/rma_reason
21+
:alt: OCA/rma
22+
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
23+
:target: https://translation.odoo-community.org/projects/rma-16-0/rma-16-0-rma_reason
24+
:alt: Translate me on Weblate
25+
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
26+
:target: https://runboat.odoo-community.org/builds?repo=OCA/rma&target_branch=16.0
27+
:alt: Try me on Runboat
28+
29+
|badge1| |badge2| |badge3| |badge4| |badge5|
30+
31+
Specifying the RMA reason when creating an RMA order is crucial for
32+
effective inventory management, quality control, and customer service.
33+
It helps categorize returned items accurately, identify recurring
34+
product issues, and improve overall product quality. This data enables
35+
customer service to address issues more effectively and enhances the
36+
customer experience.
37+
38+
This addon allows RMA managers to pre-configure possible reasons users
39+
can specify when creating the RMA order.
40+
41+
In a multi-company setup, each company can define its own reasons and
42+
choose to make the reason mandatory or optional.
43+
44+
**Table of contents**
45+
46+
.. contents::
47+
:local:
48+
49+
Configuration
50+
=============
51+
52+
To configure this module, you need to:
53+
54+
- Go to **Inventory > Settings > Settings** and select whether the
55+
reason is mandatory or not.
56+
- Go to **RMA > Settings > RMA Reasons** and create the RMA reasons for
57+
your company.
58+
59+
Usage
60+
=====
61+
62+
When creating an RMA, select the reason for the return.
63+
64+
Bug Tracker
65+
===========
66+
67+
Bugs are tracked on `GitHub Issues <https://github.com/OCA/rma/issues>`_.
68+
In case of trouble, please check there if your issue has already been reported.
69+
If you spotted it first, help us to smash it by providing a detailed and welcomed
70+
`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**>`_.
71+
72+
Do not contact contributors directly about support or help with technical issues.
73+
74+
Credits
75+
=======
76+
77+
Authors
78+
-------
79+
80+
* Raumschmiede GmbH
81+
* BCIM
82+
* ACSONE SA/NV
83+
84+
Contributors
85+
------------
86+
87+
- Jacques-Etienne Baudoux - BCIM [email protected]
88+
- Souheil Bejaoui - ACSONE SA/NV [email protected]
89+
90+
Maintainers
91+
-----------
92+
93+
This module is maintained by the OCA.
94+
95+
.. image:: https://odoo-community.org/logo.png
96+
:alt: Odoo Community Association
97+
:target: https://odoo-community.org
98+
99+
OCA, or the Odoo Community Association, is a nonprofit organization whose
100+
mission is to support the collaborative development of Odoo features and
101+
promote its widespread use.
102+
103+
.. |maintainer-sbejaoui| image:: https://github.com/sbejaoui.png?size=40px
104+
:target: https://github.com/sbejaoui
105+
:alt: sbejaoui
106+
107+
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
108+
109+
|maintainer-sbejaoui|
110+
111+
This module is part of the `OCA/rma <https://github.com/OCA/rma/tree/16.0/rma_reason>`_ project on GitHub.
112+
113+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

rma_reason/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
from . import models
2+
from . import wizards

rma_reason/__manifest__.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Copyright 2024 Raumschmiede GmbH
2+
# Copyright 2024 BCIM
3+
# Copyright 2024 ACSONE SA/NV
4+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
5+
6+
{
7+
"name": "Rma Reason",
8+
"version": "16.0.1.0.0",
9+
"license": "AGPL-3",
10+
"author": "Raumschmiede GmbH,BCIM,ACSONE SA/NV,Odoo Community Association (OCA)",
11+
"website": "https://github.com/OCA/rma",
12+
"depends": ["rma"],
13+
"maintainers": ["sbejaoui"],
14+
"data": [
15+
"security/rma_reason.xml",
16+
"views/rma.xml",
17+
"views/rma_reason.xml",
18+
"views/res_config_settings.xml",
19+
"views/rma_portal_templates.xml",
20+
"wizards/stock_return_picking.xml",
21+
],
22+
"demo": [
23+
"demo/rma_reason.xml",
24+
],
25+
}

rma_reason/demo/rma_reason.xml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<!-- Copyright 2024 Raumschmiede GmbH
3+
Copyright 2024 BCIM
4+
Copyright 2024 ACSONE SA/NV
5+
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
6+
<odoo noupdate="1">
7+
8+
<record model="rma.reason" id="rma_reason_defective_product">
9+
<field name="name">Defective Product</field>
10+
<field
11+
name="description"
12+
>The item is malfunctioning or has a defect that affects its intended use.</field>
13+
</record>
14+
15+
<record model="rma.reason" id="rma_reason_wrong_item_shipped">
16+
<field name="name">Wrong Item Shipped</field>
17+
<field
18+
name="description"
19+
>The customer received a different product than what they ordered.</field>
20+
</record>
21+
22+
<record model="rma.reason" id="rma_reason_damaged_in_transit">
23+
<field name="name">Damaged in Transit</field>
24+
<field
25+
name="description"
26+
>The product was damaged during shipping and is not in usable condition upon arrival.</field>
27+
</record>
28+
29+
<record model="rma.reason" id="rma_reason_unwanted_changed_mind">
30+
<field name="name">Unwanted/Changed Mind</field>
31+
<field
32+
name="description"
33+
>The customer no longer wants the item or changed their mind after purchasing it.</field>
34+
</record>
35+
36+
<record model="rma.reason" id="rma_reason_not_as_described">
37+
<field name="name">Product Not as Described</field>
38+
<field
39+
name="description"
40+
>The item does not match the description or specifications provided by the seller, leading to customer dissatisfaction.</field>
41+
</record>
42+
43+
</odoo>

rma_reason/models/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from . import rma_reason
2+
from . import rma
3+
from . import res_company
4+
from . import res_config_settings

rma_reason/models/res_company.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Copyright 2024 Raumschmiede GmbH
2+
# Copyright 2024 BCIM
3+
# Copyright 2024 ACSONE SA/NV
4+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
5+
6+
from odoo import fields, models
7+
8+
9+
class ResCompany(models.Model):
10+
11+
_inherit = "res.company"
12+
13+
is_rma_reason_required = fields.Boolean(
14+
string="Indicates whether specifying an RMA reason is mandatory when creating "
15+
"an RMA order."
16+
)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Copyright 2024 Raumschmiede GmbH
2+
# Copyright 2024 BCIM
3+
# Copyright 2024 ACSONE SA/NV
4+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
5+
6+
from odoo import fields, models
7+
8+
9+
class ResConfigSettings(models.TransientModel):
10+
11+
_inherit = "res.config.settings"
12+
13+
is_rma_reason_required = fields.Boolean(
14+
related="company_id.is_rma_reason_required", readonly=False
15+
)

rma_reason/models/rma.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Copyright 2024 Raumschmiede GmbH
2+
# Copyright 2024 BCIM
3+
# Copyright 2024 ACSONE SA/NV
4+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
5+
6+
from odoo import api, fields, models
7+
8+
9+
class Rma(models.Model):
10+
11+
_inherit = "rma"
12+
13+
reason_id = fields.Many2one(comodel_name="rma.reason")
14+
is_rma_reason_required = fields.Boolean(related="company_id.is_rma_reason_required")
15+
operation_domain = fields.Binary(compute="_compute_operation_domain")
16+
17+
@api.depends("reason_id")
18+
def _compute_operation_domain(self):
19+
for rec in self:
20+
if rec.reason_id and rec.reason_id.allowed_operation_ids:
21+
rec.operation_domain = [
22+
("id", "in", rec.reason_id.allowed_operation_ids.ids)
23+
]
24+
else:
25+
rec.operation_domain = []

rma_reason/models/rma_reason.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Copyright 2024 Raumschmiede GmbH
2+
# Copyright 2024 BCIM
3+
# Copyright 2024 ACSONE SA/NV
4+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
5+
6+
from odoo import fields, models
7+
8+
9+
class RmaReason(models.Model):
10+
11+
_name = "rma.reason"
12+
_description = "Rma Reason"
13+
14+
name = fields.Char(required=True, translate=True)
15+
description = fields.Text(translate=True)
16+
company_id = fields.Many2one(
17+
"res.company",
18+
required=True,
19+
readonly=True,
20+
default=lambda self: self.env.company,
21+
)
22+
allowed_operation_ids = fields.Many2many(
23+
comodel_name="rma.operation",
24+
string="Operations",
25+
help="List of RMA operations that are allowed when this reason is selected.",
26+
)

rma_reason/readme/CONFIGURE.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
To configure this module, you need to:
2+
3+
- Go to **Inventory > Settings > Settings** and select whether the reason is mandatory or not.
4+
- Go to **RMA > Settings > RMA Reasons** and create the RMA reasons for your company.

0 commit comments

Comments
 (0)