from odoo import SUPERUSER_ID def fix_missing_pos_order_partners(cr, registry): """ Findet POS-Bestellungen mit fehlendem Partner und fügt Dummy-Partner direkt per SQL mit der passenden ID ein. """ cr.execute(""" SELECT DISTINCT partner_id FROM pos_order WHERE partner_id IS NOT NULL AND partner_id NOT IN (SELECT id FROM res_partner) """) missing_ids = [row[0] for row in cr.fetchall()] print(f"Superuser: {SUPERUSER_ID}") if not missing_ids: print("✅ Keine fehlenden Partner gefunden.") return print(f"🚧 Fehlende Partner-IDs: {missing_ids}") # Direkter SQL-Insert für res_partner for pid in missing_ids: print(f"➕ Erzeuge Dummy-Partner mit ID {pid}") cr.execute(""" INSERT INTO res_partner (id, name, customer_rank, create_uid, create_date, write_uid, write_date) VALUES (%s, %s, %s, %s, now(), %s, now()) ON CONFLICT (id) DO NOTHING """, (pid, f"Fehlender Partner {pid}", 1, SUPERUSER_ID, SUPERUSER_ID)) # Sequenz zurücksetzen, um ID-Kollision zu verhindern cr.execute(""" SELECT setval('res_partner_id_seq', (SELECT MAX(id) FROM res_partner)) """) print("✅ Alle fehlenden Partner ergänzt.") # Automatischer Start in odoo-bin shell if 'env' in globals(): fix_missing_pos_order_partners(env.cr, env.registry) env.cr.commit()