Merge pull request #140 from anandpdoshi/master
New Print Formats
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 />':' ') +
+ 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 & 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 />':' ') +
+ 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 & 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 />':' ') +
+ 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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