wip
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index de04abb..596f6f4 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -23,6 +23,14 @@
 		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"):
 			return _("From {0} | {1} {2}").format(self.supplier_name, self.currency,
diff --git a/erpnext/controllers/print_settings.py b/erpnext/controllers/print_settings.py
index 5c29556..418d8eb 100644
--- a/erpnext/controllers/print_settings.py
+++ b/erpnext/controllers/print_settings.py
@@ -64,26 +64,22 @@
 	return False
 
 def get_print_settings():
+
+	# return ['comp']
 	settings = {
 		'compact_item_print': {
 			'condition': 'erpnext.controllers.print_settings.has_items_field',
-			'fieldtype': 'Check',
 			'child_field': 'items',
-			'label': 'Compact Item Print',
-			'set_template': 'erpnext.controllers.print_settings.print_settings_for_item_table'
+			# 'set_template': 'erpnext.controllers.print_settings.print_settings_for_item_table'
 		},
 		'print_uom_after_quantity': {
 			'condition': 'erpnext.controllers.print_settings.has_taxes_field',
-			'fieldtype': 'Check',
 			'child_field': 'items',
-			'label': 'Print UOM after Quantity',
-			'set_template': 'erpnext.controllers.print_settings.print_settings_for_item_table'
+			# 'set_template': 'erpnext.controllers.print_settings.print_settings_for_item_table'
 		},
 		'print_taxes_with_zero_amount': {
 			'condition': 'erpnext.controllers.print_settings.has_taxes_field',
-			'fieldtype': 'Check',
-			'label': 'Print taxes with zero amount',
-			'set_template': 'erpnext.controllers.print_settings.print_settings_for_taxes'
+			# 'set_template': 'erpnext.controllers.print_settings.print_settings_for_taxes'
 		}
 	}
 
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index ac26d3f..4c87e8c 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -20,6 +20,17 @@
 		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/templates/print_formats/includes/items.html b/erpnext/templates/print_formats/includes/items.html
new file mode 100644
index 0000000..933ae17
--- /dev/null
+++ b/erpnext/templates/print_formats/includes/items.html
@@ -0,0 +1,33 @@
+{%- 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 %}
+						<th style="width: {{ get_width(tdf) }};" class="{{ get_align_class(tdf) }}" {{ fieldmeta(df) }}>
+							{{ _(tdf.label) }}</th>
+					{% endif %}
+					{% endfor %}
+				</tr>
+			</thead>
+			<tbody>
+				{% for d in data %}
+				<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 %}
+						<td class="{{ get_align_class(tdf) }}" {{ fieldmeta(df) }}>
+						<div class="value">{{ print_value(tdf, d, doc, visible_columns) }}</div></td>
+					{% endif %}
+					{% endfor %}
+				</tr>
+				{% endfor %}
+			</tbody>
+		</table>
+	</div>
+{%- endif -%}