31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
import logging
|
|
|
|
from odoo import models
|
|
from odoo.tools import populate, groupby
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class PurchaseOrder(models.Model):
|
|
_inherit = "purchase.order"
|
|
|
|
_populate_dependencies = ["res.partner", "stock.picking.type"]
|
|
|
|
def _populate_factories(self):
|
|
res = super()._populate_factories()
|
|
picking_types = self.env['stock.picking.type'].search([('code', '=', 'incoming')])
|
|
|
|
picking_types_by_company = dict(groupby(picking_types, key=lambda par: par.company_id.id))
|
|
picking_types_inter_company = self.env['stock.picking.type'].concat(*picking_types_by_company.get(False, []))
|
|
picking_types_by_company = {com: self.env['stock.picking.type'].concat(*pt) | picking_types_inter_company for com, pt in picking_types_by_company.items() if com}
|
|
|
|
def get_picking_type_id(values=None, random=None, **kwargs):
|
|
return random.choice(picking_types_by_company[values["company_id"]]).id
|
|
|
|
return res + [
|
|
("picking_type_id", populate.compute(get_picking_type_id))
|
|
]
|