odoo-addon-rma 16.0.4.0.0__py3-none-any.whl → 16.0.5.0.0__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.
@@ -0,0 +1,317 @@
1
+ # Copyright 2020 Tecnativa - Ernesto Tejeda
2
+ # Copyright 2023 Michael Tietz (MT Software) <mtietz@mt-software.de>
3
+ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
4
+
5
+ from odoo.exceptions import ValidationError
6
+ from odoo.tests.common import Form
7
+
8
+ from .test_rma import TestRma
9
+
10
+
11
+ class TestRmaOperation(TestRma):
12
+ def test_01(self):
13
+ """
14
+ ensure that the receipt creation behaves correctly according to the
15
+ action_create_receipt setting.
16
+ - "automatic_on_confirm":
17
+ - receipts are created automatically
18
+ - the manual button is hidden
19
+ - "manual_on_confirm"
20
+ - manual button is visible after confirmation
21
+ - disappears once a receipt is manually created
22
+ """
23
+ self.assertEqual(self.operation.action_create_receipt, "automatic_on_confirm")
24
+ rma = self._create_rma(self.partner, self.product, 10, self.rma_loc)
25
+ self.assertFalse(rma.show_create_receipt)
26
+ rma.action_confirm()
27
+ self.assertTrue(rma.reception_move_id)
28
+ self.assertFalse(rma.show_create_receipt)
29
+ self.operation.action_create_receipt = "manual_on_confirm"
30
+ rma2 = self._create_rma(self.partner, self.product, 10, self.rma_loc)
31
+ rma2.action_confirm()
32
+ self.assertTrue(rma2.show_create_receipt)
33
+ self.assertFalse(rma2.reception_move_id)
34
+ rma2.action_create_receipt()
35
+ self.assertFalse(rma2.show_create_receipt)
36
+
37
+ def test_02(self):
38
+ """
39
+ test delivery button visibility based on operation settings.
40
+ No deliver possible
41
+ """
42
+ self.operation.action_create_delivery = False
43
+ rma = self._create_rma(self.partner, self.product, 10, self.rma_loc)
44
+ self.assertFalse(rma.can_be_returned)
45
+ self.assertFalse(rma.can_be_replaced)
46
+ rma.action_confirm()
47
+ self.assertEqual(rma.state, "confirmed")
48
+ self.assertFalse(rma.can_be_returned)
49
+ self.assertFalse(rma.show_create_return)
50
+ self.assertFalse(rma.can_be_replaced)
51
+ self.assertFalse(rma.show_create_replace)
52
+
53
+ def test_03(self):
54
+ """
55
+ test delivery button visibility based on operation settings.
56
+ deliver manually after confirm
57
+ """
58
+ self.operation.action_create_delivery = "manual_on_confirm"
59
+ rma = self._create_rma(self.partner, self.product, 10, self.rma_loc)
60
+ self.assertFalse(rma.can_be_returned)
61
+ self.assertFalse(rma.can_be_replaced)
62
+ rma.action_confirm()
63
+ self.assertEqual(rma.state, "confirmed")
64
+ self.assertTrue(rma.can_be_returned)
65
+ self.assertTrue(rma.show_create_return)
66
+ self.assertTrue(rma.can_be_replaced)
67
+ self.assertTrue(rma.show_create_replace)
68
+
69
+ def test_04(self):
70
+ """
71
+ test delivery button visibility based on operation settings.
72
+ deliver automatically after confirm, return same product
73
+ """
74
+ self.operation.action_create_delivery = "automatic_on_confirm"
75
+ rma = self._create_rma(self.partner, self.product, 10, self.rma_loc)
76
+ self.assertFalse(rma.can_be_returned)
77
+ self.assertFalse(rma.can_be_replaced)
78
+ rma.action_confirm()
79
+ self.assertEqual(rma.state, "waiting_replacement")
80
+ self.assertFalse(rma.can_be_returned)
81
+ self.assertFalse(rma.show_create_return)
82
+ self.assertFalse(rma.can_be_replaced)
83
+ self.assertFalse(rma.show_create_replace)
84
+ self.assertTrue(rma.delivery_move_ids)
85
+ self.assertEqual(rma.delivery_move_ids.product_id, self.product)
86
+ self.assertEqual(rma.delivery_move_ids.product_uom_qty, 10)
87
+
88
+ def test_05(self):
89
+ """
90
+ test delivery button visibility based on operation settings.
91
+ deliver manually after receipt
92
+ """
93
+ self.operation.action_create_delivery = "manual_after_receipt"
94
+ rma = self._create_rma(self.partner, self.product, 10, self.rma_loc)
95
+ self.assertFalse(rma.can_be_returned)
96
+ self.assertFalse(rma.can_be_replaced)
97
+ rma.action_confirm()
98
+ self.assertEqual(rma.state, "confirmed")
99
+ self.assertFalse(rma.can_be_returned)
100
+ self.assertFalse(rma.show_create_return)
101
+ self.assertFalse(rma.can_be_replaced)
102
+ self.assertFalse(rma.show_create_replace)
103
+ rma.reception_move_id.quantity_done = rma.product_uom_qty
104
+ rma.reception_move_id.picking_id._action_done()
105
+ self.assertEqual(rma.state, "received")
106
+ self.assertTrue(rma.can_be_returned)
107
+ self.assertTrue(rma.show_create_return)
108
+ self.assertTrue(rma.can_be_replaced)
109
+ self.assertTrue(rma.show_create_replace)
110
+
111
+ def test_06(self):
112
+ """
113
+ test delivery button visibility based on operation settings.
114
+ deliver automatically after receipt
115
+ """
116
+ self.operation.action_create_delivery = "automatic_after_receipt"
117
+ rma = self._create_rma(self.partner, self.product, 10, self.rma_loc)
118
+ self.assertFalse(rma.can_be_returned)
119
+ self.assertFalse(rma.can_be_replaced)
120
+ rma.action_confirm()
121
+ self.assertEqual(rma.state, "confirmed")
122
+ self.assertFalse(rma.can_be_returned)
123
+ self.assertFalse(rma.show_create_return)
124
+ self.assertFalse(rma.can_be_replaced)
125
+ self.assertFalse(rma.show_create_replace)
126
+ self.assertFalse(rma.delivery_move_ids)
127
+ rma.reception_move_id.quantity_done = rma.product_uom_qty
128
+ rma.reception_move_id.picking_id._action_done()
129
+ self.assertEqual(rma.delivery_move_ids.product_id, self.product)
130
+ self.assertEqual(rma.delivery_move_ids.product_uom_qty, 10)
131
+ self.assertEqual(rma.state, "waiting_replacement")
132
+ self.assertFalse(rma.can_be_returned)
133
+ self.assertFalse(rma.show_create_return)
134
+ self.assertTrue(rma.can_be_replaced)
135
+ self.assertFalse(rma.show_create_replace)
136
+
137
+ def test_07(self):
138
+ """
139
+ test delivery button visibility based on operation settings.
140
+ deliver automatically after confirm, different product
141
+ """
142
+ self.operation.action_create_delivery = "automatic_on_confirm"
143
+ self.operation.different_return_product = True
144
+ rma = self._create_rma(self.partner, self.product, 10, self.rma_loc)
145
+ with self.assertRaises(AssertionError, msg="Replacement fields are required"):
146
+ with Form(rma) as rma_form:
147
+ rma_form.save()
148
+ with self.assertRaises(
149
+ ValidationError, msg="Complete the replacement information"
150
+ ):
151
+ rma.action_confirm()
152
+ rma.return_product_id = self.product_product.create(
153
+ {"name": "return Product test 1", "type": "product"}
154
+ )
155
+ rma.action_confirm()
156
+ self.assertEqual(rma.delivery_move_ids.product_id, rma.product_id)
157
+ self.assertEqual(rma.reception_move_id.product_id, rma.return_product_id)
158
+ self.assertEqual(rma.state, "waiting_replacement")
159
+
160
+ def test_08(self):
161
+ """test refund, manually after confirm"""
162
+ self.operation.action_create_refund = "manual_on_confirm"
163
+ rma = self._create_rma(self.partner, self.product, 10, self.rma_loc)
164
+ rma.action_confirm()
165
+ self.assertEqual(rma.state, "confirmed")
166
+ self.assertTrue(rma.can_be_refunded)
167
+ self.assertTrue(rma.show_create_refund)
168
+
169
+ def test_09(self):
170
+ """test refund, manually after receipt"""
171
+ self.operation.action_create_refund = "manual_after_receipt"
172
+ rma = self._create_rma(self.partner, self.product, 10, self.rma_loc)
173
+ rma.action_confirm()
174
+ self.assertEqual(rma.state, "confirmed")
175
+ self.assertFalse(rma.can_be_refunded)
176
+ self.assertFalse(rma.show_create_refund)
177
+ rma.reception_move_id.quantity_done = rma.product_uom_qty
178
+ rma.reception_move_id.picking_id._action_done()
179
+ self.assertEqual(rma.state, "received")
180
+ self.assertTrue(rma.can_be_refunded)
181
+ self.assertTrue(rma.show_create_refund)
182
+
183
+ def test_10(self):
184
+ """test refund, automatic after confirm"""
185
+ self.operation.action_create_refund = "automatic_on_confirm"
186
+ rma = self._create_rma(self.partner, self.product, 10, self.rma_loc)
187
+ rma.action_confirm()
188
+ self.assertEqual(rma.state, "refunded")
189
+ self.assertTrue(rma.refund_id)
190
+ self.assertFalse(rma.can_be_refunded)
191
+ self.assertFalse(rma.show_create_refund)
192
+
193
+ def test_11(self):
194
+ """test refund, automatic after confirm"""
195
+ self.operation.action_create_refund = "automatic_after_receipt"
196
+ rma = self._create_rma(self.partner, self.product, 10, self.rma_loc)
197
+ rma.action_confirm()
198
+ self.assertEqual(rma.state, "confirmed")
199
+ rma.reception_move_id.quantity_done = rma.product_uom_qty
200
+ rma.reception_move_id.picking_id._action_done()
201
+ self.assertEqual(rma.state, "refunded")
202
+ self.assertTrue(rma.refund_id)
203
+ self.assertFalse(rma.can_be_refunded)
204
+ self.assertFalse(rma.show_create_refund)
205
+
206
+ def test_12(self):
207
+ """
208
+ Refund without product return
209
+ Some companies may offer refunds without requiring the return of the product,
210
+ often in cases of low-value items or when the cost of return shipping is
211
+ prohibitive.
212
+ - no receipt
213
+ - no return
214
+ - automatically refund on confirm
215
+ """
216
+ self.operation.action_create_receipt = False
217
+ self.operation.action_create_refund = "automatic_on_confirm"
218
+ rma = self._create_rma(self.partner, self.product, 10, self.rma_loc)
219
+ rma.action_confirm()
220
+ self.assertEqual(rma.state, "refunded")
221
+ self.assertFalse(rma.reception_move_id)
222
+ self.assertTrue(rma.refund_id)
223
+
224
+ def test_13(self):
225
+ """
226
+ Return of non-ordered product
227
+ Occasionally, customers receive items they did not order and need a process for
228
+ returning these products. The delivered product don't figure on the sale order
229
+ - receipt
230
+ - no return
231
+ - no refund
232
+ """
233
+ self.operation.action_create_receipt = "automatic_on_confirm"
234
+ self.operation.action_create_delivery = False
235
+ self.operation.action_create_refund = False
236
+ rma = self._create_rma(self.partner, self.product, 10, self.rma_loc)
237
+ rma.action_confirm()
238
+ rma.reception_move_id.quantity_done = rma.product_uom_qty
239
+ rma.reception_move_id.picking_id._action_done()
240
+ self.assertEqual(rma.state, "received")
241
+ self.assertFalse(rma.delivery_move_ids)
242
+
243
+ def test_14(self):
244
+ """if the refund action is not ment to update quantity, return picking line
245
+ to_refund field should be False"""
246
+ self.operation.action_create_refund = "manual_after_receipt"
247
+ origin_delivery = self._create_delivery()
248
+ stock_return_picking_form = Form(
249
+ self.env["stock.return.picking"].with_context(
250
+ active_ids=origin_delivery.ids,
251
+ active_id=origin_delivery.id,
252
+ active_model="stock.picking",
253
+ )
254
+ )
255
+ stock_return_picking_form.create_rma = True
256
+ stock_return_picking_form.rma_operation_id = self.operation
257
+ return_wizard = stock_return_picking_form.save()
258
+ return_line = return_wizard.product_return_moves.filtered(
259
+ lambda m, p=self.product: m.product_id == p
260
+ )
261
+ self.assertEqual(return_line.rma_operation_id, self.operation)
262
+ picking_action = return_wizard.create_returns()
263
+ reception = self.env["stock.picking"].browse(picking_action["res_id"])
264
+ move = reception.move_ids.filtered(lambda m, p=self.product: m.product_id == p)
265
+ self.assertFalse(move.to_refund)
266
+
267
+ def test_15(self):
268
+ """if the refund action is ment to update quantity, return picking line
269
+ to_refund field should be True"""
270
+ self.operation.action_create_refund = "update_quantity"
271
+ origin_delivery = self._create_delivery()
272
+ stock_return_picking_form = Form(
273
+ self.env["stock.return.picking"].with_context(
274
+ active_ids=origin_delivery.ids,
275
+ active_id=origin_delivery.id,
276
+ active_model="stock.picking",
277
+ )
278
+ )
279
+ stock_return_picking_form.create_rma = True
280
+ stock_return_picking_form.rma_operation_id = self.operation
281
+ return_wizard = stock_return_picking_form.save()
282
+ return_line = return_wizard.product_return_moves.filtered(
283
+ lambda m, p=self.product: m.product_id == p
284
+ )
285
+ self.assertEqual(return_line.rma_operation_id, self.operation)
286
+ picking_action = return_wizard.create_returns()
287
+ reception = self.env["stock.picking"].browse(picking_action["res_id"])
288
+ move = reception.move_ids.filtered(lambda m, p=self.product: m.product_id == p)
289
+ self.assertTrue(move.to_refund)
290
+
291
+ def test_rma_replace_pick_ship(self):
292
+ self.operation.action_create_delivery = "automatic_on_confirm"
293
+ self.warehouse.write({"delivery_steps": "pick_ship"})
294
+ rma = self._create_rma(self.partner, self.product, 1, self.rma_loc)
295
+ rma.action_confirm()
296
+ self.assertEqual(rma.state, "waiting_replacement")
297
+ out_pickings = rma.mapped("delivery_move_ids.picking_id")
298
+ self.assertEqual(rma.delivery_picking_count, 2)
299
+ self.assertIn(
300
+ self.warehouse.pick_type_id, out_pickings.mapped("picking_type_id")
301
+ )
302
+ self.assertIn(
303
+ self.warehouse.out_type_id, out_pickings.mapped("picking_type_id")
304
+ )
305
+
306
+ def test_16(self):
307
+ rma = self._create_rma(self.partner, self.product, 1, self.rma_loc)
308
+ rma.action_confirm()
309
+ self.assertEqual(rma.reception_move_id.state, "assigned")
310
+ self.assertEqual(rma.reception_move_id.picking_id.state, "assigned")
311
+
312
+ def test_17(self):
313
+ self.operation.auto_confirm_reception = True
314
+ rma = self._create_rma(self.partner, self.product, 1, self.rma_loc)
315
+ rma.action_confirm()
316
+ self.assertEqual(rma.reception_move_id.state, "done")
317
+ self.assertEqual(rma.reception_move_id.picking_id.state, "done")
@@ -0,0 +1,85 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!-- Copyright 2024 ACSONE SA/NV
3
+ License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
4
+ <odoo>
5
+
6
+ <record model="ir.ui.view" id="rma_operation_form_view">
7
+ <field name="model">rma.operation</field>
8
+ <field name="arch" type="xml">
9
+ <form>
10
+ <sheet>
11
+ <group>
12
+ <field name="name" />
13
+ <field name="active" widget="boolean_toggle" />
14
+ </group>
15
+ <group string="Settings" name="settings">
16
+ <group>
17
+ <field name="action_create_receipt" />
18
+
19
+ </group>
20
+ <group>
21
+ <field
22
+ name="different_return_product"
23
+ attrs="{'invisible': [('action_create_receipt', '=', False)]}"
24
+ />
25
+ <field
26
+ name="auto_confirm_reception"
27
+ attrs="{'invisible': [('action_create_receipt', '=', False)]}"
28
+ />
29
+ </group>
30
+ <group>
31
+ <field name="action_create_delivery" />
32
+
33
+ </group>
34
+ <group />
35
+ <group>
36
+ <field name="action_create_refund" />
37
+
38
+ </group>
39
+ <group />
40
+
41
+
42
+ </group>
43
+ </sheet>
44
+ </form>
45
+ </field>
46
+ </record>
47
+
48
+ <record model="ir.ui.view" id="rma_operation_search_view">
49
+ <field name="model">rma.operation</field>
50
+ <field name="arch" type="xml">
51
+ <search>
52
+ <field name="name" />
53
+ </search>
54
+ </field>
55
+ </record>
56
+
57
+ <record model="ir.ui.view" id="rma_operation_tree_view">
58
+ <field name="model">rma.operation</field>
59
+ <field name="arch" type="xml">
60
+ <tree>
61
+ <field name="name" />
62
+ <field name="action_create_receipt" />
63
+ <field name="action_create_delivery" />
64
+ <field name="action_create_refund" />
65
+ <field name="active" widget="boolean_toggle" />
66
+ </tree>
67
+ </field>
68
+ </record>
69
+
70
+ <record model="ir.actions.act_window" id="rma_operation_act_window">
71
+ <field name="name">Operations</field>
72
+ <field name="res_model">rma.operation</field>
73
+ <field name="view_mode">tree,form</field>
74
+ <field name="domain">[]</field>
75
+ <field name="context">{}</field>
76
+ </record>
77
+
78
+ <record model="ir.ui.menu" id="rma_operation_menu">
79
+ <field name="name">Operations</field>
80
+ <field name="parent_id" ref="rma_configuration_menu" />
81
+ <field name="action" ref="rma_operation_act_window" />
82
+ <field name="sequence" eval="16" />
83
+ </record>
84
+
85
+ </odoo>
@@ -154,25 +154,32 @@
154
154
  states="draft"
155
155
  class="btn-primary"
156
156
  />
157
+ <button
158
+ name="action_create_receipt"
159
+ type="object"
160
+ string="Create Receipt"
161
+ attrs="{'invisible': [('show_create_receipt', '=', False)]}"
162
+ class="btn-primary"
163
+ />
157
164
  <button
158
165
  type="object"
159
166
  string="To Refund"
160
167
  name="action_refund"
161
- attrs="{'invisible': [('can_be_refunded', '=', False)]}"
168
+ attrs="{'invisible': [('show_create_refund', '=', False)]}"
162
169
  class="btn-primary"
163
170
  />
164
171
  <button
165
172
  type="object"
166
173
  string="Replace"
167
174
  name="action_replace"
168
- attrs="{'invisible': [('can_be_replaced', '=', False)]}"
175
+ attrs="{'invisible': [('show_create_replace', '=', False)]}"
169
176
  class="btn-primary"
170
177
  />
171
178
  <button
172
179
  type="object"
173
180
  string="Return to customer"
174
181
  name="action_return"
175
- attrs="{'invisible': [('can_be_returned', '=', False)]}"
182
+ attrs="{'invisible': [('show_create_return', '=', False)]}"
176
183
  class="btn-primary"
177
184
  />
178
185
  <button
@@ -283,6 +290,11 @@
283
290
  force_save="1"
284
291
  attrs="{'readonly': ['|', ('picking_id', '!=', False), ('state', '!=', 'draft')]}"
285
292
  />
293
+ <field
294
+ name="return_product_id"
295
+ force_save="1"
296
+ attrs="{'readonly': ['|', ('picking_id', '!=', False), ('state', '!=', 'draft')], 'invisible': [('different_return_product', '=', False)], 'required': [('different_return_product', '=', True)]}"
297
+ />
286
298
  <field name="uom_category_id" invisible="1" />
287
299
  <label for="product_uom_qty" />
288
300
  <div class="o_row">
@@ -359,9 +371,11 @@
359
371
  <field name="sent" invisible="1" />
360
372
  <field name="reception_move_id" invisible="1" />
361
373
  <field name="refund_id" invisible="1" />
362
- <field name="can_be_refunded" invisible="1" />
363
- <field name="can_be_returned" invisible="1" />
364
- <field name="can_be_replaced" invisible="1" />
374
+ <field name="show_create_receipt" invisible="1" />
375
+ <field name="show_create_refund" invisible="1" />
376
+ <field name="show_create_return" invisible="1" />
377
+ <field name="show_create_replace" invisible="1" />
378
+ <field name="different_return_product" invisible="1" />
365
379
  <field name="can_be_split" invisible="1" />
366
380
  <field name="can_be_locked" invisible="1" />
367
381
  <field name="can_be_finished" invisible="1" />
@@ -18,6 +18,14 @@ class ReturnPickingLine(models.TransientModel):
18
18
  store=True,
19
19
  readonly=False,
20
20
  )
21
+ return_product_id = fields.Many2one(
22
+ "product.product",
23
+ help="Product to be returned if it's different from the originally delivered "
24
+ "item.",
25
+ )
26
+ different_return_product = fields.Boolean(
27
+ related="rma_operation_id.different_return_product"
28
+ )
21
29
 
22
30
  @api.depends("wizard_id.rma_operation_id")
23
31
  def _compute_rma_operation_id(self):
@@ -34,6 +42,7 @@ class ReturnPickingLine(models.TransientModel):
34
42
  "product_uom": self.product_id.uom_id.id,
35
43
  "location_id": self.wizard_id.location_id.id or self.move_id.location_id.id,
36
44
  "operation_id": self.rma_operation_id.id,
45
+ "return_product_id": self.return_product_id.id,
37
46
  }
38
47
 
39
48
 
@@ -13,6 +13,11 @@
13
13
  name="rma_operation_id"
14
14
  attrs="{'column_invisible': [('parent.create_rma', '=', False)], 'required': [('parent.create_rma', '=', True), ('quantity', '>', 0)]}"
15
15
  />
16
+ <field
17
+ name="return_product_id"
18
+ attrs="{'column_invisible': [('parent.create_rma', '=', False)], 'invisible': [('different_return_product', '=', False)], 'required': [('different_return_product', '=', True), ('quantity', '>', 0)]}"
19
+ />
20
+ <field name="different_return_product" invisible="1" />
16
21
  </xpath>
17
22
  <field name="product_return_moves" position="before">
18
23
  <group name="group_rma">
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-rma
3
- Version: 16.0.4.0.0
3
+ Version: 16.0.5.0.0
4
4
  Summary: Return Merchandise Authorization (RMA)
5
5
  Home-page: https://github.com/OCA/rma
6
6
  Author: Tecnativa, Odoo Community Association (OCA)
@@ -23,7 +23,7 @@ Return Merchandise Authorization Management
23
23
  !! This file is generated by oca-gen-addon-readme !!
24
24
  !! changes will be overwritten. !!
25
25
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
26
- !! source digest: sha256:1b3498a03ec99e02a79a319f90549a3b3671ee7e8c11b6bb010ba85d092ca447
26
+ !! source digest: sha256:db1b39424a93fe4f3c6ffccfa616d7a490b2bed08da3749b27dc85edbeee3da6
27
27
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
28
28
 
29
29
  .. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png
@@ -1,23 +1,23 @@
1
- odoo/addons/rma/README.rst,sha256=Oq_9E1IBTRI25wltihIiBYG6hbNGtflD6iuRF_UnTOM,8237
1
+ odoo/addons/rma/README.rst,sha256=Hr4EqcxaHQpEERD_bqrWgEJAbWRc4dk9Gh0LcQSsQVU,8237
2
2
  odoo/addons/rma/__init__.py,sha256=KD8ElbTlUwRgGDQzvMIqp-WeEXGTuHqQT352BCbK2I0,168
3
- odoo/addons/rma/__manifest__.py,sha256=Doh3wYw618ZwfHDNjqT9dpy4_p9WvSyDuv4X0YQU2CI,1558
3
+ odoo/addons/rma/__manifest__.py,sha256=p1TAaaUxsAcut9KtCdg2Q6Hhr5-soxdepapE2nv3Sls,1593
4
4
  odoo/addons/rma/hooks.py,sha256=Zd5KcqVj_ONKV-GyrZiXOAmdRGBRRczJGdhrgUrzY_s,3320
5
5
  odoo/addons/rma/controllers/__init__.py,sha256=ZAYSY9pxyJjumL2QVLuxqtBzjLwKPiQsVXMBAWvNGGY,85
6
6
  odoo/addons/rma/controllers/main.py,sha256=lmi25T49fDnCoUSqqr8eibwVXa6lMANwbkFuHhUxgZg,5426
7
7
  odoo/addons/rma/data/mail_data.xml,sha256=RubsJ1NMxg0lf92fdFOg_afwmifAd3tVHZhJRz6bHsk,6611
8
8
  odoo/addons/rma/data/rma_operation_data.xml,sha256=fYq_1YP1sgRq7zvQ5gU4SJsZnq2TL-YihJcTXohuNzM,421
9
9
  odoo/addons/rma/data/stock_data.xml,sha256=_zwGmuGjhpptZWyXXdev9snSTjNekBpUsMXKD0bH8zE,332
10
- odoo/addons/rma/i18n/de.po,sha256=WaFR6piwiMuHfY6ndCRA5wRDARqlbgzICJDomxyvlbI,86831
11
- odoo/addons/rma/i18n/de_AT.po,sha256=UszBMZWbDToCJlUea1DQOOKqc-xVlTBDA36AwY4eGlg,64789
12
- odoo/addons/rma/i18n/es.po,sha256=-vgWX1cZm-JSuBC5OzUXw99eWjdj_8rqhQOa6XNbfNk,90823
13
- odoo/addons/rma/i18n/fr.po,sha256=0rWfWYLUlUre7FOhLbP9pxvAsEeFwyTZ0GbbbeN8kGE,80811
14
- odoo/addons/rma/i18n/it.po,sha256=E7YfF6EnwsupkvfPjpbV4AbyoWOu6RfKJdV2nn3RriA,90032
15
- odoo/addons/rma/i18n/nl.po,sha256=ipDbxD84fsWSINUQpTvA3U4rIyBHPUTmwIlgJtFNrYM,64786
16
- odoo/addons/rma/i18n/pt.po,sha256=UZAn4BrrdGSX-ta0eyI1jECz02fzzWOdlVI5g8wRRBU,76689
17
- odoo/addons/rma/i18n/pt_BR.po,sha256=xkz2akgSUGWmxwGrcL4vRiusZFbW1eM3HqkygsnrQXU,75942
18
- odoo/addons/rma/i18n/rma.pot,sha256=8C5EeC9YtY7r4EdX2l8THmpK2vvPCQXa9LK2qMl1zV8,66998
19
- odoo/addons/rma/i18n/ro.po,sha256=A9Se6IL8alc8tTTZsJzWMEsR5HPTnvJm7Fz9RYK48Mk,72628
20
- odoo/addons/rma/i18n/zh_CN.po,sha256=svt2fDdtM2GZ07eUxPro-wQJdHzDS2FiRlasNSky6Xk,64897
10
+ odoo/addons/rma/i18n/de.po,sha256=vxbRoQPYAYMTc9fFx7rZNPHa219kyGyx8hkoLKR5ceE,89041
11
+ odoo/addons/rma/i18n/de_AT.po,sha256=LHICmbsaIVqJxJF7_S_ac7_4bJzujrcLv_gJeCLJAaA,66999
12
+ odoo/addons/rma/i18n/es.po,sha256=US_AUyeTN7aYHrNr7FeYkk6vZY3zZ13hMwG01iwebko,93033
13
+ odoo/addons/rma/i18n/fr.po,sha256=ta0bBaTCtwyMilRvT5BhWpxLg5r-7fcpEEwXMoK00OM,83021
14
+ odoo/addons/rma/i18n/it.po,sha256=ErTrSxWWIch8nCUo2Ec48v0D7vS2fdx45fgIAqWX11M,92242
15
+ odoo/addons/rma/i18n/nl.po,sha256=vOlAo6mV6HNowdWQpR1O6twYbAataZ1ZFpVs8zXN-K8,66996
16
+ odoo/addons/rma/i18n/pt.po,sha256=56_ZJygIJwlYOdQGv67UjYJuQw787-_UG9uUtIHvw98,78899
17
+ odoo/addons/rma/i18n/pt_BR.po,sha256=h6ErZEN_SiyD-RN3OB9gVgkwD7HWOtqlSCBaukaRt50,78152
18
+ odoo/addons/rma/i18n/rma.pot,sha256=_EizVNi3X5YDpWQknzsfd_IkNhgKzrmhI0Ptt2cV21c,72144
19
+ odoo/addons/rma/i18n/ro.po,sha256=TL-RRGWoSNF6DuRMpDXyUyPCYtkv8o2mCxPOm9hmV_4,74838
20
+ odoo/addons/rma/i18n/zh_CN.po,sha256=4TJuoQ8S13KDKLeeqr2yP1QtCVhrdaD8GECvjN7lxPs,67107
21
21
  odoo/addons/rma/migrations/16.0.1.4.0/post-migration.py,sha256=jQn_F-J2amiqJZQZ33nQZeb_hOebJBXJMHdYbgiakd4,654
22
22
  odoo/addons/rma/models/__init__.py,sha256=SwBeY3SB1s7Nrn54Mw0LvlOF7LTLCGU7mzyy5kUR4qs,408
23
23
  odoo/addons/rma/models/account_move.py,sha256=oa7Czf53RZskOoenNQqNU-8x6pMz05qrAjU02Ef_g04,1653
@@ -25,9 +25,9 @@ odoo/addons/rma/models/res_company.py,sha256=46aercxmY3p3t0JoIzlSSP_pjkvjaQb1pHR
25
25
  odoo/addons/rma/models/res_config_settings.py,sha256=-X3NWCfEG1LJ2iE2dYl3Ut-suDskrHMkp0D597EFhIw,1493
26
26
  odoo/addons/rma/models/res_partner.py,sha256=hwa0H6OIniUcTp5xjsRGmtkDHb1rMbZXRo7IsRqL-4U,1217
27
27
  odoo/addons/rma/models/res_users.py,sha256=43A5IHYXEXe9M4G0cONf1l7EZ1AWl5mhWJ24EdtAfhI,351
28
- odoo/addons/rma/models/rma.py,sha256=03PHEGLlCgt67oUlJDbvJ5GDPHtoskN9-ZInA1nKciE,52155
28
+ odoo/addons/rma/models/rma.py,sha256=L2029JbxnhKihRUf_679lWDPyvGEGx0cWpc_GybxN54,58223
29
29
  odoo/addons/rma/models/rma_finalization.py,sha256=kgJ6EFWBXJKGCwKy7bbWRUynExsCMQyjqcflDpvwtaE,681
30
- odoo/addons/rma/models/rma_operation.py,sha256=1-_6Z921_RQSdK-H2_gYd84iPYF9JNiaybvEQbMXNuM,4153
30
+ odoo/addons/rma/models/rma_operation.py,sha256=9fmCVOgeUzbxcVViqjgKIMfoH-JO7YZqjO_iZ_CKD7U,5858
31
31
  odoo/addons/rma/models/rma_tag.py,sha256=RVFLyo8XmgjK_ftrRHWiEtzUQGs4b-OMhg0hwr-5Rzw,833
32
32
  odoo/addons/rma/models/rma_team.py,sha256=5gyghbFOE4RR6dR5TQ1lRC4kK88i6G51V3dlY9gN6EY,1935
33
33
  odoo/addons/rma/models/stock_move.py,sha256=rpA7RtEwc0TA86lsKnJvAnMU2Ai6atkd9yhguemqt5I,4934
@@ -42,20 +42,22 @@ odoo/addons/rma/report/report.xml,sha256=rMg9_lccL-dJClHvMCmRI1Feh499gnExeskIylc
42
42
  odoo/addons/rma/security/ir.model.access.csv,sha256=zACDkLgOfICGiJGb4A9RNKbtlpBcFIC4rDZxESyBzbQ,1724
43
43
  odoo/addons/rma/security/rma_security.xml,sha256=_tz_MXqW8bWfzGhgQ3pDI7xdx6tX321DrkIaRAd2W6E,5374
44
44
  odoo/addons/rma/static/description/icon.png,sha256=0VH8J6xmJMYW0dBaW-Ts-Gm5oRvbf9mOglT4vqUKxdU,7450
45
- odoo/addons/rma/static/description/index.html,sha256=vhLeY3FF_mfD6_-Hps3LUDSjT8NlksRDrh2p7mXWrJs,19205
46
- odoo/addons/rma/tests/__init__.py,sha256=81GJ8itc-sGXkj3shWeDJjSv1gKrtpOYhU5JPp6yGko,122
45
+ odoo/addons/rma/static/description/index.html,sha256=E91GVB-CmTzXTh0S7vj-gRCeokw6EpFGe0_Dy7-kQ-A,19205
46
+ odoo/addons/rma/tests/__init__.py,sha256=X6dddCmdfZT9glqjpjtcAoIigt-OBX6hth6bDVYrvy4,155
47
47
  odoo/addons/rma/tests/test_rma.py,sha256=Ft0Mcb7ZQd9FCwxHJqRJjLiUcdRryFwBMlZdtNMdBls,40932
48
48
  odoo/addons/rma/tests/test_rma_dashboard.py,sha256=HZS8QswRx34it3RQalIiNwvsXRlNpYwIa9RvxVLZHEM,3238
49
+ odoo/addons/rma/tests/test_rma_operation.py,sha256=wVCkP6ZQbnxCGDSdJ0GuieoI4g2fs9H31uXyDpF1i0w,14229
49
50
  odoo/addons/rma/views/dashboard.xml,sha256=sf8IbRXeHeWRzeWQeJH8SdacXiPJJhJ2e1rnDLAJJrE,9541
50
51
  odoo/addons/rma/views/menus.xml,sha256=KWrTOvwY6IB-liNjRvBxTkdCSkes-CMTFI0iakxoavE,603
51
52
  odoo/addons/rma/views/report_rma.xml,sha256=scWiOVovRPdNZWJgHmj7930wRaQ80ZIOz3GWygXN3yk,6579
52
53
  odoo/addons/rma/views/res_config_settings_views.xml,sha256=BgV6WqRHDe2e3773wCHGyclQ0hh47_ZZsHo062V992w,9436
53
54
  odoo/addons/rma/views/res_partner_views.xml,sha256=lwQQVUs4_XeeERtJBgy73GtrVpmQowY9omf-h5oLtU8,987
54
55
  odoo/addons/rma/views/rma_finalization_views.xml,sha256=n7uDfDuY_3-U-XMw98AnZTeG_E11zE7mvJsWtQ_63jM,2938
56
+ odoo/addons/rma/views/rma_operation.xml,sha256=kP36kdkwbaWNvVBwUMEeOZOecZF5YWI8TiqSR61DEDY,3035
55
57
  odoo/addons/rma/views/rma_portal_templates.xml,sha256=cPL5U4LTv486LgjS0Pr2ryeKKtCPv9e7GOl7w36j8YQ,27419
56
58
  odoo/addons/rma/views/rma_tag_views.xml,sha256=Nhq9pUOHx6TS9dREkavjVzKjPUSjv89vJ3AdNpCNDsQ,2217
57
59
  odoo/addons/rma/views/rma_team_views.xml,sha256=ekbQB-lLi8pFV-AAp1ETK1FkPzxoqTCu_XRo6Hf2Bbs,6988
58
- odoo/addons/rma/views/rma_views.xml,sha256=-awFnh8QSuXqo6wJjf8nGh9iaOfLrX-OjN7cJhF6vYM,20501
60
+ odoo/addons/rma/views/rma_views.xml,sha256=kEyEPQCsubRlSF0w8SAIM_AVotKEfZVylzVRWHYdP3Y,21384
59
61
  odoo/addons/rma/views/stock_picking_views.xml,sha256=0N80h-BuliU2iLIzpkdbLf-YpQ1R97pP9Lq_pKq_M-Q,945
60
62
  odoo/addons/rma/views/stock_warehouse_views.xml,sha256=f3f0DtzNvOc0txPANs0Zw0Ds5ZbPDX20iAunIAIEgpA,921
61
63
  odoo/addons/rma/wizard/__init__.py,sha256=v5BQZoM0R5d2jOPuFiq500H2QAEee9eJB-4hKm5Wk7U,190
@@ -65,9 +67,9 @@ odoo/addons/rma/wizard/rma_finalization_wizard.py,sha256=nT5Gb_Itl4289pIsN7h7vNa
65
67
  odoo/addons/rma/wizard/rma_finalization_wizard_views.xml,sha256=q0rKm6iQum0P73muhWo_CxisVv5rExesPbR_FExV8fg,1346
66
68
  odoo/addons/rma/wizard/rma_split.py,sha256=PZuVAGCXzRkycxJQIgfbPY__EPRXGPAkiKaGXLsnPbM,2099
67
69
  odoo/addons/rma/wizard/rma_split_views.xml,sha256=jtrUmgS9rsUfbgx6y77cUXPnmd1ObY7lmQ_8XZDxxuo,1581
68
- odoo/addons/rma/wizard/stock_picking_return.py,sha256=vGV5hSettscItmDRA8xmpuPE0v0r8q8uOSTiSy6El8E,7119
69
- odoo/addons/rma/wizard/stock_picking_return_views.xml,sha256=NNnHzPR419GuIikwmJym4YZ-EVoPS6lG2G0XNX_4vLc,1677
70
- odoo_addon_rma-16.0.4.0.0.dist-info/METADATA,sha256=VP-buUom-4-fAxs6X25NdOBk3fYooHwHYRYItA3KFkU,8799
71
- odoo_addon_rma-16.0.4.0.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
72
- odoo_addon_rma-16.0.4.0.0.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
73
- odoo_addon_rma-16.0.4.0.0.dist-info/RECORD,,
70
+ odoo/addons/rma/wizard/stock_picking_return.py,sha256=1hXBUHUwKeFVjZk7xB5Yp-cb6TxvgIkYH7nNuGGtmW4,7470
71
+ odoo/addons/rma/wizard/stock_picking_return_views.xml,sha256=mvVA1z7Z4NoUnq5gnRx-eFYyEe9zrAoTQ1gnCbyLVeE,2060
72
+ odoo_addon_rma-16.0.5.0.0.dist-info/METADATA,sha256=DVuaRtCgZcEQGlnexjqDnhTTmxQ_lwWyFLoDvPMB1tg,8799
73
+ odoo_addon_rma-16.0.5.0.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
74
+ odoo_addon_rma-16.0.5.0.0.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
75
+ odoo_addon_rma-16.0.5.0.0.dist-info/RECORD,,