xhergiox75 / github-slideshow

A robot powered training repository :robot:
https://lab.github.com/RSLUP/introduction-to-github
MIT License
0 stars 0 forks source link

Payroll+mysql+tkinter #2

Open xhergiox75 opened 4 years ago

xhergiox75 commented 4 years ago

from tkinter import* import tkinter.messagebox as MessageBox import mysql.connector as mysql import locale locale.setlocale(locale.LC_ALL, '')

import random import time import datetime

def search():

try:
    con=mysql.connect(host="localhost",user="root", password="",database="python_tkinter")
    cur=con.cursor()

    sql="select *  from student where id='%s'"%Id.get()

    cur.execute(sql)
    result=cur.fetchone()
    Employee.set(result[1])
    Address.set(result[2])
    Employer.set(result[3])
    City.set(result[4])
    BasicSalary.set(result[5])
    OverTime.set(result[6])
    WorkStart.set(result[7])
    ExtraHour.set(result[8])
    TotOver.set(result[9])
    Transport.set(result[10])
    PerDeduction.set(result[11])
    Deductions.set(result[12])
    GrossPay.set(result[13])
    #Vacations.set(result[14])
    NetPay.set(result[14])
    txtId.configure(state='disabled')
    con.close()
except:
        MessageBox.showinfo('','No suchdata')
        #Reset()
        con.close()

payroll= Tk() payroll.geometry('1250x420+0+0') payroll.title('Payroll Management')

def Exit(): payroll.destroy()#--------------------------------------------------------

Connecting App to database

def update ():

Id=txtId.get();
Employee=txtEmployee.get();
Address=txtAddress.get();
Employer=txtEmployer.get();
City=txtCity.get();
BasicSalary=txtBasicSalary.get();
OverTime=txtOverTime.get();
PerDeduction=txtPerDeduction.get();
Transport=txtTransport.get();

if (Id==""or Employee=="" ):
    MessageBox.showinfo("insert status","all fields are required")
else:
    con=mysql.connect(host="localhost",user="root", password="",database="python_tkinter")
    cur=con.cursor()

    sql="update student set Employee='%s',Address='%s',Employer='%s',City='%s',BasicSalary='%s',OverTime='%s',Transport='%s',PerDeduction='%s' where Id='%s'"%(Employee,Address,Employer,City,BasicSalary,OverTime,Transport,PerDeduction,Id)
    #sql="update student set Employee='%s', GrossPay=BasicSalary+OverTime where Id='%s'"%(Employee,BasicSalary,OverTime,GrossPay,Id)
    cur.execute(sql)
    cur.execute('commit');

    #con.commit();
    MessageBox.showinfo('update status','updated successfully');
    con.close()

def Reset(): Id.set('') Employee.set('') Address.set('') Employee.set('') Address.set('') Employer.set('') City.set('') BasicSalary.set('') OverTime.set('') WorkStart.set('') ExtraHour.set('') TotOver.set('') Transport.set('') PerDeduction.set('') Deductions.set('') GrossPay.set('') NetPay.set('') txtId.configure(state='normal')

Id=StringVar() Employee = StringVar() Address= StringVar () Employer=StringVar() City=StringVar() BasicSalary=StringVar() OverTime=StringVar() WorkStart=StringVar() ExtraHour=StringVar() TotOver=StringVar() Transport=StringVar() PerDeduction=StringVar() Deductions=StringVar() GrossPay=StringVar()

Vacations=StringVar()

NetPay=StringVar()

def Sum():

Id=txtId.get();
#Employee=Employee.get();
#BasicSalary=txtBasicSalary.get();
BasicSalary=txtBasicSalary.get();
OverTime=txtOverTime.get();
ExtraHour=txtExtraHour.get();
TotOver=txtTotOver.get(); 
PerDeduction=txtPerDeduction.get();
Deductions=txtDeductions.get();
Transport=txtTransport.get();
NetPay=txtNetPay.get();
GrossPay=txtGrossPay.get();
#OverTime=e4.get();

if (Id==""or Employee=="" ):
    MessageBox.showinfo("insert status","all fields are required")
else:
    con=mysql.connect(host="localhost",user="root", password="",database="python_tkinter")
    cur=con.cursor()

    #sql="UPDATE student SET ExtraHour= FORMAT(SUM(population), 3, 'es_CO')(BasicSalary/240)*1.75,TotOver=OverTime*ExtraHour,GrossPay=(BasicSalary+TotOver+Transport),Deductions=GrossPay*(PerDeduction/100),NetPay=(GrossPay-Deductions) "
    sql="UPDATE student SET ExtraHour=format(Decimal(BasicSalary/240)*1.75,',f'),TotOver=OverTime*ExtraHour,GrossPay=(BasicSalary+TotOver+Transport),Deductions=GrossPay*(PerDeduction/100),NetPay=(GrossPay-Deductions) "
    #where Id='%s'"%(Employee,BasicSalary,OverTime,Id)      

    cur.execute(sql)
    #result=cur.fetchone()
    #con.commit('commit')
    cur.execute('commit');
    MessageBox.showinfo('update status','updated successfully');
    con.close()

SELECT id, name, class,( social + science + math) AS total FROM student3

SELECT Id,Employee,(BasicSalary+OverTime) As GrossPay FROM

---------------Frames START----------------------------------------

-----------------------------------------------------------------------

Tops=Frame(payroll,width=600,height=15,bd=16, relief='raise') Tops.pack(side=TOP) LF=Frame(payroll,width=200,height=30,bd=16, relief='raise') LF.pack(side=LEFT) RF=Frame(payroll,width=200,height=30,bd=16, relief='raise') RF.pack(side=RIGHT)

lblInfo= Label(Tops,font=('arial',20,'bold'),text="Pago de Nomina",fg='Steel Blue',bd=10,anchor='w') lblInfo.grid(row=0,column=0)

LeftInsideLF=Frame(LF,width=100,height=100,bd=8, relief='raise') LeftInsideLF.pack(side=TOP) LeftInsideLFLF=Frame(LF,width=100,height=200,bd=8, relief='raise') LeftInsideLFLF.pack(side=LEFT) LeftInsideRFRF=Frame(LF,width=100,height=200,bd=8, relief='raise') LeftInsideRFRF.pack(side=RIGHT)

RightInsideLF=Frame(RF,width=600, height=200,bd=8, relief='raise')

RightInsideLF.pack(side=TOP)

RightInsideLFLF=Frame(RF,width=100,height=200,bd=8, relief='raise') RightInsideLFLF.pack(side=LEFT) RightInsideRFRF=Frame(RF,width=100,height=200,bd=8, relief='raise') RightInsideRFRF.pack(side=RIGHT)

--------------------------left side---------------------------

lbId=Label(LeftInsideLF,font=('arial',10,'bold'),text='ID EMPLEADO',fg='steel blue',bd=10, anchor='w') lbId.grid(row=0,column=0) txtId=Entry(LeftInsideLF,font=('arial',10,'bold'),bd=10,width=25,bg='powder blue',justify='left',textvariable=Id) txtId.grid(row=0,column=1)

-----------------------------------------------------------------------------------

lblEmployee=Label(LeftInsideLF, font=('arial',10,'bold'),text='NOMBRE EMPLEADO',fg='steel blue',bd=10, anchor='w') lblEmployee.grid(row=1,column=0) txtEmployee=Entry(LeftInsideLF,font=('arial',10,'bold'),bd=10,width=25,bg='powder blue',justify='left',textvariable=Employee) txtEmployee.grid(row=1,column=1)

-----------------------------------------------------------------------------------

lblAddress=Label(LeftInsideLF,font=('arial',10,'bold'),text="DIRECCION",fg="steel blue",bd=10,anchor='w') lblAddress.grid(row=2,column=0) txtAddress=Entry(LeftInsideLF,font=('arial',10,'bold'),bd=10,width=25,bg="powder blue",justify='left',textvariable=Address) txtAddress.grid(row=2,column=1)

-----------------------------------------------------------------------------------

lblEmployer=Label(LeftInsideLF, font=('arial',10,'bold'),text='EMPRESA',fg='steel blue',bd=10, anchor='w') lblEmployer.grid(row=4,column=0) txtEmployer=Entry(LeftInsideLF,font=('arial',10,'bold'),bd=10,width=25,bg='powder blue',justify='left',textvariable=Employer) txtEmployer.grid(row=4,column=1)

---------------------------------------------------------------------------

lblCity=Label(LeftInsideLFLF,font=('arial',10,'bold'),text='CIUDAD DE EMPRESA',fg='Steel Blue',bd=10,anchor='w') lblCity.grid(row=0,column=0) txtCity=Entry(LeftInsideLFLF,font=('arial',10,'bold'),bd=10,width=14,bg="powder blue",justify='left',textvariable=City) txtCity.grid(row=0,column=1)

-----------------------------------------------------------------------

lblBasicSalary=Label(LeftInsideLFLF,font=('arial',10,'bold'),text='SALARIO BASICO $',fg='Steel Blue',bd=10,anchor='w') lblBasicSalary.grid(row=1,column=0) txtBasicSalary=Entry(LeftInsideLFLF,font=('arial',10,'bold'),bd=10,width=14,bg="powder blue",justify='left',textvariable=BasicSalary) txtBasicSalary.grid(row=1,column=1)

-------------------------------------------------------------

lblOverTime=Label(LeftInsideLFLF,font=('arial',10,'bold'),text='HORAS EXTRAS LABORADAS',fg='Steel Blue',bd=10,anchor='w') lblOverTime.grid(row=2,column=0) txtOverTime=Entry(LeftInsideLFLF,font=('arial',10,'bold'),bd=10,width=14,bg="powder blue",justify='left',textvariable=OverTime) txtOverTime.grid(row=2,column=1)

------------------------------------------------------------------

lblWorkStart=Label(LeftInsideRFRF,font=('arial',10,'bold'),text='INICIO DE LABORES',fg='Steel Blue',bd=10,anchor='w') lblWorkStart.grid(row=0,column=0) txtWorkStart=Entry(LeftInsideRFRF,font=('arial',10,'bold'),bd=10,width=18,bg="powder blue",justify='left',textvariable=WorkStart) txtWorkStart.grid(row=0,column=1)

-----------------------------------------------------------------------------------

lblExtraHour=Label(LeftInsideRFRF,font=('arial',10,'bold'),text='VALOR HORA EXTRA $',fg='Steel Blue',bd=10,anchor='w') lblExtraHour.grid(row=1,column=0) txtExtraHour=Entry(LeftInsideRFRF,font=('arial',10,'bold'),bd=10,width=18,bg="powder blue",justify='left',textvariable=ExtraHour) txtExtraHour.grid(row=1,column=1)

-----------------------------------------------------------------------------------

lblTotOver=Label(LeftInsideRFRF,font=('arial',10,'bold'),text='VALOR TOTAL HE $',fg='Steel Blue',bd=10,anchor='w') lblTotOver.grid(row=2,column=0) txtTotOver=Entry(LeftInsideRFRF,font=('arial',10,'bold'),bd=10,width=18,bg="powder blue",justify='left',textvariable=TotOver) txtTotOver.grid(row=2,column=1)

----------------------------------------------------------------------------------------------------

---------------------------------rigth side--------------------------------------------

----------------------------- RIGHT INNER SIDE---------------

lblTransport=Label(RightInsideLFLF, font=('arial',10,'bold'),text='AUXILIO DE TRANSPORTE $',fg='steel blue',bd=10, justify='left',anchor='w') lblTransport.grid(row=0,column=0) txtTransport=Entry(RightInsideLFLF,font=('arial',10,'bold'),bd=10,width=20,bg='powder blue',justify='left',textvariable=Transport) txtTransport.grid(row=0,column=1)

-----------------------------------------------------------------------------------

lblPerDeduction=Label(RightInsideLFLF, font=('arial',10,'bold'),text='DEDUCCIONES %',fg='steel blue',bd=10, justify='left',anchor='w') lblPerDeduction.grid(row=1,column=0) txtPerDeduction=Entry(RightInsideLFLF,font=('arial',10,'bold'),bd=10,width=20,bg='powder blue',justify='left',textvariable=PerDeduction) txtPerDeduction.grid(row=1,column=1)

----------------------------------------------------------------

lblDeductions=Label(RightInsideLFLF, font=('arial',10,'bold'),text='VALOR DE DEDUCCIONES $',fg='steel blue',bd=10, anchor='nw') lblDeductions.grid(row=2,column=0) txtDeductions=Entry(RightInsideLFLF,font=('arial',10,'bold'),bd=10,width=20,bg='powder blue',justify='left',textvariable=Deductions) txtDeductions.grid(row=2,column=1)

---------------------------------------------------------------------------------------------lg=Label(RightInsideLFLF, font=('arial',12,'bold'),text='NINumber',fg='steel blue',bd=10, anchor='w')

lblGrossPay=Label(RightInsideLFLF, font=('arial',10,'bold'),text='SALARIO BRUTO $',fg='steel blue',bd=10, anchor='w') lblGrossPay.grid(row=3,column=0) txtGrossPay=Entry(RightInsideLFLF,font=('arial',10,'bold'),bd=10,width=20,bg='powder blue',justify='left',textvariable=GrossPay) txtGrossPay.grid(row=3,column=1)

----------------------------------------------------------------------------

lblNetPay=Label(RightInsideLFLF, font=('arial',10,'bold'),text='SALARIO NETO $',fg='steel blue',bd=10, anchor='w') lblNetPay.grid(row=4,column=0) txtNetPay=Entry(RightInsideLFLF,font=('arial',10,'bold'),bd=10,width=20,bg='powder blue',justify='left',textvariable=NetPay) txtNetPay.grid(row=4,column=1)

---------------------------------------------------------------------------------------

-------------------------------- RIGHT SIDE OF THE RIGHT FRAME

-------------------------------------------------------------------------------

btnWagePayment=Button(RightInsideRFRF,padx=8,bd=8,fg='black',font=('arial',10,'bold'),width=11,text='WagePayment',bg='sky blue',command=MonthSalary).grid(row=0,column=0)

btnReset=Button(RightInsideRFRF,padx=8,bd=8,fg='black',font=('arial',10,'bold'),width=11,text='Reset System',bg='sky blue',command=Reset).grid(row=1,column=0)

btnRefPay=Button(RightInsideRFRF,padx=8,bd=8,fg='black',font=('arial',16,'bold'),width=14,text='Pay Reference',bg='sky blue',command=PayRef).grid(row=2,column=0)

btnDeductions=Button(RightInsideLFLF,padx=8,bd=8,fg='black',font=('arial',12,'bold'),width=12,text='Deductions',bg='sky blue',command=Deductions).grid(row=2,column=2)

btnWorkStart=Button(RightInsideRFRF,padx=8,bd=8,fg='black',font=('arial',10,'bold'),width=11,text='Pay Code',bg='sky blue',command=PayPeriod).grid(row=2,column=0)

btnExit=Button(RightInsideRFRF,padx=8,bd=8,fg='black',font=('arial',10,'bold'),width=11,text='Exit',bg='sky blue',command=Exit) btnExit.grid(row=3,column=0) btnsearch=Button(RightInsideRFRF,padx=8,bd=8,fg='black',font=('arial',10,'bold'),width=11,text='Search',bg='sky blue',command=search) btnsearch.grid(row=4,column=0) btnupdate=Button(RightInsideRFRF,padx=8,bd=8,fg='black',font=('arial',10,'bold'),width=11,text='Update',bg='sky blue',command=update) btnupdate.grid(row=5,column=0) btnsum=Button(RightInsideRFRF,padx=8,bd=8,fg='black',font=('arial',10,'bold'),width=11,text='Sum',bg='sky blue',command=Sum) btnsum.grid(row=6,column=0) payroll.mainloop()

xhergiox75 commented 4 years ago

How to add thousand separator in the tkinter label widget while i'm typing?