8
0

Anlage des Repos

This commit is contained in:
2024-01-24 16:42:38 +01:00
commit 38d6a271c4
1785 changed files with 3051496 additions and 0 deletions

View File

@@ -0,0 +1,282 @@
#######################################################################################################################
##### Import #####
#######################################################################################################################
from tkinter import*
from datetime import datetime
import cv2
import numpy as np
from pyzbar.pyzbar import decode
import requests
#######################################################################################################################
##### Server-Options #####
#######################################################################################################################
WebServiceURL = "172.24.12.56"
WebServiceBenutzerName = "a"
WebServiceBenutzerPasswort = "b"
WinLineMandant = "MEDT"
WebServiceTemplateSTART = "Zeitnahme"
WebServiceTemplateSTOP = "STOP"
WebServiceType = "36"
WebServiceActioncode = "1"
#######################################################################################################################
##### WinLine-Options #####
#######################################################################################################################
Fehlzeitenstamm = "1"
#######################################################################################################################
###### Frame ######
#######################################################################################################################
def BuildMainFrame():
fenster = Tk()
fenster.configure(bg="white")
fenster.title("DD-Zeiterfassung")
fenster.geometry("1024x768")
start_button = Button(fenster, text="Arbeitstag beginnen", fg="white", bg="green", command=Startbutton_action)
exit_button = Button (fenster, text="Arbeitstag beenden ", fg="white", bg="red", command=Stopbutton_action)
pause_button = Button (fenster, text="Pause beginnen", fg="white", bg="#b47a0e", command=PauseStartbutton_action)
pause_end_button = Button (fenster, text="Pause beenden", fg="white", bg="#b47a0e", command=PauseStopbutton_action)
anweisungs_label = Label(fenster, justify=CENTER, text="Wählen Sie eine Buchungsart")
anweisungs_label2 = Label(fenster, bg="white", justify=CENTER, fg="black")
anweisungs_label.grid(row=0, column=2, pady=20, padx=10, sticky='ew')
anweisungs_label2.grid(row=1, column=2, pady=20, padx=10, sticky='ew')
start_button.grid(row=2, column=1, pady=20, padx=10, sticky='ew')
exit_button.grid(row=2, column=2, pady=20, padx=10, sticky='ew')
pause_button.grid(row=2, column=3, pady=20, padx=10, sticky='ew')
pause_end_button.grid(row=2, column=4, pady=20, padx=10, sticky='ew')
fenster.mainloop()
#######################################################################################################################
##### Build Start-XML #####
#######################################################################################################################
def BuildXMLStart(RequestTyp, myData, Datumvon):
if RequestTyp == 1:
ArbeitsZeitPause = "0"
else:
ArbeitsZeitPause = "1"
myDataListe = myData.split("-")
AN_Gruppe_Ressource = myDataListe[0]
XML_Start = ""
XML_Start = XML_Start + "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
XML_Start = XML_Start + "<MESOWebService TemplateType=\"" + WebServiceType + "\"" " Template=\"" + WebServiceTemplateSTART + "\">"
XML_Start = XML_Start + "<" + WebServiceTemplateSTART + ">"
#Location for WinLine fields
XML_Start = XML_Start + "<Datumvon>" + Datumvon + "</Datumvon>"
XML_Start = XML_Start + "<Fehlzeitenstamm>" + Fehlzeitenstamm + "</Fehlzeitenstamm>"
XML_Start = XML_Start + "<ANGruppeRessource>" + AN_Gruppe_Ressource + "</ANGruppeRessource>"
XML_Start = XML_Start + "<TypZeitartPause>" + ArbeitsZeitPause + "</TypZeitartPause>"
XML_Start = XML_Start + "</" + WebServiceTemplateSTART + ">"
XML_Start = XML_Start + "</MESOWebService>"
return XML_Start
#######################################################################################################################
##### Build Start-URL #####
#######################################################################################################################
def BuildURLStart(XML_Start):
URL_Start = "http://%SERVER%/ewlservice/import?User=%USER%&Password=%PASSWORD%&Company=%COMPANY%&Type=%TYPE%&Vorlage=%VORLAGE%&Actioncode=%ACTIONCODE%&byref=0&Data=%DATA%"
URL_Start = URL_Start.replace("%SERVER%", WebServiceURL)
URL_Start = URL_Start.replace("%USER%", WebServiceBenutzerName)
URL_Start = URL_Start.replace("%PASSWORD%", WebServiceBenutzerPasswort)
URL_Start = URL_Start.replace("%COMPANY%", WinLineMandant)
URL_Start = URL_Start.replace("%TYPE%", WebServiceType)
URL_Start = URL_Start.replace("%VORLAGE%", WebServiceTemplateSTART)
URL_Start = URL_Start.replace("%ACTIONCODE%", WebServiceActioncode)
URL_Start = URL_Start.replace("%DATA%", XML_Start)
return URL_Start
#######################################################################################################################
##### Build Export-URL #####
#######################################################################################################################
def BuildURLExport(myData,RequestTyp):
myDataListe = myData.split("-")
Arbeitnehmernummer = myDataListe[0]
if RequestTyp == 4:
WebServiceTemplateExport = "ExportPause"
Filter = "FilterTestP-" + Arbeitnehmernummer
else:
WebServiceTemplateExport = "Export"
Filter = "FilterTest-" + Arbeitnehmernummer
XMLExport = Filter
URL_Export = "http://%SERVER%/ewlservice/export?User=%USER%&Password=%PASSWORD%&Company=%COMPANY%&Type=%TYPE%&Vorlage=%VORLAGE%&Actioncode=%ACTIONCODE%&byref=0&Key=%KEY%"
URL_Export = URL_Export.replace("%SERVER%", WebServiceURL)
URL_Export = URL_Export.replace("%USER%", WebServiceBenutzerName)
URL_Export = URL_Export.replace("%PASSWORD%", WebServiceBenutzerPasswort)
URL_Export = URL_Export.replace("%COMPANY%", WinLineMandant)
URL_Export = URL_Export.replace("%TYPE%", WebServiceType)
URL_Export = URL_Export.replace("%VORLAGE%", WebServiceTemplateExport)
URL_Export = URL_Export.replace("%ACTIONCODE%", WebServiceActioncode)
URL_Export = URL_Export.replace("%KEY%", XMLExport)
URL_Export = URL_Export.replace("%FILTER%", Filter)
print("URL_Export = " + URL_Export)
HTTPRequest_Export = requests.post(URL_Export)
IndexVonDatum = HTTPRequest_Export.text.find("<Datumvon>")
v1 = IndexVonDatum + len("<Datumvon>")
v2 = v1 + 19
Datumvon = HTTPRequest_Export.text[v1:v2]
return Datumvon
#######################################################################################################################
##### Build End-XML #####
#######################################################################################################################
def BuildXMLEnde(RequestTyp, myData, OrgDateTime, ActDateTime):
if RequestTyp == 2:
ArbeitsZeitPause = "0"
else:
ArbeitsZeitPause = "1"
myDataListe = myData.split("-")
AN_Gruppe_Ressource = myDataListe[0]
XML_Ende = ""
XML_Ende = XML_Ende + "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
XML_Ende = XML_Ende + "<MESOWebService TemplateType=\"" + WebServiceType + "\"" " Template=\"" + WebServiceTemplateSTOP + "\">"
XML_Ende = XML_Ende + "<" + WebServiceTemplateSTOP + ">"
XML_Ende = XML_Ende + "<Datumvon>" + OrgDateTime + "</Datumvon>"
XML_Ende = XML_Ende + "<Datumbis>" + ActDateTime + "</Datumbis>"
XML_Ende = XML_Ende + "<Fehlzeitenstamm>" + Fehlzeitenstamm + "</Fehlzeitenstamm>"
XML_Ende = XML_Ende + "<ANGruppeRessource>" + AN_Gruppe_Ressource + "</ANGruppeRessource>"
XML_Ende = XML_Ende + "<TypZeitartPause>" + ArbeitsZeitPause + "</TypZeitartPause>"
XML_Ende = XML_Ende + "<Importoption>" + "1" + "</Importoption>"
XML_Ende = XML_Ende + "</" + WebServiceTemplateSTOP + ">"
XML_Ende = XML_Ende + "</MESOWebService>"
return XML_Ende
#######################################################################################################################
##### Build End-URL #####
#######################################################################################################################
def BuildURLEnde(XML_Ende):
URL_Ende = "http://%SERVER%/ewlservice/import?User=%USER%&Password=%PASSWORD%&Company=%COMPANY%&Type=%TYPE%&Vorlage=%VORLAGE%&Actioncode=%ACTIONCODE%&byref=0&Data=%DATA%"
URL_Ende = URL_Ende.replace("%SERVER%", WebServiceURL)
URL_Ende = URL_Ende.replace("%USER%", WebServiceBenutzerName)
URL_Ende = URL_Ende.replace("%PASSWORD%", WebServiceBenutzerPasswort)
URL_Ende = URL_Ende.replace("%COMPANY%", WinLineMandant)
URL_Ende = URL_Ende.replace("%TYPE%", WebServiceType)
URL_Ende = URL_Ende.replace("%VORLAGE%", WebServiceTemplateSTOP)
URL_Ende = URL_Ende.replace("%ACTIONCODE%", WebServiceActioncode)
URL_Ende = URL_Ende.replace("%DATA%", XML_Ende)
return URL_Ende
#######################################################################################################################
###### WinLine Requests ######
#######################################################################################################################
def MakeWinLineRequest(RequestTyp, myData, actDateTime):
if RequestTyp == 1:
XMLStart = BuildXMLStart(RequestTyp, myData, actDateTime)
URLStart = BuildURLStart(XMLStart)
HTTPRequest_Start = requests.post(URLStart)
print(HTTPRequest_Start.text)
elif RequestTyp == 2:
OrgDateTime = BuildURLExport(myData, RequestTyp)
XMLEnde = BuildXMLEnde(RequestTyp, myData, OrgDateTime, actDateTime)
URLEnde = BuildURLEnde(XMLEnde)
HTTPRequest_Ende = requests.post(URLEnde)
print(HTTPRequest_Ende.text)
elif RequestTyp == 3:
XMLStart = BuildXMLStart(RequestTyp, myData, actDateTime)
URLStart = BuildURLStart(XMLStart)
HTTPRequest_Start = requests.post(URLStart)
print(HTTPRequest_Start.text)
elif RequestTyp == 4:
OrgDateTime = BuildURLExport(myData, RequestTyp)
XMLEnde = BuildXMLEnde(RequestTyp, myData, OrgDateTime, actDateTime)
URLEnde = BuildURLEnde(XMLEnde)
HTTPRequest_Ende = requests.post(URLEnde)
print(HTTPRequest_Ende.text)
#######################################################################################################################
##### Scanner ######
#######################################################################################################################
def Scanner():
cap = cv2.VideoCapture(0)
cap.set(3, 640)
cap.set(4, 480)
x = True
myData = None
while x == True:
success, img = cap.read()
for barcode in decode(img):
myData = barcode.data.decode('utf-8')
cv2.imshow('Result', img)
cv2.waitKey(1)
if myData is not None:
x = False
return myData
#######################################################################################################################
###### Button-Action ######
# Legende #
# RequestTyp = 1 = Arbeitstag beginnen #
# RequestTyp = 2 = Arbeitstag beenden #
# RequestTyp = 3 = Pause beginnen #
# RequestTyp = 4 = Pause beenden #
#######################################################################################################################
def Button_action(self, RequestTyp):
myData = Scanner()
myDataListe = myData.split("-")
name = myDataListe[1]
now = datetime.now()
actDateTime = now.strftime('%Y-%m-%d') + "T" + now.strftime('%H:%M:%S')
TimeWithoutsec = now.strftime('%H:%M:%S')
MakeWinLineRequest(RequestTyp, myData, actDateTime)
if RequestTyp == 1:
anweisungs_label = Label(text="Hallo, " + str(name))
anweisungs_label.grid(row=0, column=2, sticky='ew')
anweisungs_label2 = Label(text="Es ist " + str(TimeWithoutsec) + " Uhr ")
anweisungs_label2.grid(row=1, column=2, sticky='ew')
self.after(3000, LabelReset)
elif RequestTyp == 2:
anweisungs_label = Label(text="Auf Wiedersehen, " + str(name))
anweisungs_label.grid(row=0, column=2, sticky='ew')
anweisungs_label2 = Label(text="Es ist " + str(TimeWithoutsec) + " Uhr ")
anweisungs_label2.grid(row=1, column=2, sticky='ew')
elif RequestTyp == 3:
anweisungs_label = Label(text="Eine schöne Pause, " + str(name))
anweisungs_label.grid(row=0, column=2, sticky='ew')
anweisungs_label2 = Label(text="Es ist " + str(TimeWithoutsec) + " Uhr ")
anweisungs_label2.grid(row=1, column=2, sticky='ew')
elif RequestTyp == 4:
anweisungs_label = Label(text="Willkommen zurück, " + str(name))
anweisungs_label.grid(row=0, column=2, sticky='ew')
anweisungs_label2 = Label(text="Es ist " + str(TimeWithoutsec) + " Uhr ")
anweisungs_label2.grid(row=1, column=2, sticky='ew')
def LabelReset():
anweisungs_label = Label(text="Hallo2!!")
anweisungs_label.grid(row=0, column=2, sticky='ew')
#######################################################################################################################
###### Diffrent-Buttons ######
#######################################################################################################################
def Startbutton_action():
RequestTyp = 1
Button_action(RequestTyp)
#######################################################################################################################
def Stopbutton_action():
RequestTyp = 2
Button_action(RequestTyp)
#######################################################################################################################
def PauseStartbutton_action():
RequestTyp = 3
Button_action(RequestTyp)
#######################################################################################################################
def PauseStopbutton_action():
RequestTyp = 4
Button_action(RequestTyp)
#######################################################################################################################
##### Main #####
#######################################################################################################################
BuildMainFrame()