from odoo import models, fields, api from collections import defaultdict #import debugpy import logging _logger = logging.getLogger(__name__) _logger.info("✅ pos_order.py geladen") # debugpy.listen(("0.0.0.0", 5678)) print("✅ debugpy wartet auf Verbindung (Port 5678) ...") # Optional: Starte erst, wenn VS Code verbunden ist #debugpy.wait_for_client() class PosOrder(models.Model): _inherit = 'pos.order' def _process_order(self, order, draft, existing_order): pos_order_id = super(PosOrder, self)._process_order(order, draft, existing_order) pos_order = self.browse(pos_order_id) training_products = self.env['ows.machine.training'].search([]) 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: _logger.info("🟡 POS-Bestellung ohne Partner – keine Freigabe möglich") return pos_order_id for line in pos_order.lines: product_tmpl_id = line.product_id.product_tmpl_id.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, 'machine_id': machine_id, 'granted_by_pos': True }) _logger.info("✅ Maschinenfreigabe erstellt: %s für %s", machine_id, partner.name) return pos_order_id