41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
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() |