FACTORY DOCUMENTATION
from tkinter import *
import json
from tkcalendar import Calendar
from tkcalendar import DateEntry
from datetime import date
from datetime import timedelta
FD = Tk()
FD.title("FACTORY DOCUMENTATION")
FD.geometry('1350x650+0+0')
FD.configure(background="LightSkyBlue4")
scrollbar = Scrollbar(FD).pack(side=RIGHT, fill=Y)
frame2 = Frame(FD, bg='goldenrod', borderwidth=6, relief=SUNKEN) # LRS Window
frame3 = Frame(FD, bg='CadetBlue4', borderwidth=6, relief=SUNKEN) # Labour Window
frame4 = Frame(FD, bg='CadetBlue4', borderwidth=6, relief=SUNKEN) # Contractor Window
contractor = []
with open('data_con.json') as f:
data = json.load(f)
for item in data:
contractor.append(item)
category = StringVar()
name = StringVar()
rate = IntVar()
address = StringVar()
mode = StringVar()
l_id = IntVar()
def labour_dict(input_list, dataFile):
details_input = {}
details_input['name'] = input_list[1]
details_input['rate'] = input_list[2]
details_input['address'] = input_list[3]
details_input['mode'] = input_list[4]
cat = category.get()
company_labour = {}
try:
with open(dataFile, 'r+') as f:
company_labour = json.load(f)
len_data = len(company_labour)
if str(input_list[0]) in company_labour:
print("Wrong ID") # need a message box
else:
labour_details = {}
labour_details[len_data + 1] = details_input
company_labour.update(labour_details)
f.seek(0)
json.dump(company_labour, f)
print("Update SuccesfulL")
except:
company_labour[1] = details_input
print(company_labour)
print(type(company_labour))
with open(dataFile, 'a') as f:
json.dump(company_labour, f)
def add_New_Labour():
labour_details = []
c = category.get()
id = l_id.get()
n = name.get()
r = rate.get()
a = address.get()
m = mode.get()
labour_details.append(id)
labour_details.append(n.capitalize())
labour_details.append(r)
labour_details.append(a.capitalize())
labour_details.append(m.capitalize())
if c == 'Company Labour':
labour_dict(labour_details, 'data_L001.json')
if c in contractor:
con_index = contractor.index(c)
labour_dict(labour_details, f"data_L0{con_index+2}.json")
def clear_new_labour_window():
name.set("")
rate.set(0)
address.set("")
mode.set("")
l_id.set(0)
def get_next_id():
c = category.get()
if c == 'Company Labour':
try:
with open('data_L001.json') as f:
data = json.load(f)
last_id = len(data)
l_id.set(last_id + 1)
except:
l_id.set(1)
if c in contractor:
con_ind = contractor.index(c)
try:
with open(f"data_L0{con_ind + 2}.json") as f:
data = json.load(f)
last_id = len(data)
l_id.set(last_id + 1)
except:
l_id.set(1)
def add_NewLabor_Window():
def end_exit():
frame3.pack_forget()
label3 = Label(frame3, text="CATEGORY").grid(row=1, column=2, padx=15, pady=5)
category.set("Select Option")
e1 = OptionMenu(frame3, category, "Select Option", "Company Labour", *contractor).grid(row=1, column=3, padx=15, pady=5)
button6 = Button(frame3, text="Get-ID", command=get_next_id).grid(row=1, column=4, padx=15, pady=5)
label4 = Label(frame3, text="ID NUMBER").grid(row=2, column=2, padx=15, pady=5)
e2 = Entry(frame3, textvariable=l_id).grid(row=2, column=3, padx=15, pady=5)
label5 = Label(frame3, text="WORKER NAME").grid(row=3, column=2, padx=15, pady=5)
e3 = Entry(frame3, textvariable=name).grid(row=3, column=3, padx=15, pady=5)
label6 = Label(frame3, text="RATE PER 8-HRS").grid(row=4, column=2, padx=15, pady=5)
e4 = Entry(frame3, textvariable=rate).grid(row=4, column=3, padx=15, pady=5)
label7 = Label(frame3, text="ADDRESS").grid(row=5, column=2, padx=15, pady=5)
e5 = Entry(frame3, textvariable=address).grid(row=5, column=3, padx=15, pady=5)
label8 = Label(frame3, text="MODE OF PAYMENT").grid(row=6, column=2, padx=15, pady=5)
e6 = Entry(frame3, textvariable=mode).grid(row=6, column=3, padx=15, pady=5)
button4 = Button(frame3, text="SAVE", command=add_New_Labour).grid(row=7, column=3, pady=20)
button5 = Button(frame3, text="CLEAR", command=clear_new_labour_window).grid(row=7, column=4, pady=20)
button6 = Button(frame3, text="CLOSE", bg='Red', command=end_exit, padx=3).grid(row=7, column=5, pady=20)
frame3.pack(fill=X, pady=25, padx=30)
c_name = StringVar()
c_p_name = StringVar()
c_number = IntVar()
c_address = StringVar()
def add_contractor_window():
def end_exit():
frame4.pack_forget()
label1 = Label(frame4, text="CONTRACTOR NAME").grid(row=1, column=2, padx=15, pady=5)
e1 = Entry(frame4, textvariable=c_name).grid(row=1, column=3, padx=15, pady=5)
label2 = Label(frame4, text="NAME OF CONTACT PERSON").grid(row=2, column=2, padx=15, pady=5)
e2 = Entry(frame4, textvariable=c_p_name).grid(row=2, column=3, padx=15, pady=5)
label3 = Label(frame4, text="CONTACT NUMBER").grid(row=3, column=2, padx=15, pady=5)
e2 = Entry(frame4, textvariable=c_number).grid(row=3, column=3, padx=15, pady=5)
label4 = Label(frame4, text="ADDRESS").grid(row=4, column=2, padx=15, pady=5)
e2 = Entry(frame4, textvariable=c_address).grid(row=4, column=3, padx=15, pady=5)
button1 = Button(frame4, text="SAVE", command=add_New_Contractor).grid(row=7, column=3, pady=20)
button2 = Button(frame4, text="CLOSE", bg='Red', command=end_exit, padx=3).grid(row=7, column=4, pady=20)
frame4.pack(fill=X, pady=25, padx=30)
def add_New_Contractor():
contractor_details = []
cn = c_name.get()
cpn = c_p_name.get()
cnu = c_number.get()
ca = c_address.get()
contractor_details.append(cn.upper())
contractor_details.append(cpn.upper())
contractor_details.append(cnu)
contractor_details.append(ca.upper())
contractor_dict(contractor_details)
def contractor_dict(input_list):
details_input = {}
details_input['Contact Persion'] = input_list[1]
details_input['Contact Number'] = input_list[2]
details_input['Contact Address'] = input_list[3]
data_details = {}
try:
with open('data_con.json', 'r+') as f:
data_details = json.load(f)
contractor_details = {}
contractor_details[input_list[0]] = details_input
data_details.update(contractor_details)
f.seek(0)
json.dump(data_details, f)
print("Update SuccesfulL")
except:
data_details[input_list[0]] = details_input
print(data_details)
print(type(data_details))
with open('data_con.json', 'a') as f:
json.dump(data_details, f)
a_date = date.today()
category_for_att = StringVar()
def showLabourForAttendance():
pass
def attendance_entry_Window():
def end_exit():
frame5.pack_forget()
frame5 = Frame(FD, bg='Blue4', borderwidth=6, relief=SUNKEN)
Label(frame5, text="DATE").grid(row=1, column=1, padx=15, pady=5)
cal = DateEntry(frame5, date_pattern='dd/mm/yyyy')
cal.grid(row=1, column=3, pady=10)
Label(frame5, text="LABOUR CATEGORY").grid(row=1, column=4, padx=15, pady=5)
OptionMenu(frame5, category_for_att, "Select Option", "Company Labour", *contractor).grid(row=1, column=5, padx=15, pady=5)
category_for_att.set("Select Option")
button1 = Button(frame5, text="SHOW-ALL-LABOUR", command=showLabourForAttendance, background='gray').grid(row=2, column=4, padx=15, pady=5)
button2 = Button(frame5, text="CLOSE", command=end_exit, background='red').grid(row=2, column=5, padx=15, pady=5)
frame5.pack(fill=X, pady=25, padx=30)
def LRS_Window():
def end_exit():
frame2.pack_forget()
button2 = Button(frame2, text="X", bg='Red', command=end_exit, padx=3).pack(anchor='se', pady=4)
button3 = Button(frame2, text="ADD-NEW-CONTRACTOR", command=add_contractor_window, padx=3).pack(padx=30, pady=10)
button4 = Button(frame2, text="ADD-NEW-LABOUR", command=add_NewLabor_Window).pack(padx=30, pady=10)
button5 = Button(frame2, text="ATTENDANCE-ENTRY", command=attendance_entry_Window).pack(padx=30, pady=10)
frame2.pack(fill=Y, side=RIGHT)
label1 = Label(FD, text="FACTORY DOCUMENTATION")
label1.config(font='Italic 16 bold', justify=CENTER, background='black', fg='white', anchor='center')
label1.pack(fill=X)
frame1 = Frame(FD, bg='burlywood3', borderwidth=6, relief=SUNKEN)
scrollbar1 = Scrollbar(frame1).pack(side=RIGHT, fill=Y)
label2 = Label(frame1, text='DEPARTMENT', font='Vedanta 14 bold', bg='coral4').pack(pady=10, padx=10, fill=X)
button1 = Button(frame1, text="Labour - Record - System", font='ArialRoundedMT 12 bold ', background='sienna1', fg='SteelBlue4', command=LRS_Window, width=50, padx=3).pack(fill=X, pady=3, padx=3)
frame1.pack(side=LEFT, fill=Y)
FD.mainloop()
Comments
Post a Comment