diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
index cbb8fd9..a2fbec1 100644
--- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
+++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
@@ -360,7 +360,7 @@
 	# debit bank
 	jv.doclist[2].debit = si.outstanding_amount
 	
-	return [d.fields for d in jv.doclist]
+	return jv.as_dict()
 
 @frappe.whitelist()
 def get_payment_entry_from_purchase_invoice(purchase_invoice):
@@ -378,7 +378,7 @@
 	# credit bank
 	jv.doclist[2].credit = pi.outstanding_amount
 	
-	return [d.fields for d in jv.doclist]
+	return jv.as_dict()
 
 def get_payment_entry(doc):
 	bank_account = get_default_bank_cash_account(doc.company, "Bank Voucher")
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index d55d3a5..b3e9a11 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -326,7 +326,7 @@
 			if frappe.db.get_value('Selling Settings', None, dic[i]) == 'Yes':
 				for d in self.get('entries'):
 					if frappe.db.get_value('Item', d.item_code, 'is_stock_item') == 'Yes' \
-						and not d.fields[i.lower().replace(' ','_')]:
+						and not d.get(i.lower().replace(' ','_')):
 						msgprint("%s is mandatory for stock item which is not mentioed against item: %s"%(i,d.item_code), raise_exception=1)
 
 
@@ -836,4 +836,4 @@
 		}
 	}, target_doc, set_missing_values)
 	
-	return [d.fields for d in doclist]
\ No newline at end of file
+	return doclist.as_dict()
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index 4e366b3..7879dcb 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -32,7 +32,7 @@
 		w.docstatus = '0'
 		w.insert()
 
-		w2 = frappe.get_doc([d.fields.copy() for d in w.doclist])
+		w2 = frappe.copy_doc(w)
 		
 		import time
 		time.sleep(1)
diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.py b/erpnext/buying/doctype/purchase_common/purchase_common.py
index ec8c281..a571144 100644
--- a/erpnext/buying/doctype/purchase_common/purchase_common.py
+++ b/erpnext/buying/doctype/purchase_common/purchase_common.py
@@ -82,7 +82,7 @@
 			if d.doctype == 'Purchase Receipt Item':
 				f_lst.pop('received_qty')
 			for x in f_lst :
-				if d.fields.has_key(x):
+				if d.meta.has_field(x):
 					d.set(x, f_lst[x])
 			
 			item = frappe.db.sql("""select is_stock_item, is_purchase_item, 
@@ -103,9 +103,9 @@
 			
 			# list criteria that should not repeat if item is stock item
 			e = [d.schedule_date, d.item_code, d.description, d.warehouse, d.uom, 
-				d.fields.has_key('prevdoc_docname') and d.prevdoc_docname or d.fields.has_key('sales_order_no') and d.sales_order_no or '', 
-				d.fields.has_key('prevdoc_detail_docname') and d.prevdoc_detail_docname or '', 
-				d.fields.has_key('batch_no') and d.batch_no or '']
+				d.meta.has_field('prevdoc_docname') and d.prevdoc_docname or d.meta.has_field('sales_order_no') and d.sales_order_no or '', 
+				d.meta.has_field('prevdoc_detail_docname') and d.prevdoc_detail_docname or '', 
+				d.meta.has_field('batch_no') and d.batch_no or '']
 			
 			# if is not stock item
 			f = [d.schedule_date, d.item_code, d.description]
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index b850497..ca68e2b 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -73,7 +73,7 @@
 	def check_for_stopped_status(self, pc_obj):
 		check_list =[]
 		for d in self.get('po_details'):
-			if d.fields.has_key('prevdoc_docname') and d.prevdoc_docname and d.prevdoc_docname not in check_list:
+			if d.meta.has_field('prevdoc_docname') and d.prevdoc_docname and d.prevdoc_docname not in check_list:
 				check_list.append(d.prevdoc_docname)
 				pc_obj.check_for_stopped_status( d.prevdoc_doctype, d.prevdoc_docname)
 
@@ -216,7 +216,7 @@
 		}
 	}, target_doc, set_missing_values)
 
-	return [d.fields for d in doclist]
+	return doclist.as_dict()
 	
 @frappe.whitelist()
 def make_purchase_invoice(source_name, target_doc=None):
@@ -254,4 +254,4 @@
 		}
 	}, target_doc, set_missing_values)
 
-	return [d.fields for d in doclist]
\ No newline at end of file
+	return doclist.as_dict()
\ No newline at end of file
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
index 004954f..dbca9b5 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
@@ -88,4 +88,4 @@
 		},
 	}, target_doc, set_missing_values)
 
-	return [d.fields for d in doclist]
\ No newline at end of file
+	return doclist.as_dict()
\ No newline at end of file
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 2d54b74..777150e 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -26,7 +26,7 @@
 			if not self.get(fieldname) and self.meta.get_field(fieldname):
 				self.set(fieldname, today())
 				if not self.fiscal_year:
-					self.fiscal_year = get_fiscal_year(self.fields[fieldname])[0]
+					self.fiscal_year = get_fiscal_year(self.get(fieldname))[0]
 					
 	def validate_date_with_fiscal_year(self):
 		if self.meta.get_field("fiscal_year") :
@@ -36,15 +36,15 @@
 			elif self.meta.get_field("transaction_date"):
 				date_field = "transaction_date"
 				
-			if date_field and self.fields[date_field]:
-				validate_fiscal_year(self.fields[date_field], self.fiscal_year, 
+			if date_field and self.get(date_field):
+				validate_fiscal_year(self.get(date_field), self.fiscal_year, 
 					label=self.meta.get_label(date_field))
 					
 	def validate_for_freezed_account(self):
 		for fieldname in ["customer", "supplier"]:
 			if self.meta.get_field(fieldname) and self.get(fieldname):
 				accounts = frappe.db.get_values("Account", 
-					{"master_type": fieldname.title(), "master_name": self.fields[fieldname], 
+					{"master_type": fieldname.title(), "master_name": self.get(fieldname), 
 					"company": self.company}, "name")
 				if accounts:
 					from erpnext.accounts.doctype.gl_entry.gl_entry import validate_frozen_account
@@ -347,13 +347,13 @@
 				"tax_fraction_for_current_item", 
 				"grand_total_fraction_for_current_item"):
 				if fieldname in tax.fields:
-					del tax.fields[fieldname]
+					del tax.get(fieldname)
 			
 			tax.item_wise_tax_detail = json.dumps(tax.item_wise_tax_detail)
 			
 	def _set_in_company_currency(self, item, print_field, base_field):
 		"""set values in base currency"""
-		item.set(base_field, flt((flt(item.fields[print_field],)
+		item.set(base_field, flt((flt(item.get(print_field),)
 			self.precision(print_field, item)) * self.conversion_rate),
 			self.precision(base_field, item))
 			
@@ -419,7 +419,7 @@
 		for item in self.get("entries"):
 			if item.get(item_ref_dn):
 				ref_amt = flt(frappe.db.get_value(ref_dt + " Item", 
-					item.fields[item_ref_dn], based_on), self.precision(based_on, item))
+					item.get(item_ref_dn), based_on), self.precision(based_on, item))
 				if not ref_amt:
 					frappe.msgprint(_("As amount for item") + ": " + item.item_code + _(" in ") + 
 						ref_dt + _(" is zero, system will not check for over-billed"))
@@ -427,9 +427,9 @@
 					already_billed = frappe.db.sql("""select sum(%s) from `tab%s` 
 						where %s=%s and docstatus=1 and parent != %s""" % 
 						(based_on, self.tname, item_ref_dn, '%s', '%s'), 
-						(item.fields[item_ref_dn], self.name))[0][0]
+						(item.get(item_ref_dn), self.name))[0][0]
 				
-					total_billed_amt = flt(flt(already_billed) + flt(item.fields[based_on]), 
+					total_billed_amt = flt(flt(already_billed) + flt(item.get(based_on)), 
 						self.precision(based_on, item))
 				
 					tolerance, item_tolerance, global_tolerance = get_tolerance_for(item.item_code, 
@@ -443,7 +443,7 @@
 						frappe.throw(_("Row #") + cstr(item.idx) + ": " + 
 							_(" Max amount allowed for Item ") + cstr(item.item_code) + 
 							_(" against ") + ref_dt + " " + 
-							cstr(item.fields[ref_dt.lower().replace(" ", "_")]) + _(" is ") + 
+							cstr(item.get(ref_dt.lower().replace(" ", "_"))) + _(" is ") + 
 							cstr(max_allowed_amt) + ". \n" + 
 							_("""If you want to increase your overflow tolerance, please increase \
 							tolerance % in Global Defaults or Item master. 				
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index d0e482e..b186e5c 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -152,12 +152,12 @@
 		
 		if not self.meta.get_field("item_tax_amount", parentfield=self.fname):
 			for item in self.item_doclist:
-				del item.fields["item_tax_amount"]
+				del item.get("item_tax_amount")
 				
 		if not self.meta.get_field("tax_amount_after_discount_amount", 
 				parentfield=self.other_fname):
 			for tax in self.tax_doclist:
-				del tax.fields["tax_amount_after_discount_amount"]
+				del tax.get("tax_amount_after_discount_amount")
 				
 	# update valuation rate
 	def update_valuation_rate(self, parentfield):
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index da4d939..f2e1c08 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -363,11 +363,11 @@
 	def check_stop_sales_order(self, ref_fieldname):
 		for d in self.get(self.fname):
 			if d.get(ref_fieldname):
-				status = frappe.db.get_value("Sales Order", d.fields[ref_fieldname], "status")
+				status = frappe.db.get_value("Sales Order", d.get(ref_fieldname), "status")
 				if status == "Stopped":
 					frappe.throw(self.doctype + 
 						_(" can not be created/modified against stopped Sales Order ") + 
-						d.fields[ref_fieldname])
+						d.get(ref_fieldname))
 		
 def check_active_sales_items(obj):
 	for d in obj.doclist.get({"parentfield": obj.fname}):
diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py
index 24c5db1..ba8118e 100644
--- a/erpnext/controllers/status_updater.py
+++ b/erpnext/controllers/status_updater.py
@@ -115,7 +115,7 @@
 			# get unique transactions to update
 			for d in self.doclist:
 				if d.doctype == args['source_dt'] and d.get(args["join_field"]):
-					args['name'] = d.fields[args['join_field']]
+					args['name'] = d.get(args['join_field'])
 
 					# get all qty where qty > target_field
 					item = frappe.db.sql("""select item_code, `{target_ref_field}`, 
@@ -244,7 +244,7 @@
 			if item.get(ref_fieldname) \
 				and item.get(ref_fieldname) in all_zero_amount_refdoc \
 				and item.get(ref_fieldname) not in zero_amount_refdoc:
-					zero_amount_refdoc.append(item.fields[ref_fieldname])
+					zero_amount_refdoc.append(item.get(ref_fieldname))
 		
 		if zero_amount_refdoc:
 			self.update_biling_status(zero_amount_refdoc, ref_dt, ref_fieldname)
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index a24834e..33b7fdb 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -223,11 +223,11 @@
 			make_gl_entries(gl_entries)
 			
 	def check_expense_account(self, item):
-		if item.fields.has_key("expense_account") and not item.expense_account:
+		if item.meta.has_field("expense_account") and not item.expense_account:
 			msgprint(_("""Expense/Difference account is mandatory for item: """) + item.item_code, 
 				raise_exception=1)
 				
-		if item.fields.has_key("expense_account") and not item.cost_center:
+		if item.meta.has_field("expense_account") and not item.cost_center:
 			msgprint(_("""Cost Center is mandatory for item: """) + item.item_code, 
 				raise_exception=1)
 				
diff --git a/erpnext/hr/doctype/salary_manager/salary_manager.py b/erpnext/hr/doctype/salary_manager/salary_manager.py
index ac64963..5bb0be5 100644
--- a/erpnext/hr/doctype/salary_manager/salary_manager.py
+++ b/erpnext/hr/doctype/salary_manager/salary_manager.py
@@ -51,7 +51,7 @@
 		
 	def check_mandatory(self):
 		for f in ['company', 'month', 'fiscal_year']:
-			if not self.fields[f]:
+			if not self.get(f):
 				msgprint("Please select %s to proceed" % f, raise_exception=1)
 		
 	
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.py b/erpnext/hr/doctype/salary_structure/salary_structure.py
index 09956d1..05e3268 100644
--- a/erpnext/hr/doctype/salary_structure/salary_structure.py
+++ b/erpnext/hr/doctype/salary_structure/salary_structure.py
@@ -71,7 +71,7 @@
 		
 @frappe.whitelist()
 def make_salary_slip(source_name, target_doc=None):
-	return [d.fields for d in get_mapped_doc(source_name, target_doc)]
+	return get_mapped_doc(source_name, target_doc).as_dict()
 	
 def get_mapped_doc(source_name, target_doc=None):
 	from frappe.model.mapper import get_mapped_doc
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.py b/erpnext/manufacturing/doctype/production_order/production_order.py
index fd97980..efdf2c4 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/production_order.py
@@ -168,4 +168,4 @@
 		stock_entry.to_warehouse = production_order.fg_warehouse
 		
 	stock_entry.run_method("get_items")
-	return [d.fields for d in stock_entry.doclist]
+	return stock_entry.as_dict()
diff --git a/erpnext/projects/doctype/time_log_batch/time_log_batch.py b/erpnext/projects/doctype/time_log_batch/time_log_batch.py
index a8e9be8..9405e46 100644
--- a/erpnext/projects/doctype/time_log_batch/time_log_batch.py
+++ b/erpnext/projects/doctype/time_log_batch/time_log_batch.py
@@ -21,7 +21,7 @@
 			self.total_hours += float(tl.hours or 0.0)
 
 	def update_time_log_values(self, d, tl):
-		d.fields.update({
+		d.update({
 			"hours": tl.hours,
 			"activity_type": tl.activity_type,
 			"created_by": tl.owner
diff --git a/erpnext/selling/doctype/lead/lead.py b/erpnext/selling/doctype/lead/lead.py
index 9e4ead8..4fdb8c0 100644
--- a/erpnext/selling/doctype/lead/lead.py
+++ b/erpnext/selling/doctype/lead/lead.py
@@ -98,7 +98,7 @@
 			}
 		}}, target_doc, set_missing_values, ignore_permissions=ignore_permissions)
 		
-	return [d.fields for d in doclist]
+	return doclist.as_dict()
 	
 @frappe.whitelist()
 def make_opportunity(source_name, target_doc=None):
diff --git a/erpnext/selling/doctype/opportunity/opportunity.py b/erpnext/selling/doctype/opportunity/opportunity.py
index 5dd7b8f..0ded247 100644
--- a/erpnext/selling/doctype/opportunity/opportunity.py
+++ b/erpnext/selling/doctype/opportunity/opportunity.py
@@ -161,4 +161,4 @@
 		}
 	}, target_doc, set_missing_values)
 		
-	return [d.fields for d in doclist]
\ No newline at end of file
+	return doclist.as_dict()
\ No newline at end of file
diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py
index 900d764..0f64880 100644
--- a/erpnext/selling/doctype/quotation/quotation.py
+++ b/erpnext/selling/doctype/quotation/quotation.py
@@ -136,7 +136,7 @@
 		
 	# postprocess: fetch shipping address, set missing values
 		
-	return [d.fields for d in doclist]
+	return doclist.as_dict()
 
 def _make_customer(source_name, ignore_permissions=False):
 	quotation = frappe.db.get_value("Quotation", source_name, ["lead", "order_type"])
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 0dbb78a..6db638b 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -316,7 +316,7 @@
 		}
 	}, target_doc, set_missing_values)
 	
-	return [d.fields for d in doclist]
+	return doclist.as_dict()
 
 @frappe.whitelist()
 def make_sales_invoice(source_name, target_doc=None):
@@ -356,7 +356,7 @@
 		}
 	}, target_doc, set_missing_values)
 	
-	return [d.fields for d in doclist]
+	return doclist.as_dict()
 	
 @frappe.whitelist()
 def make_maintenance_schedule(source_name, target_doc=None):
@@ -384,7 +384,7 @@
 			}
 		}, target_doc)
 	
-		return [d.fields for d in doclist]
+		return doclist.as_dict()
 	
 @frappe.whitelist()
 def make_maintenance_visit(source_name, target_doc=None):
@@ -414,4 +414,4 @@
 			}
 		}, target_doc)
 	
-		return [d.fields for d in doclist]
+		return doclist.as_dict()
diff --git a/erpnext/setup/doctype/features_setup/features_setup.py b/erpnext/setup/doctype/features_setup/features_setup.py
index 55c1552..1009b27 100644
--- a/erpnext/setup/doctype/features_setup/features_setup.py
+++ b/erpnext/setup/doctype/features_setup/features_setup.py
@@ -14,4 +14,4 @@
 		from frappe.utils import set_default
 		for key in self.fields:
 			if key not in default_fields:
-				set_default(key, self.fields[key])
+				set_default(key, self.get(key))
diff --git a/erpnext/startup/boot.py b/erpnext/startup/boot.py
index 6624b1d..973b742 100644
--- a/erpnext/startup/boot.py
+++ b/erpnext/startup/boot.py
@@ -10,7 +10,7 @@
 	import frappe
 	
 	bootinfo['custom_css'] = frappe.db.get_value('Style Settings', None, 'custom_css') or ''
-	bootinfo['website_settings'] = frappe.model.getsingle('Website Settings')
+	bootinfo['website_settings'] = frappe.get_doc('Website Settings')
 
 	if frappe.session['user']!='Guest':
 		bootinfo['letter_heads'] = get_letter_heads()
diff --git a/erpnext/stock/doctype/bin/bin.py b/erpnext/stock/doctype/bin/bin.py
index 4cc02ab..a5fd8ec 100644
--- a/erpnext/stock/doctype/bin/bin.py
+++ b/erpnext/stock/doctype/bin/bin.py
@@ -25,7 +25,7 @@
 	def validate_mandatory(self):
 		qf = ['actual_qty', 'reserved_qty', 'ordered_qty', 'indented_qty']
 		for f in qf:
-			if (not self.has_key(f)) or (not self.fields[f]): 
+			if (not self.has_key(f)) or (not self.get(f)): 
 				self.set(f, 0.0)
 		
 	def update_stock(self, args):
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index c030244..1489590 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -335,7 +335,7 @@
 		}
 	}, target_doc, update_accounts)
 	
-	return [d.fields for d in doclist]
+	return doclist.as_dict()
 	
 @frappe.whitelist()
 def make_installation_note(source_name, target_doc=None):
@@ -362,4 +362,4 @@
 		}
 	}, target_doc)
 
-	return [d.fields for d in doclist]
\ No newline at end of file
+	return doclist.as_dict()
\ No newline at end of file
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index ea43b16..4741bde 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -233,7 +233,7 @@
 			
 			field_list = ["stock_uom", "is_stock_item", "has_serial_no", "has_batch_no"]
 			new_properties = [cstr(d) for d in frappe.db.get_value("Item", newdn, field_list)]
-			if new_properties != [cstr(self.fields[fld]) for fld in field_list]:
+			if new_properties != [cstr(self.get(fld)) for fld in field_list]:
 				frappe.throw(_("To merge, following properties must be same for both items")
 					+ ": \n" + ", ".join([self.meta.get_label(fld) for fld in field_list]))
 
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index 42c6f23..3dd406f 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -249,7 +249,7 @@
 		}
 	}, target_doc, set_missing_values)
 
-	return [d.fields for d in doclist]
+	return doclist.as_dict()
 	
 @frappe.whitelist()
 def make_purchase_order_based_on_supplier(source_name, target_doc=None):
@@ -291,7 +291,7 @@
 			}
 		}, target_doc, postprocess)
 	
-	return [d.fields for d in target_doc]
+	return target_doc.as_dict()
 	
 def get_material_requests_based_on_supplier(supplier):
 	supplier_items = [d[0] for d in frappe.db.get_values("Item", 
@@ -329,7 +329,7 @@
 		}
 	}, target_doc, set_missing_values)
 
-	return [d.fields for d in doclist]
+	return doclist.as_dict()
 	
 @frappe.whitelist()
 def make_stock_entry(source_name, target_doc=None):
@@ -365,4 +365,4 @@
 		}
 	}, target_doc, set_missing_values)
 
-	return [d.fields for d in doclist]
+	return doclist.as_dict()
diff --git a/erpnext/stock/doctype/price_list/price_list.py b/erpnext/stock/doctype/price_list/price_list.py
index 7f5d7e7..fa53aba 100644
--- a/erpnext/stock/doctype/price_list/price_list.py
+++ b/erpnext/stock/doctype/price_list/price_list.py
@@ -47,7 +47,7 @@
 			b = frappe.get_doc(module + " Settings")
 			price_list_fieldname = module.lower() + "_price_list"
 
-			if self.name == b.fields[price_list_fieldname]:
+			if self.name == b.get(price_list_fieldname):
 				b.set(price_list_fieldname, None)
 				b.save()
 		
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index 950db93..9d363d3 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -216,7 +216,7 @@
 	def check_for_stopped_status(self, pc_obj):
 		check_list =[]
 		for d in self.get('purchase_receipt_details'):
-			if d.fields.has_key('prevdoc_docname') and d.prevdoc_docname and d.prevdoc_docname not in check_list:
+			if d.meta.has_field('prevdoc_docname') and d.prevdoc_docname and d.prevdoc_docname not in check_list:
 				check_list.append(d.prevdoc_docname)
 				pc_obj.check_for_stopped_status( d.prevdoc_doctype, d.prevdoc_docname)
 
@@ -323,4 +323,4 @@
 		}
 	}, target_doc, set_missing_values)
 
-	return [d.fields for d in doclist]
\ No newline at end of file
+	return doclist.as_dict()
\ No newline at end of file
diff --git a/erpnext/support/doctype/customer_issue/customer_issue.py b/erpnext/support/doctype/customer_issue/customer_issue.py
index 7e69382..f82488a 100644
--- a/erpnext/support/doctype/customer_issue/customer_issue.py
+++ b/erpnext/support/doctype/customer_issue/customer_issue.py
@@ -59,4 +59,4 @@
 			}
 		}, target_doc)
 	
-		return [d.fields for d in doclist]
\ No newline at end of file
+		return doclist.as_dict()
\ No newline at end of file
diff --git a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
index 1aa22b7..1002aba 100644
--- a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
+++ b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
@@ -295,4 +295,4 @@
 		}
 	}, target_doc)
 
-	return [d.fields for d in doclist]
\ No newline at end of file
+	return doclist.as_dict()
\ No newline at end of file
diff --git a/erpnext/utilities/doctype/address/address.py b/erpnext/utilities/doctype/address/address.py
index 9c9316c..04d54f2 100644
--- a/erpnext/utilities/doctype/address/address.py
+++ b/erpnext/utilities/doctype/address/address.py
@@ -35,7 +35,7 @@
 				if self.get(fieldname):
 					if not frappe.db.sql("""select name from `tabAddress` where is_primary_address=1
 						and `%s`=%s and name!=%s""" % (fieldname, "%s", "%s"), 
-						(self.fields[fieldname], self.name)):
+						(self.get(fieldname), self.name)):
 							self.is_primary_address = 1
 					break
 				
@@ -48,7 +48,7 @@
 		for fieldname in ["customer", "supplier", "sales_partner", "lead"]:
 			if self.get(fieldname):
 				frappe.db.sql("""update `tabAddress` set `%s`=0 where `%s`=%s and name!=%s""" %
-					(is_address_type, fieldname, "%s", "%s"), (self.fields[fieldname], self.name))
+					(is_address_type, fieldname, "%s", "%s"), (self.get(fieldname), self.name))
 				break
 
 @frappe.whitelist()
diff --git a/erpnext/utilities/transaction_base.py b/erpnext/utilities/transaction_base.py
index 57a07a7..66a1a03 100644
--- a/erpnext/utilities/transaction_base.py
+++ b/erpnext/utilities/transaction_base.py
@@ -110,8 +110,8 @@
 		if d.get(uom_field) in integer_uoms:
 			for f in qty_fields:
 				if d.get(f):
-					if cint(d.fields[f])!=d.fields[f]:
-						frappe.msgprint(_("For UOM") + " '" + d.fields[uom_field] \
+					if cint(d.get(f))!=d.get(f):
+						frappe.msgprint(_("For UOM") + " '" + d.get(uom_field) \
 							+ "': " + _("Quantity cannot be a fraction.") \
 							+ " " + _("In Row") + ": " + str(d.idx),
 							raise_exception=UOMMustBeIntegerError)
