From 30aaf141c71118835be0c74a26d37cf08c04809f Mon Sep 17 00:00:00 2001 From: florianfederspiel Date: Mon, 18 May 2026 22:05:53 +0200 Subject: [PATCH] KI-AGENT: Exportiere Sachkonten beim Mandantenumzug --- backend/src/utils/tenantFullExport.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/backend/src/utils/tenantFullExport.ts b/backend/src/utils/tenantFullExport.ts index dc9584e..4d4a559 100644 --- a/backend/src/utils/tenantFullExport.ts +++ b/backend/src/utils/tenantFullExport.ts @@ -123,6 +123,7 @@ export const buildTenantFullExport = async (server: FastifyInstance, tenantId: n if (!tenantRows.length) throw new Error("Tenant nicht gefunden") addRows(tables, "tenants", tenantRows) + addRows(tables, "accounts", await loadRows(client, "accounts", `${quoteIdent("accountChart")} = $1`, [tenantRows[0].accountChart || "skr03"])) for (const [table, metadata] of columnsByTable.entries()) { if (table === "tenants") continue @@ -286,8 +287,15 @@ const insertRows = async (client: any, table: string, rows: Record[ const placeholders = rowColumns.map((_, index) => `$${index + 1}`).join(", ") const values = rowColumns.map((column) => prepareColumnValue(row[column], metadata.jsonColumns.has(column))) + const conflictSql = table === "tenants" && rowColumns.includes("id") + ? `on conflict (${quoteIdent("id")}) do update set ${rowColumns + .filter((column) => column !== "id") + .map((column) => `${quoteIdent(column)} = excluded.${quoteIdent(column)}`) + .join(", ")}` + : "on conflict do nothing" + await client.query( - `insert into ${quoteIdent(table)} (${rowColumns.map(quoteIdent).join(", ")}) values (${placeholders}) on conflict do nothing`, + `insert into ${quoteIdent(table)} (${rowColumns.map(quoteIdent).join(", ")}) values (${placeholders}) ${conflictSql}`, values ) inserted += 1 @@ -328,6 +336,7 @@ export const importTenantFullExport = async ( const client = await pool.connect() const importOrder = [ "tenants", + "accounts", "auth_users", "auth_roles", "auth_role_permissions",