示例#1
0
def editEmployee(id):
    jina_ya_emp = request.form['name']
    kra_pin = request.form['kra_pin']
    gender = request.form['gender']
    national_id = request.form['national_id']
    email = request.form['email']
    department_id = int(request.form['department'])
    basic_salary = request.form['basic_salary']
    benefits = request.form['benefits']

    if gender == "na":
        gender = None
    if department_id == "0":
        department_id = None

    EmployeesModel.update_by_id(id=id,
                                full_name=jina_ya_emp,
                                gender=gender,
                                kra_pin=kra_pin,
                                email=email,
                                national_id=national_id,
                                department_id=department_id,
                                basic_salary=basic_salary,
                                benefits=benefits)
    this_emp = EmployeesModel.fetch_by_id(id=id)
    this_dept = this_emp.department
    return redirect(url_for('employees', dept_id=this_dept.id))
示例#2
0
def new_employee():
    name_of_employee=request.form['full_name']#name_of_employee random varible, full_name is in the form and full_name below is the db column name
    kra_pin=request.form['kra_pin']
    gender=request.form['gender']
    national_id=request.form['national_id']
    email=request.form['email']
    department_id=int(request.form['department_id'])
    basic_salary=request.form['basic_sal']
    benefits=request.form['benefits']
    emp=EmployeesModel(full_name=name_of_employee,kra_pin=kra_pin,gender=gender, national_id=national_id,email=email,department_id=department_id,
                       basic_sal=basic_salary,benefits=benefits) # full_name is db column and name_of_employee is the variable created above
    emp.insert_to_db()
    return redirect(url_for('home'))
示例#3
0
def home():
    employees = EmployeesModel.fetch_all_records()

    # calculate no of employees
    male = 0
    female = 0
    na = 0

    # using list comprehension and count method modify this for loop
    for emp in employees:
        if emp.gender == 'male':
            male += 1
        elif emp.gender == 'female':
            female += 1
        else:
            na += 1
    print(male)
    print(female)
    print(na)

    # create a pie chart
    pie_chart = pygal.Pie()
    pie_chart.title = 'Male vs Female Employees'
    pie_chart.add('Male Employees', male)
    pie_chart.add('Female Employees', female)
    pie_chart.add('Not Applicable', na)
    graph = pie_chart.render_data_uri()
    print(graph)
    return render_template('index.html', wafanyikazi=employees, graph=graph)
示例#4
0
def generate_payroll(uid):
    month = request.form['month']
    year = request.form['year']
    overtime = request.form['overtime']
    month = month + str(year)
    employee = EmployeesModel.fetch_by_id(uid)
    basic = employee.basic_salary
    benefits = employee.benefits
    mfanyikazi = Employee("bob",basic,benefits)
    gross = mfanyikazi.grossSalary
    payee = mfanyikazi.payeTax
    nhif = mfanyikazi.nhif
    nssf = mfanyikazi.nssf
    personal_relief = mfanyikazi.personal_relief
    sacco_contribution = 0
    pension = 0
    net = mfanyikazi.netSalary + int(overtime)
    emp_id = uid
    pay = PayrollsModel(month=month,gross_salary=gross,payee = payee,nhif=nhif,
                        nssf=nssf,personal_relief=personal_relief,
                        sacco_contribution=sacco_contribution,
                        pension=pension,net_salary=net,
                        employee_id=emp_id)
    try:
        pay.insert_record()
        return redirect(url_for('payrolls',id = uid))
    except:
        flash("Error in saving to the database")
        return redirect(url_for('payrolls',id = uid))
示例#5
0
def generate_payroll(uid):
    month = request.form['month']
    year = request.form['year']
    overtime = request.form['overtime']

    month = month + str(year)

    employee = EmployeesModel.fetch_by_id(uid)
    basic = employee.basic_salary
    benefits = employee.benefits

    ya = Employee(basic, benefits)
    gross = ya.gross_salary
    payee = ya.calc_payee()
    nhif = ya.calc_NHIF()
    nssf = ya.nssf
    relief = 0
    sacco = 0
    pension = 0
    netSalary = ya.calc_net_salary()
    emp_id = uid

    pay = PayrollsModel(month=month,
                        gross_salary=gross,
                        payee=payee,
                        nhif=nhif,
                        nssf=nssf,
                        personal_relief=relief,
                        sacco_distribution=sacco,
                        pension=pension,
                        net_salary=netSalary,
                        employee_id=emp_id)
    # try:
    pay.insert_record()
    return redirect(url_for('payrolls', id=uid))
示例#6
0
def home():
    departments = DepartmentModel.fetch_all()

    #creating a pie chart in the home page
    all_employees = EmployeesModel.fetch_all()
    male = 0
    female = 0
    others = 0

    for each in all_employees:
        if each.gender == 'male':
            male += 1
        elif each.gender == 'female':
            female += 1
        else:
            others += 1

    pie_chart = pygal.Pie() # instantiating the pie class
    pie_chart.title = 'Analysing Company Employees By Gender'
    pie_chart.add('Male', male)
    pie_chart.add('Female', female)
    pie_chart.add('Others', others)
    chart=pie_chart.render_data_uri()

    # creating a  bar graph in the home page
    line_chart = pygal.Bar() # instantiating the bar graph class
    line_chart.title = 'Salary Cost Per Department'

    #loop over departments
    for each_dept in departments:
        line_chart.add(each_dept.name, DepartmentModel.fetch_total_payroll_by_id(each_dept.id))
    bar_graph = line_chart.render_data_uri()

    return render_template('index.html',idara = departments, chart=chart, bar_graph=bar_graph)
示例#7
0
def home():
    departments = DepartmentModel.fetch_all()
    all_employees = EmployeesModel.fetch_all()
    male = 0
    female = 0
    others = 0
    for each in all_employees:
        if each.gender == 'm':
            male += 1
        elif each.gender == 'f':
            female += 1
        else:
            others += 1
    pie_chart = pygal.Pie()
    pie_chart.title = 'Comparing Company Employees by Gender'
    pie_chart.add('Male', male)
    pie_chart.add('Female', female)
    pie_chart.add('Others', others)
    graph = pie_chart.render_data_uri()

    line_chart = pygal.Bar()
    line_chart.title = 'Salary cost per Department'
    for each_dept in departments:
        line_chart.add(each_dept.name,
                       DepartmentModel.fetch_total_payroll_by_id(each_dept.id))
    bar_graph = line_chart.render_data_uri()

    # print(graph)
    # print(departments)
    # print(departments)
    return render_template('index.html',
                           idara=departments,
                           graph=graph,
                           bar_graph=bar_graph)
示例#8
0
def generate_payrolls(emp_id):
    this_employee = EmployeesModel.fetch_by_id(emp_id)
    payroll = Payroll(this_employee.full_name, this_employee.basic_salary,
                      this_employee.benefits)
    payroll_month = request.form['month']
    overtime = request.form['overtime']
    advanced_pay = request.form['salary_advance']
    loan_deductions = request.form['loan']
    gross = payroll.gross_salary
    nhif = payroll.nhif_deductions
    nssf = round(payroll.nssf_deductions, 2)
    taxable_amount = payroll.taxable_income
    paye = round(payroll.payee, 2)
    personal_relief = payroll.personal_relief
    tax_off_relief = round(payroll.tax_off_relief, 2)
    net_salary = payroll.net_salary
    take_home_pay = net_salary - (float(loan_deductions) + float(advanced_pay))

    payslip = PayrollsModel(payroll_month=payroll_month,
                            overtime=overtime,
                            advanced_pay=advanced_pay,
                            loan_deductions=loan_deductions,
                            gross_salary=gross,
                            nhif_deductions=nhif,
                            nssf_deductions=nssf,
                            taxable_income=taxable_amount,
                            PAYE=paye,
                            personal_relief=personal_relief,
                            tax_off_relief=tax_off_relief,
                            net_salary=net_salary,
                            take_home_pay=take_home_pay,
                            employee_id=this_employee.id)
    payslip.insert_to_db()
    return redirect(url_for('payrolls', emp_id=this_employee.id))
示例#9
0
def newEmployee():
    jina_ya_emp = request.form['name']
    kra_pin = request.form['kra_pin']
    gender = request.form['gender']
    national_id = request.form['national_id']
    email = request.form['email']
    department_id = int(request.form['department'])
    basic_salary = request.form['basic_salary']
    benefits = request.form['benefits']
    emp = EmployeesModel(full_name=jina_ya_emp,
                         gender=gender,
                         kra_pin=kra_pin,
                         email=email,
                         national_id=national_id,
                         department_id=department_id,
                         basic_salary=basic_salary,
                         benefits=benefits)
    emp.insert_to_db()
    return redirect(url_for('home'))
示例#10
0
def newEmployee():
    name_of_employee = request.form['name']
    department_id = int(request.form['department'])
    gender = request.form['gender']
    basic_salary = request.form['basic_salary']
    benefits = request.form['benefits']
    kra_pin = request.form['kra_pin']
    national_id = request.form['national_id']
    email = request.form['email']
    emp = EmployeesModel(name=name_of_employee,
                         gender=gender,
                         kraPin=kra_pin,
                         departmentId=department_id,
                         basicSalary=basic_salary,
                         benefits=benefits,
                         nationalId=national_id,
                         email=email)
    emp.insert2DB()
    return redirect(url_for('hello_world'))
示例#11
0
def generate_payroll(uid):
    month = request.form['month']
    year = request.form['year']
    overtime = request.form['overtime']

    month = month + str(year)
    employee = EmployeesModel.fetch_by_id(uid)

    basic = employee.basic_salary
    benefits = employee.benefits

    mfanyikazi = Employees(basic, benefits)

    gross = mfanyikazi.get_gross_salary()
    nssf = mfanyikazi.get_nssf()
    nhif = mfanyikazi.get_nhif()
    net = mfanyikazi.get_net_salary() + float(overtime)
    payee = mfanyikazi.get_payee()
    personal_relief = mfanyikazi.personal_relief
    sacco_contribution = 0
    pension = 0
    emp_id = uid

    pay = PayrollsModel(month=month,
                        gross_salary=gross,
                        payee=payee,
                        nhif=nhif,
                        nssf=nssf,
                        personal_relief=personal_relief,
                        sacco_contribution=sacco_contribution,
                        pension=pension,
                        net_salary=net,
                        employee_id=emp_id)

    # create a bar chart
    line_chart = pygal.Bar()
    line_chart.title = 'Payroll Summary in %'
    line_chart.x_labels = map(str, range(2019))
    line_chart.add('Month', [month])
    line_chart.add('Gross salary', [gross])
    line_chart.add('PAYE', [payee])
    line_chart.add('NHIF', [nhif])
    line_chart.add('NSSF', [nssf])
    line_chart.add('Relief', [personal_relief])
    line_chart.add('Net Salary', [net])
    bar = line_chart.render_data_uri()
    print(bar)

    try:
        pay.insert_records()
        return redirect(url_for('payrolls', id=uid))

    except:
        flash("Error in saving to the database")
        return redirect(url_for('payrolls', id=uid))
示例#12
0
def new_employee():
    full_name = request.form['name']
    gender = request.form['gender']
    kra_pin = request.form['kra_pin']
    email = request.form['email']
    national_id = request.form['national_id']
    basic_salary = request.form['basic_salary']
    benefits = request.form['benefits']
    department_id = int(request.form['dept_id'])

    employee = EmployeesModel(full_name=full_name,
                              gender=gender,
                              KRA_pin=kra_pin,
                              email=email,
                              national_ID=national_id,
                              basic_salary=basic_salary,
                              benefits=benefits,
                              department_id=department_id)
    employee.insert_to_db()
    return redirect(url_for('home'))
示例#13
0
def generate_payroll(id):
    this_employee = EmployeesModel.fetch_by_id(id)
    payroll = Employee(this_employee.full_name, this_employee.basic_salary,
                       this_employee.benefits)
    nhif = payroll.nhif
    print("NSSF", payroll.nssf)
    print("PAYE", payroll.payeTax)
    print("NET", payroll.netSalary)
    print("Gross", payroll.grossSalary)
    print("Personal Relief", payroll.personal_relief)
    print("Taxable amount", payroll.chargeable_pay)
示例#14
0
def create_new_employee():
    if request.method == "POST":
        name = request.form['name']
        gender = request.form['gender']
        email = request.form['email']
        kra_pin = request.form['kra']
        basic_salary = request.form['basicsalary']
        benefits = request.form['benefits']

        if EmployeesModel.check_existing_kra(
                kra_pin) or EmployeesModel.check_existing_email(email):
            flash("Email or KRA already exists")
            return redirect(url_for('home'))

        #create object of class EmployeesModel
        emp = EmployeesModel(name=name,
                             email=email,
                             gender=gender,
                             kra_pin=kra_pin,
                             basic_salary=basic_salary,
                             benefits=benefits)
        emp.insert_method()
        #redirect to home page

    return redirect(url_for('home'))
示例#15
0
def generate_payroll(id):
    this_employee = EmployeesModel.fetch_by_id(id)
    payroll = KRACalculator(this_employee.full_name,
                            this_employee.basic_salary, this_employee.benefits)
    NHIF = payroll.NHIF
    NSSF = payroll.NSSF
    PAYE = payroll.PAYE
    gross_salary = payroll.gross_salary
    personal_relief = payroll.personal_relief
    taxable_income = payroll.taxable_income
    net_salary = payroll.net_salary

    return redirect(url_for('home'))
示例#16
0
def editEmployee(pos):
    name = request.form['name']
    email = request.form['email']
    kra_pin = request.form['kra']
    basic_salary = request.form['basic']
    benefits = request.form['benefits']

    current_user =  EmployeesModel.fetch_by_id(pos)


    # use and to capture this error
    if EmployeesModel.check_kra(kra_pin) and kra_pin != current_user.kra_pin or EmployeesModel.check_email(email) and email != current_user.email:
        flash("Email/Kra already exists")
        return redirect(url_for('home'))



    EmployeesModel.update_by_id(id = pos,name=name,email = email,kra=kra_pin,
                                basic=basic_salary,benefits=benefits)


    return redirect(url_for('home'))
示例#17
0
def edit_employee(id):
    name = request.form['name']
    email = request.form['email']
    kra_pin = request.form['kra']
    basic_salary = request.form['basicsalary']
    benefits = request.form['benefits']

    current_user = EmployeesModel.fetch_by_id(id)

    if EmployeesModel.check_existing_kra(
            kra_pin
    ) and kra_pin != current_user.kra_pin or EmployeesModel.check_existing_email(
            email) and email != current_user.email:
        flash("Email/Kra Pin already exists")

    EmployeesModel.update_by_id(id=id,
                                name=name,
                                email=email,
                                kra=kra_pin,
                                salary=basic_salary,
                                benefits=benefits)
    return redirect(url_for('home'))
示例#18
0
def new_employee():
    full_name = request.form['full_name']
    gender = request.form['gender']
    KRA_pin = request.form['KRA_pin']
    national_ID = request.form['national_ID']
    email = request.form['email']
    basic_salary = request.form['basic_salary']
    benefits = request.form['benefits']
    department_ID = int(request.form['department'])
    if EmployeesModel.fetch_by_mail(email):
        flash('Employee' + full_name + ' already exists.')
        return redirect(url_for('home'))
    emp = EmployeesModel(full_name=full_name,
                         gender=gender,
                         KRA_pin=KRA_pin,
                         email=email,
                         national_ID=national_ID,
                         basic_salary=basic_salary,
                         benefits=benefits,
                         department_ID=department_ID)
    emp.insert_to_db()
    flash('Employee ' + full_name + ' has been added.')
    return redirect(url_for('home'))
示例#19
0
def edit_employee(id):
    name = request.form['name']
    gender = request.form['gender']
    email = request.form['email']
    kra_pin = request.form['kra']
    basic_salary = request.form['basic']
    benefits = request.form['benefits']

    current_user = EmployeesModel.fetch_by_id(id)
    # use and to capture this error
    if EmployeesModel.check_kra_pin(kra_pin) and kra_pin != current_user.kra_pin or \
            EmployeesModel.check_email(email) and email != current_user.email:
        flash("Kra/email already exists")
        return redirect(url_for('home'))

    EmployeesModel.update_by_id(id=id,
                                name=name,
                                gender=gender,
                                email=email,
                                kra_pin=kra_pin,
                                basic_salary=basic_salary,
                                benefits=benefits)
    return redirect(url_for('home'))
示例#20
0
def createNewEmployee():
    if request.method == "POST":
        name = request.form['name']
        email = request.form['email']
        kra_pin = request.form['kra']
        basic_salary = request.form['basic']
        benefits = request.form['benefits']

        if EmployeesModel.check_kra(kra_pin) or EmployeesModel.check_email(email):
            flash("Email/Kra already exists")
            return redirect(url_for('home'))

        emp = EmployeesModel(name=name,email=email,kra_pin=kra_pin,
                             basic_salary=basic_salary,benefits=benefits)

        emp.insert_record()
        return redirect(url_for('home'))
示例#21
0
def generate_payroll(id):
    this_employee = EmployeesModel.fetch_by_id(id)
    payroll = Payroll(this_employee.name, this_employee.basicSalary,
                      this_employee.benefits)
    NHIF = payroll.NHIF
    NSSF = payroll.NSSF
    PAYE = payroll.PAYE
    net_salary = payroll.net_salary
    gross_salary = payroll.gross_salary
    personal_relief = payroll.personal_relief
    taxable_income = payroll.taxable_income
    month = request.form['month']
    payrolls = PayrollsModel(NHIF=NHIF,
                             NSSF=NSSF,
                             PAYE=PAYE,
                             month=month,
                             net_salary=net_salary,
                             gross_salary=gross_salary,
                             personal_relief=personal_relief,
                             taxable_income=taxable_income,
                             employee_id=id)
    payrolls.insert2DB()
    return redirect(url_for('hello_world'))
示例#22
0
def home():
    employees = EmployeesModel.fetch_all_records()

    male = 0
    female = 0
    na = 0
    #use list comprehensions and count method to modify this for and if
    for emp in employees:
        if emp.gender == 'M':
            male += 1
        elif emp.gender == 'F':
            female += 1
        else:
            na += 1

    pie_chart = pygal.Pie()
    pie_chart.title = 'Male vs Female Employees'
    pie_chart.add('Male Employees ', male)
    pie_chart.add('Female Employees ', female)
    pie_chart.add('Not Applicable ', na)
    graph = pie_chart.render_data_uri()

    return render_template('index.html', wafanyikazi=employees, graph=graph)
示例#23
0
def payrolls(emp_id):
    employee = EmployeesModel.fetch_by_id(emp_id)
    print(employee.full_name)
    print(employee.payrolls)
    # payslips = PayrollsModel.fetch_by_employee(emp_id)
    return render_template('payrolls.html', employee=employee)
示例#24
0
def payrolls(emp_id):
    employee = EmployeesModel.fetch_by_id(emp_id)
    return render_template('payrolls.html', employee=employee)
示例#25
0
def deleteEmployee(id):
    this_emp = EmployeesModel.fetch_by_id(id=id)
    this_dept = this_emp.department
    EmployeesModel.delete_by_id(id)
    return redirect(url_for('employees', dept_id=this_dept.id))
示例#26
0
def deleteEmployee(id):
    EmployeesModel.delete_by_id(id)
    return redirect(url_for('home'))
示例#27
0
def payrolls(id):
    employee = EmployeesModel.fetch_by_id(id)
    return render_template('payroll.html',mfanyikazi = employee)
示例#28
0
def home():
    employees = EmployeesModel.fetch_all_records()
    return render_template('index.html',wafanyikazi = employees)
示例#29
0
def payrolls(id):
    payroll_welcome = EmployeesModel.fetch_by_id(id)
    return render_template('payroll.html', ya=payroll_welcome)