196 lines
8.4 KiB
Python
196 lines
8.4 KiB
Python
##### Import #####
|
|
from tkinter import*
|
|
from datetime import datetime
|
|
import cv2
|
|
import numpy as np
|
|
from pyzbar.pyzbar import decode
|
|
import requests
|
|
|
|
###### Variables #####
|
|
WebServiceActioncode = "1"
|
|
Arbeitnehmernummer = ""
|
|
ArbeitsZeitPause = "0" # "0" - Arbeitszeit "1" - Pause
|
|
StartStopPause = "Ende" # "Start" = Arbeitszeit beginnen "Ende" = Arbeitszeit beenden
|
|
Fehlzeitenstamm = "1"
|
|
|
|
##### Server-Options #####
|
|
WebServiceURL = "localhost"
|
|
WebServiceBenutzerName = "a"
|
|
WebServiceBenutzerPasswort = "b"
|
|
WinLineMandant = "MEDT"
|
|
WebServiceTemplateSTART = "Zeitnahme"
|
|
WebServiceTemplateSTOP = "STOP"
|
|
WebServiceType = "36"
|
|
###### Variables for Timestamp and XML #####
|
|
now = datetime.now()
|
|
current_time = now.strftime("%D:%H:%M:%S")
|
|
Datumvon = datetime.now().strftime('%Y-%m-%d') + "T" + datetime.now().strftime('%H:%M:%S')
|
|
Datumbis = datetime.now().strftime('%Y-%m-%d') + "T" + datetime.now().strftime('%H:%M:%S')
|
|
AN_Gruppe_Ressource = Arbeitnehmernummer
|
|
###### Filter ######
|
|
if ArbeitsZeitPause == "1":
|
|
WebServiceTemplateExport = "ExportPause"
|
|
Filter = "FilterTestP-" + Arbeitnehmernummer
|
|
else:
|
|
WebServiceTemplateExport = "Export"
|
|
Filter = "FilterTest-" + Arbeitnehmernummer
|
|
###### QR-Code-Scan ######
|
|
def button_action():
|
|
anweisungs_label.config(text=current_time)
|
|
#img = cv2.imread ('QR1.jpg')
|
|
cap = cv2.VideoCapture(0)
|
|
cap.set(3,640)
|
|
cap.set(4,480)
|
|
x = True
|
|
myData = None
|
|
while x == True:
|
|
#code=decode(img)
|
|
#print(code)
|
|
success, img = cap.read()
|
|
for barcode in decode(img):
|
|
myData = barcode.data.decode('utf-8')
|
|
print(myData)
|
|
|
|
#pts = np.array([barcode.polygon],np.int32)
|
|
#pts = pts.reshape((-1,1,2))
|
|
#cv2.polylines(img,[pts],True,(255,0,255),5)
|
|
#pts2 = barcode.rect
|
|
#cv2.putText(img,myData,(pts2[0],pts[1]),cv2.FONT_HERSHEY_SIMPLEX)
|
|
|
|
cv2.imshow('Result',img)
|
|
cv2.waitKey(1)
|
|
if myData is not None:
|
|
x = False
|
|
return myData
|
|
|
|
###### Frame ######
|
|
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=button_action)
|
|
exit_button = Button (fenster, text="Arbeitstag beenden",fg="white",bg="red",command=fenster.quit)
|
|
pause_button = Button (fenster, text="Pause beginnen",fg="white",bg="#b47a0e", command=button_action)
|
|
pause_end_button = Button (fenster, text="Pause beenden",fg="white",bg="#b47a0e", command=button_action)
|
|
anweisungs_label = Label(fenster, text="Test")
|
|
info_label = Label(fenster, text="info")
|
|
|
|
anweisungs_label.grid(row=0, column=2, pady = 20)
|
|
start_button.grid(row=1, column=1, pady = 20)
|
|
exit_button.grid(row=1, column=2)
|
|
pause_button.grid (row=1, column=3)
|
|
pause_end_button.grid (row=1, column=4)
|
|
fenster.mainloop()
|
|
|
|
|
|
##### Build Start-XML #####
|
|
def BuildXMLStart():
|
|
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 = "http://%SERVER%/ewlservice/import?User=%USER%&Password=%PASSWORD%&Company=%COMPANY%&Type=%TYPE%&Vorlage=%VORLAGE%&Actioncode=%ACTIONCODE%&byref=0&Data=%DATA%""
|
|
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
|
|
##### Webservice-Export #####
|
|
def BuildURLExport(XML_Start):
|
|
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)
|
|
return URL_Export
|
|
|
|
##### Build End-XML #####
|
|
IndexVonDatum = HTTPRequest_Export.text.find("<Datumvon>")
|
|
v1 = IndexVonDatum + len("<Datumvon>")
|
|
v2 = v1 + 19
|
|
Datumvon = HTTPRequest_Export.text[v1:v2]
|
|
print(Datumvon)
|
|
print(Datumbis)
|
|
|
|
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 + ">"
|
|
# Location for WinLine fields
|
|
XML_Ende = XML_Ende + "<Datumvon>" + Datumvon + "</Datumvon>"
|
|
XML_Ende = XML_Ende + "<Datumbis>" + Datumbis + "</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>"
|
|
|
|
##### Build End-URL #####
|
|
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)
|
|
|
|
##### Requests #####
|
|
if StartStopPause == "Start":
|
|
HTTPRequest_Start = requests.post(URL_Start)
|
|
print(URL_Start)
|
|
print(HTTPRequest_Start.text)
|
|
else:
|
|
HTTPRequest_Ende = requests.post(URL_Ende)
|
|
print(HTTPRequest_Ende.text)
|
|
|
|
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=button_action)
|
|
exit_button = Button (fenster, text="Arbeitstag beenden",fg="white",bg="red",command=fenster.quit)
|
|
pause_button = Button (fenster, text="Pause beginnen",fg="white",bg="#b47a0e", command=button_action)
|
|
pause_end_button = Button (fenster, text="Pause beenden",fg="white",bg="#b47a0e", command=button_action)
|
|
anweisungs_label = Label(fenster, text="Test")
|
|
info_label = Label(fenster, text="info")
|
|
|
|
anweisungs_label.grid(row=0, column=2, pady = 20)
|
|
start_button.grid(row=1, column=1, pady = 20)
|
|
exit_button.grid(row=1, column=2)
|
|
pause_button.grid (row=1, column=3)
|
|
pause_end_button.grid (row=1, column=4)
|
|
fenster.mainloop()
|
|
|
|
def WebserviceCall():
|