Cloned Invoice Template to all places with Invoices and Quotes

This commit is contained in:
johnnyq
2021-04-06 21:25:25 -04:00
parent 04599c000d
commit 5cae50578d
2 changed files with 762 additions and 685 deletions
+383 -349
View File
@@ -247,363 +247,397 @@ if(isset($_GET['quote_id'], $_GET['url_key'])){
</div> </div>
<script src='plugins/pdfmake/pdfmake.js'></script> <script src='plugins/pdfmake/pdfmake.js'></script>
<script src='plugins/pdfmake/vfs_fonts.js'></script> <script src='plugins/pdfmake/vfs_fonts.js'></script>
<script>
<script> var docDefinition = {
info: {
title: '<?php echo "$company_name - Quote"; ?>',
author: '<?php echo $company_name; ?>'
},
footer: {
columns: [
{
text: <?php echo json_encode($config_quote_footer); ?>,
style: 'documentFooterCenter'
},
]
},
// Invoice markup //watermark: {text: '<?php echo $quote_status; ?>', color: 'lightgrey', opacity: 0.3, bold: true, italics: false},
// Author: Max Kostinevich
// BETA (no styles)
// http://pdfmake.org/playground.html
// playground requires you to assign document definition to a variable called dd
// CodeSandbox Example: https://codesandbox.io/s/pdfmake-invoice-oj81y content: [
// Header
{
columns: [
<?php if(!empty($company_logo_base64)){ ?>
{
image: '<?php echo "data:image;base64,$company_logo_base64"; ?>',
width: 120
},
<?php } ?>
[
{
text: 'Quote',
style: 'invoiceTitle',
width: '*'
},
{
text: '<?php echo "$quote_prefix$quote_number"; ?>',
style: 'invoiceNumber',
width: '*'
},
],
],
},
// Billing Headers
{
columns: [
{
text: <?php echo json_encode($company_name); ?>,
style:'invoiceBillingTitle',
},
{
text: <?php echo json_encode($client_name); ?>,
style:'invoiceBillingTitleClient',
},
]
},
// Billing Address
{
columns: [
{
text: <?php echo json_encode("$company_address \n $company_city $company_state $company_zip \n $company_phone \n $company_website"); ?>,
style: 'invoiceBillingAddress'
},
{
text: <?php echo json_encode("$client_address \n $client_city $client_state $client_zip \n $client_email \n $client_phone"); ?>,
style: 'invoiceBillingAddressClient'
},
]
},
//Invoice Dates Table
{
table: {
// headers are automatically repeated if the table spans over multiple pages
// you can declare how many rows should be treated as headers
headerRows: 0,
widths: [ '*',80, 80 ],
body: [
// Total
[
{
text:'',
rowSpan: 2
},
{},
{},
],
[
{},
{
text:'Quote Date',
style:'invoiceDateTitle',
},
{
text:'<?php echo $quote_date ?>',
style:'invoiceDateValue',
},
],
]
}, // table
layout: 'lightHorizontalLines'
},
// Line breaks
'\n\n',
// Items
{
table: {
// headers are automatically repeated if the table spans over multiple pages
// you can declare how many rows should be treated as headers
headerRows: 1,
widths: [ '*', 40, 'auto', 'auto', 80 ],
var docDefinition = { body: [
info: { // Table Header
title: '<?php echo "$company_name - Quote"; ?>', [
author: '<?php echo $company_name; ?>' {
}, text: 'Product',
style: [ 'itemsHeader', 'left']
},
{
text: 'Qty',
style: [ 'itemsHeader', 'center']
},
{
text: 'Price',
style: [ 'itemsHeader', 'right']
},
{
text: 'Tax',
style: [ 'itemsHeader', 'right']
},
{
text: 'Total',
style: [ 'itemsHeader', 'right']
}
],
// Items
<?php
$total_tax = 0;
$sub_total = 0;
$sql_invoice_items = mysqli_query($mysqli,"SELECT * FROM invoice_items WHERE quote_id = $quote_id ORDER BY item_id ASC");
while($row = mysqli_fetch_array($sql_invoice_items)){
$item_name = $row['item_name'];
$item_description = $row['item_description'];
$item_quantity = $row['item_quantity'];
$item_price = $row['item_price'];
$item_subtotal = $row['item_price'];
$item_tax = $row['item_tax'];
$item_total = $row['item_total'];
$tax_id = $row['tax_id'];
$total_tax = $item_tax + $total_tax;
$total_tax = number_format($total_tax,2);
$sub_total = $item_price * $item_quantity + $sub_total;
$sub_total = number_format($sub_total, 2);
?>
footer: { // Item
columns: [ [
[
{ text: '<?php echo $config_quote_footer; ?>', style: 'documentFooterCenter' }, {
text: <?php echo json_encode($item_name); ?>,
] style:'itemTitle'
}, },
{
text: <?php echo json_encode($item_description); ?>,
style:'itemDescription'
}
],
{
text:'<?php echo $item_quantity; ?>',
style:'itemQty'
},
{
text:'$<?php echo $item_price; ?>',
style:'itemNumber'
},
{
text:'$<?php echo $item_tax; ?>',
style:'itemNumber'
},
{
text: '$<?php echo $item_total; ?>',
style:'itemNumber'
}
],
<?php
}
?>
// END Items
]
}, // table
layout: 'lightHorizontalLines'
},
// TOTAL
{
table: {
// headers are automatically repeated if the table spans over multiple pages
// you can declare how many rows should be treated as headers
headerRows: 0,
widths: [ '*','auto', 80 ],
watermark: {text: '<?php echo $quote_status; ?>', color: 'grey', opacity: 0.3, bold: true, italics: false}, body: [
// Total
content: [ [
// Header {
{ text: 'Notes',
columns: [ style:'notesTitle'
<?php if(!empty($company_logo_base64)){ ?> },
{ {},
image: '<?php echo "data:image;base64,$company_logo_base64"; ?>', {}
width: 120 ],
}, [
<?php } ?> {
rowSpan: 3,
[ text: <?php echo json_encode($quote_note); ?>,
{ style:'notesText'
text: 'QUOTE', },
style: 'invoiceTitle', {
width: '*' text:'Subtotal',
}, style:'itemsFooterSubTitle'
{ },
stack: [ {
{ text:'$<?php echo $sub_total; ?>',
columns: [ style:'itemsFooterSubValue'
{ }
text:'<?php echo "$quote_prefix$quote_number"; ?>', ],
style:'invoiceSubValue', [
width: '*' {},
{
}, text:'Tax',
] style:'itemsFooterSubTitle'
}, },
{ {
columns: [ text: '$<?php echo number_format($total_tax,2); ?>',
{ style:'itemsFooterSubValue'
text:'<?php echo $quote_date ?>', }
style:'invoiceSubValue', ],
width: '*' [
} {},
] {
}, text:'Total',
] style:'itemsFooterSubTitle'
} },
], {
], text: '$<?php echo number_format($quote_amount,2); ?>',
}, style:'itemsFooterSubValue'
// Billing Headers }
{ ],
columns: [ ]
{ }, // table
text: '<?php echo $company_name; ?>', layout: 'lightHorizontalLines'
style:'invoiceBillingTitle', }
], //End Content,
}, styles: {
{ // Document Footer
text: '<?php echo $client_name; ?>', documentFooterCenter: {
style:'invoiceBillingTitle', fontSize: 9,
margin: [10,10,10,10],
}, alignment:'center'
] },
}, // Invoice Title
invoiceTitle: {
{ fontSize: 18,
columns: [ bold: true,
{ alignment:'right',
text: '<?php echo $company_address; ?> \n <?php echo "$company_city $company_state $company_zip"; ?> \n \n <?php echo $company_phone; ?> \n <?php echo $company_website; ?>', margin:[0,0,0,3]
style: 'invoiceBillingAddress' },
}, // Invoice Number
{ invoiceNumber: {
text: '<?php echo $client_address; ?> \n <?php echo "$client_city $client_state $client_zip"; ?> \n \n <?php echo $client_email; ?> \n <?php echo $client_phone; ?>', fontSize: 14,
style: 'invoiceBillingAddress' alignment:'right'
}, },
] // Billing Headers
}, invoiceBillingTitle: {
// Line breaks fontSize: 14,
'\n\n', bold: true,
// Items alignment:'left',
{ margin:[0,20,0,5]
table: { },
// headers are automatically repeated if the table spans over multiple pages invoiceBillingTitleClient: {
// you can declare how many rows should be treated as headers fontSize: 14,
headerRows: 1, bold: true,
widths: [ '*', 40, 'auto', 'auto', 80 ], alignment:'right',
margin:[0,20,0,5]
body: [ },
// Table Header // Billing Details
[ invoiceBillingAddress: {
{ fontSize: 10,
text: 'Product', lineHeight: 1.2
style: 'itemsHeader' },
}, invoiceBillingAddressClient: {
{ fontSize: 10,
text: 'Qty', lineHeight: 1.2,
style: [ 'itemsHeader', 'center'] alignment:'right',
}, margin:[0,0,0,30]
{ },
text: 'Price', // Invoice Dates
style: [ 'itemsHeader', 'center'] invoiceDateTitle: {
}, fontSize: 10,
{ alignment:'left',
text: 'Tax', margin:[0,5,0,5]
style: [ 'itemsHeader', 'center'] },
}, invoiceDateValue: {
{ fontSize: 10,
text: 'Total', alignment:'right',
style: [ 'itemsHeader', 'center'] margin:[0,5,0,5]
} },
], // Items Header
// Items itemsHeader: {
<?php fontSize: 10,
$total_tax = 0; margin: [0,5,0,5],
$sub_total = 0; bold: true,
alignment:'right'
$sql_invoice_items = mysqli_query($mysqli,"SELECT * FROM invoice_items WHERE quote_id = $quote_id ORDER BY item_id ASC"); },
// Item Title
while($row = mysqli_fetch_array($sql_invoice_items)){ itemTitle: {
$item_name = $row['item_name']; fontSize: 10,
$item_description = $row['item_description']; bold: true,
$item_quantity = $row['item_quantity']; margin: [0,5,0,3]
$item_price = $row['item_price']; },
$item_subtotal = $row['item_price']; itemDescription: {
$item_tax = $row['item_tax']; italics: true,
$item_total = $row['item_total']; fontSize: 9,
$tax_id = $row['tax_id']; lineHeight: 1.1,
$total_tax = $item_tax + $total_tax; margin: [0,3,0,5]
$total_tax = number_format($total_tax,2); },
$sub_total = $item_price * $item_quantity + $sub_total; itemQty: {
$sub_total = number_format($sub_total, 2); fontSize: 10,
echo " margin: [0,5,0,5],
alignment: 'center',
// Item 1 },
[ itemNumber: {
[ fontSize: 10,
{ margin: [0,5,0,5],
text: '$item_name', alignment: 'right',
style:'itemTitle' },
}, itemTotal: {
{ fontSize: 10,
text: '$item_description', margin: [0,5,0,5],
style:'itemSubTitle' bold: true,
alignment: 'right',
} },
], // Items Footer (Subtotal, Total, Tax, etc)
{ itemsFooterSubTitle: {
text:'$item_quantity', fontSize: 10,
style:'itemNumber' margin: [0,5,0,5],
}, alignment:'right',
{ },
text:'$$item_price', itemsFooterSubValue: {
style:'itemNumber' fontSize: 10,
}, margin: [0,5,0,5],
{ bold: false,
text:'$$item_tax', alignment:'right',
style:'itemNumber' },
}, itemsFooterTotalTitle: {
{ fontSize: 10,
text: '$$item_total', margin: [0,5,0,5],
style:'itemTotal' bold: true,
} alignment:'right',
], },
itemsFooterTotalValue: {
"; fontSize: 10,
margin: [0,5,0,5],
} bold: true,
alignment:'right',
?> },
notesTitle: {
// END Items fontSize: 10,
] bold: true,
}, // table margin: [0,5,0,5],
// layout: 'lightHorizontalLines' },
}, notesText: {
// TOTAL fontSize: 9,
{ margin: [0,5,50,5]
table: { },
// headers are automatically repeated if the table spans over multiple pages left: {
// you can declare how many rows should be treated as headers alignment:'left',
headerRows: 0, },
widths: [ '*', 80 ], center: {
alignment:'center',
body: [ },
// Total },
[ defaultStyle: {
{ columnGap: 20,
text:'Subtotal', }
style:'itemsFooterSubTitle' }
}, </script>
{
text:'$<?php echo $sub_total; ?>',
style:'itemsFooterSubValue'
}
],
[
{
text:'Tax',
style:'itemsFooterSubTitle'
},
{
text: '$<?php echo $total_tax; ?>',
style:'itemsFooterSubValue'
}
],
[
{
text:'TOTAL',
style:'itemsFooterTotalTitle'
},
{
text: '$<?php echo $quote_amount; ?>',
style:'itemsFooterTotalValue'
}
],
]
}, // table
layout: 'lightHorizontalLines'
},
{
text: 'NOTES',
style:'notesTitle'
},
{
text: '<?php ?>',
style:'notesText'
}
],
styles: {
// Document Footer
documentFooterCenter: {
fontSize: 10,
margin: [5,5,5,5],
alignment:'center'
},
// Invoice Title
invoiceTitle: {
fontSize: 22,
bold: true,
alignment:'right',
margin:[0,0,0,15]
},
// Invoice Details
invoiceSubTitle: {
fontSize: 12,
alignment:'right'
},
invoiceSubValue: {
fontSize: 12,
alignment:'right'
},
// Billing Headers
invoiceBillingTitle: {
fontSize: 14,
bold: true,
alignment:'left',
margin:[0,20,0,5],
},
// Billing Details
invoiceBillingDetails: {
alignment:'left'
},
invoiceBillingAddressTitle: {
margin: [0,7,0,3],
bold: true
},
invoiceBillingAddress: {
},
// Items Header
itemsHeader: {
margin: [0,5,0,5],
bold: true
},
// Item Title
itemTitle: {
bold: true,
},
itemSubTitle: {
italics: true,
fontSize: 11
},
itemNumber: {
margin: [0,5,0,5],
alignment: 'center',
},
itemTotal: {
margin: [0,5,0,5],
bold: true,
alignment: 'center',
},
// Items Footer (Subtotal, Total, Tax, etc)
itemsFooterSubTitle: {
margin: [0,5,0,5],
bold: true,
alignment:'right',
},
itemsFooterSubValue: {
margin: [0,5,0,5],
bold: true,
alignment:'center',
},
itemsFooterTotalTitle: {
margin: [0,5,0,5],
bold: true,
alignment:'right',
},
itemsFooterTotalValue: {
margin: [0,5,0,5],
bold: true,
alignment:'center',
},
notesTitle: {
fontSize: 10,
bold: true,
margin: [0,50,0,3],
},
notesText: {
fontSize: 10
},
center: {
alignment:'center',
},
},
defaultStyle: {
columnGap: 20,
}
};
</script>
<?php <?php
}else{ }else{
+379 -336
View File
@@ -396,350 +396,393 @@ include("footer.php");
<script src='plugins/pdfmake/pdfmake.js'></script> <script src='plugins/pdfmake/pdfmake.js'></script>
<script src='plugins/pdfmake/vfs_fonts.js'></script> <script src='plugins/pdfmake/vfs_fonts.js'></script>
<script> <script>
var docDefinition = { var docDefinition = {
info: { info: {
title: '<?php echo "$company_name - Quote"; ?>', title: '<?php echo "$company_name - Quote"; ?>',
author: '<?php echo $company_name; ?>' author: '<?php echo $company_name; ?>'
}, },
footer: {
columns: [
{
text: <?php echo json_encode($config_quote_footer); ?>,
style: 'documentFooterCenter'
},
]
},
//watermark: {text: '<?php echo $quote_status; ?>', color: 'lightgrey', opacity: 0.3, bold: true, italics: false},
footer: { content: [
columns: [ // Header
{
{ text: '<?php echo $config_quote_footer; ?>', style: 'documentFooterCenter' }, columns: [
<?php if(!empty($company_logo_base64)){ ?>
] {
}, image: '<?php echo "data:image;base64,$company_logo_base64"; ?>',
width: 120
},
<?php } ?>
[
{
text: 'Quote',
style: 'invoiceTitle',
width: '*'
},
{
text: '<?php echo "$quote_prefix$quote_number"; ?>',
style: 'invoiceNumber',
width: '*'
},
],
],
},
// Billing Headers
{
columns: [
{
text: <?php echo json_encode($company_name); ?>,
style:'invoiceBillingTitle',
},
{
text: <?php echo json_encode($client_name); ?>,
style:'invoiceBillingTitleClient',
},
]
},
// Billing Address
{
columns: [
{
text: <?php echo json_encode("$company_address \n $company_city $company_state $company_zip \n $company_phone \n $company_website"); ?>,
style: 'invoiceBillingAddress'
},
{
text: <?php echo json_encode("$client_address \n $client_city $client_state $client_zip \n $client_email \n $client_phone"); ?>,
style: 'invoiceBillingAddressClient'
},
]
},
//Invoice Dates Table
{
table: {
// headers are automatically repeated if the table spans over multiple pages
// you can declare how many rows should be treated as headers
headerRows: 0,
widths: [ '*',80, 80 ],
watermark: {text: '<?php echo $quote_status; ?>', color: 'grey', opacity: 0.3, bold: true, italics: false}, body: [
// Total
[
{
text:'',
rowSpan: 2
},
{},
{},
],
[
{},
{
text:'Quote Date',
style:'invoiceDateTitle',
},
{
text:'<?php echo $quote_date ?>',
style:'invoiceDateValue',
},
],
]
}, // table
layout: 'lightHorizontalLines'
},
// Line breaks
'\n\n',
// Items
{
table: {
// headers are automatically repeated if the table spans over multiple pages
// you can declare how many rows should be treated as headers
headerRows: 1,
widths: [ '*', 40, 'auto', 'auto', 80 ],
content: [ body: [
// Header // Table Header
{ [
columns: [ {
<?php if(!empty($company_logo_base64)){ ?> text: 'Product',
{ style: [ 'itemsHeader', 'left']
image: '<?php echo "data:image;base64,$company_logo_base64"; ?>', },
width: 120 {
}, text: 'Qty',
<?php } ?> style: [ 'itemsHeader', 'center']
},
[ {
{ text: 'Price',
text: 'QUOTE', style: [ 'itemsHeader', 'right']
style: 'invoiceTitle', },
width: '*' {
}, text: 'Tax',
{ style: [ 'itemsHeader', 'right']
stack: [ },
{ {
columns: [ text: 'Total',
{ style: [ 'itemsHeader', 'right']
text:'<?php echo "$quote_prefix$quote_number"; ?>', }
style:'invoiceSubValue', ],
width: '*' // Items
<?php
}, $total_tax = 0;
] $sub_total = 0;
},
{
columns: [
{
text:'<?php echo $quote_date ?>',
style:'invoiceSubValue',
width: '*'
}
]
},
]
}
],
],
},
// Billing Headers
{
columns: [
{
text: '<?php echo $company_name; ?>',
style:'invoiceBillingTitle',
},
{
text: '<?php echo $client_name; ?>',
style:'invoiceBillingTitle',
},
]
},
{
columns: [
{
text: '<?php echo $company_address; ?> \n <?php echo "$company_city $company_state $company_zip"; ?> \n \n <?php echo $company_phone; ?> \n <?php echo $company_website; ?>',
style: 'invoiceBillingAddress'
},
{
text: '<?php echo $client_address; ?> \n <?php echo "$client_city $client_state $client_zip"; ?> \n \n <?php echo $client_email; ?> \n <?php echo $client_phone; ?>',
style: 'invoiceBillingAddress'
},
]
},
// Line breaks
'\n\n',
// Items
{
table: {
// headers are automatically repeated if the table spans over multiple pages
// you can declare how many rows should be treated as headers
headerRows: 1,
widths: [ '*', 40, 'auto', 'auto', 80 ],
body: [ $sql_invoice_items = mysqli_query($mysqli,"SELECT * FROM invoice_items WHERE quote_id = $quote_id ORDER BY item_id ASC");
// Table Header
[ while($row = mysqli_fetch_array($sql_invoice_items)){
{ $item_name = $row['item_name'];
text: 'Product', $item_description = $row['item_description'];
style: 'itemsHeader' $item_quantity = $row['item_quantity'];
}, $item_price = $row['item_price'];
{ $item_subtotal = $row['item_price'];
text: 'Qty', $item_tax = $row['item_tax'];
style: [ 'itemsHeader', 'center'] $item_total = $row['item_total'];
}, $tax_id = $row['tax_id'];
{ $total_tax = $item_tax + $total_tax;
text: 'Price', $total_tax = number_format($total_tax,2);
style: [ 'itemsHeader', 'center'] $sub_total = $item_price * $item_quantity + $sub_total;
}, $sub_total = number_format($sub_total, 2);
{ ?>
text: 'Tax',
style: [ 'itemsHeader', 'center']
},
{
text: 'Total',
style: [ 'itemsHeader', 'center']
}
],
// Items
<?php
$total_tax = 0;
$sub_total = 0;
$sql_invoice_items = mysqli_query($mysqli,"SELECT * FROM invoice_items WHERE quote_id = $quote_id ORDER BY item_id ASC"); // Item
[
while($row = mysqli_fetch_array($sql_invoice_items)){ [
$item_name = $row['item_name']; {
$item_description = $row['item_description']; text: <?php echo json_encode($item_name); ?>,
$item_quantity = $row['item_quantity']; style:'itemTitle'
$item_price = $row['item_price']; },
$item_subtotal = $row['item_price']; {
$item_tax = $row['item_tax']; text: <?php echo json_encode($item_description); ?>,
$item_total = $row['item_total']; style:'itemDescription'
$tax_id = $row['tax_id']; }
$total_tax = $item_tax + $total_tax; ],
$total_tax = number_format($total_tax,2); {
$sub_total = $item_price * $item_quantity + $sub_total; text:'<?php echo $item_quantity; ?>',
$sub_total = number_format($sub_total, 2); style:'itemQty'
echo " },
{
// Item 1 text:'$<?php echo $item_price; ?>',
[ style:'itemNumber'
[ },
{ {
text: '$item_name', text:'$<?php echo $item_tax; ?>',
style:'itemTitle' style:'itemNumber'
}, },
{ {
text: '$item_description', text: '$<?php echo $item_total; ?>',
style:'itemSubTitle' style:'itemNumber'
}
} ],
],
{ <?php
text:'$item_quantity', }
style:'itemNumber' ?>
}, // END Items
{ ]
text:'$$item_price', }, // table
style:'itemNumber' layout: 'lightHorizontalLines'
}, },
{ // TOTAL
text:'$$item_tax', {
style:'itemNumber' table: {
}, // headers are automatically repeated if the table spans over multiple pages
{ // you can declare how many rows should be treated as headers
text: '$$item_total', headerRows: 0,
style:'itemTotal' widths: [ '*','auto', 80 ],
}
],
";
}
?>
// END Items
]
}, // table
// layout: 'lightHorizontalLines'
},
// TOTAL
{
table: {
// headers are automatically repeated if the table spans over multiple pages
// you can declare how many rows should be treated as headers
headerRows: 0,
widths: [ '*', 80 ],
body: [
// Total
[
{
text:'Subtotal',
style:'itemsFooterSubTitle'
},
{
text:'$<?php echo $sub_total; ?>',
style:'itemsFooterSubValue'
}
],
[
{
text:'Tax',
style:'itemsFooterSubTitle'
},
{
text: '$<?php echo $total_tax; ?>',
style:'itemsFooterSubValue'
}
],
[
{
text:'TOTAL',
style:'itemsFooterTotalTitle'
},
{
text: '$<?php echo $quote_amount; ?>',
style:'itemsFooterTotalValue'
}
],
]
}, // table
layout: 'lightHorizontalLines'
},
{
text: 'NOTES',
style:'notesTitle'
},
{
text: '<?php ?>',
style:'notesText'
}
],
styles: {
// Document Footer
documentFooterCenter: {
fontSize: 10,
margin: [5,5,5,5],
alignment:'center'
},
// Invoice Title
invoiceTitle: {
fontSize: 22,
bold: true,
alignment:'right',
margin:[0,0,0,15]
},
// Invoice Details
invoiceSubTitle: {
fontSize: 12,
alignment:'right'
},
invoiceSubValue: {
fontSize: 12,
alignment:'right'
},
// Billing Headers
invoiceBillingTitle: {
fontSize: 14,
bold: true,
alignment:'left',
margin:[0,20,0,5],
},
// Billing Details
invoiceBillingDetails: {
alignment:'left'
},
invoiceBillingAddressTitle: {
margin: [0,7,0,3],
bold: true
},
invoiceBillingAddress: {
},
// Items Header
itemsHeader: {
margin: [0,5,0,5],
bold: true
},
// Item Title
itemTitle: {
bold: true,
},
itemSubTitle: {
italics: true,
fontSize: 11
},
itemNumber: {
margin: [0,5,0,5],
alignment: 'center',
},
itemTotal: {
margin: [0,5,0,5],
bold: true,
alignment: 'center',
},
// Items Footer (Subtotal, Total, Tax, etc)
itemsFooterSubTitle: {
margin: [0,5,0,5],
bold: true,
alignment:'right',
},
itemsFooterSubValue: {
margin: [0,5,0,5],
bold: true,
alignment:'center',
},
itemsFooterTotalTitle: {
margin: [0,5,0,5],
bold: true,
alignment:'right',
},
itemsFooterTotalValue: {
margin: [0,5,0,5],
bold: true,
alignment:'center',
},
notesTitle: {
fontSize: 10,
bold: true,
margin: [0,50,0,3],
},
notesText: {
fontSize: 10
},
center: {
alignment:'center',
},
},
defaultStyle: {
columnGap: 20,
}
};
body: [
// Total
[
{
text: 'Notes',
style:'notesTitle'
},
{},
{}
],
[
{
rowSpan: 3,
text: <?php echo json_encode($quote_note); ?>,
style:'notesText'
},
{
text:'Subtotal',
style:'itemsFooterSubTitle'
},
{
text:'$<?php echo $sub_total; ?>',
style:'itemsFooterSubValue'
}
],
[
{},
{
text:'Tax',
style:'itemsFooterSubTitle'
},
{
text: '$<?php echo number_format($total_tax,2); ?>',
style:'itemsFooterSubValue'
}
],
[
{},
{
text:'Total',
style:'itemsFooterSubTitle'
},
{
text: '$<?php echo number_format($quote_amount,2); ?>',
style:'itemsFooterSubValue'
}
],
]
}, // table
layout: 'lightHorizontalLines'
}
], //End Content,
styles: {
// Document Footer
documentFooterCenter: {
fontSize: 9,
margin: [10,10,10,10],
alignment:'center'
},
// Invoice Title
invoiceTitle: {
fontSize: 18,
bold: true,
alignment:'right',
margin:[0,0,0,3]
},
// Invoice Number
invoiceNumber: {
fontSize: 14,
alignment:'right'
},
// Billing Headers
invoiceBillingTitle: {
fontSize: 14,
bold: true,
alignment:'left',
margin:[0,20,0,5]
},
invoiceBillingTitleClient: {
fontSize: 14,
bold: true,
alignment:'right',
margin:[0,20,0,5]
},
// Billing Details
invoiceBillingAddress: {
fontSize: 10,
lineHeight: 1.2
},
invoiceBillingAddressClient: {
fontSize: 10,
lineHeight: 1.2,
alignment:'right',
margin:[0,0,0,30]
},
// Invoice Dates
invoiceDateTitle: {
fontSize: 10,
alignment:'left',
margin:[0,5,0,5]
},
invoiceDateValue: {
fontSize: 10,
alignment:'right',
margin:[0,5,0,5]
},
// Items Header
itemsHeader: {
fontSize: 10,
margin: [0,5,0,5],
bold: true,
alignment:'right'
},
// Item Title
itemTitle: {
fontSize: 10,
bold: true,
margin: [0,5,0,3]
},
itemDescription: {
italics: true,
fontSize: 9,
lineHeight: 1.1,
margin: [0,3,0,5]
},
itemQty: {
fontSize: 10,
margin: [0,5,0,5],
alignment: 'center',
},
itemNumber: {
fontSize: 10,
margin: [0,5,0,5],
alignment: 'right',
},
itemTotal: {
fontSize: 10,
margin: [0,5,0,5],
bold: true,
alignment: 'right',
},
// Items Footer (Subtotal, Total, Tax, etc)
itemsFooterSubTitle: {
fontSize: 10,
margin: [0,5,0,5],
alignment:'right',
},
itemsFooterSubValue: {
fontSize: 10,
margin: [0,5,0,5],
bold: false,
alignment:'right',
},
itemsFooterTotalTitle: {
fontSize: 10,
margin: [0,5,0,5],
bold: true,
alignment:'right',
},
itemsFooterTotalValue: {
fontSize: 10,
margin: [0,5,0,5],
bold: true,
alignment:'right',
},
notesTitle: {
fontSize: 10,
bold: true,
margin: [0,5,0,5],
},
notesText: {
fontSize: 9,
margin: [0,5,50,5]
},
left: {
alignment:'left',
},
center: {
alignment:'center',
},
},
defaultStyle: {
columnGap: 20,
}
}
</script> </script>