reset
This commit is contained in:
parent
3744c7d961
commit
1d2f9dabfe
231
accounts.json
Normal file
231
accounts.json
Normal 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": []
|
||||||
|
}
|
||||||
|
]
|
||||||
@ -5,11 +5,43 @@ const databaseFile = "mytest.db"
|
|||||||
fs.readFile(databaseFile, (err, data) => {
|
fs.readFile(databaseFile, (err, data) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
fs.openSync(databaseFile, 'w');
|
fs.openSync(databaseFile, 'w');
|
||||||
|
create_initial_accounts()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
// DB
|
// DB
|
||||||
const db = require('better-sqlite3')(databaseFile);
|
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
|
// Bootstrap the db
|
||||||
db.exec(`
|
db.exec(`
|
||||||
CREATE TABLE IF NOT EXISTS accounts (
|
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 }
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
const express = require("express");
|
const express = require("express");
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
|
|
||||||
const db = require("../dependencies");
|
const {db} = require("../dependencies");
|
||||||
const {send_sse_update} = require("../sse")
|
const {send_sse_update} = require("../sse")
|
||||||
|
|
||||||
// Fix if balance is null
|
// 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 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`;
|
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();
|
const accs = db.prepare(base_query).all();
|
||||||
|
console.log(accs)
|
||||||
|
|
||||||
var real_accs = [];
|
var real_accs = [];
|
||||||
|
|
||||||
|
|||||||
@ -1,11 +1,12 @@
|
|||||||
const express = require('express');
|
const express = require('express');
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
|
|
||||||
const db = require("../dependencies");
|
const {db, create_initial_accounts} = require("../dependencies");
|
||||||
const {send_sse_update} = require("../sse")
|
const {send_sse_update} = require("../sse")
|
||||||
|
|
||||||
router.post("/reset", (req, res) => {
|
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()
|
res.status(204).send()
|
||||||
send_sse_update()
|
send_sse_update()
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
const express = require('express');
|
const express = require('express');
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
|
|
||||||
const db = require("../dependencies");
|
const {db} = require("../dependencies");
|
||||||
const {send_sse_update} = require("../sse")
|
const {send_sse_update} = require("../sse")
|
||||||
|
|
||||||
router.get("/", (req, res) => {
|
router.get("/", (req, res) => {
|
||||||
|
|||||||
@ -1,2 +1,2 @@
|
|||||||
POST http://localhost:3000/api/v1/accounts/
|
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"}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user