|
@@ -22,6 +22,7 @@ ACCOUNT_INFO = [
|
|
|
|
|
|
class GCHR:
|
|
|
booking_date: datetime
|
|
|
+ df_bookings: pd.DataFrame = None
|
|
|
|
|
|
def __init__(self, base_dir) -> None:
|
|
|
self.base_dir = base_dir
|
|
@@ -121,7 +122,7 @@ class GCHR:
|
|
|
df_translate = self.prepare_translation(df_translate_import)
|
|
|
|
|
|
# Kontensalden laden
|
|
|
- df_bookings = self.load_bookings_from_file()
|
|
|
+ df_bookings = self.filter_bookings()
|
|
|
all_periods = set(df_bookings["Bookkeep Period"].to_list())
|
|
|
bookkeep_period_date = datetime(int(year), int(month), 28)
|
|
|
|
|
@@ -355,9 +356,13 @@ class GCHR:
|
|
|
)
|
|
|
)
|
|
|
timestamps.append(Path(csv_file).stat().st_mtime)
|
|
|
- df_bookings = pd.concat(df2)
|
|
|
self.booking_date = datetime.fromtimestamp(max(timestamps))
|
|
|
+ self.df_bookings = pd.concat(df2)
|
|
|
+ self.df_bookings["amount"] = (self.df_bookings["Debit Amount"] + self.df_bookings["Credit Amount"]).round(2)
|
|
|
|
|
|
+ def filter_bookings(self):
|
|
|
+ if self.df_bookings is None:
|
|
|
+ self.load_bookings_from_file()
|
|
|
# Kontensalden auf gegebenen Monat filtern
|
|
|
filter_from = self.current_year + self.first_month_of_financial_year
|
|
|
filter_prev = self.last_year + self.first_month_of_financial_year
|
|
@@ -370,21 +375,19 @@ class GCHR:
|
|
|
filter_prev_opening = self.last_year + "00"
|
|
|
prev_year_closed = True
|
|
|
|
|
|
- df_opening_balance = df_bookings[(df_bookings["Bookkeep Period"] == filter_opening)]
|
|
|
+ df_opening_balance = self.df_bookings[(self.df_bookings["Bookkeep Period"] == filter_opening)]
|
|
|
if df_opening_balance.shape[0] == 0:
|
|
|
- df_opening_balance = df_bookings[
|
|
|
- (df_bookings["Bookkeep Period"] == filter_prev_opening)
|
|
|
- | ((df_bookings["Bookkeep Period"] >= filter_prev) & (df_bookings["Bookkeep Period"] < filter_from))
|
|
|
+ df_opening_balance = self.df_bookings[
|
|
|
+ (self.df_bookings["Bookkeep Period"] == filter_prev_opening)
|
|
|
+ | (
|
|
|
+ (self.df_bookings["Bookkeep Period"] >= filter_prev)
|
|
|
+ & (self.df_bookings["Bookkeep Period"] < filter_from)
|
|
|
+ )
|
|
|
].copy()
|
|
|
df_opening_balance["Bookkeep Period"] = filter_opening
|
|
|
prev_year_closed = False
|
|
|
- # df_opening_balance = df_opening_balance.merge(df_translate, how='inner', on='Konto_Nr_Händler')
|
|
|
+
|
|
|
df_opening_balance = df_opening_balance[(df_opening_balance["Konto_Nr_Händler"].str.contains(r"-[013]\d\d+-"))]
|
|
|
- df_opening_balance["amount"] = (df_opening_balance["Debit Amount"] + df_opening_balance["Credit Amount"]).round(
|
|
|
- 2
|
|
|
- )
|
|
|
- # df_opening_balance.drop(columns=['Debit Amount', 'Credit Amount', 'Debit Quantity', 'Credit Quantity'], inplace=True)
|
|
|
- # df_opening_balance = df_opening_balance.groupby(['Marke', 'Standort']).sum()
|
|
|
opening_balance = df_opening_balance["amount"].aggregate("sum").round(2)
|
|
|
logging.info("Gewinn/Verlustvortrag")
|
|
|
logging.info(opening_balance)
|
|
@@ -401,22 +404,21 @@ class GCHR:
|
|
|
}
|
|
|
df_opening_balance = pd.concat([df_opening_balance, pd.DataFrame.from_records([row])])
|
|
|
|
|
|
- df_bookings = df_bookings[
|
|
|
- (df_bookings["Bookkeep Period"] >= filter_from) & (df_bookings["Bookkeep Period"] <= filter_to)
|
|
|
+ df_filtered = self.df_bookings[
|
|
|
+ (self.df_bookings["Bookkeep Period"] >= filter_from) & (self.df_bookings["Bookkeep Period"] <= filter_to)
|
|
|
]
|
|
|
- df_bookings["amount"] = (df_bookings["Debit Amount"] + df_bookings["Credit Amount"]).round(2)
|
|
|
|
|
|
# Buchungen kopieren und als Statistikkonten anhängen
|
|
|
- df_stats = df_bookings.copy()
|
|
|
+ df_stats = df_filtered.copy()
|
|
|
# df_stats = df_stats[df_stats['Konto_Nr_Händler'].str.match(r'-[24578]\d\d\d-')]
|
|
|
df_stats["Konto_Nr_Händler"] = df_stats["Konto_Nr_Händler"].str.replace(r"-(\d\d\d+)-", r"-\1_STK-", regex=True)
|
|
|
- df_stats["amount"] = (df_bookings["Debit Quantity"] + df_bookings["Credit Quantity"]).round(2)
|
|
|
+ df_stats["amount"] = (df_filtered["Debit Quantity"] + df_filtered["Credit Quantity"]).round(2)
|
|
|
|
|
|
- df_bookings = pd.concat([df_opening_balance, df_bookings, df_stats])
|
|
|
+ df_combined = pd.concat([df_opening_balance, df_filtered, df_stats])
|
|
|
|
|
|
# Spalten konvertieren
|
|
|
- df_bookings["period"] = df_bookings["Bookkeep Period"].apply(lambda x: self.bookkeep_filter[x])
|
|
|
- return df_bookings[df_bookings["amount"] != 0.00]
|
|
|
+ df_combined["period"] = df_combined["Bookkeep Period"].apply(lambda x: self.bookkeep_filter[x])
|
|
|
+ return df_combined[df_combined["amount"] != 0.00]
|
|
|
|
|
|
@property
|
|
|
def export_filename(self):
|
|
@@ -485,7 +487,8 @@ class GCHR:
|
|
|
self.export_xml(csv_reader, self.bookkeep_filter(), 1, makes, sites, xmlfile)
|
|
|
|
|
|
|
|
|
-def gchr_local(base_dir):
|
|
|
+def gchr_local():
|
|
|
+ base_dir = os.getcwd() + "/../GCHR2_Testdaten/Kunden"
|
|
|
for path in Path(base_dir).glob("*"):
|
|
|
if path.is_dir():
|
|
|
print(path.name)
|
|
@@ -498,7 +501,9 @@ def gchr_export(base_dir):
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
- base_dir = os.getcwd() + "/../GCHR2_Testdaten/Kunden"
|
|
|
-
|
|
|
- if Path(base_dir).exists():
|
|
|
- gchr_local(base_dir)
|
|
|
+ gchr_local()
|
|
|
+ # import cProfile
|
|
|
+ # cProfile.run(
|
|
|
+ # "gchr_local()",
|
|
|
+ # "gchr_local.prof",
|
|
|
+ # )
|