updated quote print format

This commit is contained in:
Ty Reynolds
2026-01-22 09:41:05 -05:00
parent 5b70cd43fa
commit 372167f6fd

View File

@@ -1,95 +1,139 @@
<!DOCTYPE html> <style>
<html> /* Reserve space in PRINT/PDF so table does not overlap window address */
<head> @media print {
<meta charset="utf-8"> .window-address-space {
<title>Quotation</title> padding-top: 1in;
</head> }
}
</style>
<body style="font-family: Helvetica, Arial, sans-serif; font-size: 14px; color: #333;"> <div style="font-family: Helvetica, Arial, sans-serif; font-size: 12px; color: #333;">
<!-- HEADER --> {% set company_doc = frappe.get_doc("Company", company) %}
<table style="width:100%; border-bottom:1px solid #ccc; margin-bottom:12px;">
<tr>
<td>
<h2 style="margin:0;">{{ doc.company }}</h2>
{% if doc.company_address %}
<p style="margin:0;">{{ doc.company_address }}</p>
{% endif %}
</td>
<td style="text-align:right;">
<h1 style="margin:0;">QUOTATION</h1>
<p style="margin:0;"><strong>Quote #:</strong> {{ doc.name }}</p>
<p style="margin:0;"><strong>Date:</strong> {{ doc.transaction_date }}</p>
{% if doc.valid_till %}
<p style="margin:0;"><strong>Valid Till:</strong> {{ doc.valid_till }}</p>
{% endif %}
</td>
</tr>
</table>
<!-- CUSTOMER --> <!-- Header -->
<table style="width:100%; margin-bottom:16px;"> <table style="width: 100%; border-bottom: 1px solid #ccc; margin-bottom: 10px;">
<tr>
<td>
<strong>Quote To:</strong><br>
{{ doc.customer_name }}<br>
{% if doc.customer_address %}
{{ doc.customer_address }}
{% endif %}
</td>
</tr>
</table>
<!-- ITEMS TABLE -->
<table style="width:100%; border-collapse:collapse; font-size:14px;">
<thead>
<tr> <tr>
<th style="border:1px solid #ccc; padding:6px;">Item</th> <td>
<th style="border:1px solid #ccc; padding:6px;">Description</th> <h2 style="margin: 0;"><strong>{{ company_doc.company_name }}</strong></h2>
<th style="border:1px solid #ccc; padding:6px; text-align:right;">Qty</th> <p style="margin: 0; font-size: 14px;">
<th style="border:1px solid #ccc; padding:6px; text-align:right;">Rate</th> 1063 Chestnut Level Road, Quarryville PA 17566<br>
<th style="border:1px solid #ccc; padding:6px; text-align:right;">Amount</th> {% if company_doc.address %}{{ company_doc.address }}<br>{% endif %}
{% if company_doc.phone_no %}Phone: {{ company_doc.phone_no }}{% endif %}
{% if company_doc.email %} | Email: {{ company_doc.email }}{% endif %}
</p>
</td>
<td style="text-align: right; font-size: 14px;">
<strong>Quotation:</strong>
<span>{{ doc.name }}</span><br>
<strong>Date:</strong> {{ frappe.utils.formatdate(doc.transaction_date, "MM-dd-yyyy") }}<br>
<strong>Valid Till:</strong>
{{ frappe.utils.formatdate(doc.valid_till, "MM-dd-yyyy") if doc.valid_till else "" }}
</td>
</tr> </tr>
</thead> </table>
<tbody>
{% for row in doc.items %} <!-- Valid Till / Terms -->
<table style="width:100%; margin-top:-4px; margin-bottom:10px;">
<tr> <tr>
<td style="border:1px solid #ccc; padding:6px;">{{ row.item_code }}</td> <td style="width:60%;"></td>
<td style="border:1px solid #ccc; padding:6px;">{{ row.item_name }}</td> <td style="width:40%; text-align:right; font-size:15px; line-height:1.4;">
<td style="border:1px solid #ccc; padding:6px; text-align:right;">{{ row.qty }}</td> <strong>Terms:</strong>
<td style="border:1px solid #ccc; padding:6px; text-align:right;">{{ row.rate }}</td> {{ doc.payment_terms_template or "Net 30" }}
<td style="border:1px solid #ccc; padding:6px; text-align:right;">{{ row.amount }}</td> </td>
</tr> </tr>
{% endfor %} </table>
</tbody>
</table>
<!-- TOTALS --> <!-- WINDOW ADDRESS -->
<div style="font-size: 15px; margin-top: 8px; width: 40%; margin-left: auto;"> <div style="
<p style="display:flex; justify-content:space-between;"> position:absolute;
<strong>Subtotal:</strong> top:1.5in;
<span>{{ doc.total }}</span> left:1.125in;
</p> width:4.5in;
height:1.25in;
font-size:15px;
line-height:1.15em;
overflow:hidden;
">
{{ doc.customer_name }}<br>
{{ doc.address_display or doc.customer_address }}
</div>
{% for tax in doc.taxes %} <!-- PRINT SPACE -->
<p style="display:flex; justify-content:space-between;"> <div class="window-address-space">
<strong>{{ tax.account_head }} ({{ tax.rate }}%):</strong>
<span>{{ tax.tax_amount }}</span> {% if doc.terms or doc.note %}
</p> <table style="width:100%; margin:0 0 6px 0;">
{% endfor %} <tr>
<td style="font-size:14px; line-height:1.3;">
{% if doc.note %}
<div style="font-weight:bold;">
{{ doc.note }}
</div>
{% endif %}
{% if doc.terms %}
<div style="white-space:pre-line;">
{{ doc.terms }}
</div>
{% endif %}
</td>
</tr>
</table>
{% endif %}
<!-- Items Table -->
<table style="width:100%; border-collapse:collapse; margin-bottom:0;">
<thead>
<tr style="background-color:#f5f5f5;">
<th style="border:1px solid #ccc; padding:6px;">Item</th>
<th style="border:1px solid #ccc; padding:6px;">Description</th>
<th style="border:1px solid #ccc; padding:6px; text-align:right;">Qty</th>
<th style="border:1px solid #ccc; padding:6px; text-align:right;">Rate</th>
<th style="border:1px solid #ccc; padding:6px; text-align:right;">Amount</th>
</tr>
</thead>
<tbody>
{% for row in doc.items %}
<tr>
<td style="border:1px solid #ccc; padding:6px; font-size:14px;">{{ row.item_code }}</td>
<td style="border:1px solid #ccc; padding:6px; font-size:14px;">{{ row.item_name }}</td>
<td style="border:1px solid #ccc; padding:6px; font-size:14px; text-align:right;">{{ row.qty }}</td>
<td style="border:1px solid #ccc; padding:6px; font-size:14px; text-align:right;">{{ row.rate }}</td>
<td style="border:1px solid #ccc; padding:6px; font-size:14px; text-align:right;">{{ row.amount }}</td>
</tr>
{% endfor %}
</tbody>
</table>
<!-- Totals -->
<div style="font-size:15px; margin-top:10px; width:40%; margin-left:auto;">
<p style="display:flex; justify-content:space-between;">
<strong>Subtotal:</strong><span>{{ doc.total }}</span>
</p>
{% for tax in doc.taxes %}
<p style="display:flex; justify-content:space-between;">
<strong>{{ tax.account_head }} ({{ tax.rate }}%):</strong>
<span>{{ tax.tax_amount }}</span>
</p>
{% endfor %}
<p style="display:flex; justify-content:space-between;">
<strong>Total:</strong><span>{{ doc.grand_total }}</span>
</p>
</div>
</div> <!-- end print space -->
<!-- Footer -->
<div style="margin-top:23px; font-size:10px; color:#777; text-align:center;">
<p style="white-space:pre-line; margin:0;">
This quotation is valid until the date listed above and subject to change thereafter.
Pricing does not include applicable taxes unless otherwise stated.
Thank you for considering NS Innovations.
</p>
</div>
<p style="display:flex; justify-content:space-between;">
<strong>Total:</strong>
<span>{{ doc.grand_total }}</span>
</p>
</div> </div>
<!-- TERMS -->
{% if doc.terms %}
<hr>
<p><strong>Terms & Conditions</strong></p>
<p>{{ doc.terms }}</p>
{% endif %}
</body>
</html>