from odoo import models, api class ProductProduct(models.Model): _inherit = 'product.product' @api.model def _load_pos_data_fields(self, config_id): params = super()._load_pos_data_fields(config_id) params += ['invoice_policy', 'optional_product_ids', 'type'] return params def get_product_info_pos(self, price, quantity, pos_config_id): res = super().get_product_info_pos(price, quantity, pos_config_id) # Optional products res['optional_products'] = [ {'name': p.name, 'price': min(p.product_variant_ids.mapped('lst_price'))} for p in self.optional_product_ids.filtered_domain(self._optional_product_pos_domain()) ] return res def has_optional_product_in_pos(self): self.ensure_one() return bool(self.optional_product_ids.filtered_domain(self._optional_product_pos_domain())) def _optional_product_pos_domain(self): return [ *self.env['product.product']._check_company_domain(self.env.company), ['sale_ok', '=', True], ['available_in_pos', '=', True], ]