Merge branch 'master' of github.com:webnotes/erpnext into unicode

Conflicts:
	public/js/all-app.js
diff --git a/erpnext/accounts/page/accounts_browser/accounts_browser.js b/erpnext/accounts/page/accounts_browser/accounts_browser.js
index 8f07ef5..55d6be9 100644
--- a/erpnext/accounts/page/accounts_browser/accounts_browser.js
+++ b/erpnext/accounts/page/accounts_browser/accounts_browser.js
@@ -22,7 +22,12 @@
 
 pscript['onload_Accounts Browser'] = function(wrapper){
 	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'));
-	wrapper.appframe.add_button('New Company', function() { newdoc('Company'); }, 'icon-plus');
+	
+	if (wn.boot.profile.can_create.indexOf("Company") !== -1) {
+		wrapper.appframe.add_button('New Company', function() { newdoc('Company'); },
+			'icon-plus');
+	}
+	
 	wrapper.appframe.add_button('Refresh', function() {  	
 			wrapper.$company_select.change();
 		}, 'icon-refresh');
@@ -35,17 +40,6 @@
 		})
 		.appendTo(wrapper.appframe.$w.find('.appframe-toolbar'));
 		
-	// default company
-	if(sys_defaults.company) {
-		$('<option>')
-			.html(sys_defaults.company)
-			.attr('value', sys_defaults.company)
-			.appendTo(wrapper.$company_select);
-
-		wrapper.$company_select
-			.val(sys_defaults.company).change();
-	}
-
 	// load up companies
 	wn.call({
 		method:'accounts.page.accounts_browser.accounts_browser.get_companies',
@@ -54,7 +48,7 @@
 			$.each(r.message, function(i, v) {
 				$('<option>').html(v).attr('value', v).appendTo(wrapper.$company_select);
 			});
-			wrapper.$company_select.val(sys_defaults.company || r[0]);
+			wrapper.$company_select.val(sys_defaults.company || r[0]).change();
 		}
 	});
 }
diff --git a/erpnext/accounts/page/accounts_browser/accounts_browser.py b/erpnext/accounts/page/accounts_browser/accounts_browser.py
index f2c0d9c..aa955ae 100644
--- a/erpnext/accounts/page/accounts_browser/accounts_browser.py
+++ b/erpnext/accounts/page/accounts_browser/accounts_browser.py
@@ -4,7 +4,21 @@
 
 @webnotes.whitelist()
 def get_companies():
-	return [r[0] for r in webnotes.conn.sql("""select name from tabCompany where docstatus!=2""")]
+	"""get a list of companies based on permission"""
+	
+	# check if match permission exists
+	res = webnotes.conn.sql("""select role, `match` from `tabDocPerm`
+		where parent='Account' and permlevel=0 and `read`=1""", as_dict=1)
+		
+	match = any((r["match"] for r in res 
+		if r["role"] in webnotes.user.roles and r["match"]=="company"))
+	
+	# if match == company is specified and companies are specified in user defaults
+	if match and webnotes.user.get_defaults().get("company"):
+		return webnotes.user.get_defaults().get("company")
+	else:
+		return [r[0] for r in webnotes.conn.sql("""select name from tabCompany
+			where docstatus!=2""")]
 	
 @webnotes.whitelist()
 def get_children():
diff --git a/erpnext/buying/search_criteria/itemwise_purchase_details/itemwise_purchase_details.js b/erpnext/buying/search_criteria/itemwise_purchase_details/itemwise_purchase_details.js
index 603f915..139d69e 100644
--- a/erpnext/buying/search_criteria/itemwise_purchase_details/itemwise_purchase_details.js
+++ b/erpnext/buying/search_criteria/itemwise_purchase_details/itemwise_purchase_details.js
@@ -15,7 +15,7 @@
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 report.customize_filters = function() {
-  this.filter_fields_dict['Purchase Order'+FILTER_SEP +'From PO Date'].df['report_default'] = sys_defaults.year_start_date;
-  this.filter_fields_dict['Purchase Order'+FILTER_SEP +'To PO Date'].df['report_default'] = dateutil.obj_to_str(new Date());
+  this.filter_fields_dict['Purchase Order'+FILTER_SEP +'From Purchase Order Date'].df['report_default'] = sys_defaults.year_start_date;
+  this.filter_fields_dict['Purchase Order'+FILTER_SEP +'To Purchase Order Date'].df['report_default'] = dateutil.obj_to_str(new Date());
 
 }
\ No newline at end of file
diff --git a/public/js/all-app.js b/public/js/all-app.js
index f33df11..3728430 100644
--- a/public/js/all-app.js
+++ b/public/js/all-app.js
@@ -2142,7 +2142,7 @@
 refresh_many=function(flist,dn,table_field){for(var i in flist){if(table_field)refresh_field(flist[i],dn,table_field);else refresh_field(flist[i]);}}
 set_field_tip=function(n,txt){var df=wn.meta.get_docfield(cur_frm.doctype,n,cur_frm.docname);if(df)df.description=txt;if(cur_frm&&cur_frm.fields_dict){if(cur_frm.fields_dict[n])
 cur_frm.fields_dict[n].comment_area.innerHTML=replace_newlines(txt);else
-errprint('[set_field_tip] Unable to set field tip: '+n);}}
+console.log('[set_field_tip] Unable to set field tip: '+n);}}
 refresh_field=function(n,docname,table_field){if(typeof n==typeof[])refresh_many(n,docname,table_field);if(table_field){if(_f.frm_dialog&&_f.frm_dialog.display){_f.frm_dialog.cur_frm.refresh_field(n);}else{var g=_f.cur_grid_cell;if(g)var hc=g.grid.head_row.cells[g.cellIndex];if(g&&hc&&hc.fieldname==n&&g.row.docname==docname){hc.template.refresh();}else{cur_frm.fields_dict[table_field].grid.refresh_cell(docname,n);}}}else if(cur_frm){cur_frm.refresh_field(n)}}
 set_field_options=function(n,txt){cur_frm.set_df_property(n,'options',txt)}
 set_field_permlevel=function(n,level){cur_frm.set_df_property(n,'permlevel',level)}
diff --git a/public/js/report-legacy.js b/public/js/report-legacy.js
index d2d67c5..efdb2a0 100644
--- a/public/js/report-legacy.js
+++ b/public/js/report-legacy.js
@@ -33,7 +33,7 @@
 _r.ReportBuilder.prototype.set_filter=function(dt,label,value){if(this.filter_fields_dict[dt+'\1'+label])
 this.filter_fields_dict[dt+'\1'+label].set_input(value);}
 _r.ReportBuilder.prototype.load_criteria=function(criteria_name){this.clear_criteria();if(!this.sc_dict[criteria_name]){alert(criteria_name+' could not be loaded. Please Refresh and try again');}
-this.sc=locals['Search Criteria'][this.sc_dict[criteria_name]];var report=this;if(this.sc&&this.sc.report_script)eval(this.sc.report_script);this.large_report=0;if(report.customize_filters){try{report.customize_filters(this);}catch(err){errprint('Error in "customize_filters":\n'+err);}}
+this.sc=locals['Search Criteria'][this.sc_dict[criteria_name]];var report=this;if(this.sc&&this.sc.report_script)eval(this.sc.report_script);this.large_report=0;if(report.customize_filters){try{report.customize_filters(this);}catch(err){console.log('Error in "customize_filters":\n'+err);}}
 this.report_filters.refresh();this.column_picker.clear();var cl=this.sc.columns?this.sc.columns.split(','):[];for(var c=0;c<cl.length;c++){var key=cl[c].split('\1');this.select_column(key[0],key[1],1);}
 eval('var fl='+this.sc.filters);for(var n in fl){if(fl[n]){var key=n.split('\1');if(key[1]=='docstatus'){}
 this.set_filter(key[0],key[1],fl[n]);}}