diff --git a/erpnext/domains/retail.py b/erpnext/domains/retail.py
index 1bfd65f..897c4d9 100644
--- a/erpnext/domains/retail.py
+++ b/erpnext/domains/retail.py
@@ -10,8 +10,7 @@
 		'ToDo'
 	],
 	'properties': [
-		{'doctype': 'Item', 'fieldname': 'manufacturing', 'property': 'hidden', 'value': 1},
-		{'doctype': 'Customer', 'fieldname': 'credit_limit_section', 'property': 'hidden', 'value': 1},
+		{'doctype': 'Item', 'fieldname': 'manufacturing', 'property': 'hidden', 'value': 1}
 	],
 	'set_value': [
 		['Stock Settings', None, 'show_barcode_field', 1]
diff --git a/erpnext/selling/doctype/customer/customer.json b/erpnext/selling/doctype/customer/customer.json
index f97cf6f..fd9d0a1 100644
--- a/erpnext/selling/doctype/customer/customer.json
+++ b/erpnext/selling/doctype/customer/customer.json
@@ -797,7 +797,7 @@
    "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Credit Limit", 
+   "label": "Credit Limit and Payment Terms", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -810,7 +810,7 @@
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0, 
-   "width": "50%"
+   "width": ""
   }, 
   {
    "allow_bulk_edit": 0, 
@@ -1202,7 +1202,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2017-11-23 18:59:26.897370", 
+ "modified": "2017-11-23 17:41:23.243421", 
  "modified_by": "Administrator", 
  "module": "Selling", 
  "name": "Customer", 
diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py
index d53ea95..a24f4a3 100644
--- a/erpnext/selling/doctype/customer/customer.py
+++ b/erpnext/selling/doctype/customer/customer.py
@@ -170,37 +170,30 @@
 			throw(_("Please contact to the user who have Sales Master Manager {0} role")
 				.format(" / " + credit_controller if credit_controller else ""))
 
-# get_customer_outstanding is a very generic function which is invoked from many places. A third non mandatory argument is added to change its behaviour based on caller .
-def get_customer_outstanding(customer, company, ignore_bypass_credit_limit_check_at_sales_order=None):
+def get_customer_outstanding(customer, company, ignore_outstanding_sales_order=False):
 	# Outstanding based on GL Entries
-	outstanding_based_on_gle = frappe.db.sql("""select sum(debit) - sum(credit)
-		from `tabGL Entry` where party_type = 'Customer' and party = %s and company=%s""", (customer, company))
+	outstanding_based_on_gle = frappe.db.sql("""
+		select sum(debit) - sum(credit)
+		from `tabGL Entry`
+		where party_type = 'Customer' and party = %s and company=%s""", (customer, company))
 
 	outstanding_based_on_gle = flt(outstanding_based_on_gle[0][0]) if outstanding_based_on_gle else 0
 
 	# Outstanding based on Sales Order
-	outstanding_based_on_so = frappe.db.sql("""
-		select sum(base_grand_total*(100 - per_billed)/100)
-		from `tabSales Order`
-		where customer=%s and docstatus = 1 and company=%s
-		and per_billed < 100 and status != 'Closed'""", (customer, company))
+	outstanding_based_on_so = 0.0
 
-	outstanding_based_on_so = flt(outstanding_based_on_so[0][0]) if outstanding_based_on_so else 0.0
-
-	# Since the credit limit check is bypassed at sales order level, when customer credit balance report is run we need to treat sales order with status 'To Deliver and Bill' as not outstanding
-	outstanding_based_on_bypassed_so = 0.0
-	bypass_credit_limit_check_at_sales_order =cint(frappe.db.get_value("Customer", customer, "bypass_credit_limit_check_at_sales_order"))
-	if bypass_credit_limit_check_at_sales_order == 1 and ignore_bypass_credit_limit_check_at_sales_order==False:
-		outstanding_based_on_bypassed_so = frappe.db.sql("""
-			select (sum(base_grand_total))
+	# if credit limit check is bypassed at sales order level,
+	# we should not consider outstanding Sales Orders, when customer credit balance report is run
+	if not ignore_outstanding_sales_order:
+		outstanding_based_on_so = frappe.db.sql("""
+			select sum(base_grand_total*(100 - per_billed)/100)
 			from `tabSales Order`
 			where customer=%s and docstatus = 1 and company=%s
-			and advance_paid = 0
-			and per_billed < 100 and status ='To Deliver and Bill'""", (customer, company))
+			and per_billed < 100 and status != 'Closed'""", (customer, company))
 
-		outstanding_based_on_bypassed_so = flt(outstanding_based_on_bypassed_so[0][0]) if outstanding_based_on_bypassed_so else 0.0
+		outstanding_based_on_so = flt(outstanding_based_on_so[0][0]) if outstanding_based_on_so else 0.0
 
-	# Outstanding based on Delivery Note
+	# Outstanding based on Delivery Note, which are not created against Sales Order
 	unmarked_delivery_note_items = frappe.db.sql("""select
 			dn_item.name, dn_item.amount, dn.base_net_total, dn.base_grand_total
 		from `tabDelivery Note` dn, `tabDelivery Note Item` dn_item
@@ -221,15 +214,16 @@
 		if flt(dn_item.amount) > flt(si_amount) and dn_item.base_net_total:
 			outstanding_based_on_dn += ((flt(dn_item.amount) - flt(si_amount)) \
 				/ dn_item.base_net_total) * dn_item.base_grand_total
-#In return substract the bypassed SO values
-	return outstanding_based_on_gle + outstanding_based_on_so + outstanding_based_on_dn - outstanding_based_on_bypassed_so
+
+	return outstanding_based_on_gle + outstanding_based_on_so + outstanding_based_on_dn
 
 
 def get_credit_limit(customer, company):
 	credit_limit = None
 
 	if customer:
-		credit_limit, customer_group = frappe.db.get_value("Customer", customer, ["credit_limit", "customer_group"])
+		credit_limit, customer_group = frappe.db.get_value("Customer",
+			customer, ["credit_limit", "customer_group"])
 
 		if not credit_limit:
 			credit_limit = frappe.db.get_value("Customer Group", customer_group, "credit_limit")
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 7425cbd..c9e7733 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -14,6 +14,7 @@
 from frappe.contacts.doctype.address.address import get_company_address
 from erpnext.controllers.selling_controller import SellingController
 from erpnext.accounts.doctype.subscription.subscription import get_next_schedule_date
+from erpnext.selling.doctype.customer.customer import check_credit_limit
 
 form_grid_templates = {
 	"items": "templates/form_grid/item_grid.html"
@@ -188,52 +189,68 @@
 	def update_project(self):
 		project_list = []
 		if self.project:
-				project = frappe.get_doc("Project", self.project)
-				project.flags.dont_sync_tasks = True
-				project.update_sales_costing()
-				project.save()
-				project_list.append(self.project)
+			project = frappe.get_doc("Project", self.project)
+			project.flags.dont_sync_tasks = True
+			project.update_sales_costing()
+			project.save()
+			project_list.append(self.project)
 
 	def check_credit_limit(self):
-		from erpnext.selling.doctype.customer.customer import check_credit_limit
-		# bypass credit limit check is set to true (1) at sales order level, then we need not to check credit limit and vise versa
-		bypass_credit_limit_check_at_sales_order = cint(frappe.db.get_value("Customer", self.customer, "bypass_credit_limit_check_at_sales_order"))
-		if bypass_credit_limit_check_at_sales_order == 0:
-			check_credit_limit(self.customer, self.company)		
+		# if bypass credit limit check is set to true (1) at sales order level,
+		# then we need not to check credit limit and vise versa
+		if not cint(frappe.db.get_value("Customer", self.customer, "bypass_credit_limit_check_at_sales_order")):
+			check_credit_limit(self.customer, self.company)
 
 	def check_nextdoc_docstatus(self):
 		# Checks Delivery Note
-		submit_dn = frappe.db.sql_list("""select t1.name from `tabDelivery Note` t1,`tabDelivery Note Item` t2
+		submit_dn = frappe.db.sql_list("""
+			select t1.name
+			from `tabDelivery Note` t1,`tabDelivery Note Item` t2
 			where t1.name = t2.parent and t2.against_sales_order = %s and t1.docstatus = 1""", self.name)
+
 		if submit_dn:
-			frappe.throw(_("Delivery Notes {0} must be cancelled before cancelling this Sales Order").format(comma_and(submit_dn)))
+			frappe.throw(_("Delivery Notes {0} must be cancelled before cancelling this Sales Order")
+				.format(comma_and(submit_dn)))
 
 		# Checks Sales Invoice
 		submit_rv = frappe.db.sql_list("""select t1.name
 			from `tabSales Invoice` t1,`tabSales Invoice Item` t2
 			where t1.name = t2.parent and t2.sales_order = %s and t1.docstatus = 1""",
 			self.name)
+
 		if submit_rv:
-			frappe.throw(_("Sales Invoice {0} must be cancelled before cancelling this Sales Order").format(comma_and(submit_rv)))
+			frappe.throw(_("Sales Invoice {0} must be cancelled before cancelling this Sales Order")
+				.format(comma_and(submit_rv)))
 
 		#check maintenance schedule
-		submit_ms = frappe.db.sql_list("""select t1.name from `tabMaintenance Schedule` t1,
-			`tabMaintenance Schedule Item` t2
+		submit_ms = frappe.db.sql_list("""
+			select t1.name
+			from `tabMaintenance Schedule` t1, `tabMaintenance Schedule Item` t2
 			where t2.parent=t1.name and t2.sales_order = %s and t1.docstatus = 1""", self.name)
+
 		if submit_ms:
-			frappe.throw(_("Maintenance Schedule {0} must be cancelled before cancelling this Sales Order").format(comma_and(submit_ms)))
+			frappe.throw(_("Maintenance Schedule {0} must be cancelled before cancelling this Sales Order")
+				.format(comma_and(submit_ms)))
 
 		# check maintenance visit
-		submit_mv = frappe.db.sql_list("""select t1.name from `tabMaintenance Visit` t1, `tabMaintenance Visit Purpose` t2
+		submit_mv = frappe.db.sql_list("""
+			select t1.name
+			from `tabMaintenance Visit` t1, `tabMaintenance Visit Purpose` t2
 			where t2.parent=t1.name and t2.prevdoc_docname = %s and t1.docstatus = 1""",self.name)
+
 		if submit_mv:
-			frappe.throw(_("Maintenance Visit {0} must be cancelled before cancelling this Sales Order").format(comma_and(submit_mv)))
+			frappe.throw(_("Maintenance Visit {0} must be cancelled before cancelling this Sales Order")
+				.format(comma_and(submit_mv)))
 
 		# check production order
-		pro_order = frappe.db.sql_list("""select name from `tabProduction Order`
+		pro_order = frappe.db.sql_list("""
+			select name
+			from `tabProduction Order`
 			where sales_order = %s and docstatus = 1""", self.name)
+
 		if pro_order:
-			frappe.throw(_("Production Order {0} must be cancelled before cancelling this Sales Order").format(comma_and(pro_order)))
+			frappe.throw(_("Production Order {0} must be cancelled before cancelling this Sales Order")
+				.format(comma_and(pro_order)))
 
 	def check_modified_date(self):
 		mod_db = frappe.db.get_value("Sales Order", self.name, "modified")
@@ -466,10 +483,10 @@
 				target.po_no = ", ".join(list(set(target_po_no))) if len(target_po_no) > 1 else target_po_no[0]
 			else:
 				target.po_no = source.po_no
-# Since the credit limit check is bypassed at sales order level, we need to check it at delivery note
-		bypass_credit_limit_check_at_sales_order = cint(frappe.db.get_value("Customer", source.customer, "bypass_credit_limit_check_at_sales_order"))
-		if bypass_credit_limit_check_at_sales_order == 1:
-			from erpnext.selling.doctype.customer.customer import check_credit_limit
+
+		# Since the credit limit check is bypassed at sales order level,
+		# we need to check it at delivery note
+		if cint(frappe.db.get_value("Customer", source.customer, "bypass_credit_limit_check_at_sales_order")):
 			check_credit_limit(source.customer, source.company)
 
 		target.ignore_pricing_rule = 1
@@ -535,10 +552,9 @@
 		target.flags.ignore_permissions = True
 		target.run_method("set_missing_values")
 		target.run_method("calculate_taxes_and_totals")
-	# Since the credit limit check is bypassed at sales order level, we need to check it at sales invoice
-		bypass_credit_limit_check_at_sales_order = cint(frappe.db.get_value("Customer", source.customer, "bypass_credit_limit_check_at_sales_order"))
-		if bypass_credit_limit_check_at_sales_order == 1:
-			from erpnext.selling.doctype.customer.customer import check_credit_limit
+
+		# Since the credit limit check is bypassed at sales order level, we need to check it at sales invoice
+		if cint(frappe.db.get_value("Customer", source.customer, "bypass_credit_limit_check_at_sales_order")):
 			check_credit_limit(source.customer, source.company)
 
 		# set company address
diff --git a/erpnext/selling/report/customer_credit_balance/customer_credit_balance.py b/erpnext/selling/report/customer_credit_balance/customer_credit_balance.py
index 194d12c..ffa4180 100644
--- a/erpnext/selling/report/customer_credit_balance/customer_credit_balance.py
+++ b/erpnext/selling/report/customer_credit_balance/customer_credit_balance.py
@@ -19,15 +19,19 @@
 
 	for d in customer_list:
 		row = []
-		#3rd argument has flag
-		outstanding_amt = get_customer_outstanding(d.name, filters.get("company"),False)
+
+		outstanding_amt = get_customer_outstanding(d.name, filters.get("company"),
+			ignore_outstanding_sales_order=d.bypass_credit_limit_check_at_sales_order)
+
 		credit_limit = get_credit_limit(d.name, filters.get("company"))		
+
 		bal = flt(credit_limit) - flt(outstanding_amt)
-		#Value of new col is passed
+
 		if customer_naming_type == "Naming Series":
-			row = [d.name, d.customer_name, d.bypass_credit_limit_check_at_sales_order, credit_limit, outstanding_amt, bal]
+			row = [d.name, d.customer_name, credit_limit, outstanding_amt, bal,
+				d.bypass_credit_limit_check_at_sales_order]
 		else:
-			row = [d.name, d.bypass_credit_limit_check_at_sales_order, credit_limit, outstanding_amt, bal]
+			row = [d.name, credit_limit, outstanding_amt, bal, d.bypass_credit_limit_check_at_sales_order]
 
 		if credit_limit:
 			data.append(row)
@@ -36,9 +40,11 @@
 
 def get_columns(customer_naming_type):
 	columns = [
-		# New column is added to reflect status of bypass credit limit check flag of sales order
-		_("Customer") + ":Link/Customer:120", _("Bypass credit check at Sales Order ") + ":Check:30", _("Credit Limit") + ":Currency:120",
-		_("Outstanding Amt") + ":Currency:100", _("Credit Balance") + ":Currency:120"
+		_("Customer") + ":Link/Customer:120",
+		_("Credit Limit") + ":Currency:120",
+		_("Outstanding Amt") + ":Currency:100",
+		_("Credit Balance") + ":Currency:120",
+		_("Bypass credit check at Sales Order ") + ":Check:240"
 	]
 
 	if customer_naming_type == "Naming Series":
@@ -52,6 +58,6 @@
 	if filters.get("customer"):
 		conditions += " where name = %(customer)s"
 
-	# Return column bypass credit limit check at sales order level	
-	return frappe.db.sql("""select name, customer_name, bypass_credit_limit_check_at_sales_order from `tabCustomer` %s""" 
-		% conditions, filters, as_dict=1)
\ No newline at end of file
+	return frappe.db.sql("""select name, customer_name,
+		bypass_credit_limit_check_at_sales_order from `tabCustomer` %s
+	""" % conditions, filters, as_dict=1)
\ No newline at end of file
