-
+
+
+
@@ -23,6 +28,9 @@
+
+
+
@@ -106,6 +114,7 @@
+
@@ -122,6 +131,7 @@
+
@@ -161,7 +171,6 @@
-
diff --git a/rma/wizard/__init__.py b/rma/wizard/__init__.py
new file mode 100644
index 00000000..450b15cd
--- /dev/null
+++ b/rma/wizard/__init__.py
@@ -0,0 +1,2 @@
+# -*- coding: utf-8 -*-
+from . import rma_lines
diff --git a/rma/wizard/rma_lines.py b/rma/wizard/rma_lines.py
new file mode 100644
index 00000000..ff8aa128
--- /dev/null
+++ b/rma/wizard/rma_lines.py
@@ -0,0 +1,59 @@
+# -*- coding: utf-8 -*-
+
+from odoo import api, fields, models
+
+
+class RMAPickingMakeLines(models.TransientModel):
+ _name = 'rma.picking.make.lines'
+ _description = 'Add Picking Lines'
+
+ rma_id = fields.Many2one('rma.rma', string='RMA')
+ line_ids = fields.One2many('rma.picking.make.lines.line', 'rma_make_lines_id', string='Lines')
+
+
+ @api.model
+ def create(self, vals):
+ maker = super(RMAPickingMakeLines, self).create(vals)
+ maker._create_lines()
+ return maker
+
+ def _line_values(self, move):
+ return {
+ 'rma_make_lines_id': self.id,
+ 'product_id': move.product_id.id,
+ 'qty_ordered': move.ordered_qty,
+ 'qty_delivered': move.product_uom_qty,
+ 'product_uom_qty': 0.0,
+ 'product_uom_id': move.product_uom.id,
+ }
+
+ def _create_lines(self):
+ make_lines_obj = self.env['rma.picking.make.lines.line']
+
+ if self.rma_id.template_usage == 'stock_picking' and self.rma_id.stock_picking_id:
+ for l in self.rma_id.stock_picking_id.move_lines:
+ self.line_ids |= make_lines_obj.create(self._line_values(l))
+
+ @api.multi
+ def add_lines(self):
+ rma_line_obj = self.env['rma.line']
+ for o in self:
+ lines = o.line_ids.filtered(lambda l: l.product_uom_qty > 0.0)
+ for l in lines:
+ rma_line_obj.create({
+ 'rma_id': o.rma_id.id,
+ 'product_id': l.product_id.id,
+ 'product_uom_id': l.product_uom_id.id,
+ 'product_uom_qty': l.product_uom_qty,
+ })
+
+
+class RMAPickingMakeLinesLine(models.TransientModel):
+ _name = 'rma.picking.make.lines.line'
+
+ rma_make_lines_id = fields.Many2one('rma.picking.make.lines')
+ product_id = fields.Many2one('product.product', string="Product")
+ qty_ordered = fields.Float(string='Ordered')
+ qty_delivered = fields.Float(string='Delivered')
+ product_uom_qty = fields.Float(string='QTY')
+ product_uom_id = fields.Many2one('product.uom', 'UOM')
diff --git a/rma/wizard/rma_lines_views.xml b/rma/wizard/rma_lines_views.xml
new file mode 100644
index 00000000..9515fd03
--- /dev/null
+++ b/rma/wizard/rma_lines_views.xml
@@ -0,0 +1,38 @@
+
+
+
+ view.rma.add.lines.form
+ rma.picking.make.lines
+ form
+
+
+
+
+
+ Add RMA Lines
+ rma.picking.make.lines
+ form
+ form
+
+ new
+
+
\ No newline at end of file
diff --git a/rma_sale/models/rma.py b/rma_sale/models/rma.py
index a3d4e549..e2f8874f 100644
--- a/rma_sale/models/rma.py
+++ b/rma_sale/models/rma.py
@@ -8,6 +8,7 @@ class RMATemplate(models.Model):
_inherit = 'rma.template'
usage = fields.Selection(selection_add=[('sale_order', 'Sale Order')])
+ in_to_refund_so = fields.Boolean(string='Inbound mark refund SO')
class RMA(models.Model):
diff --git a/rma_sale/tests/test_rma.py b/rma_sale/tests/test_rma.py
index fe732090..8429f09a 100644
--- a/rma_sale/tests/test_rma.py
+++ b/rma_sale/tests/test_rma.py
@@ -6,7 +6,7 @@ class TestRMASale(TestRMA):
def setUp(self):
super(TestRMASale, self).setUp()
- self.template2 = self.env.ref('rma_sale.template_sale_return')
+ self.template_sale_return = self.env.ref('rma_sale.template_sale_return')
def test_20_sale_return(self):
self.product1.tracking = 'serial'
@@ -27,18 +27,18 @@ class TestRMASale(TestRMA):
# Try to RMA item not delivered yet
rma = self.env['rma.rma'].create({
- 'template_id': self.template2.id,
+ 'template_id': self.template_sale_return.id,
'partner_id': self.partner1.id,
'partner_shipping_id': self.partner1.id,
'sale_order_id': order.id,
})
self.assertEqual(rma.state, 'draft')
- rma_line = self.env['rma.line'].create({
+ wizard = self.env['rma.sale.make.lines'].create({
'rma_id': rma.id,
- 'product_id': self.product1.id,
- 'product_uom_id': self.product1.uom_id.id,
- 'product_uom_qty': 1.0,
})
+ wizard.line_ids.product_uom_qty = 1.0
+ wizard.add_lines()
+ self.assertEqual(len(rma.lines), 1)
with self.assertRaises(UserError):
rma.action_confirm()
diff --git a/rma_sale/views/rma_views.xml b/rma_sale/views/rma_views.xml
index f40d786b..22c619ab 100644
--- a/rma_sale/views/rma_views.xml
+++ b/rma_sale/views/rma_views.xml
@@ -1,5 +1,18 @@
+
+
+ rma.template.form.sale
+ rma.template
+
+
+
+
+
+
+
+
+
rma.rma.form.sale
rma.rma