|
@@ -5,7 +5,14 @@ import re
|
|
|
from bs4 import BeautifulSoup
|
|
|
|
|
|
|
|
|
-config = ["SKR51", "Herkunft_KST", "Absatzkanal", "Kostentraeger", "Marke", "Standort", "Manuelle_Konten"]
|
|
|
+config = {
|
|
|
+ 'default': ["SKR51", "Herkunft_KST", "Absatzkanal", "Kostentraeger", "Marke", "Standort", "Manuelle_Konten"],
|
|
|
+ 'special': {
|
|
|
+ 'Planner': ["Kostenstelle", "Konto_1", "Ebene1", "Ebene2"],
|
|
|
+ 'Test': ["Ebene1", "Ebene2"]
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
columns = ["Konto_Nr", "Konto_Bezeichnung", "Konto_Art", "Kostenstelle", "STK", "Konto_1", "Konto_2", "Konto_3", "Konto_4", "Konto_5"]
|
|
|
|
|
|
def get_tree(node, parents):
|
|
@@ -38,19 +45,19 @@ def split_it(text, index):
|
|
|
|
|
|
def get_structure_and_tree ():
|
|
|
df = pd.read_csv("gcstruct/Kontenrahmen/Kontenrahmen.csv", sep=";", encoding="ansi", decimal=",", converters={i: str for i in range(0, 200)}) #, index_col="Konto_Nr")
|
|
|
- for i, structure in enumerate(config):
|
|
|
+ for i, structure in enumerate(config['default']):
|
|
|
first = i*10 + 1
|
|
|
df[structure] = df['Ebene'+str(first)] + ";" + df['Ebene'+str(first+1)] + ";" + df['Ebene'+str(first+2)] + ";" + df['Ebene'+str(first+3)] + ";" + df['Ebene'+str(first+4)] + ";" + df['Ebene'+str(first+5)] + ";" + df['Ebene'+str(first+6)] + ";" + df['Ebene'+str(first+7)] + ";" + df['Ebene'+str(first+8)] + ";" + df['Ebene'+str(first+9)]
|
|
|
df['LetzteEbene' + str(i+1) + '_Nr'] = df[structure].apply(lambda x: split_it(x, 0))
|
|
|
df['LetzteEbene' + str(i+1) + '_Bez'] = df[structure].apply(lambda x: split_it(x, 1))
|
|
|
|
|
|
- df = df[columns + config + ['LetzteEbene' + str(i+1) + '_Nr' for i in range(len(config))] + ['LetzteEbene' + str(i+1) + '_Bez' for i in range(len(config))]]
|
|
|
+ df = df[columns + config['default'] + ['LetzteEbene' + str(i+1) + '_Nr' for i in range(len(config['default']))] + ['LetzteEbene' + str(i+1) + '_Bez' for i in range(len(config['default']))]]
|
|
|
json_result = { "Kontenrahmen": df.to_dict("records") }
|
|
|
|
|
|
# df2 = pd.read_csv("gcstruct/Strukturen/Kontenrahmen.csv/SKR51.csv", sep=";", encoding="ansi", decimal=",", converters={i: str for i in range(0, 200)})
|
|
|
# print(df2.head())
|
|
|
|
|
|
- for i, structure in enumerate(config):
|
|
|
+ for i, structure in enumerate(config['default']):
|
|
|
tree = ET.parse("gcstruct/Xml/" + structure + ".xml")
|
|
|
json_result[structure] = get_tree(tree.getroot(), [])
|
|
|
|
|
@@ -60,16 +67,16 @@ def post_structure_and_tree ():
|
|
|
json_post = json.load(open("gcstruct/SKR51.json", "r"))
|
|
|
|
|
|
# Kontenrahmen.csv
|
|
|
- ebenen = ["Ebene" + str(i) for i in range(1, len(config)*10+1)]
|
|
|
+ ebenen = ["Ebene" + str(i) for i in range(1, len(config['default'])*10+1)]
|
|
|
header = ";".join(columns + ebenen)
|
|
|
- cols = columns + config
|
|
|
+ cols = columns + config['default']
|
|
|
with open("gcstruct/Kontenrahmen/Kontenrahmen_out.csv", "w", encoding="ansi") as f:
|
|
|
f.write(header + "\n")
|
|
|
for row in json_post['Kontenrahmen']:
|
|
|
f.write(";".join([row[e] for e in cols]) + "\n")
|
|
|
# print(header)
|
|
|
# xml und evtl. Struktur.csv
|
|
|
- for i, structure in enumerate(config):
|
|
|
+ for i, structure in enumerate(config['default']):
|
|
|
with open("gcstruct/Strukturen/Kontenrahmen.csv/" + structure + "_out.csv", "w", encoding="ansi") as f:
|
|
|
f.write(";".join(["Ebene" + str(i*10 + j) for j in range(1, 11)]) + "\n")
|
|
|
rows = structure_from_tree({"id": ";"*9, "children": json_post[structure] })
|