odoo-addon-rma 16.0.1.2.0.2__py3-none-any.whl → 17.0.1.0.0.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. odoo/addons/rma/README.rst +87 -78
  2. odoo/addons/rma/__manifest__.py +1 -1
  3. odoo/addons/rma/controllers/main.py +2 -1
  4. odoo/addons/rma/data/mail_data.xml +3 -6
  5. odoo/addons/rma/hooks.py +1 -5
  6. odoo/addons/rma/i18n/rma.pot +49 -81
  7. odoo/addons/rma/models/rma.py +51 -112
  8. odoo/addons/rma/models/stock_move.py +1 -1
  9. odoo/addons/rma/readme/CONFIGURE.md +22 -0
  10. odoo/addons/rma/readme/CONTRIBUTORS.md +9 -0
  11. odoo/addons/rma/readme/{DESCRIPTION.rst → DESCRIPTION.md} +4 -4
  12. odoo/addons/rma/readme/ROADMAP.md +3 -0
  13. odoo/addons/rma/readme/USAGE.md +59 -0
  14. odoo/addons/rma/static/description/index.html +55 -46
  15. odoo/addons/rma/tests/test_rma.py +21 -37
  16. odoo/addons/rma/views/res_config_settings_views.xml +55 -124
  17. odoo/addons/rma/views/res_partner_views.xml +1 -1
  18. odoo/addons/rma/views/rma_finalization_views.xml +1 -1
  19. odoo/addons/rma/views/rma_team_views.xml +2 -6
  20. odoo/addons/rma/views/rma_views.xml +71 -39
  21. odoo/addons/rma/views/stock_picking_views.xml +1 -1
  22. odoo/addons/rma/wizard/rma_delivery_views.xml +8 -19
  23. odoo/addons/rma/wizard/stock_picking_return_views.xml +1 -1
  24. odoo_addon_rma-17.0.1.0.0.2.dist-info/METADATA +220 -0
  25. {odoo_addon_rma-16.0.1.2.0.2.dist-info → odoo_addon_rma-17.0.1.0.0.2.dist-info}/RECORD +27 -27
  26. {odoo_addon_rma-16.0.1.2.0.2.dist-info → odoo_addon_rma-17.0.1.0.0.2.dist-info}/WHEEL +1 -1
  27. odoo_addon_rma-17.0.1.0.0.2.dist-info/top_level.txt +1 -0
  28. odoo/addons/rma/readme/CONFIGURE.rst +0 -21
  29. odoo/addons/rma/readme/CONTRIBUTORS.rst +0 -9
  30. odoo/addons/rma/readme/ROADMAP.rst +0 -3
  31. odoo/addons/rma/readme/USAGE.rst +0 -57
  32. odoo_addon_rma-16.0.1.2.0.2.dist-info/METADATA +0 -214
  33. odoo_addon_rma-16.0.1.2.0.2.dist-info/top_level.txt +0 -1
@@ -120,73 +120,73 @@
120
120
  type="object"
121
121
  string="Send by Email"
122
122
  name="action_rma_send"
123
- attrs="{'invisible':['|', ('sent','=',True), ('state', 'not in', ['draft', 'confirmed', 'received'])]}"
123
+ invisible="sent or state not in ['draft', 'confirmed', 'received']"
124
124
  class="btn-primary"
125
125
  />
126
126
  <button
127
127
  type="object"
128
128
  string="Send by Mail"
129
129
  name="action_rma_send"
130
- attrs="{'invisible':['|', ('sent','=',False), ('state', 'not in', ['draft', 'confirmed', 'received'])]}"
130
+ invisible="not sent or state not in ['draft', 'confirmed', 'received']"
131
131
  />
132
132
  <button
133
133
  type="object"
134
134
  string="Confirm"
135
135
  name="action_confirm"
136
- states="draft"
136
+ invisible="state != 'draft'"
137
137
  class="btn-primary"
138
138
  />
139
139
  <button
140
140
  type="object"
141
141
  string="To Refund"
142
142
  name="action_refund"
143
- attrs="{'invisible': [('can_be_refunded', '=', False)]}"
143
+ invisible="not can_be_refunded"
144
144
  class="btn-primary"
145
145
  />
146
146
  <button
147
147
  type="object"
148
148
  string="Replace"
149
149
  name="action_replace"
150
- attrs="{'invisible': [('can_be_replaced', '=', False)]}"
150
+ invisible="not can_be_replaced"
151
151
  class="btn-primary"
152
152
  />
153
153
  <button
154
154
  type="object"
155
155
  string="Return to customer"
156
156
  name="action_return"
157
- attrs="{'invisible': [('can_be_returned', '=', False)]}"
157
+ invisible="not can_be_returned"
158
158
  class="btn-primary"
159
159
  />
160
160
  <button
161
161
  type="object"
162
162
  string="Split"
163
163
  name="action_split"
164
- attrs="{'invisible': [('can_be_split', '=', False)]}"
164
+ invisible="not can_be_split"
165
165
  />
166
166
  <button
167
167
  type="object"
168
168
  string="Cancel"
169
169
  name="action_cancel"
170
170
  confirm="Are you sure you want to cancel this RMA"
171
- states="draft,confirmed"
171
+ invisible="state not in ['draft', 'confirmed']"
172
172
  />
173
173
  <button
174
174
  type="object"
175
175
  string="Set to draft"
176
176
  name="action_draft"
177
- states="cancelled"
177
+ invisible="state != 'cancelled'"
178
178
  />
179
179
  <button
180
180
  type="object"
181
181
  string="Lock"
182
182
  name="action_lock"
183
- attrs="{'invisible': [('can_be_locked', '=', False)]}"
183
+ invisible="not can_be_locked"
184
184
  />
185
185
  <button
186
186
  type="object"
187
187
  string="Unlock"
188
188
  name="action_unlock"
189
- states="locked"
189
+ invisible="state != 'locked'"
190
190
  />
191
191
  <button type="object" string="Preview" name="action_preview" />
192
192
  <field
@@ -203,7 +203,7 @@
203
203
  string="Receipt"
204
204
  class="oe_stat_button"
205
205
  icon="fa-truck"
206
- attrs="{'invisible': [('reception_move_id', '=', False)]}"
206
+ invisible="not reception_move_id"
207
207
  >
208
208
  </button>
209
209
  <button
@@ -211,7 +211,7 @@
211
211
  name="action_view_delivery"
212
212
  class="oe_stat_button"
213
213
  icon="fa-truck"
214
- attrs="{'invisible': [('delivery_picking_count', '=', 0)]}"
214
+ invisible="delivery_picking_count == 0"
215
215
  >
216
216
  <field
217
217
  name="delivery_picking_count"
@@ -225,13 +225,13 @@
225
225
  name="action_view_refund"
226
226
  class="oe_stat_button"
227
227
  icon="fa-pencil-square-o"
228
- attrs="{'invisible': [('refund_id', '=', False)]}"
228
+ invisible="not refund_id"
229
229
  >
230
230
  </button>
231
231
  </div>
232
232
  <div class="oe_title">
233
233
  <h1>
234
- <field name="name" readonly="1" />
234
+ <field name="name" readonly="state != 'draft'" />
235
235
  </h1>
236
236
  </div>
237
237
  <group>
@@ -240,101 +240,133 @@
240
240
  name="partner_id"
241
241
  widget="res_partner_many2one"
242
242
  context="{'search_default_customer':1, 'show_address': 1, 'show_vat': True}"
243
- attrs="{'readonly': [('state', '!=', 'draft')]}"
243
+ readonly="state != 'draft'"
244
244
  options="{'always_reload': True}"
245
245
  />
246
246
  <field
247
247
  name="partner_shipping_id"
248
- attrs="{'readonly': [('state', '!=', 'draft')]}"
248
+ readonly="state != 'draft'"
249
249
  force_save="1"
250
250
  />
251
251
  <field
252
252
  name="partner_invoice_id"
253
- attrs="{'readonly': [('state', 'not in', ['draft', 'confirmed', 'received'])]}"
253
+ readonly="state not in ['draft', 'confirmed', 'received']"
254
254
  force_save="1"
255
255
  />
256
- <field name="picking_id" options="{'no_create': True}" />
256
+ <field
257
+ name="picking_id"
258
+ options="{'no_create': True}"
259
+ readonly="state != 'draft'"
260
+ />
257
261
  <field
258
262
  name="move_id"
259
- attrs="{'required': [('picking_id', '!=', False)], 'readonly': ['|', ('picking_id', '=', False), ('state', '!=', 'draft')]}"
263
+ required="picking_id"
264
+ readonly="not picking_id or state != 'draft'"
260
265
  options="{'no_create': True}"
261
266
  force_save="1"
262
267
  />
263
268
  <field
264
269
  name="product_id"
265
270
  force_save="1"
266
- attrs="{'readonly': ['|', ('picking_id', '!=', False), ('state', '!=', 'draft')]}"
271
+ readonly="picking_id or state != 'draft'"
267
272
  />
268
273
  <field name="uom_category_id" invisible="1" />
269
274
  <label for="product_uom_qty" />
270
275
  <div class="o_row">
271
276
  <field
272
277
  name="product_uom_qty"
273
- attrs="{'readonly': [('state', '!=', 'draft')]}"
278
+ readonly="state != 'draft'"
274
279
  force_save="1"
275
280
  />
276
281
  <field
277
282
  name="product_uom"
278
283
  groups="uom.group_uom"
279
284
  domain="[('category_id', '=', uom_category_id)]"
280
- attrs="{'readonly': [('state', '!=', 'draft')]}"
285
+ readonly="state != 'draft'"
281
286
  force_save="1"
282
287
  />
283
288
  <field name="product_uom" invisible="1" />
284
289
  </div>
285
290
  <field
286
291
  name="delivered_qty"
287
- attrs="{'invisible': [('delivered_qty', '=', 0.0)]}"
292
+ invisible="delivered_qty == 0.0"
288
293
  />
289
294
  </group>
290
295
  <group>
291
- <field name="date" />
292
- <field name="user_id" />
293
- <field name="team_id" />
296
+ <field name="date" readonly="state != 'draft'" />
297
+ <field
298
+ name="user_id"
299
+ readonly="state in ['locked', 'cancelled']"
300
+ />
301
+ <field
302
+ name="team_id"
303
+ readonly="state in ['locked', 'cancelled']"
304
+ />
294
305
  <field
295
306
  name="tag_ids"
296
307
  widget="many2many_tags"
297
308
  options="{'color_field': 'color', 'no_create_edit': True}"
298
309
  placeholder="Tags..."
299
310
  />
300
- <field name="origin" />
311
+ <field
312
+ name="origin"
313
+ readonly="state in ['locked', 'cancelled']"
314
+ />
301
315
  <field name="operation_id" />
302
316
  <field
303
317
  name="finalization_id"
304
- attrs="{'invisible': [('state', '!=', 'finished')]}"
318
+ readonly="1"
319
+ invisible="state != 'finished'"
305
320
  />
306
321
  <field
307
322
  name="company_id"
308
323
  options="{'no_create': True}"
309
324
  groups="base.group_multi_company"
325
+ readonly="state in ['locked', 'cancelled']"
326
+ />
327
+ <field
328
+ name="company_id"
329
+ invisible="1"
330
+ readonly="state in ['locked', 'cancelled']"
310
331
  />
311
- <field name="company_id" invisible="1" />
312
332
  </group>
313
333
  </group>
314
334
  <notebook>
315
335
  <page name="page_other" string="Other Information">
316
336
  <group>
317
337
  <group>
318
- <field name="procurement_group_id" />
338
+ <field
339
+ name="procurement_group_id"
340
+ readonly="state not in ['draft', 'confirmed', 'received']"
341
+ />
319
342
  <field
320
343
  name="location_id"
321
344
  options="{'no_create': True, 'no_open': True}"
322
345
  groups="stock.group_stock_multi_locations"
323
- attrs="{'readonly': [('state', '!=', 'draft')]}"
346
+ readonly="state != 'draft'"
324
347
  />
325
348
  <field name="location_id" invisible="1" />
326
349
  </group>
327
350
  <group>
328
- <field name="deadline" />
329
- <field name="priority" widget="priority" />
330
351
  <field
331
- name="origin_split_rma_id"
332
- attrs="{'invisible': [('origin_split_rma_id', '=', False)]}"
352
+ name="deadline"
353
+ readonly="state in ['locked', 'cancelled']"
333
354
  />
355
+ <field
356
+ name="priority"
357
+ widget="priority"
358
+ readonly="state != 'draft'"
359
+ />
360
+ <field name="origin_split_rma_id" invisible="1" />
334
361
  </group>
335
362
  </group>
336
363
  <group>
337
- <field name="description" widget="html" colspan="4" />
364
+ <field
365
+ name="description"
366
+ widget="html"
367
+ colspan="4"
368
+ readonly="state in ['locked', 'cancelled']"
369
+ />
338
370
  </group>
339
371
  </page>
340
372
  </notebook>
@@ -371,7 +403,7 @@
371
403
  string="Finish"
372
404
  name="action_finish"
373
405
  class="btn-primary"
374
- attrs="{'invisible': [('can_be_finished', '=', False)]}"
406
+ invisible="not can_be_finished"
375
407
  groups="rma.group_rma_manual_finalization"
376
408
  />
377
409
  </xpath>
@@ -392,7 +424,7 @@
392
424
  <field name="name">rma.calendar</field>
393
425
  <field name="model">rma</field>
394
426
  <field name="arch" type="xml">
395
- <calendar date_start="date" mode="month" color="state" quick_add="False">
427
+ <calendar date_start="date" mode="month" color="state">
396
428
  <field name="name" />
397
429
  <field name="partner_id" />
398
430
  <field name="product_id" />
@@ -13,7 +13,7 @@
13
13
  type="object"
14
14
  class="oe_stat_button"
15
15
  icon="fa-reply"
16
- attrs="{'invisible': [('rma_count', '=', 0)]}"
16
+ invisible="rma_count == 0"
17
17
  groups="rma.rma_group_user_own"
18
18
  >
19
19
  <field name="rma_count" widget="statinfo" string="RMA" />
@@ -11,37 +11,26 @@
11
11
  <group>
12
12
  <group>
13
13
  <field name="scheduled_date" />
14
- <field
15
- name="warehouse_id"
16
- attrs="{'invisible': [('type', '!=', 'replace')]}"
17
- />
14
+ <field name="warehouse_id" invisible="type != 'replace'" />
18
15
  <field
19
16
  name="rma_return_grouping"
20
- attrs="{'invisible': ['|', ('type', '=', 'replace'), ('rma_count', '=', 1)]}"
17
+ invisible="type == 'replace' or rma_count == 1"
21
18
  />
22
19
  </group>
23
20
  <group>
24
21
  <field name="uom_category_id" invisible="1" />
25
22
  <field
26
23
  name="product_id"
27
- attrs="{'invisible': ['|', ('type', '!=', 'replace'), ('rma_count', '>', 1)], 'required': [('type', '=', 'replace'), ('rma_count', '=', 1)]}"
28
- />
29
- <label
30
- for="product_uom_qty"
31
- attrs="{'invisible': [('rma_count', '>', 1)]}"
24
+ invisible="type != 'replace' or rma_count > 1"
25
+ required="type == 'replace' and rma_count == 1"
32
26
  />
33
- <div
34
- class="o_row"
35
- attrs="{'invisible': [('rma_count', '>', 1)]}"
36
- >
37
- <field
38
- name="product_uom_qty"
39
- attrs="{'required': [('rma_count', '=', 1)]}"
40
- />
27
+ <label for="product_uom_qty" invisible="rma_count > 1" />
28
+ <div class="o_row" invisible="rma_count > 1">
29
+ <field name="product_uom_qty" required="rma_count == 1" />
41
30
  <field
42
31
  name="product_uom"
43
32
  groups="uom.group_uom"
44
- attrs="{'required': [('rma_count', '=', 1)]}"
33
+ required="rma_count == 1"
45
34
  domain="[('category_id', '=', uom_category_id)]"
46
35
  />
47
36
  <field name="product_uom" invisible="1" />
@@ -12,7 +12,7 @@
12
12
  <group name="group_rma">
13
13
  <field
14
14
  name="create_rma"
15
- attrs="{'invisible': [('picking_type_code', '!=', 'outgoing')]}"
15
+ invisible="picking_type_code != 'outgoing'"
16
16
  />
17
17
  <field name="rma_location_ids" invisible="1" />
18
18
  <field name="picking_id" invisible="1" />
@@ -0,0 +1,220 @@
1
+ Metadata-Version: 2.1
2
+ Name: odoo-addon-rma
3
+ Version: 17.0.1.0.0.2
4
+ Requires-Python: >=3.10
5
+ Requires-Dist: odoo>=17.0a,<17.1dev
6
+ Summary: Return Merchandise Authorization (RMA)
7
+ Home-page: https://github.com/OCA/rma
8
+ License: AGPL-3
9
+ Author: Tecnativa, Odoo Community Association (OCA)
10
+ Author-email: support@odoo-community.org
11
+ Classifier: Programming Language :: Python
12
+ Classifier: Framework :: Odoo
13
+ Classifier: Framework :: Odoo :: 17.0
14
+ Classifier: License :: OSI Approved :: GNU Affero General Public License v3
15
+ Classifier: Development Status :: 5 - Production/Stable
16
+
17
+ ===========================================
18
+ Return Merchandise Authorization Management
19
+ ===========================================
20
+
21
+ ..
22
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
23
+ !! This file is generated by oca-gen-addon-readme !!
24
+ !! changes will be overwritten. !!
25
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
26
+ !! source digest: sha256:9ca167b75e0dcd82a66217ef64dd006910f4feda1f408dbdf09ef43e6555eb22
27
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
28
+
29
+ .. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png
30
+ :target: https://odoo-community.org/page/development-status
31
+ :alt: Production/Stable
32
+ .. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
33
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
34
+ :alt: License: AGPL-3
35
+ .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Frma-lightgray.png?logo=github
36
+ :target: https://github.com/OCA/rma/tree/17.0/rma
37
+ :alt: OCA/rma
38
+ .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
39
+ :target: https://translation.odoo-community.org/projects/rma-17-0/rma-17-0-rma
40
+ :alt: Translate me on Weblate
41
+ .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
42
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/rma&target_branch=17.0
43
+ :alt: Try me on Runboat
44
+
45
+ |badge1| |badge2| |badge3| |badge4| |badge5|
46
+
47
+ This module allows you to manage `Return Merchandise Authorization
48
+ (RMA) <https://en.wikipedia.org/wiki/Return_merchandise_authorization>`__.
49
+ RMA documents can be created from scratch, from a delivery order or from
50
+ an incoming email. Product receptions and returning delivery operations
51
+ of the RMA module are fully integrated with the Receipts and Deliveries
52
+ Operations of Odoo inventory core module. It also allows you to generate
53
+ refunds in the same way as Odoo generates it. Besides, you have full
54
+ integration of the RMA documents in the customer portal.
55
+
56
+ **Table of contents**
57
+
58
+ .. contents::
59
+ :local:
60
+
61
+ Configuration
62
+ =============
63
+
64
+ If you want RMAs to be created from incoming emails, you need to:
65
+
66
+ 1. Go to *Settings > General Settings*.
67
+ 2. Check 'External Email Servers' checkbox under *Discuss* section.
68
+ 3. Set an 'alias domain' and an incoming server.
69
+ 4. Go to *RMA > Configuration > RMA Team* and select a team or create a
70
+ new one.
71
+ 5. Go to 'Email' tab and set an 'Email Alias'.
72
+
73
+ If you want to manually finish RMAs, you need to:
74
+
75
+ 1. Go to *Settings > Inventory*.
76
+ 2. Set *Finish RMAs manually* checkbox on.
77
+
78
+ By default, returns to customer are grouped by shipping address,
79
+ warehouse and company. If you want to avoid this grouping you can:
80
+
81
+ 1. Go to *Settings > Inventory*.
82
+ 2. Set *Group RMA returns by customer address and warehouse* checkbox
83
+ off.
84
+
85
+ The users will still be able to group those pickings from the wizard.
86
+
87
+ Usage
88
+ =====
89
+
90
+ To use this module, you need to:
91
+
92
+ 1. Go to *RMA > Orders* and create a new RMA.
93
+ 2. Select a partner, an invoice address, select a product (or select a
94
+ picking and a move instead), write a quantity, fill the rest of the
95
+ form and click on 'confirm' button in the status bar.
96
+ 3. You will see an smart button labeled 'Receipt'. Click on that button
97
+ to see the reception operation form.
98
+ 4. If everything is right, validate the operation and go back to the RMA
99
+ to see it in a 'received' state.
100
+ 5. Now you are able to generate a refund, generate a delivery order to
101
+ return to the customer the same product or another product as a
102
+ replacement, split the RMA by extracting a part of the remaining
103
+ quantity to another RMA, preview the RMA in the website. All of these
104
+ operations can be done by clicking on the buttons in the status bar.
105
+
106
+ - If you click on 'To Refund' button, a refund will be created, and
107
+ it will be accessible via the smart button labeled Refund. The RMA
108
+ will be set automatically to 'Refunded' state when the refund is
109
+ validated.
110
+ - If you click on 'Replace' or 'Return to customer' button instead,
111
+ a popup wizard will guide you to create a Delivery order to the
112
+ client and this order will be accessible via the smart button
113
+ labeled Delivery. The RMA will be set automatically to 'Replaced'
114
+ or 'Returned' state when the RMA quantity is equal or lower than
115
+ the quantity in done delivery orders linked to it.
116
+
117
+ 6. You can also finish the RMA without further ado. To do so click on
118
+ the *Finish* button. A wizard will ask you for the reason from a
119
+ selection of preconfigured ones. Be sure to configure them in advance
120
+ on *RMA > Configuration > Finalization Reasons*. Once the RMA is
121
+ finished, it will be set to that state and the reason will be
122
+ registered.
123
+
124
+ An RMA can also be created from a return of a delivery order:
125
+
126
+ 1. Select a delivery order and click on 'Return' button to create a
127
+ return.
128
+ 2. Check "Create RMAs" checkbox in the returning wizard, select the RMA
129
+ stock location and click on 'Return' button.
130
+ 3. An RMA will be created for each product returned in the previous
131
+ step. Every RMA will be in confirmed state and they will be linked to
132
+ the returning operation generated previously.
133
+
134
+ There are Optional RMA Teams that can be used for:
135
+
136
+ - Organize RMAs in sections.
137
+ - Subscribe users to notifications.
138
+ - Create RMAs from incoming mail to special aliases (See
139
+ configuration section).
140
+
141
+ To create an RMA Team (RMA Responsible user level required):
142
+
143
+ 1. Go to *RMA > Configuration > RMA Teams*
144
+ 2. Create a new team and assign a name, a responsible and members.
145
+ 3. Subscribe users to notifications, that can be of these subtypes:
146
+
147
+ - RMA draft. When a new RMA is created.
148
+ - Notes, Debates, Activities. As in standard Odoo.
149
+
150
+ 4. In the list view, use the cross handle to sort RMA Teams. The top
151
+ team will be the default one if no team is set.
152
+
153
+ Known issues / Roadmap
154
+ ======================
155
+
156
+ - As soon as the picking is selected, the user should select the move,
157
+ but perhaps stock.move \_rec_name could be improved to better show
158
+ what the product of that move is.
159
+
160
+ Bug Tracker
161
+ ===========
162
+
163
+ Bugs are tracked on `GitHub Issues <https://github.com/OCA/rma/issues>`_.
164
+ In case of trouble, please check there if your issue has already been reported.
165
+ If you spotted it first, help us to smash it by providing a detailed and welcomed
166
+ `feedback <https://github.com/OCA/rma/issues/new?body=module:%20rma%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
167
+
168
+ Do not contact contributors directly about support or help with technical issues.
169
+
170
+ Credits
171
+ =======
172
+
173
+ Authors
174
+ -------
175
+
176
+ * Tecnativa
177
+
178
+ Contributors
179
+ ------------
180
+
181
+ - `Tecnativa <https://www.tecnativa.com>`__:
182
+
183
+ - Ernesto Tejeda
184
+ - Pedro M. Baeza
185
+ - David Vidal
186
+ - Víctor Martínez
187
+
188
+ - Chafique Delli <chafique.delli@akretion.com>
189
+ - Giovanni Serra - Ooops <giovanni@ooops404.com>
190
+ - `APSL-Nagarro <https://www.apsl.tech>`__:
191
+
192
+ - Antoni Marroig <amarroig@apsl.net>
193
+
194
+ Maintainers
195
+ -----------
196
+
197
+ This module is maintained by the OCA.
198
+
199
+ .. image:: https://odoo-community.org/logo.png
200
+ :alt: Odoo Community Association
201
+ :target: https://odoo-community.org
202
+
203
+ OCA, or the Odoo Community Association, is a nonprofit organization whose
204
+ mission is to support the collaborative development of Odoo features and
205
+ promote its widespread use.
206
+
207
+ .. |maintainer-pedrobaeza| image:: https://github.com/pedrobaeza.png?size=40px
208
+ :target: https://github.com/pedrobaeza
209
+ :alt: pedrobaeza
210
+ .. |maintainer-chienandalu| image:: https://github.com/chienandalu.png?size=40px
211
+ :target: https://github.com/chienandalu
212
+ :alt: chienandalu
213
+
214
+ Current `maintainers <https://odoo-community.org/page/maintainer-role>`__:
215
+
216
+ |maintainer-pedrobaeza| |maintainer-chienandalu|
217
+
218
+ This module is part of the `OCA/rma <https://github.com/OCA/rma/tree/17.0/rma>`_ project on GitHub.
219
+
220
+ You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.