diff --git a/stock_request_purchase/README.rst b/stock_request_purchase/README.rst index 045fcb5e5..a5552942e 100644 --- a/stock_request_purchase/README.rst +++ b/stock_request_purchase/README.rst @@ -46,6 +46,7 @@ Contributors ------------ * Jordi Ballester . +* Enric Tobella Maintainer ---------- diff --git a/stock_request_purchase/__manifest__.py b/stock_request_purchase/__manifest__.py index f4f4d1664..f3b2619e1 100644 --- a/stock_request_purchase/__manifest__.py +++ b/stock_request_purchase/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Stock Request Purchase", "summary": "Internal request for stock", - "version": "11.0.1.1.0", + "version": "11.0.2.0.0", "license": "LGPL-3", "website": "https://github.com/stock-logistics-warehouse", "author": "Eficent, " @@ -17,6 +17,7 @@ "data": [ "security/ir.model.access.csv", "views/stock_request_views.xml", + "views/stock_request_order_views.xml", "views/purchase_order_views.xml", ], "installable": True, diff --git a/stock_request_purchase/models/__init__.py b/stock_request_purchase/models/__init__.py index ad901b8cf..b516de047 100644 --- a/stock_request_purchase/models/__init__.py +++ b/stock_request_purchase/models/__init__.py @@ -3,3 +3,4 @@ from . import purchase_order from . import purchase_order_line from . import procurement_rule from . import stock_request +from . import stock_request_order diff --git a/stock_request_purchase/models/stock_request.py b/stock_request_purchase/models/stock_request.py index e6f82feb4..27548e1b8 100644 --- a/stock_request_purchase/models/stock_request.py +++ b/stock_request_purchase/models/stock_request.py @@ -9,7 +9,7 @@ class StockRequest(models.Model): purchase_ids = fields.One2many('purchase.order', compute='_compute_purchase_ids', - string='Pickings', readonly=True) + string='Purchase Orders', readonly=True) purchase_count = fields.Integer(string='Purchase count', compute='_compute_purchase_ids', readonly=True) diff --git a/stock_request_purchase/models/stock_request_order.py b/stock_request_purchase/models/stock_request_order.py new file mode 100644 index 000000000..c752e77d1 --- /dev/null +++ b/stock_request_purchase/models/stock_request_order.py @@ -0,0 +1,40 @@ +# Copyright 2018 Creu Blanca +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from odoo import api, fields, models + + +class StockRequestOrder(models.Model): + _inherit = 'stock.request.order' + + purchase_ids = fields.One2many('purchase.order', + compute='_compute_purchase_ids', + string='Purchase Orders', readonly=True) + purchase_count = fields.Integer(string='Purchase count', + compute='_compute_purchase_ids', + readonly=True) + purchase_line_ids = fields.Many2many('purchase.order.line', + compute='_compute_purchase_ids', + string='Purchase Order Lines', + readonly=True, copy=False) + + @api.depends('stock_request_ids') + def _compute_purchase_ids(self): + for req in self.sudo(): + req.purchase_ids = req.stock_request_ids.mapped('purchase_ids') + req.purchase_line_ids = req.stock_request_ids.mapped( + 'purchase_line_ids') + req.purchase_count = len(req.purchase_ids) + + @api.multi + def action_view_purchase(self): + action = self.env.ref( + 'purchase.purchase_order_action_generic').read()[0] + purchases = self.mapped('purchase_ids') + if len(purchases) > 1: + action['domain'] = [('id', 'in', purchases.ids)] + elif purchases: + action['views'] = [ + (self.env.ref('purchase.purchase_order_form').id, 'form')] + action['res_id'] = purchases.id + return action diff --git a/stock_request_purchase/static/description/icon.png b/stock_request_purchase/static/description/icon.png index a7c11c7a1..c31ecfd9f 100644 Binary files a/stock_request_purchase/static/description/icon.png and b/stock_request_purchase/static/description/icon.png differ diff --git a/stock_request_purchase/tests/test_stock_request_purchase.py b/stock_request_purchase/tests/test_stock_request_purchase.py index 9ccc978aa..1e7d6f4bd 100644 --- a/stock_request_purchase/tests/test_stock_request_purchase.py +++ b/stock_request_purchase/tests/test_stock_request_purchase.py @@ -74,44 +74,54 @@ class TestStockRequestPurchase(common.TransactionCase): def test_create_request_01(self): """Single Stock request with buy rule""" vals = { - 'product_id': self.product.id, - 'product_uom_id': self.product.uom_id.id, - 'product_uom_qty': 5.0, 'company_id': self.main_company.id, 'warehouse_id': self.warehouse.id, 'location_id': self.warehouse.lot_stock_id.id, + 'stock_request_ids': [(0, 0, { + 'product_id': self.product.id, + 'product_uom_id': self.product.uom_id.id, + 'product_uom_qty': 5.0, + 'company_id': self.main_company.id, + 'warehouse_id': self.warehouse.id, + 'location_id': self.warehouse.lot_stock_id.id, + })] } - stock_request = self.stock_request.sudo( + order = self.env['stock.request.order'].sudo( self.stock_request_user).create(vals) - stock_request.action_confirm() - self.assertEqual(stock_request.state, 'open') + order.action_confirm() + self.assertEqual(order.state, 'open') + self.assertEqual(order.stock_request_ids.state, 'open') - stock_request.refresh() + order.refresh() - self.assertEqual(len(stock_request.sudo().purchase_ids), 1) - self.assertEqual(len(stock_request.picking_ids), 0) - self.assertEqual(len(stock_request.move_ids), 0) - self.assertEqual(stock_request.qty_in_progress, 0.0) + self.assertEqual(len(order.sudo().purchase_ids), 1) + self.assertEqual(len(order.picking_ids), 0) + self.assertEqual(len(order.move_ids), 0) + self.assertEqual(len(order.stock_request_ids.sudo().purchase_ids), 1) + self.assertEqual(len(order.stock_request_ids.picking_ids), 0) + self.assertEqual(len(order.stock_request_ids.move_ids), 0) + self.assertEqual(order.stock_request_ids.qty_in_progress, 0.0) - purchase = stock_request.sudo().purchase_ids[0] + purchase = order.sudo().purchase_ids[0] purchase.button_confirm() picking = purchase.picking_ids[0] picking.action_confirm() - self.assertEqual(stock_request.qty_in_progress, 5.0) - self.assertEqual(stock_request.qty_done, 0.0) + self.assertEqual(order.stock_request_ids.qty_in_progress, 5.0) + self.assertEqual(order.stock_request_ids.qty_done, 0.0) picking.action_assign() packout1 = picking.move_line_ids[0] packout1.qty_done = 5 picking.action_done() - self.assertEqual(stock_request.qty_in_progress, 0.0) - self.assertEqual(stock_request.qty_done, - stock_request.product_uom_qty) - self.assertEqual(stock_request.state, 'done') + self.assertEqual(order.stock_request_ids.qty_in_progress, 0.0) + self.assertEqual(order.stock_request_ids.qty_done, + order.stock_request_ids.product_uom_qty) + self.assertEqual(order.stock_request_ids.state, 'done') + self.assertEqual(order.state, 'done') def test_create_request_02(self): """Multiple Stock requests with buy rule""" @@ -176,16 +186,24 @@ class TestStockRequestPurchase(common.TransactionCase): def test_view_actions(self): vals = { - 'product_id': self.product.id, - 'product_uom_id': self.product.uom_id.id, - 'product_uom_qty': 5.0, 'company_id': self.main_company.id, 'warehouse_id': self.warehouse.id, 'location_id': self.warehouse.lot_stock_id.id, + 'stock_request_ids': [(0, 0, { + 'product_id': self.product.id, + 'product_uom_id': self.product.uom_id.id, + 'product_uom_qty': 5.0, + 'company_id': self.main_company.id, + 'warehouse_id': self.warehouse.id, + 'location_id': self.warehouse.lot_stock_id.id, + })] } - stock_request = self.stock_request.sudo().create(vals) - stock_request.action_confirm() + order = self.env['stock.request.order'].sudo().create(vals) + + order.action_confirm() + + stock_request = order.stock_request_ids action = stock_request.action_view_purchase() @@ -197,3 +215,9 @@ class TestStockRequestPurchase(common.TransactionCase): action = stock_request.purchase_ids[0].action_view_stock_request() self.assertEqual(action['type'], 'ir.actions.act_window') self.assertEqual(action['res_id'], stock_request.id) + + action = order.action_view_purchase() + + self.assertEqual(action['domain'], '[]') + self.assertEqual('views' in action.keys(), True) + self.assertEqual(action['res_id'], order.purchase_ids[0].id) diff --git a/stock_request_purchase/views/stock_request_order_views.xml b/stock_request_purchase/views/stock_request_order_views.xml new file mode 100644 index 000000000..64f870686 --- /dev/null +++ b/stock_request_purchase/views/stock_request_order_views.xml @@ -0,0 +1,26 @@ + + + + + + stock.request.order.form + stock.request.order + + +
+ + +
+
+
+ +