diff --git a/models/pos_order.py b/models/pos_order.py index ddffff6..71ae7c2 100644 --- a/models/pos_order.py +++ b/models/pos_order.py @@ -1,4 +1,5 @@ from odoo import models, fields, api +from collections import defaultdict #import debugpy import logging @@ -19,10 +20,9 @@ class PosOrder(models.Model): pos_order = self.browse(pos_order_id) training_products = self.env['ows.machine.training'].search([]) - product_map = { - tp.training_id.product_tmpl_id.id: tp.machine_id.id - for tp in training_products - } + product_map = defaultdict(list) + for tp in training_products: + product_map[tp.training_id.product_tmpl_id.id].append(tp.machine_id.id) partner = pos_order.partner_id if not partner: @@ -31,15 +31,13 @@ class PosOrder(models.Model): for line in pos_order.lines: product_tmpl_id = line.product_id.product_tmpl_id.id - machine_id = product_map.get(product_tmpl_id) - - _logger.info("🔍 Prüfe Produkt %s → Maschine ID: %s", line.product_id.display_name, machine_id) - - if machine_id: + machine_ids = product_map.get(product_tmpl_id, []) + _logger.info("🔍 Prüfe Produkt %s → Maschinen IDs: %s", line.product_id.display_name, machine_ids) + for machine_id in machine_ids: already_exists = self.env['ows.machine.access'].search([ ('partner_id', '=', partner.id), ('machine_id', '=', machine_id) - ]) + ], limit=1) if not already_exists: self.env['ows.machine.access'].create({ 'partner_id': partner.id,