Bankkonto-Inhaber beim GoCardless-Sync aktualisieren
All checks were successful
Build and Push Docker Images / build-backend (push) Successful in 44s
Build and Push Docker Images / build-website (push) Successful in 22s
Build and Push Docker Images / build-central-services-api (push) Successful in 22s
Build and Push Docker Images / build-central-services-admin (push) Successful in 22s
Build and Push Docker Images / build-frontend (push) Successful in 22s
Build and Push Docker Images / build-docs (push) Successful in 22s
All checks were successful
Build and Push Docker Images / build-backend (push) Successful in 44s
Build and Push Docker Images / build-website (push) Successful in 22s
Build and Push Docker Images / build-central-services-api (push) Successful in 22s
Build and Push Docker Images / build-central-services-admin (push) Successful in 22s
Build and Push Docker Images / build-frontend (push) Successful in 22s
Build and Push Docker Images / build-docs (push) Successful in 22s
This commit is contained in:
@@ -52,6 +52,11 @@ const normalizeDate = (val: any) => {
|
|||||||
return isNaN(d.getTime()) ? null : d
|
return isNaN(d.getTime()) ? null : d
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const getBankAccountOwnerName = (account: any) => {
|
||||||
|
const ownerName = typeof account?.owner_name === "string" ? account.owner_name.trim() : ""
|
||||||
|
return ownerName || null
|
||||||
|
}
|
||||||
|
|
||||||
export function bankStatementService(server: FastifyInstance) {
|
export function bankStatementService(server: FastifyInstance) {
|
||||||
|
|
||||||
let accessToken: string | null = null
|
let accessToken: string | null = null
|
||||||
@@ -110,6 +115,23 @@ export function bankStatementService(server: FastifyInstance) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------
|
||||||
|
// ✔ Kontoinhaber laden
|
||||||
|
// -----------------------------------------------
|
||||||
|
const getAccountData = async (accountId: string): Promise<any> => {
|
||||||
|
if (useCentralBanking) return await centralServicesClient.getBankingAccount(accountId)
|
||||||
|
const {data} = await axios.get(
|
||||||
|
`${secrets.GOCARDLESS_BASE_URL}/accounts/${accountId}`,
|
||||||
|
{
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${accessToken}`,
|
||||||
|
Accept: "application/json",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
|
||||||
// -----------------------------------------------
|
// -----------------------------------------------
|
||||||
// ✔ Transaktionen laden
|
// ✔ Transaktionen laden
|
||||||
// -----------------------------------------------
|
// -----------------------------------------------
|
||||||
@@ -162,6 +184,22 @@ export function bankStatementService(server: FastifyInstance) {
|
|||||||
for (const account of accounts) {
|
for (const account of accounts) {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
// ---------------------------
|
||||||
|
// 0. KONTOINHABER SYNC
|
||||||
|
// ---------------------------
|
||||||
|
try {
|
||||||
|
const accountData = await getAccountData(account.accountId)
|
||||||
|
const ownerName = getBankAccountOwnerName(accountData)
|
||||||
|
if (ownerName && ownerName !== account.ownerName) {
|
||||||
|
await server.db
|
||||||
|
.update(bankaccounts)
|
||||||
|
.set({ownerName})
|
||||||
|
.where(eq(bankaccounts.id, account.id))
|
||||||
|
}
|
||||||
|
} catch (error: any) {
|
||||||
|
server.log.warn({err: error, accountId: account.accountId}, "Kontoinhaber konnte nicht synchronisiert werden")
|
||||||
|
}
|
||||||
|
|
||||||
// ---------------------------
|
// ---------------------------
|
||||||
// 1. BALANCE SYNC
|
// 1. BALANCE SYNC
|
||||||
// ---------------------------
|
// ---------------------------
|
||||||
|
|||||||
17
backend/tests/bankStatementSyncOwnerName.test.ts
Normal file
17
backend/tests/bankStatementSyncOwnerName.test.ts
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import test from "node:test"
|
||||||
|
import assert from "node:assert/strict"
|
||||||
|
|
||||||
|
import { getBankAccountOwnerName } from "../src/modules/cron/bankstatementsync.service"
|
||||||
|
|
||||||
|
test("reads the GoCardless owner_name for a bank account", () => {
|
||||||
|
assert.equal(
|
||||||
|
getBankAccountOwnerName({ owner_name: "Neue Firma GmbH" }),
|
||||||
|
"Neue Firma GmbH"
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
test("does not overwrite the stored owner with an empty provider value", () => {
|
||||||
|
assert.equal(getBankAccountOwnerName({ owner_name: "" }), null)
|
||||||
|
assert.equal(getBankAccountOwnerName({}), null)
|
||||||
|
assert.equal(getBankAccountOwnerName(null), null)
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user