Compare commits
2 Commits
b1834fbfcb
...
d9b391d66f
| Author | SHA1 | Date | |
|---|---|---|---|
| d9b391d66f | |||
| b53cf3ba09 |
23
README.md
Normal file
23
README.md
Normal 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
69
findUniques2.py
Normal 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)
|
||||||
Loading…
x
Reference in New Issue
Block a user