diff --git a/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.py b/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.py
index 56576df..50ec7d8 100644
--- a/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.py
+++ b/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.py
@@ -6,8 +6,5 @@
 
 from frappe.model.document import Document
 
-from erpnext.controllers.print_settings import print_settings_for_item_table
-
 class PurchaseInvoiceItem(Document):
-	def __setup__(self):
-		print_settings_for_item_table(self)
+	pass
diff --git a/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.py b/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.py
index 7a62f8e..a73b03a 100644
--- a/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.py
+++ b/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.py
@@ -5,8 +5,6 @@
 import frappe
 
 from frappe.model.document import Document
-from erpnext.controllers.print_settings import print_settings_for_item_table
 
 class SalesInvoiceItem(Document):
-	def __setup__(self):
-		print_settings_for_item_table(self)
+	pass
diff --git a/erpnext/accounts/print_format/sales_invoice_return/sales_invoice_return.html b/erpnext/accounts/print_format/sales_invoice_return/sales_invoice_return.html
index 1d758e8..3d5a9b1 100644
--- a/erpnext/accounts/print_format/sales_invoice_return/sales_invoice_return.html
+++ b/erpnext/accounts/print_format/sales_invoice_return/sales_invoice_return.html
@@ -1,5 +1,5 @@
 {%- from "templates/print_formats/standard_macros.html" import add_header, render_field, print_value, fieldmeta,
-	get_width, get_align_class -%}
+	get_width, get_align_class with context -%}
 
 {%- macro render_currency(df, doc) -%}
 <div class="row {% if df.bold %}important{% endif %} data-field">
@@ -63,14 +63,19 @@
 					<tr>
 						<td class="table-sr">{{ d.idx }}</td>
 						{% for tdf in visible_columns %}
-						{% if not d.flags.compact_item_print or tdf.fieldname in doc.get(df.fieldname)[0].flags.compact_item_fields %}
+						{% if not print_settings.compact_item_print or tdf.fieldname in doc.flags.compact_item_fields %}
 							<td class="{{ get_align_class(tdf) }}" {{ fieldmeta(df) }}>
 								{% if tdf.fieldname == 'qty' %}
 									<div class="value">{{ (d[tdf.fieldname])|abs }}</div></td>
 								{% elif tdf.fieldtype == 'Currency' %}
 									<div class="value">{{ frappe.utils.fmt_money((d[tdf.fieldname])|abs, currency=doc.currency) }}</div></td>
 								{% else %}
-									<div class="value">{{ print_value(tdf, d, doc, visible_columns) }}</div></td>
+									{% if doc.child_print_templates %}
+										{%- set child_templates = doc.child_print_templates.get(df.fieldname) -%}
+											<div class="value">{{ print_value(tdf, d, doc, visible_columns, child_templates) }}</div></td>
+										{% else %}
+											<div class="value">{{ print_value(tdf, d, doc, visible_columns) }}</div></td>
+									{% endif %}
 								{% endif %}
 						{% endif %}
 						{% endfor %}
diff --git a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.py b/erpnext/buying/doctype/purchase_order_item/purchase_order_item.py
index b711e36..8bdcd47 100644
--- a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.py
+++ b/erpnext/buying/doctype/purchase_order_item/purchase_order_item.py
@@ -6,11 +6,8 @@
 
 from frappe.model.document import Document
 
-from erpnext.controllers.print_settings import print_settings_for_item_table
-
 class PurchaseOrderItem(Document):
-	def __setup__(self):
-		print_settings_for_item_table(self)
+	pass
 
 def on_doctype_update():
 	frappe.db.add_index("Purchase Order Item", ["item_code", "warehouse"])
\ No newline at end of file
diff --git a/erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.py b/erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.py
index f24e5be..64dda87 100644
--- a/erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.py
+++ b/erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.py
@@ -6,8 +6,5 @@
 
 from frappe.model.document import Document
 
-from erpnext.controllers.print_settings import print_settings_for_item_table
-
 class SupplierQuotationItem(Document):
-	def __setup__(self):
-		print_settings_for_item_table(self)
+	pass
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 1665649..c016090 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -22,6 +22,7 @@
 from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_accounting_dimensions
 from erpnext.stock.get_item_details import get_item_warehouse, _get_item_tax_template, get_item_tax_map
 from erpnext.stock.doctype.packed_item.packed_item import make_packing_list
+from erpnext.controllers.print_settings import set_print_templates_for_item_table, set_print_templates_for_taxes
 
 force_item_fields = ("item_group", "brand", "stock_uom", "is_fixed_asset", "item_tax_rate", "pricing_rules")
 
@@ -29,6 +30,19 @@
 	def __init__(self, *args, **kwargs):
 		super(AccountsController, self).__init__(*args, **kwargs)
 
+	def get_print_settings(self):
+		print_setting_fields = []
+		items_field = self.meta.get_field('items')
+
+		if items_field and items_field.fieldtype == 'Table':
+			print_setting_fields += ['compact_item_print', 'print_uom_after_quantity']
+
+		taxes_field = self.meta.get_field('taxes')
+		if taxes_field and taxes_field.fieldtype == 'Table':
+			print_setting_fields += ['print_taxes_with_zero_amount']
+
+		return print_setting_fields
+
 	@property
 	def company_currency(self):
 		if not hasattr(self, "__company_currency"):
@@ -138,7 +152,7 @@
 		elif self.doctype in ("Quotation", "Purchase Order", "Sales Order"):
 			self.validate_non_invoice_documents_schedule()
 
-	def before_print(self):
+	def before_print(self, settings=None):
 		if self.doctype in ['Purchase Order', 'Sales Order', 'Sales Invoice', 'Purchase Invoice',
 							'Supplier Quotation', 'Purchase Receipt', 'Delivery Note', 'Quotation']:
 			if self.get("group_same_items"):
@@ -151,6 +165,9 @@
 			else:
 				df.set("print_hide", 1)
 
+		set_print_templates_for_item_table(self, settings)
+		set_print_templates_for_taxes(self, settings)
+
 	def calculate_paid_amount(self):
 		if hasattr(self, "is_pos") or hasattr(self, "is_paid"):
 			is_paid = self.get("is_pos") or self.get("is_paid")
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index 596f6f4..353bc09 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -13,23 +13,11 @@
 from erpnext.stock.doctype.stock_entry.stock_entry import get_used_alternative_items
 from erpnext.stock.doctype.serial_no.serial_no import get_auto_serial_nos, auto_make_serial_nos, get_serial_nos
 from frappe.contacts.doctype.address.address import get_address_display
-from erpnext.controllers.print_settings import print_settings_for_taxes
 
 from erpnext.accounts.doctype.budget.budget import validate_expense_against_budget
 from erpnext.controllers.stock_controller import StockController
 
 class BuyingController(StockController):
-	def __setup__(self):
-		if hasattr(self, "taxes"):
-			print_settings_for_taxes(self)
-
-	def before_print(self):
-		pass
-
-	def get_print_settings(self):
-		items_field = self.meta.get_field('items')
-		if items_field and items_field.fieldtype == 'Table':
-			return ['compact_item_print', 'print_uom_after_quantity']
 
 	def get_feed(self):
 		if self.get("supplier_name"):
diff --git a/erpnext/controllers/print_settings.py b/erpnext/controllers/print_settings.py
index 418d8eb..e08c400 100644
--- a/erpnext/controllers/print_settings.py
+++ b/erpnext/controllers/print_settings.py
@@ -5,41 +5,33 @@
 import frappe
 from frappe.utils import cint
 
-def print_settings_for_item_table(doc, settings=None):
+def set_print_templates_for_item_table(doc, settings):
 	doc.print_templates = {
-		"qty": "templates/print_formats/includes/item_table_qty.html"
+		"items": "templates/print_formats/includes/items.html",
 	}
-	doc.hide_in_print_layout = ["uom", "stock_uom"]
 
-	setting_fields = ['compact_item_print', 'print_uom_after_quantity']
-	set_doc_flags_from_settings(doc, setting_fields, settings)
+	doc.child_print_templates = {
+		"items": {
+			"qty": "templates/print_formats/includes/item_table_qty.html",
+		}
+	}
 
-	if doc.flags.compact_item_print:
-		doc.print_templates["description"] = "templates/print_formats/includes/item_table_description.html"
-		doc.flags.compact_item_fields = ["description", "qty", "rate", "amount"]
+	if doc.meta.get_field("items"):
+		doc.meta.get_field("items").hide_in_print_layout = ["uom", "stock_uom"]
+
+	doc.flags.compact_item_fields = ["description", "qty", "rate", "amount"]
+
+	if settings.compact_item_print:
+		doc.child_print_templates["items"]["description"] =\
+			"templates/print_formats/includes/item_table_description.html"
 		doc.flags.format_columns = format_columns
 
-def print_settings_for_taxes(doc, settings=None):
-
-	set_doc_flags_from_settings(doc, ['print_taxes_with_zero_amount'], settings)
-
+def set_print_templates_for_taxes(doc, settings):
 	doc.flags.show_inclusive_tax_in_print = doc.is_inclusive_tax()
-
-	doc.print_templates = {
+	doc.print_templates.update({
 		"total": "templates/print_formats/includes/total.html",
 		"taxes": "templates/print_formats/includes/taxes.html"
-	}
-
-def set_doc_flags_from_settings(doc, fields, settings=None):
-	if not settings: settings = {}
-
-	print_settings = frappe.get_single('Print Settings')
-
-	for field in fields:
-		if field in settings:
-			doc.flags[field] = settings.get(field)
-		else:
-			doc.flags[field] = print_settings.get(field)
+	})
 
 def format_columns(display_columns, compact_fields):
 	compact_fields = compact_fields + ["image", "item_code", "item_name"]
@@ -48,39 +40,3 @@
 		if column not in compact_fields:
 			final_columns.append(column)
 	return final_columns
-
-def has_items_field(doc):
-	meta = frappe.get_meta(doc.doctype)
-	items_field = meta.get_field('items')
-	if items_field and items_field.fieldtype == 'Table':
-		return True
-	return False
-
-def has_taxes_field(doc):
-	meta = frappe.get_meta(doc.doctype)
-	taxes_field = meta.get_field('taxes')
-	if taxes_field and taxes_field.fieldtype == 'Table':
-		return True
-	return False
-
-def get_print_settings():
-
-	# return ['comp']
-	settings = {
-		'compact_item_print': {
-			'condition': 'erpnext.controllers.print_settings.has_items_field',
-			'child_field': 'items',
-			# 'set_template': 'erpnext.controllers.print_settings.print_settings_for_item_table'
-		},
-		'print_uom_after_quantity': {
-			'condition': 'erpnext.controllers.print_settings.has_taxes_field',
-			'child_field': 'items',
-			# 'set_template': 'erpnext.controllers.print_settings.print_settings_for_item_table'
-		},
-		'print_taxes_with_zero_amount': {
-			'condition': 'erpnext.controllers.print_settings.has_taxes_field',
-			# 'set_template': 'erpnext.controllers.print_settings.print_settings_for_taxes'
-		}
-	}
-
-	return settings
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index 4c87e8c..de3cda5 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -11,26 +11,10 @@
 from erpnext.stock.doctype.item.item import set_item_default
 from frappe.contacts.doctype.address.address import get_address_display
 from erpnext.controllers.accounts_controller import get_taxes_and_charges
-from erpnext.controllers.print_settings import print_settings_for_taxes
 
 from erpnext.controllers.stock_controller import StockController
 
 class SellingController(StockController):
-	def __setup__(self):
-		if hasattr(self, "taxes"):
-			print_settings_for_taxes(self)
-
-	def before_print(self):
-		self.print_templates = {
-			"items": "templates/print_formats/includes/items.html",
-		}
-		self.flags.compact_item_fields = ['description']
-
-	def get_print_settings(self):
-		items_field = self.meta.get_field('items')
-		if items_field and items_field.fieldtype == 'Table':
-			return ['compact_item_print', 'print_uom_after_quantity']
-
 
 	def get_feed(self):
 		return _("To {0} | {1} {2}").format(self.customer_name, self.currency,
diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py
index 5bbd29c..24d0dc1 100644
--- a/erpnext/projects/doctype/project/project.py
+++ b/erpnext/projects/doctype/project/project.py
@@ -26,7 +26,7 @@
 
 		self.update_costing()
 
-	def before_print(self):
+	def before_print(self, settings=None):
 		self.onload()
 
 
diff --git a/erpnext/selling/doctype/quotation_item/quotation_item.py b/erpnext/selling/doctype/quotation_item/quotation_item.py
index 966b542..7384871 100644
--- a/erpnext/selling/doctype/quotation_item/quotation_item.py
+++ b/erpnext/selling/doctype/quotation_item/quotation_item.py
@@ -5,8 +5,6 @@
 import frappe
 
 from frappe.model.document import Document
-from erpnext.controllers.print_settings import print_settings_for_item_table
 
 class QuotationItem(Document):
-	def __setup__(self):
-		print_settings_for_item_table(self)
+	pass
diff --git a/erpnext/selling/doctype/sales_order_item/sales_order_item.py b/erpnext/selling/doctype/sales_order_item/sales_order_item.py
index 4a87a0c..27f303d 100644
--- a/erpnext/selling/doctype/sales_order_item/sales_order_item.py
+++ b/erpnext/selling/doctype/sales_order_item/sales_order_item.py
@@ -5,11 +5,9 @@
 import frappe
 
 from frappe.model.document import Document
-from erpnext.controllers.print_settings import print_settings_for_item_table
 
 class SalesOrderItem(Document):
-	def __setup__(self):
-		print_settings_for_item_table(self)
+	pass
 
 def on_doctype_update():
 	frappe.db.add_index("Sales Order Item", ["item_code", "warehouse"])
\ No newline at end of file
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index d04cf78..1994dfd 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -71,7 +71,7 @@
 					where name=`tabSales Invoice Item`.parent and is_return=1 and update_stock=1)"""
 			})
 
-	def before_print(self):
+	def before_print(self, settings=None):
 		def toggle_print_hide(meta, fieldname):
 			df = meta.get_field(fieldname)
 			if self.get("print_without_amount"):
diff --git a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.py b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.py
index aaca802..5030595 100644
--- a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.py
+++ b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.py
@@ -5,8 +5,6 @@
 import frappe
 
 from frappe.model.document import Document
-from erpnext.controllers.print_settings import print_settings_for_item_table
 
 class DeliveryNoteItem(Document):
-	def __setup__(self):
-		print_settings_for_item_table(self)
+	pass
\ No newline at end of file
diff --git a/erpnext/stock/doctype/material_request_item/material_request_item.py b/erpnext/stock/doctype/material_request_item/material_request_item.py
index 6c6ecfe..16f007f 100644
--- a/erpnext/stock/doctype/material_request_item/material_request_item.py
+++ b/erpnext/stock/doctype/material_request_item/material_request_item.py
@@ -6,12 +6,10 @@
 from __future__ import unicode_literals
 import frappe
 
-from erpnext.controllers.print_settings import print_settings_for_item_table
 from frappe.model.document import Document
 
 class MaterialRequestItem(Document):
-	def __setup__(self):
-		print_settings_for_item_table(self)
+	pass
 
 def on_doctype_update():
 	frappe.db.add_index("Material Request Item", ["item_code", "warehouse"])
\ No newline at end of file
diff --git a/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.py b/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.py
index 679bd1e..b79bb5d 100644
--- a/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.py
+++ b/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.py
@@ -5,8 +5,6 @@
 import frappe
 
 from frappe.model.document import Document
-from erpnext.controllers.print_settings import print_settings_for_item_table
 
 class PurchaseReceiptItem(Document):
-	def __setup__(self):
-		print_settings_for_item_table(self)
+	pass
diff --git a/erpnext/templates/print_formats/includes/item_table_description.html b/erpnext/templates/print_formats/includes/item_table_description.html
index 070cca5..ed46c9e 100644
--- a/erpnext/templates/print_formats/includes/item_table_description.html
+++ b/erpnext/templates/print_formats/includes/item_table_description.html
@@ -1,7 +1,7 @@
-{%- set compact = doc.flags.compact_item_print -%}
-{%- set compact_fields = doc.flags.compact_item_fields -%}
+{%- set compact = print_settings.compact_item_print -%}
+{%- set compact_fields = parent_doc.flags.compact_item_fields -%}
 {%- set display_columns = visible_columns|map(attribute="fieldname")| list -%}
-{%- set columns = doc.flags.format_columns(display_columns, compact_fields) -%}
+{%- set columns = parent_doc.flags.format_columns(display_columns, compact_fields) -%}
 
 {% if doc.in_format_data("image") and doc.get("image") and "image" in display_columns -%}
 <div class="pull-left" style="max-width: 40%; margin-right: 10px;">
diff --git a/erpnext/templates/print_formats/includes/item_table_qty.html b/erpnext/templates/print_formats/includes/item_table_qty.html
index 1d992dc..8e68f1c 100644
--- a/erpnext/templates/print_formats/includes/item_table_qty.html
+++ b/erpnext/templates/print_formats/includes/item_table_qty.html
@@ -1,4 +1,4 @@
-{% set qty_first=doc.flags.print_uom_after_quantity %}
+{% set qty_first=print_settings.print_uom_after_quantity %}
 {% if qty_first %}
 	{{ doc.get_formatted("qty", doc) }}
 	{% if (doc.uom and not doc.is_print_hide("uom")) %} {{ _(doc.uom) }}
diff --git a/erpnext/templates/print_formats/includes/items.html b/erpnext/templates/print_formats/includes/items.html
index 933ae17..55598e7 100644
--- a/erpnext/templates/print_formats/includes/items.html
+++ b/erpnext/templates/print_formats/includes/items.html
@@ -1,14 +1,13 @@
 {%- if data -%}
 	{%- set visible_columns = get_visible_columns(doc.get(df.fieldname),
 		table_meta, df) -%}
-
 	<div {{ fieldmeta(df) }}>
 		<table class="table table-bordered table-condensed">
 			<thead>
 				<tr>
 					<th style="width: 40px" class="table-sr">{{ _("Sr") }}</th>
 					{% for tdf in visible_columns %}
-					{% if (data and not print_settings.compact_item_print) or tdf.fieldname in doc.get(df.fieldname)[0].flags.compact_item_fields %}
+					{% if (data and not print_settings.compact_item_print) or tdf.fieldname in doc.flags.compact_item_fields %}
 						<th style="width: {{ get_width(tdf) }};" class="{{ get_align_class(tdf) }}" {{ fieldmeta(df) }}>
 							{{ _(tdf.label) }}</th>
 					{% endif %}
@@ -20,9 +19,14 @@
 				<tr>
 					<td class="table-sr">{{ d.idx }}</td>
 					{% for tdf in visible_columns %}
-					{% if not doc.get(df.fieldname)[0].flags.compact_item_print or tdf.fieldname in doc.get(df.fieldname)[0].flags.compact_item_fields %}
+					{% if not print_settings.compact_item_print or tdf.fieldname in doc.flags.compact_item_fields %}
 						<td class="{{ get_align_class(tdf) }}" {{ fieldmeta(df) }}>
-						<div class="value">{{ print_value(tdf, d, doc, visible_columns) }}</div></td>
+						{% if doc.child_print_templates %}
+							{%- set child_templates = doc.child_print_templates.get(df.fieldname) %}
+							<div class="value">{{ print_value(tdf, d, doc, visible_columns, child_templates) }}</div></td>
+						{% else %}
+							<div class="value">{{ print_value(tdf, d, doc, visible_columns) }}</div></td>
+						{% endif %}
 					{% endif %}
 					{% endfor %}
 				</tr>
diff --git a/erpnext/templates/print_formats/includes/taxes.html b/erpnext/templates/print_formats/includes/taxes.html
index 6e984f3..334ac78 100644
--- a/erpnext/templates/print_formats/includes/taxes.html
+++ b/erpnext/templates/print_formats/includes/taxes.html
@@ -17,7 +17,7 @@
 			{{ render_discount_amount(doc) }}
 		{%- endif -%}
 		{%- for charge in data -%}
-			{%- if (charge.tax_amount or doc.flags.print_taxes_with_zero_amount) and (not charge.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}
+			{%- if (charge.tax_amount or print_settings.print_taxes_with_zero_amount) and (not charge.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}
 			<div class="row">
 				<div class="col-xs-5 {%- if doc.align_labels_right %} text-right{%- endif -%}">
 					<label>{{ charge.get_formatted("description") }}</label></div>
