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=6relief=SUNKEN) # LRS Window
frame3 = Frame(FD, bg='CadetBlue4'borderwidth=6relief=SUNKEN) # Labour Window
frame4 = Frame(FD, bg='CadetBlue4'borderwidth=6relief=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_listdataFile):
    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=1column=2padx=15pady=5)
    category.set("Select Option")
    e1 = OptionMenu(frame3, category, "Select Option""Company Labour", *contractor).grid(row=1column=3padx=15pady=5)
    button6 = Button(frame3, text="Get-ID"command=get_next_id).grid(row=1column=4padx=15pady=5)
    label4 = Label(frame3, text="ID NUMBER").grid(row=2column=2padx=15pady=5)
    e2 = Entry(frame3, textvariable=l_id).grid(row=2column=3padx=15pady=5)
    label5 = Label(frame3, text="WORKER NAME").grid(row=3column=2padx=15pady=5)
    e3 = Entry(frame3, textvariable=name).grid(row=3column=3padx=15pady=5)
    label6 = Label(frame3, text="RATE PER 8-HRS").grid(row=4column=2padx=15pady=5)
    e4 = Entry(frame3, textvariable=rate).grid(row=4column=3padx=15pady=5)
    label7 = Label(frame3, text="ADDRESS").grid(row=5column=2padx=15pady=5)
    e5 = Entry(frame3, textvariable=address).grid(row=5column=3padx=15pady=5)
    label8 = Label(frame3, text="MODE OF PAYMENT").grid(row=6column=2padx=15pady=5)
    e6 = Entry(frame3, textvariable=mode).grid(row=6column=3padx=15pady=5)
    button4 = Button(frame3, text="SAVE"command=add_New_Labour).grid(row=7column=3pady=20)
    button5 = Button(frame3, text="CLEAR"command=clear_new_labour_window).grid(row=7column=4pady=20)
    button6 = Button(frame3, text="CLOSE"bg='Red'command=end_exit, padx=3).grid(row=7column=5pady=20)
    frame3.pack(fill=X, pady=25padx=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=1column=2padx=15pady=5)
    e1 = Entry(frame4, textvariable=c_name).grid(row=1column=3padx=15pady=5)
    label2 = Label(frame4, text="NAME OF CONTACT PERSON").grid(row=2column=2padx=15pady=5)
    e2 = Entry(frame4, textvariable=c_p_name).grid(row=2column=3padx=15pady=5)
    label3 = Label(frame4, text="CONTACT NUMBER").grid(row=3column=2padx=15pady=5)
    e2 = Entry(frame4, textvariable=c_number).grid(row=3column=3padx=15pady=5)
    label4 = Label(frame4, text="ADDRESS").grid(row=4column=2padx=15pady=5)
    e2 = Entry(frame4, textvariable=c_address).grid(row=4column=3padx=15pady=5)
    button1 = Button(frame4, text="SAVE"command=add_New_Contractor).grid(row=7column=3pady=20)
    button2 = Button(frame4, text="CLOSE"bg='Red'command=end_exit, padx=3).grid(row=7column=4pady=20)
    frame4.pack(fill=X, pady=25padx=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=6relief=SUNKEN)
    Label(frame5, text="DATE").grid(row=1column=1padx=15pady=5)
    cal = DateEntry(frame5, date_pattern='dd/mm/yyyy')
    cal.grid(row=1column=3pady=10)
    Label(frame5, text="LABOUR CATEGORY").grid(row=1column=4padx=15pady=5)
    OptionMenu(frame5, category_for_att, "Select Option""Company Labour", *contractor).grid(row=1column=5padx=15pady=5)
    category_for_att.set("Select Option")
    button1 = Button(frame5, text="SHOW-ALL-LABOUR"command=showLabourForAttendance, background='gray').grid(row=2column=4padx=15pady=5)
    button2 = Button(frame5, text="CLOSE"command=end_exit, background='red').grid(row=2column=5padx=15pady=5)
    frame5.pack(fill=X, pady=25padx=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=30pady=10)
    button4 = Button(frame2, text="ADD-NEW-LABOUR"command=add_NewLabor_Window).pack(padx=30pady=10)
    button5 = Button(frame2, text="ATTENDANCE-ENTRY"command=attendance_entry_Window).pack(padx=30pady=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=6relief=SUNKEN)
scrollbar1 = Scrollbar(frame1).pack(side=RIGHT, fill=Y)
label2 = Label(frame1, text='DEPARTMENT'font='Vedanta 14 bold'bg='coral4').pack(pady=10padx=10fill=X)

button1 = Button(frame1, text="Labour - Record - System"font='ArialRoundedMT 12 bold 'background='sienna1'fg='SteelBlue4'command=LRS_Window, width=50padx=3).pack(fill=X, pady=3padx=3)
frame1.pack(side=LEFT, fill=Y)


FD.mainloop()

Comments

Popular posts from this blog

AI ASSISTANCE (BASIC)

Library System