This commit is contained in:
Makussu 2024-06-06 20:18:26 +02:00
parent 3744c7d961
commit 1d2f9dabfe
6 changed files with 271 additions and 6 deletions

231
accounts.json Normal file
View File

@ -0,0 +1,231 @@
[
{
"number": 1000,
"name": "Aktiva",
"qualifiedName": "Aktiva",
"type": "meta",
"balance": 7885.58,
"localBalance": 0,
"description": "Meta-Konto für das Vermögen",
"subaccounts": []
},
{
"number": 1100,
"name": "Barvermögen",
"qualifiedName": "Aktiva:Barvermögen",
"type": "meta",
"balance": 7885.58,
"localBalance": 0,
"subaccounts": []
},
{
"number": 1110,
"name": "Bargeld",
"qualifiedName": "Aktiva:Barvermögen:Bargeld",
"type": "default",
"balance": 1048.42,
"localBalance": 1048.42,
"subaccounts": []
},
{
"number": 1120,
"name": "Girokonto",
"qualifiedName": "Aktiva:Barvermögen:Girokonto",
"type": "default",
"balance": 2105.16,
"localBalance": 2105.16,
"subaccounts": []
},
{
"number": 1130,
"name": "Sparkonto",
"qualifiedName": "Aktiva:Barvermögen:Sparkonto",
"type": "default",
"balance": 4732,
"localBalance": 4732,
"subaccounts": []
},
{
"number": 4000,
"name": "Erträge",
"qualifiedName": "Erträge",
"type": "meta",
"balance": -7090.64,
"localBalance": 0,
"description": "Meta-Konto für alle Einnahmen",
"subaccounts": []
},
{
"number": 4100,
"name": "Gehalt",
"qualifiedName": "Erträge:Gehalt",
"type": "default",
"balance": -5458.64,
"localBalance": -5458.64,
"subaccounts": []
},
{
"number": 4200,
"name": "Kindergeld",
"qualifiedName": "Erträge:Kindergeld",
"type": "default",
"balance": -1000,
"localBalance": -1000,
"subaccounts": []
},
{
"number": 4300,
"name": "BAföG",
"qualifiedName": "Erträge:BAföG",
"type": "default",
"balance": 0,
"localBalance": 0,
"subaccounts": []
},
{
"number": 4400,
"name": "Stipendium",
"qualifiedName": "Erträge:Stipendium",
"type": "default",
"balance": 0,
"localBalance": 0,
"subaccounts": []
},
{
"number": 4500,
"name": "Unterhalt",
"qualifiedName": "Erträge:Unterhalt",
"type": "default",
"balance": -600,
"localBalance": -600,
"subaccounts": []
},
{
"number": 4800,
"name": "Zinsen",
"qualifiedName": "Erträge:Zinsen",
"type": "default",
"balance": -32,
"localBalance": -32,
"subaccounts": []
},
{
"number": 4900,
"name": "Sonstiges",
"qualifiedName": "Erträge:Sonstiges",
"type": "default",
"balance": 0,
"localBalance": 0,
"subaccounts": []
},
{
"number": 6000,
"name": "Aufwendungen",
"qualifiedName": "Aufwendungen",
"type": "meta",
"balance": 3699.18,
"localBalance": 0,
"description": "Meta-Konto für alle Ausgaben",
"subaccounts": []
},
{
"number": 6100,
"name": "Miete",
"qualifiedName": "Aufwendungen:Miete",
"type": "meta",
"balance": 2240,
"localBalance": 0,
"subaccounts": []
},
{
"number": 6110,
"name": "Kaltmiete",
"qualifiedName": "Aufwendungen:Miete:Kaltmiete",
"type": "default",
"balance": 1920,
"localBalance": 1920,
"subaccounts": []
},
{
"number": 6120,
"name": "Nebenkosten",
"qualifiedName": "Aufwendungen:Miete:Nebenkosten",
"type": "default",
"balance": 320,
"localBalance": 320,
"subaccounts": []
},
{
"number": 6200,
"name": "Telekommunikation",
"qualifiedName": "Aufwendungen:Telekommunikation",
"type": "meta",
"balance": 219.6,
"localBalance": 0,
"subaccounts": []
},
{
"number": 6210,
"name": "Festnetz",
"qualifiedName": "Aufwendungen:Telekommunikation:Festnetz",
"type": "default",
"balance": 139.8,
"localBalance": 139.8,
"subaccounts": []
},
{
"number": 6220,
"name": "Mobilfunk",
"qualifiedName": "Aufwendungen:Telekommunikation:Mobilfunk",
"type": "default",
"balance": 79.8,
"localBalance": 79.8,
"subaccounts": []
},
{
"number": 6300,
"name": "Semesterbeitrag",
"qualifiedName": "Aufwendungen:Semesterbeitrag",
"type": "default",
"balance": 246,
"localBalance": 246,
"subaccounts": []
},
{
"number": 6400,
"name": "Lebensmittel",
"qualifiedName": "Aufwendungen:Lebensmittel",
"type": "default",
"balance": 724.58,
"localBalance": 724.58,
"subaccounts": []
},
{
"number": 6500,
"name": "Mitgliedschaften",
"qualifiedName": "Aufwendungen:Mitgliedschaften",
"type": "default",
"balance": 79,
"localBalance": 79,
"subaccounts": []
},
{
"number": 6900,
"name": "Sonstiges",
"qualifiedName": "Aufwendungen:Sonstiges",
"type": "default",
"balance": 190,
"localBalance": 190,
"subaccounts": []
},
{
"number": 9000,
"name": "Anfangsbestand",
"qualifiedName": "Anfangsbestand",
"type": "default",
"balance": -4494.12,
"localBalance": -4494.12,
"description": "Konto für Anfangsbestand zum 01.11.2023",
"subaccounts": []
}
]

View File

@ -5,11 +5,43 @@ const databaseFile = "mytest.db"
fs.readFile(databaseFile, (err, data) => {
if (err) {
fs.openSync(databaseFile, 'w');
create_initial_accounts()
}
})
// DB
const db = require('better-sqlite3')(databaseFile);
function create_initial_accounts() {
fs.readFile("accounts.json", "utf8", (err, jsonString) => {
if (err) {
console.log("Error reading the JSON file:", err);
response.send("error")
}
try {
account_data = JSON.parse(jsonString);
for (let i = 0; i < account_data.length; i++) {
account = account_data[i]
console.log(account_data[i]["qualifiedName"])
parentAccount = account["qualifiedName"].split(":")
parentAccount.pop()
parentAccount = parentAccount.join(":")
if (parentAccount == "") {
parentAccount = undefined
}
const new_acc = db
.prepare(
`INSERT INTO accounts (number, name, qualifiedName, description, type, parentAccount) VALUES (?, ?, ? ,?, ?, ?)`,
)
.run(account["number"], account["name"], account["qualifiedName"], "Initial Account", account["type"], parentAccount);
}
}
catch (err) {
console.log("Error parsing JSON string:", err);
}
});
}
// Bootstrap the db
db.exec(`
CREATE TABLE IF NOT EXISTS accounts (
@ -39,4 +71,4 @@ FOREIGN KEY (transaction_id) REFERENCES transactions (transaction_id) FOREIGN KE
module.exports = db
module.exports = { db, create_initial_accounts }

View File

@ -1,7 +1,7 @@
const express = require("express");
const router = express.Router();
const db = require("../dependencies");
const {db} = require("../dependencies");
const {send_sse_update} = require("../sse")
// Fix if balance is null
@ -53,6 +53,7 @@ router.get("/", (req, res) => {
LEFT JOIN (SELECT SUM(amount) as localBalance, account_name FROM transaction_entries GROUP BY account_name) te ON te.account_name = qualifiedName
LEFT JOIN (SELECT SUM(amount) as balance, account_name FROM transaction_entries GROUP BY account_name) tf ON tf.account_name = qualifiedName`;
const accs = db.prepare(base_query).all();
console.log(accs)
var real_accs = [];

View File

@ -1,11 +1,12 @@
const express = require('express');
const router = express.Router();
const db = require("../dependencies");
const {db, create_initial_accounts} = require("../dependencies");
const {send_sse_update} = require("../sse")
router.post("/reset", (req, res) => {
db.exec("DELETE FROM accounts; DELETE FROM transaction_entries; DELETE FROM transactions")
db.exec("DELETE FROM transaction_entries; DELETE FROM transactions; DELETE FROM accounts")
create_initial_accounts()
res.status(204).send()
send_sse_update()

View File

@ -1,7 +1,7 @@
const express = require('express');
const router = express.Router();
const db = require("../dependencies");
const {db} = require("../dependencies");
const {send_sse_update} = require("../sse")
router.get("/", (req, res) => {

View File

@ -1,2 +1,2 @@
POST http://localhost:3000/api/v1/accounts/
{"number":2000,"name":"Meintest","description":"Hallo","type":"default","parentAccount":"meins"}
{"number":2000,"name":"Meintest","description":"Hallo","type":"default","parentAccount":"Aktiva"}