Explorar el Código

TOOL PROJECT
- time_recorder.py

Danny hace 2 años
padre
commit
eb6dbe3a16

+ 1 - 1
fast_excel_to_bill/main.py

@@ -1,4 +1,4 @@
-from fast_excel_to_bill.read_table import Read_unordered_Table, Read_Table
+from tool_lib.read_table import Read_unordered_Table
 from fast_excel_to_bill.table_config import TABLE_PATH, LIST_OF_KEYS
 
 

+ 6 - 0
personal_income_calculator/income_calculator_main.py

@@ -0,0 +1,6 @@
+def calc_income_by_time(worked_time, hourly_wage_in_euro):
+    sales_tax_percent = 0.19
+    brutto_income_in_euro = worked_time*(hourly_wage_in_euro/60)
+    sales_tax = sales_tax_percent*brutto_income_in_euro
+    netto_income_in_euro= brutto_income_in_euro- sales_tax
+    return netto_income_in_euro, sales_tax

+ 0 - 0
personal_income_calculator/income_calculator_test.py


+ 1 - 0
time_recoder/Readme

@@ -0,0 +1 @@
+pip install styleframe xlsxwriter

+ 28 - 0
time_recoder/save_recorded_time_in_table.py

@@ -0,0 +1,28 @@
+from time_recoder.time_recoder_config import HOURLY_WAGE_IN_EURO, PATH
+from personal_income_calculator.income_calculator_main import calc_income_by_time
+from tool_lib import create_excel_tables
+from os import path
+
+def create_recorded_time_dict(worked_time, income, sales_taxes):
+    return {'Arbeitszeit' : worked_time,
+            'Einkommen': income,
+            'Umsatzsteuern': sales_taxes}
+
+def table_exists(path):
+    return path.isfile(path)
+
+def add_to_xlsx_table(table_object):
+    pass
+
+def create_xlsx_table(table_object):
+    pass
+
+def save_recorded_time_in_table(worked_time_in_minutes):
+    income, sales_taxes = calc_income_by_time(worked_time_in_minutes, HOURLY_WAGE_IN_EURO)
+    table_dict = create_recorded_time_dict(worked_time_in_minutes, income, sales_taxes)
+    xlsx_table= create_excel_tables.CreateTable(table_dict, path=PATH)
+    if table_exists(PATH):
+        add_to_xlsx_table(xlsx_table)
+    else:
+        create_xlsx_table(xlsx_table)
+

+ 3 - 0
time_recoder/time_recoder_config.py

@@ -0,0 +1,3 @@
+HOURLY_WAGE_IN_EURO = 28
+PATH = r'C:\Users\Danny\Desktop\ssd wichtige dinge D\Tools\time_recoder\time_recorded_tables'
+TEST_CASE = True

+ 0 - 0
time_recoder/time_recoder_gui/time_recorder_gui_main.py


+ 27 - 0
time_recoder/time_recoder_main.py

@@ -0,0 +1,27 @@
+from time import sleep, time
+from time_recoder.save_recorded_time_in_table import save_recorded_time_in_table
+from time_recoder.time_recoder_config import TEST_CASE
+
+
+def get_current_time_as_timestamp():
+    return int(time())
+
+def stop_record_time():
+    if TEST_CASE:
+        sleep(5)
+        return True
+    else:
+        NotImplementedError
+
+
+def time_recording_main():
+    start_time = get_current_time_as_timestamp()
+    while not stop_record_time():
+        sleep(1)
+    else:
+        worked_time_in_minutes = (get_current_time_as_timestamp() - start_time)/60
+        save_recorded_time_in_table(worked_time_in_minutes)
+
+
+if __name__ == '__main__':
+    time_recording_main()

+ 0 - 0
time_recoder/time_recoder_test.py


+ 114 - 0
tool_lib/create_excel_tables.py

@@ -0,0 +1,114 @@
+import pandas as pd
+import numpy as np
+from pandas import DataFrame
+from styleframe import StyleFrame
+import xlsxwriter
+
+# Values have to be a list of list
+# Title_string have to be a list of list of strings
+class CreateTable:
+    def __init__(self, dict_, insert=True, path=None, index=None, axis=0, ordered_by=[], order=[]):
+        self.insert = insert
+        self.path = path
+        self.index = index
+        self.dict = dict_
+        self.axis = axis
+        self.ordered_by = ordered_by
+        self.order = order
+        self.column = []
+        for key, v in self.dict.items():
+            self.column += [key]
+        if self.order:
+            ordered_column = []
+            for each_key in self.order:
+                if each_key in self.column:
+                    ordered_column += [each_key]
+                    self.column.remove(each_key)
+                else:
+                    assert (False, 'Order contains values which are not in the Table')
+            self.column = ordered_column + self.column
+
+        self.dataframes = pd.DataFrame(dict([(k, pd.Series(v)) for k, v in self.dict.items()]), columns=self.column)
+
+    def create_writer(self):
+        return pd.ExcelWriter(self.path, engine='xlsxwriter')  #openpyxl xlsxwriter
+
+    def create_workbook(self):
+         return xlsxwriter.Workbook(self.path)
+
+    def get_dataframe(self):
+        return self.dataframes
+
+    def append_to_csv(self):
+        self.dataframes.to_csv(path_or_buf=self.path, index=self.index, mode='a')
+
+    def export_to_csv(self):
+        if self.order:
+            raise NotImplementedError
+        if self.ordered_by == []:
+            self.dataframes.to_csv(path_or_buf=self.path, index=self.index)
+        else:
+            self.dataframes = self.dataframes.sort_values(by=self.ordered_by, axis=self.axis)
+            self.dataframes.to_csv(path_or_buf=self.path, index=self.index)
+
+    def export_to_excel(self, writer, additional_dataframes=[]):
+        if self.ordered_by == []:
+            pass
+        else:
+            self.dataframes = self.dataframes.sort_values(by=self.ordered_by, axis=self.axis)
+
+        #Format
+        currency_format = self.create_workbook().add_format()
+        currency_format.set_align('center')
+        currency_format.set_align('center')
+
+
+        # First Tab
+        self.dataframes.to_excel(excel_writer=writer, sheet_name='Karte ' + str(1), index=False)
+        for column in self.dataframes:
+            column_width = max(self.dataframes[column].astype(str).map(len).max(), len(column)+5)
+            col_idx = self.dataframes.columns.get_loc(column)
+
+            writer.sheets['Karte ' + str(1)].set_column(col_idx, col_idx, column_width, cell_format=currency_format)
+
+        # All other Tabs
+
+        for count, each_dataframe in enumerate(additional_dataframes):
+            each_dataframe.to_excel(writer, sheet_name='Karte ' + str(count + 2),index=False)
+            for column in each_dataframe:
+                column_width = max(each_dataframe[column].astype(str).map(len).max(), len(column)+5)
+                col_idx = each_dataframe.columns.get_loc(column)
+                writer.sheets['Karte ' + str(count + 2)].set_column(col_idx, col_idx, column_width, cell_format=currency_format)
+        writer.save()
+
+
+
+    def add_to_existing_xlsx_file(self, writer, additional_dataframes=[]):
+        if self.ordered_by == []:
+            pass
+        else:
+            self.dataframes = self.dataframes.sort_values(by=self.ordered_by, axis=self.axis)
+
+            # Format
+        currency_format = self.create_workbook().add_format()
+        currency_format.set_align('center')
+        currency_format.set_align('center')
+
+        # First Tab
+        self.dataframes.to_excel(excel_writer=writer, sheet_name='Karte ' + str(1), index=False)
+        for column in self.dataframes:
+            column_width = max(self.dataframes[column].astype(str).map(len).max(), len(column) + 5)
+            col_idx = self.dataframes.columns.get_loc(column)
+
+            writer.sheets['Karte ' + str(1)].set_column(col_idx, col_idx, column_width, cell_format=currency_format)
+
+        # All other Tabs
+
+        for count, each_dataframe in enumerate(additional_dataframes):
+            each_dataframe.to_excel(writer, sheet_name='Karte ' + str(count + 2), index=False)
+            for column in each_dataframe:
+                column_width = max(each_dataframe[column].astype(str).map(len).max(), len(column) + 5)
+                col_idx = each_dataframe.columns.get_loc(column)
+                writer.sheets['Karte ' + str(count + 2)].set_column(col_idx, col_idx, column_width, cell_format=currency_format)
+        writer.save()
+

+ 0 - 0
fast_excel_to_bill/read_table.py → tool_lib/read_table.py