- 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>
25 lines
1.2 KiB
TypeScript
25 lines
1.2 KiB
TypeScript
import assert from "node:assert/strict"
|
|
import test from "node:test"
|
|
import { calculateAccountBalance, CASHBOOK_BANK_ID } from "../src/modules/bank-balances.service"
|
|
|
|
const syncedAt = new Date("2026-10-20T08:00:00Z")
|
|
const bank = { id: 1, name: "Giro", iban: "DE00", ownerName: null, bankId: "bank", datevNumber: "1200", balance: 1000.1, expired: false, syncedAt }
|
|
const cashbook = { ...bank, id: 2, name: "Kasse", iban: "CASH-1", bankId: CASHBOOK_BANK_ID, datevNumber: "1000", balance: 50 }
|
|
|
|
test("bank accounts report the synced balance and revert later statements for a past date", () => {
|
|
assert.equal(calculateAccountBalance(bank, 0, null).balance, 1000.1)
|
|
assert.equal(calculateAccountBalance(bank, 0, null).source, "bank_sync")
|
|
const past = calculateAccountBalance(bank, -200.05, "2026-10-01")
|
|
assert.equal(past.balance, 1200.15)
|
|
assert.equal(past.syncedBalance, 1000.1)
|
|
assert.equal(past.source, "bank_sync_reconstructed")
|
|
})
|
|
|
|
test("cashbooks add their bookings to the opening balance", () => {
|
|
const result = calculateAccountBalance(cashbook, 12.345, null)
|
|
assert.equal(result.type, "cashbook")
|
|
assert.equal(result.balance, 62.35)
|
|
assert.equal(result.openingBalance, 50)
|
|
assert.equal(result.iban, null)
|
|
})
|