aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/lib/server/actual.ts
diff options
context:
space:
mode:
authorivar <i@oiee.no>2025-12-26 22:19:09 +0100
committerivar <i@oiee.no>2025-12-26 22:19:09 +0100
commitabf37599c877a8cc83e5a24c775c3999a9879abf (patch)
tree234fbafdadda08735c4cbf6d3092bebd1d725691 /app/src/lib/server/actual.ts
parentfe0fe074ec8e8959bbdeff0ccc7f68d20b30e963 (diff)
downloadsparebank1-actualbudget-abf37599c877a8cc83e5a24c775c3999a9879abf.tar.xz
sparebank1-actualbudget-abf37599c877a8cc83e5a24c775c3999a9879abf.zip
Remove delta from form, wip import method
Diffstat (limited to 'app/src/lib/server/actual.ts')
-rw-r--r--app/src/lib/server/actual.ts21
1 files changed, 21 insertions, 0 deletions
diff --git a/app/src/lib/server/actual.ts b/app/src/lib/server/actual.ts
index 0875273..389f390 100644
--- a/app/src/lib/server/actual.ts
+++ b/app/src/lib/server/actual.ts
@@ -3,6 +3,9 @@ import * as actual from "@actual-app/api"
import { existsSync, mkdirSync } from "node:fs";
import path from "node:path"
import process from "node:process";
+import type { Sb1Transaction } from "./sb1";
+import type { ImportTransactionEntity } from "@actual-app/api/@types/loot-core/src/types/models/import-transaction";
+import { Temporal } from "temporal-polyfill";
async function init_actual() {
const dataDir = path.resolve(process.cwd(), "data/actualDataDir")
@@ -17,6 +20,24 @@ async function init_actual() {
})
}
+export async function import_transactions(account: string, transactions: Sb1Transaction[], dryRun: boolean) {
+
+ function parsedDate(date: number) {
+ const instant = Temporal.Instant.fromEpochMilliseconds(date)
+ return instant.toString({ timeZone: "Europe/Oslo" }).split("T")[0]
+ }
+
+ const actualMappedTransactions: ImportTransactionEntity[] = transactions.filter(c => c.bookingStatus === "BOOKED").map(c => ({
+ account,
+ date: parsedDate(c.date),
+ amount: c.amount,
+ notes: c.description,
+ payee_name: c.cleanedDescription
+ }))
+
+ actual.importTransactions(account, actualMappedTransactions, { dryRun })
+}
+
export async function get_budgets() {
await init_actual()
return actual.getBudgets()