Merge branch 'master' of github.com:webnotes/erpnext

Conflicts:
	index.html
diff --git a/erpnext/patches/install_print_formats.py b/erpnext/patches/install_print_formats.py
new file mode 100644
index 0000000..af9756b
--- /dev/null
+++ b/erpnext/patches/install_print_formats.py
@@ -0,0 +1,80 @@
+import os, sys
+
+path_to_file = os.sep.join(os.path.abspath(__file__).split(os.sep)[:-1] + ['print_formats'])
+
+def prepare_pf_dict(args_list):
+	"""
+
+	"""
+	pf_list = []
+	for a in args_list:
+		for pf_type in ['Classic', 'Modern', 'Spartan']:
+			pf = {}
+			pf['name'] = " ".join([a['name'], pf_type])
+			pf['file'] = os.sep.join([path_to_file, "".join(pf['name'].split(" ")) + ".html"])
+			pf['module'] = a['module']
+			pf['doc_type'] = a['doc_type']
+			pf['standard'] = 'Yes'
+			pf_list += [pf]
+	return pf_list
+
+
+pf_to_install = prepare_pf_dict([
+	{
+		'name' : 'Sales Invoice',
+		'doc_type' : 'Receivable Voucher',
+		'module' : 'Accounts'
+	},
+	{
+		'name' : 'Sales Order',
+		'doc_type' : 'Sales Order',
+		'module' : 'Selling'
+	},
+	{
+		'name' : 'Quotation',
+		'doc_type' : 'Quotation',
+		'module' : 'Selling'
+	},
+	{
+		'name' : 'Delivery Note',
+		'doc_type' : 'Delivery Note',
+		'module' : 'Stock'
+	},
+	{
+		'name' : 'Purchase Order',
+		'doc_type' : 'Purchase Order',
+		'module' : 'Buying'
+	}
+])
+
+def execute():
+	"""
+		Install print formats
+	"""
+	global pf_to_install
+	print pf_to_install
+	for pf in pf_to_install:
+		install_print_format(pf)
+		print "Installed PF: " + pf['name']
+
+
+def install_print_format(args):
+	"""
+		Installs print format
+		args is a dict consisting of following keys:
+			* name
+			* module
+			* doctype
+			* standard = "Yes"/"No"
+			* file
+	"""
+	from webnotes.model.doc import Document
+	d = Document('Print Format')
+	d.name = args.name
+	f = open(args.file)
+	d.html = f.read()
+	f.close()
+	d.module = args.module
+	d.doc_type = args.doc_type
+	d.standard = args.standard
+	d.save(1)
diff --git a/erpnext/patches/print_formats/DeliveryNoteClassic.html b/erpnext/patches/print_formats/DeliveryNoteClassic.html
new file mode 100644
index 0000000..0db80b9
--- /dev/null
+++ b/erpnext/patches/print_formats/DeliveryNoteClassic.html
@@ -0,0 +1,279 @@
+<!--
+	Sample Print Format for ERPNext
+	Please use at your own discretion
+	For suggestions and contributions:
+		https://github.com/webnotes/erpnext-print-templates
+
+	Freely usable under MIT license
+-->
+
+<!-- Style Settings -->
+<style>
+	/*
+		common style for whole page
+		This should include:
+		+ page size related settings
+		+ font family settings
+		+ line spacing settings
+	*/
+	@media screen {
+		body {
+			width: 8.3in;
+		}
+	}
+
+	html, body, div, span, td {
+		font-family: "Georgia", serif;
+		font-size: 12px;
+	}
+
+	body {
+		padding: 10px;
+		margin: auto;
+		font-size: 12px;
+		line-height: 150%;
+	}
+
+	.common {
+		font-family: "Georgia", serif !important;
+		font-size: 12px;
+		padding: 10px 0px;
+	}
+
+	table {
+		border-collapse: collapse;
+		width: 100%;
+		vertical-align: top;
+	}
+
+	table td {
+		padding: 2px 0px;
+	}
+	
+	table h1, h2, h3, h4, h5, h6 {
+		padding: 0px;
+		margin: 0px;
+	}
+
+	table.header-table td {
+		vertical-align: top;
+	}
+
+	table.header-table thead {
+		border-bottom: 1px solid black;
+	}
+
+	table.header-table h3 {
+		color: gray;
+	}
+
+	table.header-table thead td {
+		padding: 5px 0px;
+	}
+
+	div.page-body table td:nth-child(6),
+	div.page-body table td:nth-child(7) {
+		text-align: right;
+	}
+
+	table.footer-table td {
+		vertical-align: top;
+	}
+
+	table.footer-table td table td:nth-child(2),
+	table.footer-table td table td:nth-child(3) {
+		text-align: right;
+	}
+</style>
+
+
+<!-- Javascript -->
+<script>
+	si_std = {
+		print_item_table: function() {
+			var table = print_table(
+				'Delivery Note',
+				doc.name,
+				'delivery_note_details',
+				'Delivery Note Detail',
+				[// Here specify the table columns to be displayed
+					'SR', 'item_code', 'item_name', 'description', 'qty', 'stock_uom',
+					'basic_rate', 'amount'
+				],
+				[// Here specify the labels of column headings
+					'Sr', 'Item Code', 'Item Name', 'Description', 'Qty',
+					'UoM', 'Basic Rate', 'Amount'
+				],
+				[// Here specify the column widths
+					'3%', '10%', '15%', '32%', '5%',
+					'5%', '15%', '15%'
+				],
+				null,
+				null,
+				{
+					'description' : function(data_row) {
+						if(data_row.serial_no) {
+							return (
+								data_row.description + 
+								'<div style="padding-left: 15px;"><i>Serial No.:' + 
+								((data_row.serial_no.indexOf('\n')>-1)?'<br />':'&nbsp;') + 
+								data_row.serial_no + '</i></div>'
+							);
+						} else {
+							return data_row.description;
+						}
+					}
+				}
+			);
+
+			// This code takes care of page breaks
+			if(table.appendChild) {
+				out = table.innerHTML;
+			} else {
+				out = '';
+				for(var i=0; i < (table.length-1); i++) {
+					out += table[i].innerHTML + 
+						'<div style = "page-break-after: always;" \
+						class = "page_break"></div>\
+						<div class="page-settings"></div>';
+				}
+				out += table[table.length-1].innerHTML;
+			}
+			return out;
+		},
+
+
+		print_other_charges: function(parent) {
+			var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
+			var rows = '<table width=100%>\n';
+			for(var i=0; i<oc.length; i++) {
+				rows +=
+					'<tr>\n' +
+						'\t<td>' + oc[i].description + '</td>\n' +
+						'\t<td></td>\n' +
+						'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
+					'</tr>\n';
+			}
+			return rows + '</table>\n';
+		}
+	};
+</script>
+
+
+<!-- Page Layout Settings -->
+<div class='common page-header'>
+	<!-- 
+		Page Header will contain
+			+ table 1
+				+ table 1a
+					- Name
+					- Address
+					- Contact
+					- Mobile No
+				+ table 1b
+					- Voucher Date
+					- Due Date
+	-->
+	<table class='header-table' cellspacing=0>
+		<thead>
+			<tr><td><h1>Delivery Note</h1></td></tr>
+			<tr><td><h3><script>cur_frm.docname</script></h3></td></tr>
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60%><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=22%><b>Name</b></td>
+						<td><script>doc.customer_name</script></td>
+					</tr>
+					<tr>
+						<td><b>Address</b></td>
+						<td><script>replace_newlines(doc.address_display)</script></td>
+					</tr>
+					<tr>
+						<td><b>Contact</b></td>
+						<td><script>doc.contact_display</script></td>
+					</tr>
+				</tbody></table></td>
+				<td><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=63%><b>Delivery Note Date</b></td>
+						<td><script>date.str_to_user(doc.transaction_date)</script></td>
+					<tr>					
+					<tr>
+						<td><b>Sales Order No.</b></td>
+						<td>
+							<script>doc.sales_order_no</script><br />
+							<i>(<script>date.str_to_user(doc.posting_date)</script>)</i>
+						</td>
+					<tr>					
+				</tbody></table></td>
+			</tr>
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+<div class='common page-body'>
+	<!-- 
+		Page Body will contain
+			+ table 2
+				- Sales Invoice Data
+	-->
+	<script>si_std.print_item_table()</script>
+</div>
+<div class='common page-footer'>
+	<!-- 
+		Page Footer will contain
+			+ table 3
+				- Terms and Conditions
+				- Total Rounded Amount Calculation
+				- Total Rounded Amount in Words
+	-->
+	<table class='footer-table' width=100% cellspacing=0>
+		<thead>
+			
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60% style='padding-right: 10px;'>
+					<b>Terms, Conditions &amp; Other Information:</b><br />
+					<script>doc.terms</script>
+				</td>
+				<td>
+					<table cellspacing=0 width=100%><tbody>
+						<tr>
+							<td>Net Total</td>
+							<td></td>
+							<td width=38%><script>
+								fmt_money(doc.net_total)
+							</script></td>
+						</tr>
+						<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
+						<tr>
+							<td>Grand Total</td>
+							<td></td>
+							<td><script>
+								fmt_money(doc.grand_total_export)
+							</script></td>
+						</tr>
+						<tr style='font-weight: bold'>
+							<td>Rounded Total</td>
+							<td><script>doc.currency</script></td>
+							<td><script>
+								fmt_money(doc.rounded_total_export)
+							</script></td>
+						</tr>
+					</tbody></table>
+					<br /><b>In Words</b><br />
+					<i><script>doc.in_words_export</script></i>
+				</td>
+			</tr>		
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+
diff --git a/erpnext/patches/print_formats/DeliveryNoteModern.html b/erpnext/patches/print_formats/DeliveryNoteModern.html
new file mode 100644
index 0000000..634bea0
--- /dev/null
+++ b/erpnext/patches/print_formats/DeliveryNoteModern.html
@@ -0,0 +1,306 @@
+<!--
+	Sample Print Format for ERPNext
+	Please use at your own discretion
+	For suggestions and contributions:
+		https://github.com/webnotes/erpnext-print-templates
+
+	Freely usable under MIT license
+-->
+
+<!-- Style Settings -->
+<style>
+	/*
+		common style for whole page
+		This should include:
+		+ page size related settings
+		+ font family settings
+		+ line spacing settings
+	*/
+	@media screen {
+		body {
+			width: 8.3in;
+		}
+	}
+
+	html, body, div, span, td {
+		font-family: "Helvetica", "Arial", sans-serif;
+		font-size: 12px;
+	}
+
+	body {
+		padding: 10px;
+		margin: auto;
+		font-size: 12px;
+		line-height: 150%;
+	}
+
+	.common {
+		font-family: "Helvetica", "Arial", sans-serif !important;
+		font-size: 12px;
+		padding: 10px 0px;
+	}
+
+	table {
+		border-collapse: collapse;
+		width: 100%;
+		vertical-align: top;
+		border-style: none !important;
+	}
+
+	table td {
+		padding: 2px 0px;
+		border-style: none !important;
+	}
+	
+	table h1, h2, h3, h4, h5, h6 {
+		padding: 0px;
+		margin: 0px;
+	}
+
+	table.header-table td {
+		vertical-align: top;
+	}
+
+	table.header-table h1 {
+		text-transform: uppercase;
+		color: white;
+		font-size: 55px;
+		font-style: italic;
+	}
+
+	table.header-table thead tr:nth-child(1) div {
+		height: 24px;
+		background-color: #696969;
+		vertical-align: middle;
+		padding: 12px 0px 0px 0px;
+		width: 100%;
+	}
+
+	div.page-body table td:nth-child(6),
+	div.page-body table td:nth-child(7) {
+		text-align: right;
+	}
+
+	div.page-body table tr td {
+		background-color: #DCDCDC !important;
+	}
+
+	div.page-body table tr:nth-child(1) td {
+		background-color: #696969 !important;
+		color: white !important;
+	}
+
+	table.footer-table td {
+		vertical-align: top;
+	}
+
+	table.footer-table td table td:nth-child(2),
+	table.footer-table td table td:nth-child(3) {
+		text-align: right;
+	}
+
+	table.footer-table tfoot td {
+		background-color: #696969;
+		height: 10px;
+	}
+
+	.imp-details {
+		background-color: #DCDCDC;
+	}
+</style>
+
+
+<!-- Javascript -->
+<script>
+	si_std = {
+		print_item_table: function() {
+			var table = print_table(
+				'Delivery Note',
+				doc.name,
+				'delivery_note_details',
+				'Delivery Note Detail',
+				[// Here specify the table columns to be displayed
+					'SR', 'item_code', 'item_name', 'description', 'qty', 'stock_uom',
+					'basic_rate', 'amount'
+				],
+				[// Here specify the labels of column headings
+					'Sr', 'Item Code', 'Item Name', 'Description', 'Qty',
+					'UoM', 'Basic Rate', 'Amount'
+				],
+				[// Here specify the column widths
+					'3%', '10%', '15%', '32%', '5%',
+					'5%', '15%', '15%'
+				],
+				null,
+				null,
+				{
+					'description' : function(data_row) {
+						if(data_row.serial_no) {
+							return (
+								data_row.description + 
+								'<div style="padding-left: 15px;"><i>Serial No.:' + 
+								((data_row.serial_no.indexOf('\n')>-1)?'<br />':'&nbsp;') + 
+								data_row.serial_no + '</i></div>'
+							);
+						} else {
+							return data_row.description;
+						}
+					}
+				}
+			);
+
+			// This code takes care of page breaks
+			if(table.appendChild) {
+				out = table.innerHTML;
+			} else {
+				out = '';
+				for(var i=0; i < (table.length-1); i++) {
+					out += table[i].innerHTML + 
+						'<div style = "page-break-after: always;" \
+						class = "page_break"></div>\
+						<div class="page-settings"></div>';
+				}
+				out += table[table.length-1].innerHTML;
+			}
+			return out;
+		},
+
+
+		print_other_charges: function(parent) {
+			var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
+			var rows = '<table width=100%>\n';
+			for(var i=0; i<oc.length; i++) {
+				rows +=
+					'<tr>\n' +
+						'\t<td>' + oc[i].description + '</td>\n' +
+						'\t<td></td>\n' +
+						'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
+					'</tr>\n';
+			}
+			return rows + '</table>\n';
+		}
+	};
+</script>
+
+
+<!-- Page Layout Settings -->
+<div class='common page-header'>
+	<!-- 
+		Page Header will contain
+			+ table 1
+				+ table 1a
+					- Name
+					- Address
+					- Contact
+					- Mobile No
+				+ table 1b
+					- Voucher Date
+					- Due Date
+	-->
+	<table class='header-table' cellspacing=0>
+		<thead>
+			<tr><td colspan=2><div><h1>Delivery Note</h1></div></td></tr>
+			<tr><td colspan=2><div style="height:15px"></div></td></tr>
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60%><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=22%><b>Name</b></td>
+						<td><script>doc.customer_name</script></td>
+					</tr>
+					<tr>
+						<td><b>Address</b></td>
+						<td><script>replace_newlines(doc.address_display)</script></td>
+					</tr>
+					<tr>
+						<td><b>Contact</b></td>
+						<td><script>doc.contact_display</script></td>
+					</tr>
+				</tbody></table></td>
+				<td><table width=100% cellspacing=0><tbody>
+					<tr class='imp-details'>
+						<td><b>Delivery Note No.</b></td>
+						<td><script>cur_frm.docname</script></td>
+					</tr>
+					<tr>
+						<td width=63%><b>Delivery Note Date</b></td>
+						<td><script>date.str_to_user(doc.transaction_date)</script></td>
+					<tr>					
+					<tr>
+						<td><b>Sales Order No.</b></td>
+						<td>
+							<script>doc.sales_order_no</script><br />
+							<i>(<script>date.str_to_user(doc.posting_date)</script>)</i>
+						</td>
+					<tr>					
+				</tbody></table></td>
+			</tr>
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+<div class='common page-body'>
+	<!-- 
+		Page Body will contain
+			+ table 2
+				- Sales Invoice Data
+	-->
+	<script>si_std.print_item_table()</script>
+</div>
+<div class='common page-footer'>
+	<!-- 
+		Page Footer will contain
+			+ table 3
+				- Terms and Conditions
+				- Total Rounded Amount Calculation
+				- Total Rounded Amount in Words
+	-->
+	<table class='footer-table' width=100% cellspacing=0>
+		<thead>
+			
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60% style='padding-right: 10px;'>
+					<b>Terms, Conditions &amp; Other Information:</b><br />
+					<script>doc.terms</script>
+				</td>
+				<td>
+					<table cellspacing=0 width=100%><tbody>
+						<tr>
+							<td>Net Total</td>
+							<td></td>
+							<td width=38%><script>
+								fmt_money(doc.net_total)
+							</script></td>
+						</tr>
+						<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
+						<tr>
+							<td>Grand Total</td>
+							<td></td>
+							<td><script>
+								fmt_money(doc.grand_total_export)
+							</script></td>
+						</tr>
+						<tr style='font-weight: bold' class='imp-details'>
+							<td>Rounded Total</td>
+							<td><script>doc.currency</script></td>
+							<td><script>
+								fmt_money(doc.rounded_total_export)
+							</script></td>
+						</tr>
+					</tbody></table>
+					<br /><b>In Words</b><br />
+					<i><script>doc.in_words_export</script></i>
+				</td>
+			</tr>		
+		</tbody>
+		<tfoot>
+			<tr><td colspan=2><div></div></td><tr>
+		</tfoot>
+	</table>
+</div>
+
diff --git a/erpnext/patches/print_formats/DeliveryNoteSpartan.html b/erpnext/patches/print_formats/DeliveryNoteSpartan.html
new file mode 100644
index 0000000..10ca9dd
--- /dev/null
+++ b/erpnext/patches/print_formats/DeliveryNoteSpartan.html
@@ -0,0 +1,302 @@
+<!--
+	Sample Print Format for ERPNext
+	Please use at your own discretion
+	For suggestions and contributions:
+		https://github.com/webnotes/erpnext-print-templates
+
+	Freely usable under MIT license
+-->
+
+<!-- Style Settings -->
+<style>
+	/*
+		common style for whole page
+		This should include:
+		+ page size related settings
+		+ font family settings
+		+ line spacing settings
+	*/
+	@media screen {
+		body {
+			width: 8.3in;
+		}
+	}
+
+	html, body, div, span, td {
+		font-family: "Arial", sans-serif;
+		font-size: 12px;
+	}
+
+	body {
+		padding: 10px;
+		margin: auto;
+		font-size: 12px;
+		line-height: 150%;
+	}
+
+	.common {
+		font-family: "Arial", sans-serif !important;
+		font-size: 12px;
+		padding: 0px;
+	}
+
+	table {
+		width: 100% !important;
+		vertical-align: top;
+	}
+
+	table td {
+		padding: 2px 0px;
+	}
+
+	table, td {
+		border-collapse: collapse !important;
+		padding: 0px;
+		margin: 0px !important;
+	}
+	
+	table h1, h2, h3, h4, h5, h6 {
+		padding: 0px;
+		margin: 0px;
+	}
+
+	table.header-table td {
+		vertical-align: top;
+	}
+
+	table.header-table h3 {
+		color: gray;
+	}
+
+	table.header-table thead td {
+		padding: 5px;
+	}
+
+	table.header-table > thead,
+	table.header-table > tbody > tr > td,
+	table.footer-table > tbody > tr > td {
+		border: 1px solid black;
+		padding: 5px;
+	}
+
+	table.footer-table > tbody,
+	table.header-table > thead {
+		border-bottom: 3px solid black;
+	}
+
+	table.header-table > thead {
+		border-top: 3px solid black;
+	}
+
+	div.page-body table td:nth-child(6),
+	div.page-body table td:nth-child(7) {
+		text-align: right;
+	}
+
+	div.page-body td {
+		background-color: white !important;
+		border: 0.5px solid black !important;
+	}
+
+	table.footer-table td {
+		vertical-align: top;
+	}
+
+	table.footer-table td table td:nth-child(2),
+	table.footer-table td table td:nth-child(3) {
+		text-align: right;
+	}
+</style>
+
+
+<!-- Javascript -->
+<script>
+	si_std = {
+		print_item_table: function() {
+			var table = print_table(
+				'Delivery Note',
+				doc.name,
+				'delivery_note_details',
+				'Delivery Note Detail',
+				[// Here specify the table columns to be displayed
+					'SR', 'item_code', 'item_name', 'description', 'qty', 'stock_uom',
+					'basic_rate', 'amount'
+				],
+				[// Here specify the labels of column headings
+					'Sr', 'Item Code', 'Item Name', 'Description', 'Qty',
+					'UoM', 'Basic Rate', 'Amount'
+				],
+				[// Here specify the column widths
+					'3%', '10%', '15%', '32%', '5%',
+					'5%', '15%', '15%'
+				],
+				null,
+				null,
+				{
+					'description' : function(data_row) {
+						if(data_row.serial_no) {
+							return (
+								data_row.description + 
+								'<div style="padding-left: 15px;"><i>Serial No.:' + 
+								((data_row.serial_no.indexOf('\n')>-1)?'<br />':'&nbsp;') + 
+								data_row.serial_no + '</i></div>'
+							);
+						} else {
+							return data_row.description;
+						}
+					}
+				}
+			);
+
+			// This code takes care of page breaks
+			if(table.appendChild) {
+				out = table.innerHTML;
+			} else {
+				out = '';
+				for(var i=0; i < (table.length-1); i++) {
+					out += table[i].innerHTML + 
+						'<div style = "page-break-after: always;" \
+						class = "page_break"></div>\
+						<div class="page-settings"></div>';
+				}
+				out += table[table.length-1].innerHTML;
+			}
+			return out;
+		},
+
+
+		print_other_charges: function(parent) {
+			var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
+			var rows = '<table width=100%>\n';
+			for(var i=0; i<oc.length; i++) {
+				rows +=
+					'<tr>\n' +
+						'\t<td>' + oc[i].description + '</td>\n' +
+						'\t<td></td>\n' +
+						'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
+					'</tr>\n';
+			}
+			return rows + '</table>\n';
+		}
+	};
+</script>
+
+
+<!-- Page Layout Settings -->
+<div class='common page-header'>
+	<!-- 
+		Page Header will contain
+			+ table 1
+				+ table 1a
+					- Name
+					- Address
+					- Contact
+					- Mobile No
+				+ table 1b
+					- Voucher Date
+					- Due Date
+	-->
+	<table class='header-table' cellspacing=0>
+		<thead>
+			<tr><td colspan=2><h1>Delivery Note</h1></td></tr>
+			<tr><td colspan=2><h3><script>cur_frm.docname</script></h3></td></tr>
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60%><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=22%><b>Name</b></td>
+						<td><script>doc.customer_name</script></td>
+					</tr>
+					<tr>
+						<td><b>Address</b></td>
+						<td><script>replace_newlines(doc.address_display)</script></td>
+					</tr>
+					<tr>
+						<td><b>Contact</b></td>
+						<td><script>doc.contact_display</script></td>
+					</tr>
+				</tbody></table></td>
+				<td><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=63%><b>Delivery Note Date</b></td>
+						<td><script>date.str_to_user(doc.transaction_date)</script></td>
+					<tr>					
+					<tr>
+						<td><b>Sales Order No.</b></td>
+						<td>
+							<script>doc.sales_order_no</script><br />
+							<i>(<script>date.str_to_user(doc.posting_date)</script>)</i>
+						</td>
+					<tr>					
+				</tbody></table></td>
+			</tr>
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+<div class='common page-body'>
+	<!-- 
+		Page Body will contain
+			+ table 2
+				- Sales Invoice Data
+	-->
+	<script>si_std.print_item_table()</script>
+</div>
+<div class='common page-footer'>
+	<!-- 
+		Page Footer will contain
+			+ table 3
+				- Terms and Conditions
+				- Total Rounded Amount Calculation
+				- Total Rounded Amount in Words
+	-->
+	<table class='footer-table' width=100% cellspacing=0>
+		<thead>
+			
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60% style='padding-right: 10px;'>
+					<b>Terms, Conditions &amp; Other Information:</b><br />
+					<script>doc.terms</script>
+				</td>
+				<td>
+					<table cellspacing=0 width=100%><tbody>
+						<tr>
+							<td>Net Total</td>
+							<td></td>
+							<td width=38%><script>
+								fmt_money(doc.net_total)
+							</script></td>
+						</tr>
+						<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
+						<tr>
+							<td>Grand Total</td>
+							<td></td>
+							<td><script>
+								fmt_money(doc.grand_total_export)
+							</script></td>
+						</tr>
+						<tr style='font-weight: bold'>
+							<td>Rounded Total</td>
+							<td><script>doc.currency</script></td>
+							<td><script>
+								fmt_money(doc.rounded_total_export)
+							</script></td>
+						</tr>
+					</tbody></table>
+					<br /><b>In Words</b><br />
+					<i><script>doc.in_words_export</script></i>
+				</td>
+			</tr>		
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+
+
diff --git a/erpnext/patches/print_formats/PurchaseOrderClassic.html b/erpnext/patches/print_formats/PurchaseOrderClassic.html
new file mode 100644
index 0000000..0e51c61
--- /dev/null
+++ b/erpnext/patches/print_formats/PurchaseOrderClassic.html
@@ -0,0 +1,249 @@
+<!--
+	Sample Print Format for ERPNext
+	Please use at your own discretion
+	For suggestions and contributions:
+		https://github.com/webnotes/erpnext-print-templates
+
+	Freely usable under MIT license
+-->
+
+<!-- Style Settings -->
+<style>
+	/*
+		common style for whole page
+		This should include:
+		+ page size related settings
+		+ font family settings
+		+ line spacing settings
+	*/
+	@media screen {
+		body {
+			width: 8.3in;
+		}
+	}
+
+	html, body, div, span, td {
+		font-family: "Georgia", serif;
+		font-size: 12px;
+	}
+
+	body {
+		padding: 10px;
+		margin: auto;
+		font-size: 12px;
+		line-height: 150%;
+	}
+
+	.common {
+		font-family: "Georgia", serif !important;
+		font-size: 12px;
+		padding: 10px 0px;
+	}
+
+	table {
+		border-collapse: collapse;
+		width: 100%;
+		vertical-align: top;
+	}
+
+	table td {
+		padding: 2px 0px;
+	}
+	
+	table h1, h2, h3, h4, h5, h6 {
+		padding: 0px;
+		margin: 0px;
+	}
+
+	table.header-table td {
+		vertical-align: top;
+	}
+
+	table.header-table thead {
+		border-bottom: 1px solid black;
+	}
+
+	table.header-table h3 {
+		color: gray;
+	}
+
+	table.header-table thead td {
+		padding: 5px 0px;
+	}
+
+	div.page-body table td:nth-child(6),
+	div.page-body table td:nth-child(7) {
+		text-align: right;
+	}
+
+	table.footer-table td {
+		vertical-align: top;
+	}
+
+	table.footer-table td table td:nth-child(2),
+	table.footer-table td table td:nth-child(3) {
+		text-align: right;
+	}
+</style>
+
+
+<!-- Javascript -->
+<script>
+	si_std = {
+		print_item_table: function() {
+			var table = print_table(
+				'Purchase Order',
+				doc.name,
+				'po_details',
+				'PO Detail',
+				[// Here specify the table columns to be displayed
+					'SR', 'item_code', 'item_name', 'description', 'qty', 'stock_uom',
+					'import_rate', 'import_amount'
+				],
+				[// Here specify the labels of column headings
+					'Sr', 'Item Code', 'Item Name', 'Description', 'Qty',
+					'UoM', 'Basic Rate', 'Amount'
+				],
+				[// Here specify the column widths
+					'3%', '10%', '15%', '32%', '5%',
+					'5%', '15%', '15%'
+				]
+			);
+
+			// This code takes care of page breaks
+			if(table.appendChild) {
+				out = table.innerHTML;
+			} else {
+				out = '';
+				for(var i=0; i < (table.length-1); i++) {
+					out += table[i].innerHTML + 
+						'<div style = "page-break-after: always;" \
+						class = "page_break"></div>\
+						<div class="page-settings"></div>';
+				}
+				out += table[table.length-1].innerHTML;
+			}
+			return out;
+		},
+
+
+		print_other_charges: function(parent) {
+			var oc = getchildren('Purchase Tax Detail', doc.name, 'purchase_tax_details');
+			var rows = '<table width=100%>\n';
+			for(var i=0; i<oc.length; i++) {
+				rows +=
+					'<tr>\n' +
+						'\t<td>' + oc[i].description + '</td>\n' +
+						'\t<td></td>\n' +
+						'\t<td width=38%>' + fmt_money(oc[i].tax_amount / (doc.conversion_rate || 1)) + '</td>\n' +
+					'</tr>\n';
+			}
+			return rows + '</table>\n';
+		}
+	};
+</script>
+
+
+<!-- Page Layout Settings -->
+<div class='common page-header'>
+	<!-- 
+		Page Header will contain
+			+ table 1
+				+ table 1a
+					- Name
+					- Address
+					- Contact
+					- Mobile No
+				+ table 1b
+					- Voucher Date
+					- Due Date
+	-->
+	<table class='header-table' cellspacing=0>
+		<thead>
+			<tr><td><h1>Purchase Order</h1></td></tr>
+			<tr><td><h3><script>cur_frm.docname</script></h3></td></tr>
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60%><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=22%><b>Name</b></td>
+						<td><script>doc.supplier_name</script></td>
+					</tr>
+					<tr>
+						<td><b>Address</b></td>
+						<td><script>replace_newlines(doc.address_display)</script></td>
+					</tr>
+					<tr>
+						<td><b>Contact</b></td>
+						<td><script>doc.contact_display</script></td>
+					</tr>
+				</tbody></table></td>
+				<td><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=63%><b>Purchase Order Date</b></td>
+						<td><script>date.str_to_user(doc.transaction_date)</script></td>
+					<tr>					
+				</tbody></table></td>
+			</tr>
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+<div class='common page-body'>
+	<!-- 
+		Page Body will contain
+			+ table 2
+				- Sales Invoice Data
+	-->
+	<script>si_std.print_item_table()</script>
+</div>
+<div class='common page-footer'>
+	<!-- 
+		Page Footer will contain
+			+ table 3
+				- Terms and Conditions
+				- Total Rounded Amount Calculation
+				- Total Rounded Amount in Words
+	-->
+	<table class='footer-table' width=100% cellspacing=0>
+		<thead>
+			
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60% style='padding-right: 10px;'>
+					<b>Terms, Conditions &amp; Other Information:</b><br />
+					<script>doc.terms</script>
+				</td>
+				<td>
+					<table cellspacing=0 width=100%><tbody>
+						<tr>
+							<td>Net Total</td>
+							<td></td>
+							<td width=38%><script>
+								fmt_money(doc.net_total_import)
+							</script></td>
+						</tr>
+						<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
+						<tr style='font-weight: bold'>
+							<td>Grand Total</td>
+							<td><script>doc.currency</script></td>
+							<td><script>
+								fmt_money(doc.grand_total_import)
+							</script></td>
+						</tr>
+					</tbody></table>
+					<br /><b>In Words</b><br />
+					<i><script>doc.in_words_import</script></i>
+				</td>
+			</tr>		
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+
diff --git a/erpnext/patches/print_formats/PurchaseOrderModern.html b/erpnext/patches/print_formats/PurchaseOrderModern.html
new file mode 100644
index 0000000..b159242
--- /dev/null
+++ b/erpnext/patches/print_formats/PurchaseOrderModern.html
@@ -0,0 +1,276 @@
+<!--
+	Sample Print Format for ERPNext
+	Please use at your own discretion
+	For suggestions and contributions:
+		https://github.com/webnotes/erpnext-print-templates
+
+	Freely usable under MIT license
+-->
+
+<!-- Style Settings -->
+<style>
+	/*
+		common style for whole page
+		This should include:
+		+ page size related settings
+		+ font family settings
+		+ line spacing settings
+	*/
+	@media screen {
+		body {
+			width: 8.3in;
+		}
+	}
+
+	html, body, div, span, td {
+		font-family: "Helvetica", "Arial", sans-serif;
+		font-size: 12px;
+	}
+
+	body {
+		padding: 10px;
+		margin: auto;
+		font-size: 12px;
+		line-height: 150%;
+	}
+
+	.common {
+		font-family: "Helvetica", "Arial", sans-serif !important;
+		font-size: 12px;
+		padding: 10px 0px;
+	}
+
+	table {
+		border-collapse: collapse;
+		width: 100%;
+		vertical-align: top;
+		border-style: none !important;
+	}
+
+	table td {
+		padding: 2px 0px;
+		border-style: none !important;
+	}
+	
+	table h1, h2, h3, h4, h5, h6 {
+		padding: 0px;
+		margin: 0px;
+	}
+
+	table.header-table td {
+		vertical-align: top;
+	}
+
+	table.header-table h1 {
+		text-transform: uppercase;
+		color: white;
+		font-size: 55px;
+		font-style: italic;
+	}
+
+	table.header-table thead tr:nth-child(1) div {
+		height: 24px;
+		background-color: #696969;
+		vertical-align: middle;
+		padding: 12px 0px 0px 0px;
+		width: 100%;
+	}
+
+	div.page-body table td:nth-child(6),
+	div.page-body table td:nth-child(7) {
+		text-align: right;
+	}
+
+	div.page-body table tr td {
+		background-color: #DCDCDC !important;
+	}
+
+	div.page-body table tr:nth-child(1) td {
+		background-color: #696969 !important;
+		color: white !important;
+	}
+
+	table.footer-table td {
+		vertical-align: top;
+	}
+
+	table.footer-table td table td:nth-child(2),
+	table.footer-table td table td:nth-child(3) {
+		text-align: right;
+	}
+
+	table.footer-table tfoot td {
+		background-color: #696969;
+		height: 10px;
+	}
+
+	.imp-details {
+		background-color: #DCDCDC;
+	}
+</style>
+
+
+<!-- Javascript -->
+<script>
+	si_std = {
+		print_item_table: function() {
+			var table = print_table(
+				'Purchase Order',
+				doc.name,
+				'po_details',
+				'PO Detail',
+				[// Here specify the table columns to be displayed
+					'SR', 'item_code', 'item_name', 'description', 'qty', 'stock_uom',
+					'import_rate', 'import_amount'
+				],
+				[// Here specify the labels of column headings
+					'Sr', 'Item Code', 'Item Name', 'Description', 'Qty',
+					'UoM', 'Basic Rate', 'Amount'
+				],
+				[// Here specify the column widths
+					'3%', '10%', '15%', '32%', '5%',
+					'5%', '15%', '15%'
+				]
+			);
+
+			// This code takes care of page breaks
+			if(table.appendChild) {
+				out = table.innerHTML;
+			} else {
+				out = '';
+				for(var i=0; i < (table.length-1); i++) {
+					out += table[i].innerHTML + 
+						'<div style = "page-break-after: always;" \
+						class = "page_break"></div>\
+						<div class="page-settings"></div>';
+				}
+				out += table[table.length-1].innerHTML;
+			}
+			return out;
+		},
+
+
+		print_other_charges: function(parent) {
+			var oc = getchildren('Purchase Tax Detail', doc.name, 'purchase_tax_details');
+			var rows = '<table width=100%>\n';
+			for(var i=0; i<oc.length; i++) {
+				rows +=
+					'<tr>\n' +
+						'\t<td>' + oc[i].description + '</td>\n' +
+						'\t<td></td>\n' +
+						'\t<td width=38%>' + fmt_money(oc[i].tax_amount / (doc.conversion_rate || 1)) + '</td>\n' +
+					'</tr>\n';
+			}
+			return rows + '</table>\n';
+		}
+	};
+</script>
+
+
+<!-- Page Layout Settings -->
+<div class='common page-header'>
+	<!-- 
+		Page Header will contain
+			+ table 1
+				+ table 1a
+					- Name
+					- Address
+					- Contact
+					- Mobile No
+				+ table 1b
+					- Voucher Date
+					- Due Date
+	-->
+	<table class='header-table' cellspacing=0>
+		<thead>
+			<tr><td colspan=2><div><h1>Purchase Order</h1></div></td></tr>
+			<tr><td colspan=2><div style="height:15px"></div></td></tr>
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60%><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=22%><b>Name</b></td>
+						<td><script>doc.supplier_name</script></td>
+					</tr>
+					<tr>
+						<td><b>Address</b></td>
+						<td><script>replace_newlines(doc.address_display)</script></td>
+					</tr>
+					<tr>
+						<td><b>Contact</b></td>
+						<td><script>doc.contact_display</script></td>
+					</tr>
+				</tbody></table></td>
+				<td><table width=100% cellspacing=0><tbody>
+					<tr class='imp-details'>
+						<td><b>Purchase Order No.</b></td>
+						<td><script>cur_frm.docname</script></td>
+					</tr>
+					<tr>
+						<td width=63%><b>Purchase Order Date</b></td>
+						<td><script>date.str_to_user(doc.transaction_date)</script></td>
+					<tr>					
+				</tbody></table></td>
+			</tr>
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+<div class='common page-body'>
+	<!-- 
+		Page Body will contain
+			+ table 2
+				- Sales Invoice Data
+	-->
+	<script>si_std.print_item_table()</script>
+</div>
+<div class='common page-footer'>
+	<!-- 
+		Page Footer will contain
+			+ table 3
+				- Terms and Conditions
+				- Total Rounded Amount Calculation
+				- Total Rounded Amount in Words
+	-->
+	<table class='footer-table' width=100% cellspacing=0>
+		<thead>
+			
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60% style='padding-right: 10px;'>
+					<b>Terms, Conditions &amp; Other Information:</b><br />
+					<script>doc.terms</script>
+				</td>
+				<td>
+					<table cellspacing=0 width=100%><tbody>
+						<tr>
+							<td>Net Total</td>
+							<td></td>
+							<td width=38%><script>
+								fmt_money(doc.net_total_import)
+							</script></td>
+						</tr>
+						<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
+						<tr style='font-weight: bold' class='imp-details'>
+							<td>Grand Total</td>
+							<td><script>doc.currency</script></td>
+							<td><script>
+								fmt_money(doc.grand_total_import)
+							</script></td>
+						</tr>
+					</tbody></table>
+					<br /><b>In Words</b><br />
+					<i><script>doc.in_words_import</script></i>
+				</td>
+			</tr>		
+		</tbody>
+		<tfoot>
+			<tr><td colspan=2><div></div></td><tr>
+		</tfoot>
+	</table>
+</div>
+
diff --git a/erpnext/patches/print_formats/PurchaseOrderSpartan.html b/erpnext/patches/print_formats/PurchaseOrderSpartan.html
new file mode 100644
index 0000000..ac4fc02
--- /dev/null
+++ b/erpnext/patches/print_formats/PurchaseOrderSpartan.html
@@ -0,0 +1,272 @@
+<!--
+	Sample Print Format for ERPNext
+	Please use at your own discretion
+	For suggestions and contributions:
+		https://github.com/webnotes/erpnext-print-templates
+
+	Freely usable under MIT license
+-->
+
+<!-- Style Settings -->
+<style>
+	/*
+		common style for whole page
+		This should include:
+		+ page size related settings
+		+ font family settings
+		+ line spacing settings
+	*/
+	@media screen {
+		body {
+			width: 8.3in;
+		}
+	}
+
+	html, body, div, span, td {
+		font-family: "Arial", sans-serif;
+		font-size: 12px;
+	}
+
+	body {
+		padding: 10px;
+		margin: auto;
+		font-size: 12px;
+		line-height: 150%;
+	}
+
+	.common {
+		font-family: "Arial", sans-serif !important;
+		font-size: 12px;
+		padding: 0px;
+	}
+
+	table {
+		width: 100% !important;
+		vertical-align: top;
+	}
+
+	table td {
+		padding: 2px 0px;
+	}
+
+	table, td {
+		border-collapse: collapse !important;
+		padding: 0px;
+		margin: 0px !important;
+	}
+	
+	table h1, h2, h3, h4, h5, h6 {
+		padding: 0px;
+		margin: 0px;
+	}
+
+	table.header-table td {
+		vertical-align: top;
+	}
+
+	table.header-table h3 {
+		color: gray;
+	}
+
+	table.header-table thead td {
+		padding: 5px;
+	}
+
+	table.header-table > thead,
+	table.header-table > tbody > tr > td,
+	table.footer-table > tbody > tr > td {
+		border: 1px solid black;
+		padding: 5px;
+	}
+
+	table.footer-table > tbody,
+	table.header-table > thead {
+		border-bottom: 3px solid black;
+	}
+
+	table.header-table > thead {
+		border-top: 3px solid black;
+	}
+
+	div.page-body table td:nth-child(6),
+	div.page-body table td:nth-child(7) {
+		text-align: right;
+	}
+
+	div.page-body td {
+		background-color: white !important;
+		border: 0.5px solid black !important;
+	}
+
+	table.footer-table td {
+		vertical-align: top;
+	}
+
+	table.footer-table td table td:nth-child(2),
+	table.footer-table td table td:nth-child(3) {
+		text-align: right;
+	}
+</style>
+
+
+<!-- Javascript -->
+<script>
+	si_std = {
+		print_item_table: function() {
+			var table = print_table(
+				'Purchase Order',
+				doc.name,
+				'po_details',
+				'PO Detail',
+				[// Here specify the table columns to be displayed
+					'SR', 'item_code', 'item_name', 'description', 'qty', 'stock_uom',
+					'import_rate', 'import_amount'
+				],
+				[// Here specify the labels of column headings
+					'Sr', 'Item Code', 'Item Name', 'Description', 'Qty',
+					'UoM', 'Basic Rate', 'Amount'
+				],
+				[// Here specify the column widths
+					'3%', '10%', '15%', '32%', '5%',
+					'5%', '15%', '15%'
+				]
+			);
+
+			// This code takes care of page breaks
+			if(table.appendChild) {
+				out = table.innerHTML;
+			} else {
+				out = '';
+				for(var i=0; i < (table.length-1); i++) {
+					out += table[i].innerHTML + 
+						'<div style = "page-break-after: always;" \
+						class = "page_break"></div>\
+						<div class="page-settings"></div>';
+				}
+				out += table[table.length-1].innerHTML;
+			}
+			return out;
+		},
+
+
+		print_other_charges: function(parent) {
+			var oc = getchildren('Purchase Tax Detail', doc.name, 'purchase_tax_details');
+			var rows = '<table width=100%>\n';
+			for(var i=0; i<oc.length; i++) {
+				rows +=
+					'<tr>\n' +
+						'\t<td>' + oc[i].description + '</td>\n' +
+						'\t<td></td>\n' +
+						'\t<td width=38%>' + fmt_money(oc[i].tax_amount / (doc.conversion_rate || 1)) + '</td>\n' +
+					'</tr>\n';
+			}
+			return rows + '</table>\n';
+		}
+	};
+</script>
+
+
+<!-- Page Layout Settings -->
+<div class='common page-header'>
+	<!-- 
+		Page Header will contain
+			+ table 1
+				+ table 1a
+					- Name
+					- Address
+					- Contact
+					- Mobile No
+				+ table 1b
+					- Voucher Date
+					- Due Date
+	-->
+	<table class='header-table' cellspacing=0>
+		<thead>
+			<tr><td colspan=2><h1>Purchase Order</h1></td></tr>
+			<tr><td colspan=2><h3><script>cur_frm.docname</script></h3></td></tr>
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60%><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=22%><b>Name</b></td>
+						<td><script>doc.supplier_name</script></td>
+					</tr>
+					<tr>
+						<td><b>Address</b></td>
+						<td><script>replace_newlines(doc.address_display)</script></td>
+					</tr>
+					<tr>
+						<td><b>Contact</b></td>
+						<td><script>doc.contact_display</script></td>
+					</tr>
+				</tbody></table></td>
+				<td><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=63%><b>Purchase Order Date</b></td>
+						<td><script>date.str_to_user(doc.transaction_date)</script></td>
+					<tr>					
+				</tbody></table></td>
+			</tr>
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+<div class='common page-body'>
+	<!-- 
+		Page Body will contain
+			+ table 2
+				- Sales Invoice Data
+	-->
+	<script>si_std.print_item_table()</script>
+</div>
+<div class='common page-footer'>
+	<!-- 
+		Page Footer will contain
+			+ table 3
+				- Terms and Conditions
+				- Total Rounded Amount Calculation
+				- Total Rounded Amount in Words
+	-->
+	<table class='footer-table' width=100% cellspacing=0>
+		<thead>
+			
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60% style='padding-right: 10px;'>
+					<b>Terms, Conditions &amp; Other Information:</b><br />
+					<script>doc.terms</script>
+				</td>
+				<td>
+					<table cellspacing=0 width=100%><tbody>
+						<tr>
+							<td>Net Total</td>
+							<td></td>
+							<td width=38%><script>
+								fmt_money(doc.net_total_import)
+							</script></td>
+						</tr>
+						<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
+						<tr style='font-weight: bold'>
+							<td>Grand Total</td>
+							<td><script>doc.currency</script></td>
+							<td><script>
+								fmt_money(doc.grand_total_import)
+							</script></td>
+						</tr>
+					</tbody></table>
+					<br /><b>In Words</b><br />
+					<i><script>doc.in_words_import</script></i>
+				</td>
+			</tr>		
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+
+
diff --git a/erpnext/patches/print_formats/QuotationClassic.html b/erpnext/patches/print_formats/QuotationClassic.html
new file mode 100644
index 0000000..5672fe9
--- /dev/null
+++ b/erpnext/patches/print_formats/QuotationClassic.html
@@ -0,0 +1,256 @@
+<!--
+	Sample Print Format for ERPNext
+	Please use at your own discretion
+	For suggestions and contributions:
+		https://github.com/webnotes/erpnext-print-templates
+
+	Freely usable under MIT license
+-->
+
+<!-- Style Settings -->
+<style>
+	/*
+		common style for whole page
+		This should include:
+		+ page size related settings
+		+ font family settings
+		+ line spacing settings
+	*/
+	@media screen {
+		body {
+			width: 8.3in;
+		}
+	}
+
+	html, body, div, span, td {
+		font-family: "Georgia", serif;
+		font-size: 12px;
+	}
+
+	body {
+		padding: 10px;
+		margin: auto;
+		font-size: 12px;
+		line-height: 150%;
+	}
+
+	.common {
+		font-family: "Georgia", serif !important;
+		font-size: 12px;
+		padding: 10px 0px;
+	}
+
+	table {
+		border-collapse: collapse;
+		width: 100%;
+		vertical-align: top;
+	}
+
+	table td {
+		padding: 2px 0px;
+	}
+	
+	table h1, h2, h3, h4, h5, h6 {
+		padding: 0px;
+		margin: 0px;
+	}
+
+	table.header-table td {
+		vertical-align: top;
+	}
+
+	table.header-table thead {
+		border-bottom: 1px solid black;
+	}
+
+	table.header-table h3 {
+		color: gray;
+	}
+
+	table.header-table thead td {
+		padding: 5px 0px;
+	}
+
+	div.page-body table td:nth-child(6),
+	div.page-body table td:nth-child(7) {
+		text-align: right;
+	}
+
+	table.footer-table td {
+		vertical-align: top;
+	}
+
+	table.footer-table td table td:nth-child(2),
+	table.footer-table td table td:nth-child(3) {
+		text-align: right;
+	}
+</style>
+
+
+<!-- Javascript -->
+<script>
+	si_std = {
+		print_item_table: function() {
+			var table = print_table(
+				'Quotation',
+				doc.name,
+				'quotation_details',
+				'Quotation Detail',
+				[// Here specify the table columns to be displayed
+					'SR', 'item_code', 'item_name', 'description', 'qty', 'stock_uom',
+					'basic_rate', 'amount'
+				],
+				[// Here specify the labels of column headings
+					'Sr', 'Item Code', 'Item Name', 'Description', 'Qty',
+					'UoM', 'Basic Rate', 'Amount'
+				],
+				[// Here specify the column widths
+					'3%', '10%', '15%', '32%', '5%',
+					'5%', '15%', '15%'
+				]
+			);
+
+			// This code takes care of page breaks
+			if(table.appendChild) {
+				out = table.innerHTML;
+			} else {
+				out = '';
+				for(var i=0; i < (table.length-1); i++) {
+					out += table[i].innerHTML + 
+						'<div style = "page-break-after: always;" \
+						class = "page_break"></div>\
+						<div class="page-settings"></div>';
+				}
+				out += table[table.length-1].innerHTML;
+			}
+			return out;
+		},
+
+
+		print_other_charges: function(parent) {
+			var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
+			var rows = '<table width=100%>\n';
+			for(var i=0; i<oc.length; i++) {
+				rows +=
+					'<tr>\n' +
+						'\t<td>' + oc[i].description + '</td>\n' +
+						'\t<td></td>\n' +
+						'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
+					'</tr>\n';
+			}
+			return rows + '</table>\n';
+		}
+	};
+</script>
+
+
+<!-- Page Layout Settings -->
+<div class='common page-header'>
+	<!-- 
+		Page Header will contain
+			+ table 1
+				+ table 1a
+					- Name
+					- Address
+					- Contact
+					- Mobile No
+				+ table 1b
+					- Voucher Date
+					- Due Date
+	-->
+	<table class='header-table' cellspacing=0>
+		<thead>
+			<tr><td><h1>Quotation</h1></td></tr>
+			<tr><td><h3><script>cur_frm.docname</script></h3></td></tr>
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60%><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=39%><b>Name</b></td>
+						<td><script>doc.lead_name</script></td>
+					</tr>
+					<tr>
+						<td><b>Address</b></td>
+						<td><script>replace_newlines(doc.address_display)</script></td>
+					</tr>
+					<tr>
+						<td><b>Contact</b></td>
+						<td><script>doc.contact_display</script></td>
+					</tr>
+				</tbody></table></td>
+				<td><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=63%><b>Quotation Date</b></td>
+						<td><script>date.str_to_user(doc.transaction_date)</script></td>
+					<tr>					
+				</tbody></table></td>
+			</tr>
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+<div class='common page-body'>
+	<!-- 
+		Page Body will contain
+			+ table 2
+				- Sales Invoice Data
+	-->
+	<script>si_std.print_item_table()</script>
+</div>
+<div class='common page-footer'>
+	<!-- 
+		Page Footer will contain
+			+ table 3
+				- Terms and Conditions
+				- Total Rounded Amount Calculation
+				- Total Rounded Amount in Words
+	-->
+	<table class='footer-table' width=100% cellspacing=0>
+		<thead>
+			
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60% style='padding-right: 10px;'>
+					<b>Terms, Conditions &amp; Other Information:</b><br />
+					<script>doc.terms</script>
+				</td>
+				<td>
+					<table cellspacing=0 width=100%><tbody>
+						<tr>
+							<td>Net Total</td>
+							<td></td>
+							<td width=38%><script>
+								fmt_money(doc.net_total)
+							</script></td>
+						</tr>
+						<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
+						<tr>
+							<td>Grand Total</td>
+							<td></td>
+							<td><script>
+								fmt_money(doc.grand_total_export)
+							</script></td>
+						</tr>
+						<tr style='font-weight: bold'>
+							<td>Rounded Total</td>
+							<td><script>doc.currency</script></td>
+							<td><script>
+								fmt_money(doc.rounded_total_export)
+							</script></td>
+						</tr>
+					</tbody></table>
+					<br /><b>In Words</b><br />
+					<i><script>doc.in_words_export</script></i>
+				</td>
+			</tr>		
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+
diff --git a/erpnext/patches/print_formats/QuotationModern.html b/erpnext/patches/print_formats/QuotationModern.html
new file mode 100644
index 0000000..fadecf2
--- /dev/null
+++ b/erpnext/patches/print_formats/QuotationModern.html
@@ -0,0 +1,283 @@
+<!--
+	Sample Print Format for ERPNext
+	Please use at your own discretion
+	For suggestions and contributions:
+		https://github.com/webnotes/erpnext-print-templates
+
+	Freely usable under MIT license
+-->
+
+<!-- Style Settings -->
+<style>
+	/*
+		common style for whole page
+		This should include:
+		+ page size related settings
+		+ font family settings
+		+ line spacing settings
+	*/
+	@media screen {
+		body {
+			width: 8.3in;
+		}
+	}
+
+	html, body, div, span, td {
+		font-family: "Helvetica", "Arial", sans-serif;
+		font-size: 12px;
+	}
+
+	body {
+		padding: 10px;
+		margin: auto;
+		font-size: 12px;
+		line-height: 150%;
+	}
+
+	.common {
+		font-family: "Helvetica", "Arial", sans-serif !important;
+		font-size: 12px;
+		padding: 10px 0px;
+	}
+
+	table {
+		border-collapse: collapse;
+		width: 100%;
+		vertical-align: top;
+		border-style: none !important;
+	}
+
+	table td {
+		padding: 2px 0px;
+		border-style: none !important;
+	}
+	
+	table h1, h2, h3, h4, h5, h6 {
+		padding: 0px;
+		margin: 0px;
+	}
+
+	table.header-table td {
+		vertical-align: top;
+	}
+
+	table.header-table h1 {
+		text-transform: uppercase;
+		color: white;
+		font-size: 55px;
+		font-style: italic;
+	}
+
+	table.header-table thead tr:nth-child(1) div {
+		height: 24px;
+		background-color: #696969;
+		vertical-align: middle;
+		padding: 12px 0px 0px 0px;
+		width: 100%;
+	}
+
+	div.page-body table td:nth-child(6),
+	div.page-body table td:nth-child(7) {
+		text-align: right;
+	}
+
+	div.page-body table tr td {
+		background-color: #DCDCDC !important;
+	}
+
+	div.page-body table tr:nth-child(1) td {
+		background-color: #696969 !important;
+		color: white !important;
+	}
+
+	table.footer-table td {
+		vertical-align: top;
+	}
+
+	table.footer-table td table td:nth-child(2),
+	table.footer-table td table td:nth-child(3) {
+		text-align: right;
+	}
+
+	table.footer-table tfoot td {
+		background-color: #696969;
+		height: 10px;
+	}
+
+	.imp-details {
+		background-color: #DCDCDC;
+	}
+</style>
+
+
+<!-- Javascript -->
+<script>
+	si_std = {
+		print_item_table: function() {
+			var table = print_table(
+				'Quotation',
+				doc.name,
+				'quotation_details',
+				'Quotation Detail',
+				[// Here specify the table columns to be displayed
+					'SR', 'item_code', 'item_name', 'description', 'qty', 'stock_uom',
+					'basic_rate', 'amount'
+				],
+				[// Here specify the labels of column headings
+					'Sr', 'Item Code', 'Item Name', 'Description', 'Qty',
+					'UoM', 'Basic Rate', 'Amount'
+				],
+				[// Here specify the column widths
+					'3%', '10%', '15%', '32%', '5%',
+					'5%', '15%', '15%'
+				]
+			);
+
+			// This code takes care of page breaks
+			if(table.appendChild) {
+				out = table.innerHTML;
+			} else {
+				out = '';
+				for(var i=0; i < (table.length-1); i++) {
+					out += table[i].innerHTML + 
+						'<div style = "page-break-after: always;" \
+						class = "page_break"></div>\
+						<div class="page-settings"></div>';
+				}
+				out += table[table.length-1].innerHTML;
+			}
+			return out;
+		},
+
+
+		print_other_charges: function(parent) {
+			var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
+			var rows = '<table width=100%>\n';
+			for(var i=0; i<oc.length; i++) {
+				rows +=
+					'<tr>\n' +
+						'\t<td>' + oc[i].description + '</td>\n' +
+						'\t<td></td>\n' +
+						'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
+					'</tr>\n';
+			}
+			return rows + '</table>\n';
+		}
+	};
+</script>
+
+
+<!-- Page Layout Settings -->
+<div class='common page-header'>
+	<!-- 
+		Page Header will contain
+			+ table 1
+				+ table 1a
+					- Name
+					- Address
+					- Contact
+					- Mobile No
+				+ table 1b
+					- Voucher Date
+					- Due Date
+	-->
+	<table class='header-table' cellspacing=0>
+		<thead>
+			<tr><td colspan=2><div><h1>Quotation</h1></div></td></tr>
+			<tr><td colspan=2><div style="height:15px"></div></td></tr>
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60%><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=39%><b>Name</b></td>
+						<td><script>doc.lead_name</script></td>
+					</tr>
+					<tr>
+						<td><b>Address</b></td>
+						<td><script>replace_newlines(doc.address_display)</script></td>
+					</tr>
+					<tr>
+						<td><b>Contact</b></td>
+						<td><script>doc.contact_display</script></td>
+					</tr>
+				</tbody></table></td>
+				<td><table width=100% cellspacing=0><tbody>
+					<tr class='imp-details'>
+						<td><b>Quotation No.</b></td>
+						<td><script>cur_frm.docname</script></td>
+					</tr>
+					<tr>
+						<td width=63%><b>Quotation Date</b></td>
+						<td><script>date.str_to_user(doc.transaction_date)</script></td>
+					<tr>					
+				</tbody></table></td>
+			</tr>
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+<div class='common page-body'>
+	<!-- 
+		Page Body will contain
+			+ table 2
+				- Sales Invoice Data
+	-->
+	<script>si_std.print_item_table()</script>
+</div>
+<div class='common page-footer'>
+	<!-- 
+		Page Footer will contain
+			+ table 3
+				- Terms and Conditions
+				- Total Rounded Amount Calculation
+				- Total Rounded Amount in Words
+	-->
+	<table class='footer-table' width=100% cellspacing=0>
+		<thead>
+			
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60% style='padding-right: 10px;'>
+					<b>Terms, Conditions &amp; Other Information:</b><br />
+					<script>doc.terms</script>
+				</td>
+				<td>
+					<table cellspacing=0 width=100%><tbody>
+						<tr>
+							<td>Net Total</td>
+							<td></td>
+							<td width=38%><script>
+								fmt_money(doc.net_total)
+							</script></td>
+						</tr>
+						<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
+						<tr>
+							<td>Grand Total</td>
+							<td></td>
+							<td><script>
+								fmt_money(doc.grand_total_export)
+							</script></td>
+						</tr>
+						<tr style='font-weight: bold' class='imp-details'>
+							<td>Rounded Total</td>
+							<td><script>doc.currency</script></td>
+							<td><script>
+								fmt_money(doc.rounded_total_export)
+							</script></td>
+						</tr>
+					</tbody></table>
+					<br /><b>In Words</b><br />
+					<i><script>doc.in_words_export</script></i>
+				</td>
+			</tr>		
+		</tbody>
+		<tfoot>
+			<tr><td colspan=2><div></div></td><tr>
+		</tfoot>
+	</table>
+</div>
+
diff --git a/erpnext/patches/print_formats/QuotationSpartan.html b/erpnext/patches/print_formats/QuotationSpartan.html
new file mode 100644
index 0000000..bf51880
--- /dev/null
+++ b/erpnext/patches/print_formats/QuotationSpartan.html
@@ -0,0 +1,279 @@
+<!--
+	Sample Print Format for ERPNext
+	Please use at your own discretion
+	For suggestions and contributions:
+		https://github.com/webnotes/erpnext-print-templates
+
+	Freely usable under MIT license
+-->
+
+<!-- Style Settings -->
+<style>
+	/*
+		common style for whole page
+		This should include:
+		+ page size related settings
+		+ font family settings
+		+ line spacing settings
+	*/
+	@media screen {
+		body {
+			width: 8.3in;
+		}
+	}
+
+	html, body, div, span, td {
+		font-family: "Arial", sans-serif;
+		font-size: 12px;
+	}
+
+	body {
+		padding: 10px;
+		margin: auto;
+		font-size: 12px;
+		line-height: 150%;
+	}
+
+	.common {
+		font-family: "Arial", sans-serif !important;
+		font-size: 12px;
+		padding: 0px;
+	}
+
+	table {
+		width: 100% !important;
+		vertical-align: top;
+	}
+
+	table td {
+		padding: 2px 0px;
+	}
+
+	table, td {
+		border-collapse: collapse !important;
+		padding: 0px;
+		margin: 0px !important;
+	}
+	
+	table h1, h2, h3, h4, h5, h6 {
+		padding: 0px;
+		margin: 0px;
+	}
+
+	table.header-table td {
+		vertical-align: top;
+	}
+
+	table.header-table h3 {
+		color: gray;
+	}
+
+	table.header-table thead td {
+		padding: 5px;
+	}
+
+	table.header-table > thead,
+	table.header-table > tbody > tr > td,
+	table.footer-table > tbody > tr > td {
+		border: 1px solid black;
+		padding: 5px;
+	}
+
+	table.footer-table > tbody,
+	table.header-table > thead {
+		border-bottom: 3px solid black;
+	}
+
+	table.header-table > thead {
+		border-top: 3px solid black;
+	}
+
+	div.page-body table td:nth-child(6),
+	div.page-body table td:nth-child(7) {
+		text-align: right;
+	}
+
+	div.page-body td {
+		background-color: white !important;
+		border: 0.5px solid black !important;
+	}
+
+	table.footer-table td {
+		vertical-align: top;
+	}
+
+	table.footer-table td table td:nth-child(2),
+	table.footer-table td table td:nth-child(3) {
+		text-align: right;
+	}
+</style>
+
+
+<!-- Javascript -->
+<script>
+	si_std = {
+		print_item_table: function() {
+			var table = print_table(
+				'Quotation',
+				doc.name,
+				'quotation_details',
+				'Quotation Detail',
+				[// Here specify the table columns to be displayed
+					'SR', 'item_code', 'item_name', 'description', 'qty', 'stock_uom',
+					'basic_rate', 'amount'
+				],
+				[// Here specify the labels of column headings
+					'Sr', 'Item Code', 'Item Name', 'Description', 'Qty',
+					'UoM', 'Basic Rate', 'Amount'
+				],
+				[// Here specify the column widths
+					'3%', '10%', '15%', '32%', '5%',
+					'5%', '15%', '15%'
+				]
+			);
+
+			// This code takes care of page breaks
+			if(table.appendChild) {
+				out = table.innerHTML;
+			} else {
+				out = '';
+				for(var i=0; i < (table.length-1); i++) {
+					out += table[i].innerHTML + 
+						'<div style = "page-break-after: always;" \
+						class = "page_break"></div>\
+						<div class="page-settings"></div>';
+				}
+				out += table[table.length-1].innerHTML;
+			}
+			return out;
+		},
+
+
+		print_other_charges: function(parent) {
+			var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
+			var rows = '<table width=100%>\n';
+			for(var i=0; i<oc.length; i++) {
+				rows +=
+					'<tr>\n' +
+						'\t<td>' + oc[i].description + '</td>\n' +
+						'\t<td></td>\n' +
+						'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
+					'</tr>\n';
+			}
+			return rows + '</table>\n';
+		}
+	};
+</script>
+
+
+<!-- Page Layout Settings -->
+<div class='common page-header'>
+	<!-- 
+		Page Header will contain
+			+ table 1
+				+ table 1a
+					- Name
+					- Address
+					- Contact
+					- Mobile No
+				+ table 1b
+					- Voucher Date
+					- Due Date
+	-->
+	<table class='header-table' cellspacing=0>
+		<thead>
+			<tr><td colspan=2><h1>Quotation</h1></td></tr>
+			<tr><td colspan=2><h3><script>cur_frm.docname</script></h3></td></tr>
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60%><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=39%><b>Name</b></td>
+						<td><script>doc.lead_name</script></td>
+					</tr>
+					<tr>
+						<td><b>Address</b></td>
+						<td><script>replace_newlines(doc.address_display)</script></td>
+					</tr>
+					<tr>
+						<td><b>Contact</b></td>
+						<td><script>doc.contact_display</script></td>
+					</tr>
+				</tbody></table></td>
+				<td><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=63%><b>Quotation Date</b></td>
+						<td><script>date.str_to_user(doc.transaction_date)</script></td>
+					<tr>					
+				</tbody></table></td>
+			</tr>
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+<div class='common page-body'>
+	<!-- 
+		Page Body will contain
+			+ table 2
+				- Sales Invoice Data
+	-->
+	<script>si_std.print_item_table()</script>
+</div>
+<div class='common page-footer'>
+	<!-- 
+		Page Footer will contain
+			+ table 3
+				- Terms and Conditions
+				- Total Rounded Amount Calculation
+				- Total Rounded Amount in Words
+	-->
+	<table class='footer-table' width=100% cellspacing=0>
+		<thead>
+			
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60% style='padding-right: 10px;'>
+					<b>Terms, Conditions &amp; Other Information:</b><br />
+					<script>doc.terms</script>
+				</td>
+				<td>
+					<table cellspacing=0 width=100%><tbody>
+						<tr>
+							<td>Net Total</td>
+							<td></td>
+							<td width=38%><script>
+								fmt_money(doc.net_total)
+							</script></td>
+						</tr>
+						<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
+						<tr>
+							<td>Grand Total</td>
+							<td></td>
+							<td><script>
+								fmt_money(doc.grand_total_export)
+							</script></td>
+						</tr>
+						<tr style='font-weight: bold'>
+							<td>Rounded Total</td>
+							<td><script>doc.currency</script></td>
+							<td><script>
+								fmt_money(doc.rounded_total_export)
+							</script></td>
+						</tr>
+					</tbody></table>
+					<br /><b>In Words</b><br />
+					<i><script>doc.in_words_export</script></i>
+				</td>
+			</tr>		
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+
+
diff --git a/erpnext/patches/print_formats/SalesInvoiceClassic.html b/erpnext/patches/print_formats/SalesInvoiceClassic.html
new file mode 100644
index 0000000..f7eddcb
--- /dev/null
+++ b/erpnext/patches/print_formats/SalesInvoiceClassic.html
@@ -0,0 +1,261 @@
+<!--
+	Sample Print Format for ERPNext
+	Please use at your own discretion
+	For suggestions and contributions:
+		https://github.com/webnotes/erpnext-print-templates
+
+	Freely usable under MIT license
+-->
+
+<!-- Style Settings -->
+<style>
+	/*
+		common style for whole page
+		This should include:
+		+ page size related settings
+		+ font family settings
+		+ line spacing settings
+	*/
+	@media screen {
+		body {
+			width: 8.3in;
+		}
+	}
+
+	html, body, div, span, td {
+		font-family: "Georgia", serif;
+		font-size: 12px;
+	}
+
+	body {
+		padding: 10px;
+		margin: auto;
+		font-size: 12px;
+		line-height: 150%;
+	}
+
+	.common {
+		font-family: "Georgia", serif !important;
+		font-size: 12px;
+		padding: 10px 0px;
+	}
+
+	table {
+		border-collapse: collapse;
+		width: 100%;
+		vertical-align: top;
+	}
+
+	table td {
+		padding: 2px 0px;
+	}
+	
+	table h1, h2, h3, h4, h5, h6 {
+		padding: 0px;
+		margin: 0px;
+	}
+
+	table.header-table td {
+		vertical-align: top;
+	}
+
+	table.header-table thead {
+		border-bottom: 1px solid black;
+	}
+
+	table.header-table h3 {
+		color: gray;
+	}
+
+	table.header-table thead td {
+		padding: 5px 0px;
+	}
+
+	div.page-body table td:nth-child(6),
+	div.page-body table td:nth-child(7) {
+		text-align: right;
+	}
+
+	table.footer-table td {
+		vertical-align: top;
+	}
+
+	table.footer-table td table td:nth-child(2),
+	table.footer-table td table td:nth-child(3) {
+		text-align: right;
+	}
+</style>
+
+
+<!-- Javascript -->
+<script>
+	si_std = {
+		print_item_table: function() {
+			var table = print_table(
+				'Receivable Voucher',
+				doc.name,
+				'entries',
+				'RV Detail',
+				[// Here specify the table columns to be displayed
+					'SR', 'item_name', 'description', 'qty', 'stock_uom',
+					'basic_rate', 'amount'
+				],
+				[// Here specify the labels of column headings
+					'Sr', 'Item Name', 'Description', 'Qty',
+					'UoM', 'Basic Rate', 'Amount'
+				],
+				[// Here specify the column widths
+					'3%', '20%', '37%', '5%',
+					'5%', '15%', '15%'
+				]
+			);
+
+			// This code takes care of page breaks
+			if(table.appendChild) {
+				out = table.innerHTML;
+			} else {
+				out = '';
+				for(var i=0; i < (table.length-1); i++) {
+					out += table[i].innerHTML + 
+						'<div style = "page-break-after: always;" \
+						class = "page_break"></div>\
+						<div class="page-settings"></div>';
+				}
+				out += table[table.length-1].innerHTML;
+			}
+			return out;
+		},
+
+
+		print_other_charges: function(parent) {
+			console.log(parent);
+			var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
+			var rows = '<table width=100%>\n';
+			for(var i=0; i<oc.length; i++) {
+				rows +=
+					'<tr>\n' +
+						'\t<td>' + oc[i].description + '</td>\n' +
+						'\t<td></td>\n' +
+						'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
+					'</tr>\n';
+			}
+			return rows + '</table>\n';
+		}
+	};
+</script>
+
+
+<!-- Page Layout Settings -->
+<div class='common page-header'>
+	<!-- 
+		Page Header will contain
+			+ table 1
+				+ table 1a
+					- Name
+					- Address
+					- Contact
+					- Mobile No
+				+ table 1b
+					- Voucher Date
+					- Due Date
+	-->
+	<table class='header-table' cellspacing=0>
+		<thead>
+			<tr><td><h1>Invoice</h1></td></tr>
+			<tr><td><h3><script>cur_frm.docname</script></h3></td></tr>
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60%><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=39%><b>Name</b></td>
+						<td><script>doc.customer_name</script></td>
+					</tr>
+					<tr>
+						<td><b>Address</b></td>
+						<td><script>replace_newlines(doc.address_display)</script></td>
+					</tr>
+					<tr>
+						<td><b>Contact</b></td>
+						<td><script>doc.contact_display</script></td>
+					</tr>
+				</tbody></table></td>
+				<td><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=40%><b>Invoice Date</b></td>
+						<td><script>date.str_to_user(doc.voucher_date)</script></td>
+					<tr>					
+					<tr>
+						<td><b>Due Date</b></td>
+						<td><script>date.str_to_user(doc.due_date)</script></td>
+					<tr>					
+				</tbody></table></td>
+			</tr>
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+<div class='common page-body'>
+	<!-- 
+		Page Body will contain
+			+ table 2
+				- Sales Invoice Data
+	-->
+	<script>si_std.print_item_table()</script>
+</div>
+<div class='common page-footer'>
+	<!-- 
+		Page Footer will contain
+			+ table 3
+				- Terms and Conditions
+				- Total Rounded Amount Calculation
+				- Total Rounded Amount in Words
+	-->
+	<table class='footer-table' width=100% cellspacing=0>
+		<thead>
+			
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60% style='padding-right: 10px;'>
+					<b>Terms, Conditions &amp; Other Information:</b><br />
+					<script>doc.terms</script>
+				</td>
+				<td>
+					<table cellspacing=0 width=100%><tbody>
+						<tr>
+							<td>Net Total</td>
+							<td></td>
+							<td width=38%><script>
+								fmt_money(doc.net_total)
+							</script></td>
+						</tr>
+						<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
+						<tr>
+							<td>Grand Total</td>
+							<td></td>
+							<td><script>
+								fmt_money(doc.grand_total_export)
+							</script></td>
+						</tr>
+						<tr style='font-weight: bold'>
+							<td>Rounded Total</td>
+							<td><script>doc.currency</script></td>
+							<td><script>
+								fmt_money(doc.rounded_total_export)
+							</script></td>
+						</tr>
+					</tbody></table>
+					<br /><b>In Words</b><br />
+					<i><script>doc.in_words_export</script></i>
+				</td>
+			</tr>		
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+
diff --git a/erpnext/patches/print_formats/SalesInvoiceModern.html b/erpnext/patches/print_formats/SalesInvoiceModern.html
new file mode 100644
index 0000000..f5d4d7c
--- /dev/null
+++ b/erpnext/patches/print_formats/SalesInvoiceModern.html
@@ -0,0 +1,288 @@
+<!--
+	Sample Print Format for ERPNext
+	Please use at your own discretion
+	For suggestions and contributions:
+		https://github.com/webnotes/erpnext-print-templates
+
+	Freely usable under MIT license
+-->
+
+<!-- Style Settings -->
+<style>
+	/*
+		common style for whole page
+		This should include:
+		+ page size related settings
+		+ font family settings
+		+ line spacing settings
+	*/
+	@media screen {
+		body {
+			width: 8.3in;
+		}
+	}
+
+	html, body, div, span, td {
+		font-family: "Helvetica", "Arial", sans-serif;
+		font-size: 12px;
+	}
+
+	body {
+		padding: 10px;
+		margin: auto;
+		font-size: 12px;
+		line-height: 150%;
+	}
+
+	.common {
+		font-family: "Helvetica", "Arial", sans-serif !important;
+		font-size: 12px;
+		padding: 10px 0px;
+	}
+
+	table {
+		border-collapse: collapse;
+		width: 100%;
+		vertical-align: top;
+		border-style: none !important;
+	}
+
+	table td {
+		padding: 2px 0px;
+		border-style: none !important;
+	}
+	
+	table h1, h2, h3, h4, h5, h6 {
+		padding: 0px;
+		margin: 0px;
+	}
+
+	table.header-table td {
+		vertical-align: top;
+	}
+
+	table.header-table h1 {
+		text-transform: uppercase;
+		color: white;
+		font-size: 55px;
+		font-style: italic;
+	}
+
+	table.header-table thead tr:nth-child(1) div {
+		height: 24px;
+		background-color: #696969;
+		vertical-align: middle;
+		padding: 12px 0px 0px 0px;
+		width: 100%;
+	}
+
+	div.page-body table td:nth-child(6),
+	div.page-body table td:nth-child(7) {
+		text-align: right;
+	}
+
+	div.page-body table tr td {
+		background-color: #DCDCDC !important;
+	}
+
+	div.page-body table tr:nth-child(1) td {
+		background-color: #696969 !important;
+		color: white !important;
+	}
+
+	table.footer-table td {
+		vertical-align: top;
+	}
+
+	table.footer-table td table td:nth-child(2),
+	table.footer-table td table td:nth-child(3) {
+		text-align: right;
+	}
+
+	table.footer-table tfoot td {
+		background-color: #696969;
+		height: 10px;
+	}
+
+	.imp-details {
+		background-color: #DCDCDC;
+	}
+</style>
+
+
+<!-- Javascript -->
+<script>
+	si_std = {
+		print_item_table: function() {
+			var table = print_table(
+				'Receivable Voucher',
+				doc.name,
+				'entries',
+				'RV Detail',
+				[// Here specify the table columns to be displayed
+					'SR', 'item_name', 'description', 'qty', 'stock_uom',
+					'basic_rate', 'amount'
+				],
+				[// Here specify the labels of column headings
+					'Sr', 'Item Name', 'Description', 'Qty',
+					'UoM', 'Basic Rate', 'Amount'
+				],
+				[// Here specify the column widths
+					'3%', '20%', '37%', '5%',
+					'5%', '15%', '15%'
+				]
+			);
+
+			// This code takes care of page breaks
+			if(table.appendChild) {
+				out = table.innerHTML;
+			} else {
+				out = '';
+				for(var i=0; i < (table.length-1); i++) {
+					out += table[i].innerHTML + 
+						'<div style = "page-break-after: always;" \
+						class = "page_break"></div>\
+						<div class="page-settings"></div>';
+				}
+				out += table[table.length-1].innerHTML;
+			}
+			return out;
+		},
+
+
+		print_other_charges: function(parent) {
+			console.log(parent);
+			var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
+			var rows = '<table width=100%>\n';
+			for(var i=0; i<oc.length; i++) {
+				rows +=
+					'<tr>\n' +
+						'\t<td>' + oc[i].description + '</td>\n' +
+						'\t<td></td>\n' +
+						'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
+					'</tr>\n';
+			}
+			return rows + '</table>\n';
+		}
+	};
+</script>
+
+
+<!-- Page Layout Settings -->
+<div class='common page-header'>
+	<!-- 
+		Page Header will contain
+			+ table 1
+				+ table 1a
+					- Name
+					- Address
+					- Contact
+					- Mobile No
+				+ table 1b
+					- Voucher Date
+					- Due Date
+	-->
+	<table class='header-table' cellspacing=0>
+		<thead>
+			<tr><td colspan=2><div><h1>Invoice</h1></div></td></tr>
+			<tr><td colspan=2><div style="height:15px"></div></td></tr>
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60%><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=39%><b>Name</b></td>
+						<td><script>doc.customer_name</script></td>
+					</tr>
+					<tr>
+						<td><b>Address</b></td>
+						<td><script>replace_newlines(doc.address_display)</script></td>
+					</tr>
+					<tr>
+						<td><b>Contact</b></td>
+						<td><script>doc.contact_display</script></td>
+					</tr>
+				</tbody></table></td>
+				<td><table width=100% cellspacing=0><tbody>
+					<tr class='imp-details'>
+						<td><b>Invoice No.</b></td>
+						<td><script>cur_frm.docname</script></td>
+					</tr>
+					<tr>
+						<td width=40%><b>Invoice Date</b></td>
+						<td><script>date.str_to_user(doc.voucher_date)</script></td>
+					<tr>					
+					<tr>
+						<td><b>Due Date</b></td>
+						<td><script>date.str_to_user(doc.due_date)</script></td>
+					<tr>					
+				</tbody></table></td>
+			</tr>
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+<div class='common page-body'>
+	<!-- 
+		Page Body will contain
+			+ table 2
+				- Sales Invoice Data
+	-->
+	<script>si_std.print_item_table()</script>
+</div>
+<div class='common page-footer'>
+	<!-- 
+		Page Footer will contain
+			+ table 3
+				- Terms and Conditions
+				- Total Rounded Amount Calculation
+				- Total Rounded Amount in Words
+	-->
+	<table class='footer-table' width=100% cellspacing=0>
+		<thead>
+			
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60% style='padding-right: 10px;'>
+					<b>Terms, Conditions &amp; Other Information:</b><br />
+					<script>doc.terms</script>
+				</td>
+				<td>
+					<table cellspacing=0 width=100%><tbody>
+						<tr>
+							<td>Net Total</td>
+							<td></td>
+							<td width=38%><script>
+								fmt_money(doc.net_total)
+							</script></td>
+						</tr>
+						<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
+						<tr>
+							<td>Grand Total</td>
+							<td></td>
+							<td><script>
+								fmt_money(doc.grand_total_export)
+							</script></td>
+						</tr>
+						<tr style='font-weight: bold' class='imp-details'>
+							<td>Rounded Total</td>
+							<td><script>doc.currency</script></td>
+							<td><script>
+								fmt_money(doc.rounded_total_export)
+							</script></td>
+						</tr>
+					</tbody></table>
+					<br /><b>In Words</b><br />
+					<i><script>doc.in_words_export</script></i>
+				</td>
+			</tr>		
+		</tbody>
+		<tfoot>
+			<tr><td colspan=2><div></div></td><tr>
+		</tfoot>
+	</table>
+</div>
+
diff --git a/erpnext/patches/print_formats/SalesInvoiceSpartan.html b/erpnext/patches/print_formats/SalesInvoiceSpartan.html
new file mode 100644
index 0000000..d25bc1a
--- /dev/null
+++ b/erpnext/patches/print_formats/SalesInvoiceSpartan.html
@@ -0,0 +1,284 @@
+<!--
+	Sample Print Format for ERPNext
+	Please use at your own discretion
+	For suggestions and contributions:
+		https://github.com/webnotes/erpnext-print-templates
+
+	Freely usable under MIT license
+-->
+
+<!-- Style Settings -->
+<style>
+	/*
+		common style for whole page
+		This should include:
+		+ page size related settings
+		+ font family settings
+		+ line spacing settings
+	*/
+	@media screen {
+		body {
+			width: 8.3in;
+		}
+	}
+
+	html, body, div, span, td {
+		font-family: "Arial", sans-serif;
+		font-size: 12px;
+	}
+
+	body {
+		padding: 10px;
+		margin: auto;
+		font-size: 12px;
+		line-height: 150%;
+	}
+
+	.common {
+		font-family: "Arial", sans-serif !important;
+		font-size: 12px;
+		padding: 0px;
+	}
+
+	table {
+		width: 100% !important;
+		vertical-align: top;
+	}
+
+	table td {
+		padding: 2px 0px;
+	}
+
+	table, td {
+		border-collapse: collapse !important;
+		padding: 0px;
+		margin: 0px !important;
+	}
+	
+	table h1, h2, h3, h4, h5, h6 {
+		padding: 0px;
+		margin: 0px;
+	}
+
+	table.header-table td {
+		vertical-align: top;
+	}
+
+	table.header-table h3 {
+		color: gray;
+	}
+
+	table.header-table thead td {
+		padding: 5px;
+	}
+
+	table.header-table > thead,
+	table.header-table > tbody > tr > td,
+	table.footer-table > tbody > tr > td {
+		border: 1px solid black;
+		padding: 5px;
+	}
+
+	table.footer-table > tbody,
+	table.header-table > thead {
+		border-bottom: 3px solid black;
+	}
+
+	table.header-table > thead {
+		border-top: 3px solid black;
+	}
+
+	div.page-body table td:nth-child(6),
+	div.page-body table td:nth-child(7) {
+		text-align: right;
+	}
+
+	div.page-body td {
+		background-color: white !important;
+		border: 0.5px solid black !important;
+	}
+
+	table.footer-table td {
+		vertical-align: top;
+	}
+
+	table.footer-table td table td:nth-child(2),
+	table.footer-table td table td:nth-child(3) {
+		text-align: right;
+	}
+</style>
+
+
+<!-- Javascript -->
+<script>
+	si_std = {
+		print_item_table: function() {
+			var table = print_table(
+				'Receivable Voucher',
+				doc.name,
+				'entries',
+				'RV Detail',
+				[// Here specify the table columns to be displayed
+					'SR', 'item_name', 'description', 'qty', 'stock_uom',
+					'basic_rate', 'amount'
+				],
+				[// Here specify the labels of column headings
+					'Sr', 'Item Name', 'Description', 'Qty',
+					'UoM', 'Basic Rate', 'Amount'
+				],
+				[// Here specify the column widths
+					'3%', '20%', '37%', '5%',
+					'5%', '15%', '15%'
+				]
+			);
+
+			// This code takes care of page breaks
+			if(table.appendChild) {
+				out = table.innerHTML;
+			} else {
+				out = '';
+				for(var i=0; i < (table.length-1); i++) {
+					out += table[i].innerHTML + 
+						'<div style = "page-break-after: always;" \
+						class = "page_break"></div>\
+						<div class="page-settings"></div>';
+				}
+				out += table[table.length-1].innerHTML;
+			}
+			return out;
+		},
+
+
+		print_other_charges: function(parent) {
+			console.log(parent);
+			var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
+			var rows = '<table width=100%>\n';
+			for(var i=0; i<oc.length; i++) {
+				rows +=
+					'<tr>\n' +
+						'\t<td>' + oc[i].description + '</td>\n' +
+						'\t<td></td>\n' +
+						'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
+					'</tr>\n';
+			}
+			return rows + '</table>\n';
+		}
+	};
+</script>
+
+
+<!-- Page Layout Settings -->
+<div class='common page-header'>
+	<!-- 
+		Page Header will contain
+			+ table 1
+				+ table 1a
+					- Name
+					- Address
+					- Contact
+					- Mobile No
+				+ table 1b
+					- Voucher Date
+					- Due Date
+	-->
+	<table class='header-table' cellspacing=0>
+		<thead>
+			<tr><td colspan=2><h1>Invoice</h1></td></tr>
+			<tr><td colspan=2><h3><script>cur_frm.docname</script></h3></td></tr>
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60%><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=39%><b>Name</b></td>
+						<td><script>doc.customer_name</script></td>
+					</tr>
+					<tr>
+						<td><b>Address</b></td>
+						<td><script>replace_newlines(doc.address_display)</script></td>
+					</tr>
+					<tr>
+						<td><b>Contact</b></td>
+						<td><script>doc.contact_display</script></td>
+					</tr>
+				</tbody></table></td>
+				<td><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=40%><b>Invoice Date</b></td>
+						<td><script>date.str_to_user(doc.voucher_date)</script></td>
+					<tr>					
+					<tr>
+						<td><b>Due Date</b></td>
+						<td><script>date.str_to_user(doc.due_date)</script></td>
+					<tr>					
+				</tbody></table></td>
+			</tr>
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+<div class='common page-body'>
+	<!-- 
+		Page Body will contain
+			+ table 2
+				- Sales Invoice Data
+	-->
+	<script>si_std.print_item_table()</script>
+</div>
+<div class='common page-footer'>
+	<!-- 
+		Page Footer will contain
+			+ table 3
+				- Terms and Conditions
+				- Total Rounded Amount Calculation
+				- Total Rounded Amount in Words
+	-->
+	<table class='footer-table' width=100% cellspacing=0>
+		<thead>
+			
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60% style='padding-right: 10px;'>
+					<b>Terms, Conditions &amp; Other Information:</b><br />
+					<script>doc.terms</script>
+				</td>
+				<td>
+					<table cellspacing=0 width=100%><tbody>
+						<tr>
+							<td>Net Total</td>
+							<td></td>
+							<td width=38%><script>
+								fmt_money(doc.net_total)
+							</script></td>
+						</tr>
+						<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
+						<tr>
+							<td>Grand Total</td>
+							<td></td>
+							<td><script>
+								fmt_money(doc.grand_total_export)
+							</script></td>
+						</tr>
+						<tr style='font-weight: bold'>
+							<td>Rounded Total</td>
+							<td><script>doc.currency</script></td>
+							<td><script>
+								fmt_money(doc.rounded_total_export)
+							</script></td>
+						</tr>
+					</tbody></table>
+					<br /><b>In Words</b><br />
+					<i><script>doc.in_words_export</script></i>
+				</td>
+			</tr>		
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+
+
diff --git a/erpnext/patches/print_formats/SalesOrderClassic.html b/erpnext/patches/print_formats/SalesOrderClassic.html
new file mode 100644
index 0000000..fcf104e
--- /dev/null
+++ b/erpnext/patches/print_formats/SalesOrderClassic.html
@@ -0,0 +1,260 @@
+<!--
+	Sample Print Format for ERPNext
+	Please use at your own discretion
+	For suggestions and contributions:
+		https://github.com/webnotes/erpnext-print-templates
+
+	Freely usable under MIT license
+-->
+
+<!-- Style Settings -->
+<style>
+	/*
+		common style for whole page
+		This should include:
+		+ page size related settings
+		+ font family settings
+		+ line spacing settings
+	*/
+	@media screen {
+		body {
+			width: 8.3in;
+		}
+	}
+
+	html, body, div, span, td {
+		font-family: "Georgia", serif;
+		font-size: 12px;
+	}
+
+	body {
+		padding: 10px;
+		margin: auto;
+		font-size: 12px;
+		line-height: 150%;
+	}
+
+	.common {
+		font-family: "Georgia", serif !important;
+		font-size: 12px;
+		padding: 10px 0px;
+	}
+
+	table {
+		border-collapse: collapse;
+		width: 100%;
+		vertical-align: top;
+	}
+
+	table td {
+		padding: 2px 0px;
+	}
+	
+	table h1, h2, h3, h4, h5, h6 {
+		padding: 0px;
+		margin: 0px;
+	}
+
+	table.header-table td {
+		vertical-align: top;
+	}
+
+	table.header-table thead {
+		border-bottom: 1px solid black;
+	}
+
+	table.header-table h3 {
+		color: gray;
+	}
+
+	table.header-table thead td {
+		padding: 5px 0px;
+	}
+
+	div.page-body table td:nth-child(6),
+	div.page-body table td:nth-child(7) {
+		text-align: right;
+	}
+
+	table.footer-table td {
+		vertical-align: top;
+	}
+
+	table.footer-table td table td:nth-child(2),
+	table.footer-table td table td:nth-child(3) {
+		text-align: right;
+	}
+</style>
+
+
+<!-- Javascript -->
+<script>
+	si_std = {
+		print_item_table: function() {
+			var table = print_table(
+				'Sales Order',
+				doc.name,
+				'sales_order_details',
+				'Sales Order Detail',
+				[// Here specify the table columns to be displayed
+					'SR', 'item_code', 'description', 'qty', 'stock_uom',
+					'basic_rate', 'amount'
+				],
+				[// Here specify the labels of column headings
+					'Sr', 'Item Code', 'Description', 'Qty',
+					'UoM', 'Basic Rate', 'Amount'
+				],
+				[// Here specify the column widths
+					'3%', '20%', '37%', '5%',
+					'5%', '15%', '15%'
+				]
+			);
+
+			// This code takes care of page breaks
+			if(table.appendChild) {
+				out = table.innerHTML;
+			} else {
+				out = '';
+				for(var i=0; i < (table.length-1); i++) {
+					out += table[i].innerHTML + 
+						'<div style = "page-break-after: always;" \
+						class = "page_break"></div>\
+						<div class="page-settings"></div>';
+				}
+				out += table[table.length-1].innerHTML;
+			}
+			return out;
+		},
+
+
+		print_other_charges: function(parent) {
+			var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
+			var rows = '<table width=100%>\n';
+			for(var i=0; i<oc.length; i++) {
+				rows +=
+					'<tr>\n' +
+						'\t<td>' + oc[i].description + '</td>\n' +
+						'\t<td></td>\n' +
+						'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
+					'</tr>\n';
+			}
+			return rows + '</table>\n';
+		}
+	};
+</script>
+
+
+<!-- Page Layout Settings -->
+<div class='common page-header'>
+	<!-- 
+		Page Header will contain
+			+ table 1
+				+ table 1a
+					- Name
+					- Address
+					- Contact
+					- Mobile No
+				+ table 1b
+					- Voucher Date
+					- Due Date
+	-->
+	<table class='header-table' cellspacing=0>
+		<thead>
+			<tr><td><h1>Sales Order</h1></td></tr>
+			<tr><td><h3><script>cur_frm.docname</script></h3></td></tr>
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60%><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=39%><b>Name</b></td>
+						<td><script>doc.customer_name</script></td>
+					</tr>
+					<tr>
+						<td><b>Address</b></td>
+						<td><script>replace_newlines(doc.address_display)</script></td>
+					</tr>
+					<tr>
+						<td><b>Contact</b></td>
+						<td><script>doc.contact_display</script></td>
+					</tr>
+				</tbody></table></td>
+				<td><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=63%><b>Sales Order Date</b></td>
+						<td><script>date.str_to_user(doc.transaction_date)</script></td>
+					<tr>					
+					<tr>
+						<td><b>Delivery Date</b></td>
+						<td><script>date.str_to_user(doc.delivery_date)</script></td>
+					<tr>					
+				</tbody></table></td>
+			</tr>
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+<div class='common page-body'>
+	<!-- 
+		Page Body will contain
+			+ table 2
+				- Sales Invoice Data
+	-->
+	<script>si_std.print_item_table()</script>
+</div>
+<div class='common page-footer'>
+	<!-- 
+		Page Footer will contain
+			+ table 3
+				- Terms and Conditions
+				- Total Rounded Amount Calculation
+				- Total Rounded Amount in Words
+	-->
+	<table class='footer-table' width=100% cellspacing=0>
+		<thead>
+			
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60% style='padding-right: 10px;'>
+					<b>Terms, Conditions &amp; Other Information:</b><br />
+					<script>doc.terms</script>
+				</td>
+				<td>
+					<table cellspacing=0 width=100%><tbody>
+						<tr>
+							<td>Net Total</td>
+							<td></td>
+							<td width=38%><script>
+								fmt_money(doc.net_total)
+							</script></td>
+						</tr>
+						<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
+						<tr>
+							<td>Grand Total</td>
+							<td></td>
+							<td><script>
+								fmt_money(doc.grand_total_export)
+							</script></td>
+						</tr>
+						<tr style='font-weight: bold'>
+							<td>Rounded Total</td>
+							<td><script>doc.currency</script></td>
+							<td><script>
+								fmt_money(doc.rounded_total_export)
+							</script></td>
+						</tr>
+					</tbody></table>
+					<br /><b>In Words</b><br />
+					<i><script>doc.in_words_export</script></i>
+				</td>
+			</tr>		
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+
diff --git a/erpnext/patches/print_formats/SalesOrderModern.html b/erpnext/patches/print_formats/SalesOrderModern.html
new file mode 100644
index 0000000..7013e5d
--- /dev/null
+++ b/erpnext/patches/print_formats/SalesOrderModern.html
@@ -0,0 +1,287 @@
+<!--
+	Sample Print Format for ERPNext
+	Please use at your own discretion
+	For suggestions and contributions:
+		https://github.com/webnotes/erpnext-print-templates
+
+	Freely usable under MIT license
+-->
+
+<!-- Style Settings -->
+<style>
+	/*
+		common style for whole page
+		This should include:
+		+ page size related settings
+		+ font family settings
+		+ line spacing settings
+	*/
+	@media screen {
+		body {
+			width: 8.3in;
+		}
+	}
+
+	html, body, div, span, td {
+		font-family: "Helvetica", "Arial", sans-serif;
+		font-size: 12px;
+	}
+
+	body {
+		padding: 10px;
+		margin: auto;
+		font-size: 12px;
+		line-height: 150%;
+	}
+
+	.common {
+		font-family: "Helvetica", "Arial", sans-serif !important;
+		font-size: 12px;
+		padding: 10px 0px;
+	}
+
+	table {
+		border-collapse: collapse;
+		width: 100%;
+		vertical-align: top;
+		border-style: none !important;
+	}
+
+	table td {
+		padding: 2px 0px;
+		border-style: none !important;
+	}
+	
+	table h1, h2, h3, h4, h5, h6 {
+		padding: 0px;
+		margin: 0px;
+	}
+
+	table.header-table td {
+		vertical-align: top;
+	}
+
+	table.header-table h1 {
+		text-transform: uppercase;
+		color: white;
+		font-size: 55px;
+		font-style: italic;
+	}
+
+	table.header-table thead tr:nth-child(1) div {
+		height: 24px;
+		background-color: #696969;
+		vertical-align: middle;
+		padding: 12px 0px 0px 0px;
+		width: 100%;
+	}
+
+	div.page-body table td:nth-child(6),
+	div.page-body table td:nth-child(7) {
+		text-align: right;
+	}
+
+	div.page-body table tr td {
+		background-color: #DCDCDC !important;
+	}
+
+	div.page-body table tr:nth-child(1) td {
+		background-color: #696969 !important;
+		color: white !important;
+	}
+
+	table.footer-table td {
+		vertical-align: top;
+	}
+
+	table.footer-table td table td:nth-child(2),
+	table.footer-table td table td:nth-child(3) {
+		text-align: right;
+	}
+
+	table.footer-table tfoot td {
+		background-color: #696969;
+		height: 10px;
+	}
+
+	.imp-details {
+		background-color: #DCDCDC;
+	}
+</style>
+
+
+<!-- Javascript -->
+<script>
+	si_std = {
+		print_item_table: function() {
+			var table = print_table(
+				'Sales Order',
+				doc.name,
+				'sales_order_details',
+				'Sales Order Detail',
+				[// Here specify the table columns to be displayed
+					'SR', 'item_code', 'description', 'qty', 'stock_uom',
+					'basic_rate', 'amount'
+				],
+				[// Here specify the labels of column headings
+					'Sr', 'Item Code', 'Description', 'Qty',
+					'UoM', 'Basic Rate', 'Amount'
+				],
+				[// Here specify the column widths
+					'3%', '20%', '37%', '5%',
+					'5%', '15%', '15%'
+				]
+			);
+
+			// This code takes care of page breaks
+			if(table.appendChild) {
+				out = table.innerHTML;
+			} else {
+				out = '';
+				for(var i=0; i < (table.length-1); i++) {
+					out += table[i].innerHTML + 
+						'<div style = "page-break-after: always;" \
+						class = "page_break"></div>\
+						<div class="page-settings"></div>';
+				}
+				out += table[table.length-1].innerHTML;
+			}
+			return out;
+		},
+
+
+		print_other_charges: function(parent) {
+			var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
+			var rows = '<table width=100%>\n';
+			for(var i=0; i<oc.length; i++) {
+				rows +=
+					'<tr>\n' +
+						'\t<td>' + oc[i].description + '</td>\n' +
+						'\t<td></td>\n' +
+						'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
+					'</tr>\n';
+			}
+			return rows + '</table>\n';
+		}
+	};
+</script>
+
+
+<!-- Page Layout Settings -->
+<div class='common page-header'>
+	<!-- 
+		Page Header will contain
+			+ table 1
+				+ table 1a
+					- Name
+					- Address
+					- Contact
+					- Mobile No
+				+ table 1b
+					- Voucher Date
+					- Due Date
+	-->
+	<table class='header-table' cellspacing=0>
+		<thead>
+			<tr><td colspan=2><div><h1>Sales Order</h1></div></td></tr>
+			<tr><td colspan=2><div style="height:15px"></div></td></tr>
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60%><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=39%><b>Name</b></td>
+						<td><script>doc.customer_name</script></td>
+					</tr>
+					<tr>
+						<td><b>Address</b></td>
+						<td><script>replace_newlines(doc.address_display)</script></td>
+					</tr>
+					<tr>
+						<td><b>Contact</b></td>
+						<td><script>doc.contact_display</script></td>
+					</tr>
+				</tbody></table></td>
+				<td><table width=100% cellspacing=0><tbody>
+					<tr class='imp-details'>
+						<td><b>Sales Order No.</b></td>
+						<td><script>cur_frm.docname</script></td>
+					</tr>
+					<tr>
+						<td width=63%><b>Sales Order Date</b></td>
+						<td><script>date.str_to_user(doc.transaction_date)</script></td>
+					<tr>					
+					<tr>
+						<td><b>Delivery Date</b></td>
+						<td><script>date.str_to_user(doc.delivery_date)</script></td>
+					<tr>					
+				</tbody></table></td>
+			</tr>
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+<div class='common page-body'>
+	<!-- 
+		Page Body will contain
+			+ table 2
+				- Sales Invoice Data
+	-->
+	<script>si_std.print_item_table()</script>
+</div>
+<div class='common page-footer'>
+	<!-- 
+		Page Footer will contain
+			+ table 3
+				- Terms and Conditions
+				- Total Rounded Amount Calculation
+				- Total Rounded Amount in Words
+	-->
+	<table class='footer-table' width=100% cellspacing=0>
+		<thead>
+			
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60% style='padding-right: 10px;'>
+					<b>Terms, Conditions &amp; Other Information:</b><br />
+					<script>doc.terms</script>
+				</td>
+				<td>
+					<table cellspacing=0 width=100%><tbody>
+						<tr>
+							<td>Net Total</td>
+							<td></td>
+							<td width=38%><script>
+								fmt_money(doc.net_total)
+							</script></td>
+						</tr>
+						<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
+						<tr>
+							<td>Grand Total</td>
+							<td></td>
+							<td><script>
+								fmt_money(doc.grand_total_export)
+							</script></td>
+						</tr>
+						<tr style='font-weight: bold' class='imp-details'>
+							<td>Rounded Total</td>
+							<td><script>doc.currency</script></td>
+							<td><script>
+								fmt_money(doc.rounded_total_export)
+							</script></td>
+						</tr>
+					</tbody></table>
+					<br /><b>In Words</b><br />
+					<i><script>doc.in_words_export</script></i>
+				</td>
+			</tr>		
+		</tbody>
+		<tfoot>
+			<tr><td colspan=2><div></div></td><tr>
+		</tfoot>
+	</table>
+</div>
+
diff --git a/erpnext/patches/print_formats/SalesOrderSpartan.html b/erpnext/patches/print_formats/SalesOrderSpartan.html
new file mode 100644
index 0000000..0352154
--- /dev/null
+++ b/erpnext/patches/print_formats/SalesOrderSpartan.html
@@ -0,0 +1,283 @@
+<!--
+	Sample Print Format for ERPNext
+	Please use at your own discretion
+	For suggestions and contributions:
+		https://github.com/webnotes/erpnext-print-templates
+
+	Freely usable under MIT license
+-->
+
+<!-- Style Settings -->
+<style>
+	/*
+		common style for whole page
+		This should include:
+		+ page size related settings
+		+ font family settings
+		+ line spacing settings
+	*/
+	@media screen {
+		body {
+			width: 8.3in;
+		}
+	}
+
+	html, body, div, span, td {
+		font-family: "Arial", sans-serif;
+		font-size: 12px;
+	}
+
+	body {
+		padding: 10px;
+		margin: auto;
+		font-size: 12px;
+		line-height: 150%;
+	}
+
+	.common {
+		font-family: "Arial", sans-serif !important;
+		font-size: 12px;
+		padding: 0px;
+	}
+
+	table {
+		width: 100% !important;
+		vertical-align: top;
+	}
+
+	table td {
+		padding: 2px 0px;
+	}
+
+	table, td {
+		border-collapse: collapse !important;
+		padding: 0px;
+		margin: 0px !important;
+	}
+	
+	table h1, h2, h3, h4, h5, h6 {
+		padding: 0px;
+		margin: 0px;
+	}
+
+	table.header-table td {
+		vertical-align: top;
+	}
+
+	table.header-table h3 {
+		color: gray;
+	}
+
+	table.header-table thead td {
+		padding: 5px;
+	}
+
+	table.header-table > thead,
+	table.header-table > tbody > tr > td,
+	table.footer-table > tbody > tr > td {
+		border: 1px solid black;
+		padding: 5px;
+	}
+
+	table.footer-table > tbody,
+	table.header-table > thead {
+		border-bottom: 3px solid black;
+	}
+
+	table.header-table > thead {
+		border-top: 3px solid black;
+	}
+
+	div.page-body table td:nth-child(6),
+	div.page-body table td:nth-child(7) {
+		text-align: right;
+	}
+
+	div.page-body td {
+		background-color: white !important;
+		border: 0.5px solid black !important;
+	}
+
+	table.footer-table td {
+		vertical-align: top;
+	}
+
+	table.footer-table td table td:nth-child(2),
+	table.footer-table td table td:nth-child(3) {
+		text-align: right;
+	}
+</style>
+
+
+<!-- Javascript -->
+<script>
+	si_std = {
+		print_item_table: function() {
+			var table = print_table(
+				'Sales Order',
+				doc.name,
+				'sales_order_details',
+				'Sales Order Detail',
+				[// Here specify the table columns to be displayed
+					'SR', 'item_code', 'description', 'qty', 'stock_uom',
+					'basic_rate', 'amount'
+				],
+				[// Here specify the labels of column headings
+					'Sr', 'Item Code', 'Description', 'Qty',
+					'UoM', 'Basic Rate', 'Amount'
+				],
+				[// Here specify the column widths
+					'3%', '20%', '37%', '5%',
+					'5%', '15%', '15%'
+				]
+			);
+
+			// This code takes care of page breaks
+			if(table.appendChild) {
+				out = table.innerHTML;
+			} else {
+				out = '';
+				for(var i=0; i < (table.length-1); i++) {
+					out += table[i].innerHTML + 
+						'<div style = "page-break-after: always;" \
+						class = "page_break"></div>\
+						<div class="page-settings"></div>';
+				}
+				out += table[table.length-1].innerHTML;
+			}
+			return out;
+		},
+
+
+		print_other_charges: function(parent) {
+			var oc = getchildren('RV Tax Detail', doc.name, 'other_charges');
+			var rows = '<table width=100%>\n';
+			for(var i=0; i<oc.length; i++) {
+				rows +=
+					'<tr>\n' +
+						'\t<td>' + oc[i].description + '</td>\n' +
+						'\t<td></td>\n' +
+						'\t<td width=38%>' + fmt_money(oc[i].tax_amount) + '</td>\n' +
+					'</tr>\n';
+			}
+			return rows + '</table>\n';
+		}
+	};
+</script>
+
+
+<!-- Page Layout Settings -->
+<div class='common page-header'>
+	<!-- 
+		Page Header will contain
+			+ table 1
+				+ table 1a
+					- Name
+					- Address
+					- Contact
+					- Mobile No
+				+ table 1b
+					- Voucher Date
+					- Due Date
+	-->
+	<table class='header-table' cellspacing=0>
+		<thead>
+			<tr><td colspan=2><h1>Sales Order</h1></td></tr>
+			<tr><td colspan=2><h3><script>cur_frm.docname</script></h3></td></tr>
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60%><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=39%><b>Name</b></td>
+						<td><script>doc.customer_name</script></td>
+					</tr>
+					<tr>
+						<td><b>Address</b></td>
+						<td><script>replace_newlines(doc.address_display)</script></td>
+					</tr>
+					<tr>
+						<td><b>Contact</b></td>
+						<td><script>doc.contact_display</script></td>
+					</tr>
+				</tbody></table></td>
+				<td><table width=100% cellspacing=0><tbody>
+					<tr>
+						<td width=63%><b>Sales Order Date</b></td>
+						<td><script>date.str_to_user(doc.transaction_date)</script></td>
+					<tr>					
+					<tr>
+						<td><b>Delivery Date</b></td>
+						<td><script>date.str_to_user(doc.delivery_date)</script></td>
+					<tr>					
+				</tbody></table></td>
+			</tr>
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+<div class='common page-body'>
+	<!-- 
+		Page Body will contain
+			+ table 2
+				- Sales Invoice Data
+	-->
+	<script>si_std.print_item_table()</script>
+</div>
+<div class='common page-footer'>
+	<!-- 
+		Page Footer will contain
+			+ table 3
+				- Terms and Conditions
+				- Total Rounded Amount Calculation
+				- Total Rounded Amount in Words
+	-->
+	<table class='footer-table' width=100% cellspacing=0>
+		<thead>
+			
+		</thead>
+		<tbody>
+			<tr>
+				<td width=60% style='padding-right: 10px;'>
+					<b>Terms, Conditions &amp; Other Information:</b><br />
+					<script>doc.terms</script>
+				</td>
+				<td>
+					<table cellspacing=0 width=100%><tbody>
+						<tr>
+							<td>Net Total</td>
+							<td></td>
+							<td width=38%><script>
+								fmt_money(doc.net_total)
+							</script></td>
+						</tr>
+						<tr><td colspan=3><script>si_std.print_other_charges()</script></td></tr>
+						<tr>
+							<td>Grand Total</td>
+							<td></td>
+							<td><script>
+								fmt_money(doc.grand_total_export)
+							</script></td>
+						</tr>
+						<tr style='font-weight: bold'>
+							<td>Rounded Total</td>
+							<td><script>doc.currency</script></td>
+							<td><script>
+								fmt_money(doc.rounded_total_export)
+							</script></td>
+						</tr>
+					</tbody></table>
+					<br /><b>In Words</b><br />
+					<i><script>doc.in_words_export</script></i>
+				</td>
+			</tr>		
+		</tbody>
+		<tfoot>
+		
+		</tfoot>
+	</table>
+</div>
+
+
diff --git a/index.html b/index.html
index 315fe8a..c28b0aa 100644
--- a/index.html
+++ b/index.html
@@ -3,7 +3,7 @@
 	<meta charset="utf-8">
 	<title>ERPNext</title>
 	<meta name="author" content="">
-	<script type="text/javascript">window._version_number="67"
+	<script type="text/javascript">window._version_number="325"
 
 wn={}
 wn.provide=function(namespace){var nsl=namespace.split('.');var l=nsl.length;var parent=window;for(var i=0;i<l;i++){var n=nsl[i];if(!parent[n]){parent[n]={}}
@@ -79,4 +79,4 @@
 	</div>
 	<script>wn.require('js/app.js');</script>
 	<div id="dialog_back"></div>
-</body>
\ No newline at end of file
+</body>
diff --git a/versions-master.db b/versions-master.db
index 6628a89..5707243 100644
--- a/versions-master.db
+++ b/versions-master.db
Binary files differ