<gh_stars>0
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'Lotti.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.py


from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QInputDialog, QFileDialog, QMessageBox
from PyQt5.QtGui import QPixmap
import os 
import pandas as pd

# directory of script
script_dir = os.path.dirname(os.path.realpath(__file__))

DEFAULT_BUTTON_STYLE = "background-color: rgb(193, 164, 234); color: white; border-style: outset; border-width: 2px;  border-radius: 10px; border-color: beige; padding: 10px"

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        #MainWindow.resize(679, 786)
        # prevent MainWindow from resizing
        MainWindow.setFixedSize(679, 720)
        MainWindow.setStyleSheet("background-color : rgb(173, 180, 175)")
        MainWindow.setAnimated(True)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.b1 = QtWidgets.QPushButton(self.centralwidget)
        self.b1.setGeometry(QtCore.QRect(140, 110, 321, 111))
        font = QtGui.QFont()
        font.setFamily("Avenir")
        font.setPointSize(20)
        font.setBold(True)
        font.setItalic(False)
        font.setWeight(75)
        self.b1.setFont(font)
        self.b1.setStyleSheet(DEFAULT_BUTTON_STYLE)
        self.b1.setObjectName("b1")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(50, 330, 561, 381))
        self.label.setText("")
        self.label.setPixmap(QtGui.QPixmap(os.path.join(script_dir, "Logo.png")))
        self.label.setScaledContents(True)
        self.label.setAlignment(QtCore.Qt.AlignJustify|QtCore.Qt.AlignVCenter)
        self.label.setObjectName("label")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 679, 27))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.menubar.sizePolicy().hasHeightForWidth())
        self.menubar.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setPointSize(18)
        font.setBold(False)
        font.setWeight(50)
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Schülermeeting Geseke Monatsabrechnungen"))
        MainWindow.setStatusTip(_translate("MainWindow", "Aktueller Monat"))
        self.b1.setText(_translate("MainWindow", " Monatsabrechnung erstellen"))
        self.b1.clicked.connect(self.clicked) 
    

    def clicked(self):
        self.b1.setStyleSheet("background-color: rgb(100, 100, 230); color: grey; border-style: inset; border-width: 2px;  border-radius: 10px; border-color: beige; padding: 10px")

        fileinput = QFileDialog.getOpenFileName(None, "Datei auswählen", './', filter="Tabellen (*.xlsx)")

        if fileinput == ('',''):
            msg = QMessageBox()
            msg.setWindowTitle("Schülermeeting Geseke Abrechnungen")
            msg.setText("Bitte Datei auswählen!")
            msg.setIcon(QMessageBox.Critical)
            x = msg.exec_()
            self.b1.setStyleSheet(DEFAULT_BUTTON_STYLE)
            return

        root = os.path.dirname(fileinput[0])

        if not os.path.isfile(fileinput[0]):
            msg = QMessageBox()
            msg.setWindowTitle("Schülermeeting Geseke Abrechnungen")
            msg.setText("Datei existiert nicht!")
            msg.setIcon(QMessageBox.Critical)
            self.b1.setStyleSheet(DEFAULT_BUTTON_STYLE)
            x = msg.exec_()
            return
        else:
            pass
        
        df = pd.read_excel(fileinput[0], header=1)
        Schüler = [x.strip() for x in df["Schüler"].unique()]
        Lehrer = [x.strip() for x in df["Lehrer"].unique()]

        def createdataframe(Liste, Personengruppe, Betragsgruppe):
            Minuten_ges = list()
            Betrag_ges = list()
            
            for person in Liste:
                Betraege = df.loc[df[Personengruppe] == person.strip()][Betragsgruppe]
                Dauer = df.loc[df[Personengruppe] == person.strip()]["Dauer_min"]
                Betrag = sum(Dauer*(Betraege/60))
                Betrag_ges.append(Betrag)
                Min_ges = sum(Dauer)
                Minuten_ges.append(Min_ges)
            
            new_df = pd.DataFrame(Liste, columns=[Personengruppe])
            new_df["Minuten_ges"] = Minuten_ges
            new_df["Betrag_ges"] = Betrag_ges
            new_df = new_df.set_index(Personengruppe)
            return new_df
            
        try:

            fileoutput = QFileDialog.getSaveFileName(None, "Dateinamen für Schülerabrechnung eingeben", "./", filter="Tabellen (*.xlsx)")
            if fileoutput == ('',''):
                msg = QMessageBox()
                msg.setWindowTitle("Schülermeeting Geseke Abrechnungen")
                msg.setText("Bitte Namen und Verzeichnis auswählen! Bitte erstellen Sie die Monatsabrechnung erneut.")
                msg.setIcon(QMessageBox.Critical)
                x = msg.exec_()
                self.b1.setStyleSheet(DEFAULT_BUTTON_STYLE)
                return
            
            Schüler_df = createdataframe(Schüler, "Schüler", "Betrag_Schüler")
            Schüler_df.to_excel(fileoutput[0], header=1)

            fileoutput = QFileDialog.getSaveFileName(None, "Dateinamen für Lehrerabrechnung eingeben", "./", filter="Tabellen (*.xlsx)")
            if fileoutput == ('',''):
                msg = QMessageBox()
                msg.setWindowTitle("Schülermeeting Geseke Abrechnungen")
                msg.setText("Bitte Namen und Verzeichnis auswählen! Bitte erstellen Sie die Monatsabrechnung erneut.")
                msg.setIcon(QMessageBox.Critical)
                x = msg.exec_()
                self.b1.setStyleSheet(DEFAULT_BUTTON_STYLE)
                return
            
            Lehrer_df = createdataframe(Lehrer, "Lehrer", "Betrag_Lehrer")
            Lehrer_df.to_excel(fileoutput[0], header=1)

            msg = QMessageBox()
            msg.setWindowTitle("Schülermeeting Geseke Abrechnungen")
            msg.setText("Datenblätter wurden erstellt!")
            #msg.setIcon(QMessageBox.Information)
            icon = QPixmap(os.path.join(script_dir, "Icon.png")).scaled(70,70)
            msg.setIconPixmap(icon)
        

            
            x = msg.exec_()
            self.b1.setStyleSheet(DEFAULT_BUTTON_STYLE)
            return
        except:
            msg = QMessageBox()
            msg.setWindowTitle("Schülermeeting Geseke Abrechnungen")
            msg.setText("Datenblätter konnten nicht erstellt werden!")
            msg.setIcon(QMessageBox.Critical)
            x = msg.exec_()
            self.b1.setStyleSheet(DEFAULT_BUTTON_STYLE)




if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())
