Hello!
I setup month ago my odoo 17. I update the existing company, which is on id1. This seems was a fail, because after a update from git, it overwrite id1 with the default values.
Now I would like to move my company to id2 and set on id1 a default not used company.
This was working, but there is an issue with the tax.
My sql code:
DO $$
DECLARE
old_company_id INTEGER := 3; -- Ursprüngliche company_id
new_company_id INTEGER := 2; -- Neue company_id
fk RECORD; -- Variable für Fremdschlüssel
tbl RECORD; -- Variable für Tabellen mit company_id
BEGIN
-- 1. Alle Fremdschlüssel, die company_id referenzieren, deaktivieren
RAISE NOTICE 'Deaktivieren von Fremdschlüsseln beginnt.';
FOR fk IN
SELECT conname, conrelid::regclass::text AS table_name
FROM pg_constraint
WHERE confkey IS NOT NULL
AND confrelid = 'res_company'::regclass
LOOP
RAISE NOTICE 'Entferne Fremdschlüssel % von Tabelle %', fk.conname, fk.table_name;
EXECUTE format('ALTER TABLE %I DROP CONSTRAINT %I;', fk.table_name, fk.conname);
END LOOP;
RAISE NOTICE 'Deaktivieren von Fremdschlüsseln abgeschlossen.';
-- 2. Ändere die ID in res_company (Tabelle NICHT ändern)
RAISE NOTICE 'res_company wird nicht geändert. Überspringe diesen Schritt.';
-- 3. Passe alle Tabellen an, die company_id referenzieren, aber keine Sichten sind
RAISE NOTICE 'Beginne mit der Aktualisierung von Tabellen mit company_id.';
FOR tbl IN
SELECT table_name
FROM information_schema.columns
WHERE column_name = 'company_id'
AND table_name NOT IN (
SELECT table_name
FROM information_schema.views
WHERE table_schema = 'public'
)
AND table_name != 'res_company' -- res_company ausschließen
LOOP
RAISE NOTICE 'Aktualisiere Tabelle %', tbl.table_name;
EXECUTE format('UPDATE %I SET company_id = %s WHERE company_id = %s;', tbl.table_name, new_company_id, old_company_id);
END LOOP;
RAISE NOTICE 'Alle Tabellen mit company_id erfolgreich aktualisiert, res_company ausgeschlossen.';
-- 4. Fremdschlüssel wiederherstellen
RAISE NOTICE 'Beginne mit dem Wiederherstellen der Fremdschlüssel.';
FOR fk IN
SELECT conname, conrelid::regclass::text AS table_name,
pg_get_constraintdef(oid) AS definition
FROM pg_constraint
WHERE confkey IS NOT NULL
AND confrelid = 'res_company'::regclass
LOOP
RAISE NOTICE 'Stelle Fremdschlüssel % in Tabelle % wieder her', fk.conname, fk.table_name;
EXECUTE format('ALTER TABLE %I ADD CONSTRAINT %I %s;', fk.table_name, fk.conname, fk.definition);
END LOOP;
RAISE NOTICE 'Wiederherstellung der Fremdschlüssel abgeschlossen.';
END $$;
I created first a new company (id2), then I move my company (id1) to id3, move id2 to id 1 and the my id3 to id2
So I have:;
id1: default company
id2: my company
All orders and sales are moving and working.
But when I open a page with tax (products, invoicing, ...) he show me no data or get an error: no permission
When I open the same as Superuser it is working fine.
So far I see, all tax tables are switched to id2.
Can someone help?
Thanks!!