Compare commits

...

2 Commits

Author SHA1 Message Date
d9b391d66f added readme 2025-11-12 15:13:03 +01:00
b53cf3ba09 added new version of findUniques 2025-11-12 15:06:59 +01:00
2 changed files with 92 additions and 0 deletions

23
README.md Normal file
View File

@ -0,0 +1,23 @@
# VISMA HELPERS
## Hur kan jag änvända dessa skript
findUniques.py behöver en textfil som man skapar själv och kopierar genom att markera verifikationer från ett konto i webläsaren.
findUniques2.py hämtar in en excellfil från visma och reder ut vilka debet-verifikat som är kopplade till vilka kredit-verifikat (slarvigt än sålänge). Detta ger en ett hum om vilka saker som kan vara fel.
## Hur får jag tag i excellfilen.
1. gå in i kontoanlys > huvudbok
2. klicka på "Skriv ut" längst ner till vänster
3. skriv in i "från konto" och "till konto" det konto du vill undersöka
4. skriv in ditt kostnadsställe
5. klicka på pilen ner brevid "Visa" och välj "Skapa csv (Excel)"
6. kopiera in filen i samma mapp som findUniques2.py och döp om csv-filen till "konto.csv".
## Hur kör man?
använd python3 interpreter och starta genom:
python3 findUniques.py
Eller:
python3 findUniques2.py

69
findUniques2.py Normal file
View File

@ -0,0 +1,69 @@
import csv
print("Detta program rapporterar skillnader mellan verifikat som refererar till varandra genom beskrivningen av verifikatet. Den utgår från krediter och hittar matchande debeter")
lines = []
result = []
with open("konto.csv", "r") as file:
lines = file.readlines()
startLine = 12
# READING
for i, line in enumerate(lines):
if "Konto" in line and "Verifikation" in line:
startLine = i
break
with open("konto.csv", "w") as file:
file.writelines(lines[startLine:-1])
with open("konto.csv", "r") as file:
csvreader = csv.DictReader(file, delimiter=";")
for row in csvreader:
result.append(row)
with open("konto.csv", "w") as file:
file.writelines(lines)
# FILE RESTORED, PARSE DATA
krediter = {}
debeter = {}
header = result.pop(0)
for line in result:
if not line['"Verifikation"']:
continue
if line['"Kredit"'] and float(line['"Kredit"'].replace(",",".").replace(" ","")) > 0:
krediter[line['"Verifikation"'].replace(" ","")] = line
elif line['"Debet"'] and float(line['"Debet"'].replace(",",".").replace(" ","")) > 0:
debeter[line['"Verifikation"'].replace(" ","")] = line
sums = {}
for kVerf, kLine in krediter.items():
sums[kVerf] = {"value": -float(kLine['"Kredit"'].replace(",",".").replace(" ","")), "debets": []}
toDel = []
for dVerf, dLine in debeter.items():
if kVerf + " " in dLine['"Beskrivning"'] or dLine['"Beskrivning"'].endswith(kVerf):
sums[kVerf]["value"] = sums[kVerf]["value"] + float(dLine['"Debet"'].replace(",",".").replace(" ",""))
sums[kVerf]["debets"] = sums[kVerf]["debets"] + [dVerf]
toDel.append(dVerf)
for dVerf in toDel:
del debeter[dVerf]
for verf, a in sums.items():
if abs(a["value"]) > 0.0001:
print(verf, ": ", a)
#seen = {}
#
#for verf in content:
# if verf[1] not in seen.keys():
# seen[verf[1]] = verf[0]
# else:
# seen.pop(verf[1])
#
#for kr, verf in seen.items():
# print(verf, kr)