feat(mcp): Archivierte Einträge wiederherstellen und Kontostände abfragen
All checks were successful
Build and Release FEDEO / verify (push) Successful in 1m5s
Build and Release FEDEO / build-and-release (push) Successful in 6m21s

- archive.entities.list / archive.entities.restore für alle per MCP archivierbaren Entitäten mit Berechtigungsprüfung je Entität und Historieneintrag
- accounting.bank_accounts.balances liefert Stände von Bankkonten und Kassenbüchern, optional zu einem Stichtag

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-25 14:28:05 +01:00
parent 36dffc057a
commit 0777315d1d
11 changed files with 377 additions and 6 deletions

View File

@@ -22,6 +22,8 @@ import { saveFile } from "../../utils/files"
import { insertHistoryItem } from "../../utils/history"
import { executeManualGeneration, finishManualGeneration } from "../../modules/serialexecution.service"
import { updateOutgoingDocumentCostCentres } from "../../modules/outgoing-document-cost-centres.service"
import { loadBankBalances } from "../../modules/bank-balances.service"
import { dateField } from "../masterdataFields"
import {
prepareStatementAllocationInput,
statementAllocationUuidArg,
@@ -1310,6 +1312,26 @@ export const accountingTools: McpTool[] = [
return { invoice: updated }
},
},
{
name: "accounting.bank_accounts.balances",
title: "Kontostände abfragen",
description: "Liefert die Kontostände der Bankkonten und Kassenbücher des aktiven Mandanten samt Summe. Bankkonten zeigen den zuletzt synchronisierten Buchungssaldo; mit asOf wird der Stand zu einem vergangenen Datum aus den Bankumsätzen zurückgerechnet. Kassenbücher ergeben sich aus Anfangsbestand und Buchungen.",
requiredPermissions: ["accounting.bank.read"],
inputSchema: {
type: "object",
properties: {
account: { type: "number", description: "Optionale Bankkonto-ID; ohne Angabe alle Konten." },
asOf: { ...dateField.schema, description: "Optionaler Stichtag YYYY-MM-DD (Stand zum Tagesende)." },
},
},
async handler(context, args) {
const account = numberArg(args, "account")
const asOf = args.asOf === undefined || args.asOf === null ? null : dateField.parse(args.asOf, "asOf")
const result = await loadBankBalances(context.server, context.tenantId, { account, asOf })
if (account && !result.accounts.length) throw new Error("Bankkonto nicht gefunden")
return result
},
},
{
name: "accounting.bank_statements.list",
title: "Bankumsätze auflisten",