Merge branch 'master' of github.com:webnotes/erpnext
diff --git a/controllers/accounts_controller.py b/controllers/accounts_controller.py
index f73d16a..822717b 100644
--- a/controllers/accounts_controller.py
+++ b/controllers/accounts_controller.py
@@ -20,7 +20,7 @@
 from webnotes.utils import flt, cint, today, cstr
 from setup.utils import get_company_currency, get_price_list_currency
 from accounts.utils import get_fiscal_year, validate_fiscal_year
-from utilities.transaction_base import TransactionBase, validate_conversion_rate, validate_uom_is_integer
+from utilities.transaction_base import TransactionBase, validate_conversion_rate
 import json
 
 class AccountsController(TransactionBase):
@@ -55,15 +55,15 @@
 					label=self.meta.get_label(date_field))
 					
 	def validate_for_freezed_account(self):
-		for fld in ["customer", "supplier"]:
-			if self.meta.get_field(fld):
-				accounts = webnotes.conn.get_values("Account", {"master_type": fld.upper(), 
-					"master_name": self.doc.fields[fld], "company": self.doc.company}, 
+		for fieldname in ["customer", "supplier"]:
+			if self.meta.get_field(fieldname) and self.doc.fields.get(fieldname):
+				accounts = webnotes.conn.get_values("Account", {"master_type": fieldname.title(), 
+					"master_name": self.doc.fields[fieldname], "company": self.doc.company}, 
 					"freeze_account", as_dict=1)
 				
 				if accounts:
 					if not filter(lambda x: cstr(x.freeze_account) in ["", "No"], accounts):
-						msgprint(_("Account for this ") + fld + _(" has been freezed. ") + 
+						msgprint(_("Account for this ") + fieldname + _(" has been freezed. ") + 
 							self.doc.doctype + _(" can not be made."), raise_exception=1)
 			
 	def set_price_list_currency(self, buying_or_selling):
diff --git a/docs/docs.user.tools.calendar.md b/docs/docs.user.tools.calendar.md
index bf2923a..df70186 100644
--- a/docs/docs.user.tools.calendar.md
+++ b/docs/docs.user.tools.calendar.md
@@ -4,3 +4,18 @@
 }
 ---
 The Calendar is a tool where you can create and share Events and also see auto-generated events from the system.
+
+### Repeating Events
+
+You can set events to repeat on every interval by Checking the "Repeat This Event" 
+as shown in the example.
+
+![Set Repeat This Event](img/event-1.png)
+
+You can see the repeat events by switching back to the calendar.
+
+![Event Repeated in Calendar](img/event-2.png)
+
+### Reminders
+
+You will also get a daily digest of all upcoming events for the day if any if the reminder field is checked.
\ No newline at end of file
diff --git a/hr/doctype/grade/grade.txt b/hr/doctype/grade/grade.txt
index 0050ed9..fdfa5c7 100644
--- a/hr/doctype/grade/grade.txt
+++ b/hr/doctype/grade/grade.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-01-10 16:34:14", 
   "docstatus": 0, 
-  "modified": "2013-07-22 15:27:26", 
+  "modified": "2013-07-26 15:24:31", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -16,11 +16,17 @@
  }, 
  {
   "doctype": "DocField", 
+  "fieldname": "grade_name", 
+  "fieldtype": "Data", 
+  "label": "Grade", 
   "name": "__common__", 
+  "oldfieldname": "grade_name", 
+  "oldfieldtype": "Data", 
   "parent": "Grade", 
   "parentfield": "fields", 
   "parenttype": "DocType", 
-  "permlevel": 0
+  "permlevel": 0, 
+  "reqd": 1
  }, 
  {
   "cancel": 1, 
@@ -42,22 +48,7 @@
   "name": "Grade"
  }, 
  {
-  "doctype": "DocField", 
-  "fieldname": "trash_reason", 
-  "fieldtype": "Small Text", 
-  "label": "Trash Reason", 
-  "oldfieldname": "trash_reason", 
-  "oldfieldtype": "Small Text", 
-  "read_only": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "grade_name", 
-  "fieldtype": "Data", 
-  "label": "Grade", 
-  "oldfieldname": "grade_name", 
-  "oldfieldtype": "Data", 
-  "reqd": 1
+  "doctype": "DocField"
  }, 
  {
   "doctype": "DocPerm"
diff --git a/setup/doctype/email_digest/email_digest.py b/setup/doctype/email_digest/email_digest.py
index 881e35a..0354b50 100644
--- a/setup/doctype/email_digest/email_digest.py
+++ b/setup/doctype/email_digest/email_digest.py
@@ -294,7 +294,7 @@
 		
 	def get_calendar_events(self, user_id):
 		from core.doctype.event.event import get_events
-		events = get_events(self.future_from_date, self.future_to_date)
+		events = get_events(self.future_from_date.strftime("%Y-%m-%d"), self.future_to_date.strftime("%Y-%m-%d"))
 		
 		html = ""
 		if events:
diff --git a/startup/open_count.py b/startup/open_count.py
index 7a4866b..04e0029 100644
--- a/startup/open_count.py
+++ b/startup/open_count.py
@@ -41,14 +41,10 @@
 
 def get_todays_events():
 	"""Returns a count of todays events in calendar"""
+	from core.doctype.event.event import get_events
 	from webnotes.utils import nowdate
-	todays_events = webnotes.conn.sql("""\
-		SELECT COUNT(*) FROM `tabEvent`
-		WHERE owner = %s
-		AND event_type != 'Cancel'
-		AND %s between date(starts_on) and date(ends_on)""", (
-		webnotes.session.user, nowdate()))
-	return todays_events[0][0]
+	today = nowdate()
+	return len(get_events(today, today))
 
 def get_unread_messages():
 	"returns unread (docstatus-0 messages for a user)"
diff --git a/startup/schedule_handlers.py b/startup/schedule_handlers.py
index 99cc05b..28ff2ae 100644
--- a/startup/schedule_handlers.py
+++ b/startup/schedule_handlers.py
@@ -39,6 +39,10 @@
 	run_fn(flush)
 	
 def execute_daily():
+	# event reminders
+	from core.doctype.event.event import send_event_digest
+	run_fn(send_event_digest)
+	
 	# email digest
 	from setup.doctype.email_digest.email_digest import send
 	run_fn(send)
diff --git a/website/css/website.css b/website/css/website.css
index f2880e8..cdd277b 100644
--- a/website/css/website.css
+++ b/website/css/website.css
@@ -185,9 +185,4 @@
 fieldset[disabled] .btn-default.active {
   background-color: #a7a9aa;
   border-color: #a7a9aa;
-}
-
-.breadcrumb {
-	margin: 0 -20px 20px;
-	border-radius: 0px;
 }
\ No newline at end of file