IMP rma_sale with critical path of doing a return for an existing picking.

This commit is contained in:
Jared Kipe
2018-08-16 12:44:43 -07:00
parent 1ce48af5e4
commit 41d19da933
5 changed files with 86 additions and 1 deletions

View File

@@ -16,6 +16,7 @@
],
'data': [
'security/ir.model.access.csv',
'data/rma_demo.xml',
'views/rma_views.xml',
'wizard/rma_lines_views.xml',
],

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="template_sale_return" model="rma.template">
<field name="name">Sale Return</field>
<field name="usage">sale_order</field>
<field name="valid_days" eval="10"/>
<field name="create_in_picking" eval="True"/>
<field name="in_type_id" ref="stock.picking_type_in"/>
<field name="in_location_id" ref="stock.stock_location_customers"/>
<field name="in_location_dest_id" ref="stock.stock_location_stock"/>
<field name="in_procure_method">make_to_stock</field>
<field name="in_to_refund_so" eval="True"/>
<field name="in_require_return" eval="True"/>
</record>
</odoo>

View File

@@ -0,0 +1 @@
from . import test_rma

View File

@@ -0,0 +1,68 @@
from odoo.addons.rma.tests.test_rma import TestRMA
from odoo.exceptions import UserError
class TestRMASale(TestRMA):
def setUp(self):
super(TestRMASale, self).setUp()
self.template2 = self.env.ref('rma_sale.template_sale_return')
def test_20_sale_return(self):
self.product1.tracking = 'serial'
order = self.env['sale.order'].create({
'partner_id': self.partner1.id,
'partner_invoice_id': self.partner1.id,
'partner_shipping_id': self.partner1.id,
'order_line': [(0, 0, {
'product_id': self.product1.id,
'product_uom_qty': 1.0,
'product_uom': self.product1.uom_id.id,
'price_unit': 10.0,
})]
})
order.action_confirm()
self.assertTrue(order.state in ('sale', 'done'))
self.assertEqual(len(order.picking_ids), 1, 'Tests only run with single stage delivery.')
# Try to RMA item not delivered yet
rma = self.env['rma.rma'].create({
'template_id': self.template2.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({
'rma_id': rma.id,
'product_id': self.product1.id,
'product_uom_id': self.product1.uom_id.id,
'product_uom_qty': 1.0,
})
with self.assertRaises(UserError):
rma.action_confirm()
order.picking_ids.force_assign()
pack_opt = self.env['stock.pack.operation'].search([('picking_id', '=', order.picking_ids.id)], limit=1)
lot = self.env['stock.production.lot'].create({
'product_id': self.product1.id,
'name': 'X100',
})
self.env['stock.pack.operation.lot'].create({'operation_id': pack_opt.id, 'lot_id': lot.id, 'qty': 1.0})
pack_opt.qty_done = 1.0
order.picking_ids.do_transfer()
self.assertEqual(order.picking_ids.state, 'done')
# Confirm RMA
rma.action_confirm()
self.assertEqual(rma.in_picking_id.state, 'assigned')
pack_opt = self.env['stock.pack.operation'].search([('picking_id', '=', rma.in_picking_id.id)], limit=1)
self.assertEqual(pack_opt.pack_lot_ids.lot_id, lot)
with self.assertRaises(UserError):
rma.action_done()
pack_opt.pack_lot_ids.qty = 1.0
pack_opt.qty_done = 1.0
rma.in_picking_id.do_transfer()
rma.action_done()

View File

@@ -52,7 +52,7 @@ class RMASaleMakeLines(models.TransientModel):
class RMASOMakeLinesLine(models.TransientModel):
_name = 'rma.sale.make.lines.line'
rma_make_lines_id = fields.Many2one('rma.make.lines')
rma_make_lines_id = fields.Many2one('rma.sale.make.lines')
product_id = fields.Many2one('product.product', string="Product")
qty_ordered = fields.Float(string='Ordered')
qty_invoiced = fields.Float(string='Invoiced')