25 lines
1.2 KiB
Python
25 lines
1.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import models
|
|
|
|
class SaleOrderLine(models.Model):
|
|
_inherit = 'sale.order.line'
|
|
|
|
def _get_action_per_item(self):
|
|
""" Get action per Sales Order Item to display the stock moves linked
|
|
|
|
:returns: Dict containing id of SOL as key and the action as value
|
|
"""
|
|
action_per_sol = super()._get_action_per_item()
|
|
stock_move_action = self.env.ref('sale_project_stock.stock_move_per_sale_order_line_action').id
|
|
stock_move_ids_per_sol = {}
|
|
if self.user_has_groups('stock.group_stock_user'):
|
|
stock_move_read_group = self.env['stock.move']._read_group([('sale_line_id', 'in', self.ids)], ['sale_line_id'], ['id:array_agg'])
|
|
stock_move_ids_per_sol = {sale_line.id: ids for sale_line, ids in stock_move_read_group}
|
|
for sol in self:
|
|
stock_move_ids = stock_move_ids_per_sol.get(sol.id, [])
|
|
if not sol.is_service and stock_move_ids:
|
|
action_per_sol[sol.id] = stock_move_action, stock_move_ids[0] if len(stock_move_ids) == 1 else False
|
|
return action_per_sol
|