Merge pull request #194 from anandpdoshi/master

Posting comments to other users now working
diff --git a/erpnext/accounts/doctype/receivable_voucher/receivable_voucher.js b/erpnext/accounts/doctype/receivable_voucher/receivable_voucher.js
index c2b478e..d0d31be 100644
--- a/erpnext/accounts/doctype/receivable_voucher/receivable_voucher.js
+++ b/erpnext/accounts/doctype/receivable_voucher/receivable_voucher.js
@@ -18,8 +18,8 @@
 		if(!doc.voucher_date) set_multiple(dt,dn,{voucher_date:get_today()});
 		if(!doc.due_date) set_multiple(dt,dn,{due_date:get_today()});
 		if(!doc.posting_date) set_multiple(dt,dn,{posting_date:get_today()});
-		if(!doc.currency && sys_defaults.currency) set_multiple(cdt,cdn,{currency:sys_defaults.currency});
-		if(!doc.price_list_currency) set_multiple(cdt, cdn, {price_list_currency: doc.currency, plc_conversion_rate: 1});
+		if(!doc.currency && sys_defaults.currency) set_multiple(dt,dn,{currency:sys_defaults.currency});
+		if(!doc.price_list_currency) set_multiple(dt, dn, {price_list_currency: doc.currency, plc_conversion_rate: 1});
 
 		//for previously created sales invoice, set required field related to pos
 		if(doc.is_pos ==1) cur_frm.cscript.is_pos(doc, dt, dn);
diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.js b/erpnext/buying/doctype/purchase_common/purchase_common.js
index a429b68..53304b0 100644
--- a/erpnext/buying/doctype/purchase_common/purchase_common.js
+++ b/erpnext/buying/doctype/purchase_common/purchase_common.js
@@ -53,7 +53,7 @@
     call_back = function(doc, cdt, cdn){
       cur_frm.cscript.calc_amount(doc, 2);
     }
-    str_arg = {'item_code':d.item_code, 'uom':d.uom, 'stock_qty':flt(d.stock_qty), 'qty': flt(d.qty)}
+    str_arg = {'item_code':d.item_code, 'uom':d.uom, 'stock_qty':flt(d.stock_qty), 'qty': flt(d.qty), 'conversion_rate':doc.conversion_rate}
     // Updates Conversion Factor, Qty and Purchase Rate
     get_server_fields('get_uom_details',JSON.stringify(str_arg), fname, doc,cdt,cdn,1, call_back);
     // don't make mistake of calling update_stock_qty() the get_uom_details returns stock_qty as per conversion factor properly
diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.py b/erpnext/buying/doctype/purchase_common/purchase_common.py
index 84bfffb..5bade92 100644
--- a/erpnext/buying/doctype/purchase_common/purchase_common.py
+++ b/erpnext/buying/doctype/purchase_common/purchase_common.py
@@ -165,8 +165,8 @@
 				'qty'				: flt(arg['stock_qty']) / flt(uom[0]['conversion_factor']),
 				'purchase_ref_rate'	: (lpr and flt(lpr[0]['last_purchase_rate']) * flt(uom[0]['conversion_factor'])) or 0,
 				'purchase_rate'		: (lpr and flt(lpr[0]['last_purchase_rate']) * flt(uom[0]['conversion_factor'])) or 0,
-				'import_ref_rate'	: (lpr and flt(lpr[0]['last_purchase_rate']) * flt(uom[0]['conversion_factor'])/flt(self.doc.conversion_rate)) or 0,
-				'import_rate'		: (lpr and flt(lpr[0]['last_purchase_rate']) * flt(uom[0]['conversion_factor'])/flt(self.doc.conversion_rate)) or 0
+				'import_ref_rate'	: (lpr and flt(lpr[0]['last_purchase_rate']) * flt(uom[0]['conversion_factor'])/flt(arg['conversion_rate'])) or 0,
+				'import_rate'		: (lpr and flt(lpr[0]['last_purchase_rate']) * flt(uom[0]['conversion_factor'])/flt(arg['conversion_rate'])) or 0
 			}
 		
 		return ret
diff --git a/erpnext/patches/pending_patches.py b/erpnext/patches/pending_patches.py
new file mode 100644
index 0000000..970af74
--- /dev/null
+++ b/erpnext/patches/pending_patches.py
@@ -0,0 +1,58 @@
+def execute():
+	import webnotes
+	from webnotes.model.code import get_obj
+	from webnotes.modules.module_manager import reload_doc
+	sql = webnotes.conn.sql
+
+	reload_doc('hr', 'doctype', 'appraisal')
+	reload_doc('hr', 'doctype', 'appraisal_detail')
+
+	sql("update `tabDocField` set `hidden` = 0 where fieldname = 'group_or_ledger' and parent = 'Cost Center'")
+	sql("update tabDocPerm set amend = 0 where parent = 'Salary Structure'")
+	sql("update tabDocPerm set cancel = 1 where parent = 'Company' and role = 'System Manager'")
+	
+	if sql("select count(name) from `tabDocField` where label = 'View Ledger Entry' and parent = 'Journal Voucher' and fieldtype = 'Button'")[0][0] > 1:
+		sql("delete from `tabDocField` where label = 'View Ledger Entry' and parent = 'Journal Voucher' and fieldtype = 'Button' limit 1")
+	if sql("select count(name) from `tabDocField` where label = 'Get Balance' and parent = 'Journal Voucher' and fieldtype = 'Button'")[0][0] > 1:
+		sql("delete from `tabDocField` where label = 'Get Balance' and parent = 'Journal Voucher' and fieldtype = 'Button' limit 1")
+	
+	reload_doc('accounts', 'doctype', 'internal_reconciliation')
+	reload_doc('accounts', 'doctype', 'ir_payment_detail')
+	reload_doc('accounts', 'Module Def', 'Accounts')
+		
+
+		
+	if sql("select count(name) from `tabDocField` where label = 'Get Specification Details' and parent = 'QA Inspection Report' and fieldtype = 'Button'")[0][0] > 1:
+		sql("delete from `tabDocField` where label = 'Get Specification Details' and parent = 'QA Inspection Report' and fieldtype = 'Button' limit 1")
+	
+	reload_doc('stock', 'DocType Mapper', 'Purchase Order-Purchase Receipt')
+		
+	reload_doc('accounts', 'doctype', 'cost_center')
+	reload_doc('stock', 'Module Def', 'Stock')
+	sql("delete from `tabModule Def Item` where display_name = 'Serial No' and parent = 'Support'")
+	sql("update `tabDocType` set subject = 'Item Code: %(item_code)s, Warehouse: %(warehouse)s' where name = 'Serial No'")
+
+	# Patch for adding packing related columns (packed by, checked by, shipping mark etc)
+	reload_doc('stock','doctype','delivery_note')
+	sql("update `tabDocField` set allow_on_submit = 1 where fieldname = 'page_break'")
+	sql("update `tabDocField` set allow_on_submit = 1 where fieldname in ('indent_details', 'po_details', 'purchase_receipt_details', 'entries', 'sales_order_details', 'delivery_note_details', 'quotation_details') and fieldtype = 'Table'")
+		
+	from webnotes.session_cache import clear_cache
+	clear_cache(webnotes.session['user'])
+
+	# FEATURES SETUP
+	#----------------
+	reload_doc('setup', 'doctype','features_setup')
+	flds = ['page_break', 'projects', 'packing_details', 'discounts', 'brands', 'item_batch_nos', 'after_sales_installations', 'item_searial_nos', 'item_group_in_details', 'exports', 'imports', 'item_advanced', 'sales_extras', 'more_info', 'quality', 'manufacturing', 'pos', 'item_serial_nos']
+	st = "'"+"', '".join(flds)+"'"
+	sql("delete from `tabSingles` where field in (%s) and doctype = 'Features Setup'" % st)
+	sql("delete from `tabDocField` where fieldname in (%s) and parent = 'Features Setup'" % st)
+	sql("delete from `tabDefaultValue` where defkey in (%s) and parent = 'Control Panel'" % st)
+
+	if not sql("select * from `tabDefaultValue` where defkey like 'fs_%' and parent = 'Control Panel'"):
+		rs = sql("select fieldname from tabDocField where parent='Features Setup' and fieldname is not null")
+		fs = get_obj('Features Setup', 'Features Setup')
+		for d in rs:
+			fs.doc.fields[d[0]] = 1
+		fs.doc.save()
+		fs.validate()
diff --git a/erpnext/setup/doctype/manage_account/manage_account.py b/erpnext/setup/doctype/manage_account/manage_account.py
index 5dd2d06..5b1292a 100644
--- a/erpnext/setup/doctype/manage_account/manage_account.py
+++ b/erpnext/setup/doctype/manage_account/manage_account.py
@@ -42,16 +42,16 @@
     def_list = [['fiscal_year',self.doc.current_fiscal_year],
                 ['company',self.doc.default_company],
                 ['currency',self.doc.default_currency],
-                ['price_list_name',self.doc.default_price_list],
-				['price_list_currency', self.doc.default_price_list_currency],
-                ['item_group',self.doc.default_item_group],
-                ['customer_group',self.doc.default_customer_group],
-                ['cust_master_name',self.doc.cust_master_name], 
-                ['supplier_type',self.doc.default_supplier_type],
+                ['price_list_name',self.doc.default_price_list or ''],
+				['price_list_currency', self.doc.default_price_list_currency or ''],
+                ['item_group',self.doc.default_item_group or ''],
+                ['customer_group',self.doc.default_customer_group or ''],
+                ['cust_master_name',self.doc.cust_master_name or ''], 
+                ['supplier_type',self.doc.default_supplier_type or ''],
                 ['supp_master_name',self.doc.supp_master_name], 
-                ['territory',self.doc.default_territory],
-                ['stock_uom',self.doc.default_stock_uom],
-                ['fraction_currency',self.doc.default_currency_fraction],
+                ['territory',self.doc.default_territory or ''],
+                ['stock_uom',self.doc.default_stock_uom or ''],
+                ['fraction_currency',self.doc.default_currency_fraction or ''],
                 ['valuation_method',self.doc.default_valuation_method]]
 
     for d in def_list:
diff --git a/erpnext/stock/doctype/bin/bin.py b/erpnext/stock/doctype/bin/bin.py
index 881a176..5d4ba8b 100644
--- a/erpnext/stock/doctype/bin/bin.py
+++ b/erpnext/stock/doctype/bin/bin.py
@@ -307,7 +307,6 @@
 	# item re-order
 	# -------------
 	def reorder_item(self,doc_type,doc_name):
-		msgprint(get_value('Manage Account', None, 'auto_indent'))
 		if get_value('Manage Account', None, 'auto_indent'):
 			#check if re-order is required
 			indent_detail_fields = sql("select re_order_level,item_name,description,brand,item_group,lead_time_days,min_order_qty,email_notify from tabItem where item_code = %s",(self.doc.item_code),as_dict=1)
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js
index 8f9fa6d..e86c2fe 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.js
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.js
@@ -15,14 +15,14 @@
   if(!doc.transaction_date) set_multiple(dt,dn,{transaction_date:get_today()});
   if(!doc.posting_date) set_multiple(dt,dn,{posting_date:get_today()});
   if(doc.__islocal && doc.customer) cur_frm.cscript.pull_item_details_onload(doc,dt,dn);
-  if(!doc.price_list_currency) set_multiple(cdt, cdn, {price_list_currency: doc.currency, plc_conversion_rate: 1});
-
+  if(!doc.price_list_currency) {
+	set_multiple(dt, dn, {price_list_currency: doc.currency, plc_conversion_rate:1});
+}
   if(!doc.posting_time) doc.posting_time = wn.datetime.get_cur_time()
     
   if(doc.__islocal){
     hide_field(['customer_address','contact_person','customer_name','address_display','contact_display','contact_mobile','contact_email','territory','customer_group']);
   }   
-
 }
 
 cur_frm.cscript.onload_post_render = function(doc, dt, dn) {
@@ -34,7 +34,6 @@
 // REFRESH
 // ================================================================================================
 cur_frm.cscript.refresh = function(doc, cdt, cdn) { 
-
   cur_frm.clear_custom_buttons();
  
   if(doc.per_billed < 100 && doc.docstatus==1) cur_frm.add_custom_button('Make Invoice', cur_frm.cscript['Make Sales Invoice']);