Initial commit: OCA Technical packages (595 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:03 +02:00
commit 2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions

View file

@ -0,0 +1,113 @@
==========
Rma Reason
==========
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:932a1c1b8873a247b6992ee44651a7538b7c15053d33810efb767549780b7154
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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.

View file

@ -0,0 +1,2 @@
from . import models
from . import wizards

View file

@ -0,0 +1,25 @@
# 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.1",
"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",
"views/rma_portal_templates.xml",
"wizards/stock_return_picking.xml",
],
"demo": [
"demo/rma_reason.xml",
],
}

View file

@ -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>

View file

@ -0,0 +1,222 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * rma_reason
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: rma_reason
#: model_terms:ir.ui.view,arch_db:rma_reason.res_config_settings_form_view
msgid ""
"<span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-"
"specific.\" groups=\"base.group_multi_company\"/>"
msgstr ""
#. module: rma_reason
#: model_terms:ir.ui.view,arch_db:rma_reason.portal_rma_page
msgid "<strong>Reason</strong>"
msgstr "<strong>Razlog</strong>"
#. module: rma_reason
#: model:ir.model,name:rma_reason.model_res_company
msgid "Companies"
msgstr "Kompanije"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__company_id
msgid "Company"
msgstr "Preduzeće"
#. module: rma_reason
#: model:ir.model,name:rma_reason.model_res_config_settings
msgid "Config Settings"
msgstr "Postavke"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: rma_reason
#: model:rma.reason,name:rma_reason.rma_reason_damaged_in_transit
msgid "Damaged in Transit"
msgstr "Oštećeno tokom transporta"
#. module: rma_reason
#: model:rma.reason,name:rma_reason.rma_reason_defective_product
msgid "Defective Product"
msgstr "Neispravan proizvod"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__description
msgid "Description"
msgstr "Opis"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__display_name
msgid "Display Name"
msgstr "Prikazani naziv"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__id
msgid "ID"
msgstr "ID"
#. module: rma_reason
#: model_terms:ir.ui.view,arch_db:rma_reason.res_config_settings_form_view
msgid ""
"Indicates whether specifying an RMA reason is\n"
" mandatory when creating an RMA order.\n"
" Enabling this ensures that all return requests\n"
" have a documented reason, aiding in inventory\n"
" management, quality control, and customer service."
msgstr ""
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_res_company__is_rma_reason_required
#: model:ir.model.fields,field_description:rma_reason.field_res_config_settings__is_rma_reason_required
#: model:ir.model.fields,field_description:rma_reason.field_rma__is_rma_reason_required
#: model:ir.model.fields,field_description:rma_reason.field_stock_return_picking_line__is_rma_reason_required
msgid ""
"Indicates whether specifying an RMA reason is mandatory when creating an RMA"
" order."
msgstr ""
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason____last_update
msgid "Last Modified on"
msgstr "Zadnje mijenjano"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__write_uid
msgid "Last Updated by"
msgstr "Zadnji ažurirao"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__write_date
msgid "Last Updated on"
msgstr "Zadnje ažurirano"
#. module: rma_reason
#: model:ir.model.fields,help:rma_reason.field_rma_reason__allowed_operation_ids
msgid "List of RMA operations that are allowed when this reason is selected."
msgstr "Lista RMA operacija koje su dozvoljene kada je ovaj razlog odabran."
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__name
msgid "Name"
msgstr "Naziv:"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma__operation_domain
msgid "Operation Domain"
msgstr "Domen operacije"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__allowed_operation_ids
msgid "Operations"
msgstr "Operacije"
#. module: rma_reason
#: model:rma.reason,name:rma_reason.rma_reason_not_as_described
msgid "Product Not as Described"
msgstr "Proizvod nije kako je opisan"
#. module: rma_reason
#: model:ir.model,name:rma_reason.model_rma
msgid "RMA"
msgstr "RMA"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_stock_return_picking__rma_reason_id
#: model:ir.model.fields,field_description:rma_reason.field_stock_return_picking_line__rma_reason_id
#: model_terms:ir.ui.view,arch_db:rma_reason.res_config_settings_form_view
msgid "RMA Reason"
msgstr "RMA razlog"
#. module: rma_reason
#: model:ir.actions.act_window,name:rma_reason.rma_reason_act_window
#: model:ir.ui.menu,name:rma_reason.rma_reason_menu
msgid "RMA Reasons"
msgstr "RMA Reasons"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma__reason_id
msgid "Reason"
msgstr "Razlog"
#. module: rma_reason
#: model:ir.model,name:rma_reason.model_stock_return_picking
msgid "Return Picking"
msgstr "Prikupljanje proizvoda povrata"
#. module: rma_reason
#: model:ir.model,name:rma_reason.model_stock_return_picking_line
msgid "Return Picking Line"
msgstr "Stavka povrata"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_stock_return_picking__rma_operation_domain
#: model:ir.model.fields,field_description:rma_reason.field_stock_return_picking_line__rma_operation_domain
msgid "Rma Operation Domain"
msgstr "Domen RMA operacije"
#. module: rma_reason
#: model:ir.model,name:rma_reason.model_rma_reason
msgid "Rma Reason"
msgstr "RMA razlog"
#. module: rma_reason
#: model:rma.reason,description:rma_reason.rma_reason_unwanted_changed_mind
msgid ""
"The customer no longer wants the item or changed their mind after purchasing"
" it."
msgstr ""
#. module: rma_reason
#: model:rma.reason,description:rma_reason.rma_reason_wrong_item_shipped
msgid "The customer received a different product than what they ordered."
msgstr "Kupac je dobio drugačiji proizvod od onog što je naručio."
#. module: rma_reason
#: model:rma.reason,description:rma_reason.rma_reason_not_as_described
msgid ""
"The item does not match the description or specifications provided by the "
"seller, leading to customer dissatisfaction."
msgstr ""
#. module: rma_reason
#: model:rma.reason,description:rma_reason.rma_reason_defective_product
msgid ""
"The item is malfunctioning or has a defect that affects its intended use."
msgstr ""
#. module: rma_reason
#: model:rma.reason,description:rma_reason.rma_reason_damaged_in_transit
msgid ""
"The product was damaged during shipping and is not in usable condition upon "
"arrival."
msgstr ""
#. module: rma_reason
#: model:rma.reason,name:rma_reason.rma_reason_unwanted_changed_mind
msgid "Unwanted/Changed Mind"
msgstr "Neželjeno/Predomislili se"
#. module: rma_reason
#: model:rma.reason,name:rma_reason.rma_reason_wrong_item_shipped
msgid "Wrong Item Shipped"
msgstr "Isporučena pogrešna stavka"

View file

@ -0,0 +1,246 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * rma_reason
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-04-22 13:24+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.10.4\n"
#. module: rma_reason
#: model_terms:ir.ui.view,arch_db:rma_reason.res_config_settings_form_view
msgid ""
"<span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-"
"specific.\" groups=\"base.group_multi_company\"/>"
msgstr ""
"<span class=\"fa fa-lg fa-building-o\" title="
"\"I valori impostati qui sono specifici per azienda.\" groups="
"\"base.group_multi_company\"/>"
#. module: rma_reason
#: model_terms:ir.ui.view,arch_db:rma_reason.portal_rma_page
msgid "<strong>Reason</strong>"
msgstr "<strong>Motivo</strong>"
#. module: rma_reason
#: model:ir.model,name:rma_reason.model_res_company
msgid "Companies"
msgstr "Aziende"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__company_id
msgid "Company"
msgstr "Azienda"
#. module: rma_reason
#: model:ir.model,name:rma_reason.model_res_config_settings
msgid "Config Settings"
msgstr "Impostazioni configurazione"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__create_date
msgid "Created on"
msgstr "Creato il"
#. module: rma_reason
#: model:rma.reason,name:rma_reason.rma_reason_damaged_in_transit
msgid "Damaged in Transit"
msgstr "Danneggiato nel tragitto"
#. module: rma_reason
#: model:rma.reason,name:rma_reason.rma_reason_defective_product
msgid "Defective Product"
msgstr "Prodotto difettoso"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__description
msgid "Description"
msgstr "Descrizione"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__id
msgid "ID"
msgstr "ID"
#. module: rma_reason
#: model_terms:ir.ui.view,arch_db:rma_reason.res_config_settings_form_view
msgid ""
"Indicates whether specifying an RMA reason is\n"
" mandatory when creating an RMA order.\n"
" Enabling this ensures that all return requests\n"
" have a documented reason, aiding in inventory\n"
" management, quality control, and customer service."
msgstr ""
"Indica se specificare un motivo RMA è \n"
" obbligatorio durante la creazione di un ordine "
"RMA. \n"
" Abilitando questa opzione, tutte le richieste di "
"reso \n"
" hanno un motivo documentato, facilitando la "
"gestione \n"
" dell'inventario, il controllo qualità e il "
"servizio clienti."
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_res_company__is_rma_reason_required
#: model:ir.model.fields,field_description:rma_reason.field_res_config_settings__is_rma_reason_required
#: model:ir.model.fields,field_description:rma_reason.field_rma__is_rma_reason_required
#: model:ir.model.fields,field_description:rma_reason.field_stock_return_picking_line__is_rma_reason_required
msgid ""
"Indicates whether specifying an RMA reason is mandatory when creating an RMA"
" order."
msgstr ""
"Indica quando specificare un motivo RMA è obbligatorio nel creare un ordine "
"RMA."
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: rma_reason
#: model:ir.model.fields,help:rma_reason.field_rma_reason__allowed_operation_ids
msgid "List of RMA operations that are allowed when this reason is selected."
msgstr ""
"Elenco delle operazioni RMA consentite quando è selezionato questo motivo."
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__name
msgid "Name"
msgstr "Nome"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma__operation_domain
msgid "Operation Domain"
msgstr "Dominio operazione"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__allowed_operation_ids
msgid "Operations"
msgstr "Operazioni"
#. module: rma_reason
#: model:rma.reason,name:rma_reason.rma_reason_not_as_described
msgid "Product Not as Described"
msgstr "Nota prodotto come descritto"
#. module: rma_reason
#: model:ir.model,name:rma_reason.model_rma
msgid "RMA"
msgstr "RMA"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_stock_return_picking__rma_reason_id
#: model:ir.model.fields,field_description:rma_reason.field_stock_return_picking_line__rma_reason_id
#: model_terms:ir.ui.view,arch_db:rma_reason.res_config_settings_form_view
msgid "RMA Reason"
msgstr "Motivo RMA"
#. module: rma_reason
#: model:ir.actions.act_window,name:rma_reason.rma_reason_act_window
#: model:ir.ui.menu,name:rma_reason.rma_reason_menu
msgid "RMA Reasons"
msgstr "Motivi RMA"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma__reason_id
msgid "Reason"
msgstr "Motivo"
#. module: rma_reason
#: model:ir.model,name:rma_reason.model_stock_return_picking
msgid "Return Picking"
msgstr "Prelievo di reso"
#. module: rma_reason
#: model:ir.model,name:rma_reason.model_stock_return_picking_line
msgid "Return Picking Line"
msgstr "Riga prelievo di reso"
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_stock_return_picking__rma_operation_domain
#: model:ir.model.fields,field_description:rma_reason.field_stock_return_picking_line__rma_operation_domain
msgid "Rma Operation Domain"
msgstr "Dominio operazione RMA"
#. module: rma_reason
#: model:ir.model,name:rma_reason.model_rma_reason
msgid "Rma Reason"
msgstr "Motivo RMA"
#. module: rma_reason
#: model:rma.reason,description:rma_reason.rma_reason_unwanted_changed_mind
msgid ""
"The customer no longer wants the item or changed their mind after purchasing"
" it."
msgstr ""
"Il cliente non richiede più l'oggetto o ha cambiato idea dopo l'acquisto."
#. module: rma_reason
#: model:rma.reason,description:rma_reason.rma_reason_wrong_item_shipped
msgid "The customer received a different product than what they ordered."
msgstr "Il cliente ha ricevuto un prodotto diverso da quello ordinato."
#. module: rma_reason
#: model:rma.reason,description:rma_reason.rma_reason_not_as_described
msgid ""
"The item does not match the description or specifications provided by the "
"seller, leading to customer dissatisfaction."
msgstr ""
"L'oggetto non corrisponde alla descrizione o specifiche fornite dal "
"venditore, con conseguente insoddisfazione del cliente."
#. module: rma_reason
#: model:rma.reason,description:rma_reason.rma_reason_defective_product
msgid ""
"The item is malfunctioning or has a defect that affects its intended use."
msgstr ""
"L'oggetto funziona male o ha un difetto che influisce sull'utilizzo previsto."
#. module: rma_reason
#: model:rma.reason,description:rma_reason.rma_reason_damaged_in_transit
msgid ""
"The product was damaged during shipping and is not in usable condition upon "
"arrival."
msgstr ""
"Il prodotto è stato danneggiato durante la spedizione e non è utilizzabile "
"dopo l'arrivo."
#. module: rma_reason
#: model:rma.reason,name:rma_reason.rma_reason_unwanted_changed_mind
msgid "Unwanted/Changed Mind"
msgstr "Non voluto/cambio idea"
#. module: rma_reason
#: model:rma.reason,name:rma_reason.rma_reason_wrong_item_shipped
msgid "Wrong Item Shipped"
msgstr "Spedito oggetto errato"

View file

@ -0,0 +1,222 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * rma_reason
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: rma_reason
#: model_terms:ir.ui.view,arch_db:rma_reason.res_config_settings_form_view
msgid ""
"<span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-"
"specific.\" groups=\"base.group_multi_company\"/>"
msgstr ""
#. module: rma_reason
#: model_terms:ir.ui.view,arch_db:rma_reason.portal_rma_page
msgid "<strong>Reason</strong>"
msgstr ""
#. module: rma_reason
#: model:ir.model,name:rma_reason.model_res_company
msgid "Companies"
msgstr ""
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__company_id
msgid "Company"
msgstr ""
#. module: rma_reason
#: model:ir.model,name:rma_reason.model_res_config_settings
msgid "Config Settings"
msgstr ""
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__create_uid
msgid "Created by"
msgstr ""
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__create_date
msgid "Created on"
msgstr ""
#. module: rma_reason
#: model:rma.reason,name:rma_reason.rma_reason_damaged_in_transit
msgid "Damaged in Transit"
msgstr ""
#. module: rma_reason
#: model:rma.reason,name:rma_reason.rma_reason_defective_product
msgid "Defective Product"
msgstr ""
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__description
msgid "Description"
msgstr ""
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__display_name
msgid "Display Name"
msgstr ""
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__id
msgid "ID"
msgstr ""
#. module: rma_reason
#: model_terms:ir.ui.view,arch_db:rma_reason.res_config_settings_form_view
msgid ""
"Indicates whether specifying an RMA reason is\n"
" mandatory when creating an RMA order.\n"
" Enabling this ensures that all return requests\n"
" have a documented reason, aiding in inventory\n"
" management, quality control, and customer service."
msgstr ""
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_res_company__is_rma_reason_required
#: model:ir.model.fields,field_description:rma_reason.field_res_config_settings__is_rma_reason_required
#: model:ir.model.fields,field_description:rma_reason.field_rma__is_rma_reason_required
#: model:ir.model.fields,field_description:rma_reason.field_stock_return_picking_line__is_rma_reason_required
msgid ""
"Indicates whether specifying an RMA reason is mandatory when creating an RMA"
" order."
msgstr ""
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason____last_update
msgid "Last Modified on"
msgstr ""
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__write_uid
msgid "Last Updated by"
msgstr ""
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__write_date
msgid "Last Updated on"
msgstr ""
#. module: rma_reason
#: model:ir.model.fields,help:rma_reason.field_rma_reason__allowed_operation_ids
msgid "List of RMA operations that are allowed when this reason is selected."
msgstr ""
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__name
msgid "Name"
msgstr ""
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma__operation_domain
msgid "Operation Domain"
msgstr ""
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma_reason__allowed_operation_ids
msgid "Operations"
msgstr ""
#. module: rma_reason
#: model:rma.reason,name:rma_reason.rma_reason_not_as_described
msgid "Product Not as Described"
msgstr ""
#. module: rma_reason
#: model:ir.model,name:rma_reason.model_rma
msgid "RMA"
msgstr ""
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_stock_return_picking__rma_reason_id
#: model:ir.model.fields,field_description:rma_reason.field_stock_return_picking_line__rma_reason_id
#: model_terms:ir.ui.view,arch_db:rma_reason.res_config_settings_form_view
msgid "RMA Reason"
msgstr ""
#. module: rma_reason
#: model:ir.actions.act_window,name:rma_reason.rma_reason_act_window
#: model:ir.ui.menu,name:rma_reason.rma_reason_menu
msgid "RMA Reasons"
msgstr ""
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_rma__reason_id
msgid "Reason"
msgstr ""
#. module: rma_reason
#: model:ir.model,name:rma_reason.model_stock_return_picking
msgid "Return Picking"
msgstr ""
#. module: rma_reason
#: model:ir.model,name:rma_reason.model_stock_return_picking_line
msgid "Return Picking Line"
msgstr ""
#. module: rma_reason
#: model:ir.model.fields,field_description:rma_reason.field_stock_return_picking__rma_operation_domain
#: model:ir.model.fields,field_description:rma_reason.field_stock_return_picking_line__rma_operation_domain
msgid "Rma Operation Domain"
msgstr ""
#. module: rma_reason
#: model:ir.model,name:rma_reason.model_rma_reason
msgid "Rma Reason"
msgstr ""
#. module: rma_reason
#: model:rma.reason,description:rma_reason.rma_reason_unwanted_changed_mind
msgid ""
"The customer no longer wants the item or changed their mind after purchasing"
" it."
msgstr ""
#. module: rma_reason
#: model:rma.reason,description:rma_reason.rma_reason_wrong_item_shipped
msgid "The customer received a different product than what they ordered."
msgstr ""
#. module: rma_reason
#: model:rma.reason,description:rma_reason.rma_reason_not_as_described
msgid ""
"The item does not match the description or specifications provided by the "
"seller, leading to customer dissatisfaction."
msgstr ""
#. module: rma_reason
#: model:rma.reason,description:rma_reason.rma_reason_defective_product
msgid ""
"The item is malfunctioning or has a defect that affects its intended use."
msgstr ""
#. module: rma_reason
#: model:rma.reason,description:rma_reason.rma_reason_damaged_in_transit
msgid ""
"The product was damaged during shipping and is not in usable condition upon "
"arrival."
msgstr ""
#. module: rma_reason
#: model:rma.reason,name:rma_reason.rma_reason_unwanted_changed_mind
msgid "Unwanted/Changed Mind"
msgstr ""
#. module: rma_reason
#: model:rma.reason,name:rma_reason.rma_reason_wrong_item_shipped
msgid "Wrong Item Shipped"
msgstr ""

View file

@ -0,0 +1,4 @@
from . import rma_reason
from . import rma
from . import res_company
from . import res_config_settings

View file

@ -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."
)

View file

@ -0,0 +1,15 @@
# 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", readonly=False
)

View file

@ -0,0 +1,25 @@
# 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 api, 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")
operation_domain = fields.Binary(compute="_compute_operation_domain")
@api.depends("reason_id")
def _compute_operation_domain(self):
for rec in self:
if rec.reason_id and rec.reason_id.allowed_operation_ids:
rec.operation_domain = [
("id", "in", rec.reason_id.allowed_operation_ids.ids)
]
else:
rec.operation_domain = []

View file

@ -0,0 +1,26 @@
# 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(translate=True)
company_id = fields.Many2one(
"res.company",
required=True,
readonly=True,
default=lambda self: self.env.company,
)
allowed_operation_ids = fields.Many2many(
comodel_name="rma.operation",
string="Operations",
help="List of RMA operations that are allowed when this reason is selected.",
)

View file

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

View file

@ -0,0 +1,2 @@
- Jacques-Etienne Baudoux - BCIM <je@bcim.be>
- Souheil Bejaoui - ACSONE SA/NV <souheil.bejaoui@acsone.eu>

View file

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

View file

@ -0,0 +1 @@
When creating an RMA, select the reason for the return.

View file

@ -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 not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View file

@ -0,0 +1,453 @@
<!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 Reason</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
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: gray; } /* 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, pre.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-reason">
<h1 class="title">Rma Reason</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:932a1c1b8873a247b6992ee44651a7538b7c15053d33810efb767549780b7154
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<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/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_reason"><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_reason"><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>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.</p>
<p>This addon allows RMA managers to pre-configure possible reasons users
can specify when creating the RMA order.</p>
<p>In a multi-company setup, each company can define its own reasons and
choose to make the reason mandatory or optional.</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></li>
<li><a class="reference internal" href="#usage" id="toc-entry-2">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-3">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-4">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-5">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-6">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-7">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="configuration">
<h1><a class="toc-backref" href="#toc-entry-1">Configuration</a></h1>
<p>To configure this module, you need to:</p>
<ul class="simple">
<li>Go to <strong>Inventory &gt; Settings &gt; Settings</strong> and select whether the
reason is mandatory or not.</li>
<li>Go to <strong>RMA &gt; Settings &gt; RMA Reasons</strong> and create the RMA reasons for
your company.</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-2">Usage</a></h1>
<p>When creating an RMA, select the reason for the return.</p>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-3">Bug Tracker</a></h1>
<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.
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_reason%0Aversion:%2016.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-4">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-5">Authors</a></h2>
<ul class="simple">
<li>Raumschmiede GmbH</li>
<li>BCIM</li>
<li>ACSONE SA/NV</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-6">Contributors</a></h2>
<ul class="simple">
<li>Jacques-Etienne Baudoux - BCIM <a class="reference external" href="mailto:je&#64;bcim.be">je&#64;bcim.be</a></li>
<li>Souheil Bejaoui - ACSONE SA/NV <a class="reference external" href="mailto:souheil.bejaoui&#64;acsone.eu">souheil.bejaoui&#64;acsone.eu</a></li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-7">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>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.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/sbejaoui"><img alt="sbejaoui" src="https://github.com/sbejaoui.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_reason">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>
</div>
</div>
</div>
</body>
</html>

View file

@ -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>
<record model="ir.ui.view" id="res_config_settings_form_view">
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="rma.res_config_settings_view_form" />
<field name="arch" type="xml">
<xpath
expr="//field[@name='group_rma_manual_finalization']/parent::div/parent::div"
position="before"
>
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="is_rma_reason_required" />
</div>
<div class="o_setting_right_pane">
<label for="is_rma_reason_required" string="RMA Reason" />
<span
class="fa fa-lg fa-building-o"
title="Values set here are company-specific."
groups="base.group_multi_company"
/>
<div class="text-muted">
Indicates whether specifying an RMA reason is
mandatory when creating an RMA order.
Enabling this ensures that all return requests
have a documented reason, aiding in inventory
management, quality control, and customer service.
</div>
</div>
</div>
</xpath>
</field>
</record>
</odoo>

View file

@ -0,0 +1,38 @@
<?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.ui.view" id="rma_form_view">
<field name="model">rma</field>
<field name="inherit_id" ref="rma.rma_view_form" />
<field name="arch" type="xml">
<xpath expr="//field[@name='operation_id']" position="before">
<field name="is_rma_reason_required" invisible="True" />
<field
name="reason_id"
attrs="{'required': [('is_rma_reason_required', '=', True)]}"
/>
</xpath>
<xpath expr="//field[@name='operation_id']" position="after">
<field name="operation_domain" invisible="1" />
</xpath>
<xpath expr="//field[@name='operation_id']" position="attributes">
<attribute name="domain">operation_domain</attribute>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="rma_search_view">
<field name="model">rma</field>
<field name="inherit_id" ref="rma.rma_view_search" />
<field name="arch" type="xml">
<xpath expr="//field[@name='user_id']" position="after">
<field name="reason_id" />
</xpath>
</field>
</record>
</odoo>

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2020 Tecnativa - Ernesto Tejeda
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<template id="portal_rma_page" name="My RMA" inherit_id="rma.portal_rma_page">
<xpath expr="//div[@id='product_information']" position="inside">
<div class="col-12 col-md-6 mb-4 mb-md-0">
<div t-if="rma.reason_id" class="row mb-2 mb-sm-1">
<div class="col-12 col-sm-4">
<strong>Reason</strong>
</div>
<div class="col-12 col-sm-8">
<span t-field="rma.reason_id" />
</div>
</div>
</div>
</xpath>
</template>
</odoo>

View file

@ -0,0 +1,59 @@
<?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.ui.view" id="rma_reason_form_view">
<field name="model">rma.reason</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name" />
<field name="company_id" groups="base.group_multi_company" />
<field name="description" />
<field name="allowed_operation_ids" widget="many2many_tags" />
</group>
</sheet>
</form>
</field>
</record>
<record model="ir.ui.view" id="rma_reason_search_view">
<field name="model">rma.reason</field>
<field name="arch" type="xml">
<search>
<field name="name" />
<field name="company_id" groups="base.group_multi_company" />
</search>
</field>
</record>
<record model="ir.ui.view" id="rma_reason_tree_view">
<field name="model">rma.reason</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
<field name="company_id" groups="base.group_multi_company" />
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="rma_reason_act_window">
<field name="name">RMA Reasons</field>
<field name="res_model">rma.reason</field>
<field name="view_mode">tree,form</field>
<field name="domain">[]</field>
<field name="context">{}</field>
</record>
<record model="ir.ui.menu" id="rma_reason_menu">
<field name="name">RMA Reasons</field>
<field name="parent_id" ref="rma.rma_configuration_menu" />
<field name="action" ref="rma_reason_act_window" />
<field name="sequence" eval="16" />
</record>
</odoo>

View file

@ -0,0 +1,2 @@
from . import stock_return_picking
from . import stock_return_picking_line

View file

@ -0,0 +1,24 @@
# Copyright 2024 ACSONE SA/NV
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
class StockReturnPicking(models.TransientModel):
_inherit = "stock.return.picking"
rma_reason_id = fields.Many2one(
comodel_name="rma.reason", readonly=False, string="RMA Reason"
)
rma_operation_domain = fields.Binary(compute="_compute_rma_operation_domain")
@api.depends("rma_reason_id")
def _compute_rma_operation_domain(self):
for rec in self:
if rec.rma_reason_id and rec.rma_reason_id.allowed_operation_ids:
rec.rma_operation_domain = [
("id", "in", rec.rma_reason_id.allowed_operation_ids.ids)
]
else:
rec.rma_operation_domain = []

View file

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2024 ACSONE SA/NV
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record model="ir.ui.view" id="stock_return_picking_form_view">
<field name="model">stock.return.picking</field>
<field name="inherit_id" ref="stock.view_stock_return_picking_form" />
<field name="arch" type="xml">
<xpath
expr="//field[@name='product_return_moves']//tree//field[@name='rma_operation_id']"
position="before"
>
<field
name="rma_reason_id"
attrs="{'column_invisible': [('parent.create_rma', '=', False)], 'required': [('is_rma_reason_required', '=', True), ('parent.create_rma', '=', True), ('quantity', '>', 0)]}"
/>
<field name="is_rma_reason_required" invisible="1" />
<field name="rma_operation_domain" invisible="1" />
</xpath>
<xpath
expr="//field[@name='product_return_moves']//tree//field[@name='rma_operation_id']"
position="attributes"
>
<attribute name="domain">rma_operation_domain</attribute>
</xpath>
<xpath
expr="//group[@name='group_rma']//field[@name='rma_operation_id']"
position="before"
>
<field
name="rma_reason_id"
attrs="{'invisible': [('create_rma', '=', False)]}"
/>
<field name="rma_operation_domain" invisible="1" />
</xpath>
<xpath
expr="//group[@name='group_rma']//field[@name='rma_operation_id']"
position="attributes"
>
<attribute name="domain">rma_operation_domain</attribute>
</xpath>
</field>
</record>
</odoo>

View file

@ -0,0 +1,43 @@
# Copyright 2024 ACSONE SA/NV
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
class StockReturnPickingLine(models.TransientModel):
_inherit = "stock.return.picking.line"
rma_reason_id = fields.Many2one(
comodel_name="rma.reason",
compute="_compute_rma_reason_id",
store=True,
readonly=False,
string="RMA Reason",
)
is_rma_reason_required = fields.Boolean(
related="wizard_id.company_id.is_rma_reason_required"
)
rma_operation_domain = fields.Binary(compute="_compute_rma_operation_domain")
@api.depends("wizard_id.rma_reason_id")
def _compute_rma_reason_id(self):
for rec in self:
if rec.wizard_id.rma_reason_id:
rec.rma_reason_id = rec.wizard_id.rma_reason_id
def _prepare_rma_vals(self):
self.ensure_one()
vals = super()._prepare_rma_vals()
vals["reason_id"] = self.rma_reason_id.id
return vals
@api.depends("rma_reason_id")
def _compute_rma_operation_domain(self):
for rec in self:
if rec.rma_reason_id and rec.rma_reason_id.allowed_operation_ids:
rec.rma_operation_domain = [
("id", "in", rec.rma_reason_id.allowed_operation_ids.ids)
]
else:
rec.rma_operation_domain = []