diff --git a/erpnext/hr/doctype/attendance_request/attendance_request.js b/erpnext/hr/doctype/attendance_request/attendance_request.js
index 76a28a0..caf955a 100644
--- a/erpnext/hr/doctype/attendance_request/attendance_request.js
+++ b/erpnext/hr/doctype/attendance_request/attendance_request.js
@@ -1,5 +1,6 @@
 // Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors
 // For license information, please see license.txt
+cur_frm.add_fetch('employee', 'company', 'company');
 
 frappe.ui.form.on('Attendance Request', {
 	refresh: function(frm) {
diff --git a/erpnext/hr/doctype/attendance_request/attendance_request.py b/erpnext/hr/doctype/attendance_request/attendance_request.py
index 0114b99..eb0b368 100644
--- a/erpnext/hr/doctype/attendance_request/attendance_request.py
+++ b/erpnext/hr/doctype/attendance_request/attendance_request.py
@@ -5,6 +5,50 @@
 from __future__ import unicode_literals
 import frappe
 from frappe.model.document import Document
+from frappe.utils import date_diff, add_days
+from erpnext.hr.doctype.employee.employee import is_holiday
+from erpnext.hr.utils import validate_dates
 
 class AttendanceRequest(Document):
-	pass
+	def validate(self):
+		validate_dates(self, self.from_date, self.to_date)
+
+	def on_submit(self):
+		self.create_attendance()
+
+	def on_cancel(self):
+		attendance_list = frappe.get_list("Attendance", {'employee': self.employee, 'attendance_request': self.name})
+		if attendance_list:
+			for attendance in attendance_list:
+				attendance_obj = frappe.get_doc("Attendance", attendance['name'])
+				attendance_obj.cancel()
+
+	def create_attendance(self):
+		request_days = date_diff(self.to_date, self.from_date) + 1
+		for number in range(request_days):
+			attendance_date = add_days(self.from_date, number)
+			skip_attendance = self.validate_if_attendance_not_applicable(attendance_date)
+			if not skip_attendance:
+				attendance = frappe.new_doc("Attendance")
+				attendance.employee = self.employee
+				attendance.employee_name = self.employee_name
+				attendance.status = "Present"
+				attendance.attendance_date = attendance_date
+				attendance.company = self.company
+				attendance.attendance_request = self.name
+				attendance.save(ignore_permissions=True)
+				attendance.submit()
+
+	def validate_if_attendance_not_applicable(self, attendance_date):
+		# Check if attendance_date is a Holiday
+		if is_holiday(self.employee, attendance_date):
+			return True
+
+		# Check if employee on Leave
+		leave_record = frappe.db.sql("""select half_day from `tabLeave Application`
+			where employee = %s and %s between from_date and to_date
+			and docstatus = 1""", (self.employee, attendance_date), as_dict=True)
+		if leave_record:
+			return True
+
+		return False
