def payslips_page(request, payroll_record_id): payroll_record = get_payroll_record_by_id(payroll_record_id) payslips = get_payslips(payroll_record) context = { "payroll_page": "active", "payroll_record": payroll_record, "payslips": payslips, "month": payroll_record.month, "year": payroll_record.year } return render(request, 'payroll/payslips.html', context)
def payroll_download(request, id): # Get the payroll record payroll_record = get_payroll_record_by_id(id) month = payroll_record.month year = payroll_record.year # Get all the associated Payroll objects payrolls = get_ugx_payslips(payroll_record) response = HttpResponse(content_type='text/csv') # Name the csv file filename = "payroll_" + month + "_" + year + ".csv" response['Content-Disposition'] = 'attachment; filename=' + filename writer = csv.writer(response, delimiter=',') # Writing the first row of the csv heading_text = "Payroll for " + month + " " + year writer.writerow([heading_text.upper()]) writer.writerow([ 'Name', 'Basic Salary', 'Gross Salary', 'Employee NSSF Contribution', 'Employer NSSF contribution', 'PAYE', 'Lunch Allowance', 'Overtime', 'Bonus', 'Sacco Deduction', 'Damage Deduction', 'Net Salary' ]) # Writing other rows for payroll in payrolls: name = payroll.employee.first_name + " " + payroll.employee.last_name writer.writerow([ name, payroll.employee.basic_salary, payroll.gross_salary, payroll.employee_nssf, payroll.employer_nssf, payroll.paye, payroll.employee.lunch_allowance, payroll.overtime, payroll.bonus, payroll.sacco_deduction, payroll.damage_deduction, payroll.net_salary, ]) # Return the response return response
def create_payroll_payslips(request, id): payroll_record = get_payroll_record_by_id(id) create_payslip_list_service(payroll_record) return HttpResponseRedirect( reverse('payroll_record_page', args=[payroll_record.id]))
def test_get_payroll_record_selector(self): self.assertEqual(get_payroll_record_by_id(1).id, 1)