Maintenance > Resources
This formatting in Printer.Ticket print receipt formatted in 80 column paper. It also handle page breaks. Adjust line gaps and set header and footer lines count as required.
<?xml version="1.0" encoding="UTF-8"?> <!-- Posics Saleculator - Billing System. Copyright (C) 2009 Posics This file is part of Posics Saleculator. --> <output> <display> <line> <text align="left" length="10">Total.</text> <text align="right" length="10">${ticket.printTotal()}</text> </line> <line> <text align="center" length="20">Thank you.</text> </line> </display> <ticket> <line></line> <line></line> <line></line> <line></line> <line></line> <line></line> <line></line> <line></line> <line></line> <line></line> <line> <text length="10"></text> #if($ticket.getCustomer()) <text length="45">${ticket.getCustomer().printName()}</text> #elseif($ticket.getProperty("ReceiptNote")) <text length="45" >${ticket.printProperty("ReceiptNote")}</text> #else <text length="45"></text> #end <text length="25" >${ticket.printId()}</text> </line> <line> <text length="10"></text> #if ($ticket.getCustomer()) <text length="68">${ticket.getCustomer().getAddress()}</text> #end </line> <line> <text length="10"></text> #if ($ticket.getCustomer()) <text length="45">${ticket.getCustomer().getSearchkey()}</text> #else <text length="45"></text> #end <text length="25" >${ticket.printDate()}</text> </line> <line></line> <line></line> <line></line> <line></line> <line></line> ##Set below three values according to form settings #set ($itemsperpage = 32) #set ($headerlines = 18) #set ($footerlines = 14) ## #set ($totallines = $ticket.getLines().size()) #set ($currentline = 0) #set ($seqno = 0) #set ($currentpage = 0) ##Counting total page number and rounding. #set ($mod = $totallines % $itemsperpage) #if($mod>0) #set ( $totalpages = ( $totallines + $itemsperpage - $mod ) / $itemsperpage) #else #set ( $totalpages = $totallines / $itemsperpage) #end #foreach ($ticketline in $ticket.getLines()) #set ($currentline = $currentline + 1) #set ($seqno = $seqno + 1) <line> <text length="4">$seqno</text> #if ($ticketline.isProductCom()) <text length="38">*${ticketline.printName()}</text> #else <text length="38">${ticketline.printName()}</text> #end <text align="center" length="10">${ticketline.printMultiply()}</text> <text align="right" length="10">${ticketline.printSalePrice()}</text> <text align="right" length="16">${ticketline.printSubValue()}</text> </line> #if ($ticketline.productAttSetInstId) <line> <text length="40">${ticketline.productAttSetInstDesc}</text> </line> #end ####FORM SETTINGS START #if($currentline == $itemsperpage) #set($currentline = 0) #set($currentpage = $currentpage + 1) #if($totallines - ($currentpage * $itemsperpage) > 0) #set($start = 0) #set($end = $headerlines + $footerlines) #set($range = [$start..$end]) #foreach($i in $range) <line></line> #end #end #end ####FORM SETTINGS END #end ####FORM SETTINGS START ##Final page alignment #if($currentline != 0) #set($currentpage = $currentpage + 1) #set($start = 0) #set($end = $itemsperpage - $currentline) #set($range = [$start..$end]) #foreach ($i in $range) <line></line> #end #end ####FORM SETTINGS END <line></line> <line> <text align="right" length="78" >${ticket.printTotal()}</text> </line> #foreach ($paymentline in $ticket.payments) #if ($paymentline.name == "debt") <line> <text bold="true">Debt</text> </line> <line> <text align="right" length="80">${paymentline.printTotal()}</text> </line> <line> <text align="right" length="80">Current Debt: ${ticket.getCustomer().printCurDebt()}</text> </line> #end #end <line></line> </ticket> </output>
Another template for 80 column printers which choose template based on customer.
<?xml version="1.0" encoding="UTF-8"?> <!-- Posics Saleculator - Billing System. Copyright (C) 2009 Posics This file is part of Posics Saleculator. --> <output> <display> <line> <text align="left" length="10">Total.</text> <text align="right" length="10">${ticket.printTotal()}</text> </line> <line> <text align="center" length="20">Thank you.</text> </line> </display> #if ($ticket.getCustomer()) <ticket printer="2"> #set ($itemsperpage = 20) #set ($headerlines = 0) #set ($footerlines = 0) #set ($totallines = $ticket.getLines().size()) #set ($currentline = 0) #set ($seqno = 0) ##Counting total page number and rounding. #set ($mod = $totallines % $itemsperpage) #if($mod>0) #set ( $totalpages = ( $totallines + $itemsperpage - $mod ) / $itemsperpage) #else #set ( $totalpages = $totallines / $itemsperpage) #end <line size="2"> <text align="center" length="48" bold="true">BUSINESS NAME</text> </line> <line> <text align="center" length="80" bold="true">ADDRESS1</text> </line> <line> <text align="center" length="80" bold="true">ADDRESS2</text> </line> <line> <text align="center" length="80" bold="true">TELEPHONE</text> </line> <line> <text>--------------------------------------------------------------------------------</text> </line> <line> <text align="center" length="80" bold="true">TAX-INVOICE</text> </line> <line> <text align="center" length="80" bold="true">TRN: 123123123123</text> </line> <line> <text>--------------------------------------------------------------------------------</text> </line> #if (${ticket.ticketType} == 0) <line> <text align="left" length="15">Invoice No.:</text> <text>${ticket.printId()}</text> </line> #end #if (${ticket.ticketType} == 1) <line> <text align="left" length="15">Refund:</text> <text>${ticket.printId()}</text> </line> #end <line> <text align="left" length="15">Invoice Date:</text> <text>${ticket.printDate()}</text> </line> #if ($ticket.getCustomer()) <line> <text align="left" length="15" bold="true">Customer:</text> <text bold="true">${ticket.getCustomer().printName()}</text> </line> <line> <text align="left" length="15"></text> <text>${ticket.getCustomer().getSearchkey()}</text> </line> #if ($ticket.getCustomer().getAddress()) <line> <text align="left" length="15"></text> <text>${ticket.getCustomer().getAddress()}</text> </line> #end #if ($ticket.getCustomer().printTaxid()) <line> <text align="left" length="15" bold="true">TRN:</text> <text bold="true">${ticket.getCustomer().printTaxid()}</text> </line> #end #end <line></line> <line> <text>--------------------------------------------------------------------------------</text> </line> <line> <text align="left" length="5">Sl.</text> <text align="left" length="30">ITEM</text> <text align="right" length="5">QTY</text> <text align="right" length="10">RATE</text> <text align="right" length="10">AMOUNT</text> <text align="right" length="10">VAT</text> <text align="right" length="10">TOT AMT</text> </line> <line> <text>--------------------------------------------------------------------------------</text> </line> #foreach ($ticketline in $ticket.getLines()) #set ($currentline = $currentline + 1) #set ($seqno = $seqno + 1) <text align="left" length="5">$seqno</text> <line> #if ($ticketline.isProductCom()) <text align="left" length="30">*${ticketline.printName()}</text> #else <text align="left" length="30">${ticketline.printName()}</text> #end <text align="right" length="5">${ticketline.printMultiply()}</text> <text align="right" length="10">${ticketline.printSalePrice()}</text> <text align="right" length="10">${ticketline.printSubValue()}</text> <text align="right" length="10">${ticketline.printTax()}</text> <text align="right" length="10">${ticketline.printValue()}</text> </line> #if ($ticketline.productAttSetInstId) <line> <text align="left" length="80"> ${ticketline.productAttSetInstDesc}</text> </line> #end #end ####FORM SETTINGS START ##Final page alignment #if($currentline < $itemsperpage) #set($start = 0) #set($end = $itemsperpage - $currentline) #set($range = [$start..$end]) #foreach ($i in $range) <line></line> #end #end ####FORM SETTINGS END <line> <text>--------------------------------------------------------------------------------</text> </line> <line> <text>Total Qty: ${ticket.printArticlesCount()}</text> </line> <line> </line> <line> <text align="left" length="20">Subtotal</text> <text align="right" length="60">${ticket.printSubTotal()}</text> </line> <line> <text align="left" length="20">VAT 5%</text> <text align="right" length="60">${ticket.printTax()}</text> </line> <line> <text>--------------------------------------------------------------------------------</text> </line> <line size="2"> <text align="left" length="18" bold="true">Total</text> <text align="right" length="30" bold="true">${ticket.printTotal()}</text> </line> <line> </line> #foreach ($paymentline in $ticket.payments) #if ($paymentline.name == "cash") <line> <text bold="true">Cash</text> </line> #end #if ($paymentline.name == "cashrefund") <line> <text bold="true">Refund</text> </line> <line> <text align="right" length="90">${paymentline.printTotal()}</text> </line> #end #if ($paymentline.name == "magcard") <line> <text bold="true">Mag card</text> </line> <line> <text align="right" length="80">${paymentline.printTotal()}</text> </line> #end #if ($paymentline.name == "magcardrefund") <line> <text bold="true">Mag card refund</text> </line> <line> <text align="right" length="80">${paymentline.printTotal()}</text> </line> #end #if ($paymentline.name == "cheque") <line> <text bold="true">Cheque</text> </line> <line> <text align="right" length="80">${paymentline.printTotal()}</text> </line> #end #if ($paymentline.name == "chequerefund") <line> <text bold="true">Cheque refund</text> </line> <line> <text align="right" length="80">${paymentline.printTotal()}</text> </line> #end #if ($paymentline.name == "paperin") <line> <text bold="true">Voucher</text> </line> <line> <text align="right" length="80">${paymentline.printTotal()}</text> </line> <line> <text align="right" length="80">${paymentline.printDenomination()}</text> </line> #end #if ($paymentline.name == "paperout") <line> <text bold="true">Voucher Refund</text> </line> <line> <text align="right" length="80">${paymentline.printTotal()}</text> </line> #end #if ($paymentline.name == "free") <line> <text bold="true">Free</text> </<ticket>line> <line> <text align="right" length="80">${paymentline.printTotal()}</text> </line> #end #if ($paymentline.name == "debt") <line> <text bold="true">Debt</text> </line> <line> <text align="right" length="80">${paymentline.printTotal()}</text> </line> <line> <text align="right" length="80">Total Outstanding: ${ticket.getCustomer().printCurDebt()}</text> </line> #end #if ($paymentline.name == "advance") <line> <text bold="true">Advance</text> </line> <line> <text align="right" length="80">${paymentline.printTotal()}</text> </line> #end #if ($paymentline.name == "pointsin") <line> <text bold="true">Points</text> </line> <line> <text align="right" length="80">${paymentline.printTotal()}</text> </line> #end #end <line></line> <line> <text align="left" length="15">Cashier:</text> <text>${ticket.printUser()}</text> </line> <line> <text align="left" length="15">Station:</text> #if ($ticket.getProperty("orderfrom")) <text>${ticket.getProperty("orderfrom")}</text> #else <text>${ticket.printHost()}</text> #end </line> <line></line> <line></line> <line></line> <line></line> <line></line> <line></line> <line> <text align="left" length="40">Customer Signature:</text> <text align="right" length="40">Thank you. Visit Again.</text> </line> <line> <text align="right" length="80">for BUSINESS NAME</text> </line> <line> <text>--------------------------------------------------------------------------------</text> </line> </ticket> #else <ticket> <image>Printer.Ticket.Logo</image> <line size="1"> <text align="center" length="48">BUSINESS NAME</text> </line> <line> <text align="center" length="48">ADDRESS1, ADDRESS2</text> </line> <line> <text align="center" length="48">TELEPHONE</text> </line> <line> <text>------------------------------------------------</text> </line> <line> <text align="center" length="48">TAX INVOICE</text> </line> <line> <text align="center" length="48">TAX ID: 100030905200003</text> </line> <line> <text>------------------------------------------------</text> </line> <line></line> #if (${ticket.ticketType} == 0) <line> <text align="left" length="15">Receipt:</text> <text>${ticket.printId()}</text> </line> #end #if (${ticket.ticketType} == 1) <line> <text align="left" length="15">Refund:</text> <text>${ticket.printId()}</text> </line> #end <line> <text align="left" length="15">Date:</text> <text>${ticket.printDate()}</text> </line> #if ($ticket.getCustomer()) <line> <text align="left" length="15">Customer:</text> <text>${ticket.getCustomer().printName()}</text> </line> <line> <text align="left" length="15"></text> <text>${ticket.getCustomer().getSearchkey()}</text> </line> #if ($ticket.getCustomer().getAddress()) <line> <text align="left" length="15"></text> <text>${ticket.getCustomer().getAddress()}</text> </line> #end #end <line></line> <line> <text align="left" length="23">Item</text> <text align="right" length="5">QTY</text> <text align="right" length="10">Price</text> <text align="right" length="10">Value</text> </line> <line> <text>------------------------------------------------</text> </line> #foreach ($ticketline in $ticket.getLines()) <line> #if ($ticketline.isProductCom()) <text align="left" length="23">*${ticketline.printName()}</text> #else <text align="left" length="23">${ticketline.printName()}</text> #end <text align="right" length="5"> ${ticketline.printMultiply()}</text> <text align="right" length="10">${ticketline.printSalePrice()}</text> <text align="right" length="10">${ticketline.printValue()}</text> </line> #if ($ticketline.productAttSetInstId) <line> <text align="left" length="48"> ${ticketline.productAttSetInstDesc}</text> </line> #end #end <line> <text>------------------------------------------------</text> </line> <line> <text>Total Qty: ${ticket.printArticlesCount()}</text> </line> <!-- TAXES START--> <line> <text align="left" length="16">Subtotal</text> <text align="right" length="32">${ticket.printSubTotal()}</text> </line> <line> <text align="left" length="16">VAT 5%</text> <text align="right" length="32">${ticket.printTax()}</text> </line> <!-- TAXES END--> <line size="1"> <text align="left" length="12" bold="true">Total</text> <text align="right" length="36" bold="true">${ticket.printTotal()}</text> </line> <line></line> #foreach ($paymentline in $ticket.payments) #if ($paymentline.name == "cash") <line> <text bold="true">Cash</text> </line> <line> <text align="left" length="12">Tendered:</text> <text align="right" length="36">${paymentline.printPaid()}</text> </line> <line> <text align="left" length="12">Change:</text> <text align="right" length="36">${paymentline.printChange()}</text> </line> #end #if ($paymentline.name == "cashrefund") <line> <text bold="true">Refund</text> </line> <line> <text align="right" length="48">${paymentline.printTotal()}</text> </line> #end #if ($paymentline.name == "magcard") <line> <text bold="true">Mag card</text> </line> <line> <text align="right" length="48">${paymentline.printTotal()}</text> </line> <!-- <line> <text align="left" length="22">Number:</text> <text>${paymentline.printCardNumber()}</text> </line> <line> <text align="left" length="22">Expiration date:</text> <text>${paymentline.printExpirationDate()}</text> </line> <line> <text align="left" length="22">Operation:</text> <text>${paymentline.printTransactionID()}</text> </line> <line> <text align="left" length="22">Authorization:</text> <text>${paymentline.printAuthorization()}</text> </line> --> #end #if ($paymentline.name == "magcardrefund") <line> <text bold="true">Mag card refund</text> </line> <line> <text align="right" length="48">${paymentline.printTotal()}</text> </line> #end #if ($paymentline.name == "cheque") <line> <text bold="true">Cheque</text> </line> <line> <text align="right" length="48">${paymentline.printTotal()}</text> </line> #end #if ($paymentline.name == "chequerefund") <line> <text bold="true">Cheque refund</text> </line> <line> <text align="right" length="48">${paymentline.printTotal()}</text> </line> #end #if ($paymentline.name == "paperin") <line> <text bold="true">Voucher</text> </line> <line> <text align="right" length="48">${paymentline.printTotal()}</text> </line> <line> <text align="right" length="48">${paymentline.printDenomination()}</text> </line> #end #if ($paymentline.name == "paperout") <line> <text bold="true">Voucher Refund</text> </line> <line> <text align="right" length="48">${paymentline.printTotal()}</text> </line> #end #if ($paymentline.name == "free") <line> <text bold="true">Free</text> </line> <line> <text align="right" length="48">${paymentline.printTotal()}</text> </line> #end #if ($paymentline.name == "debt") <line> <text bold="true">Debt</text> </line> <line> <text align="right" length="48">${paymentline.printTotal()}</text> </line> #end #if ($paymentline.name == "advance") <line> <text bold="true">Advance</text> </line> <line> <text align="right" length="48">${paymentline.printTotal()}</text> </line> #end #if ($paymentline.name == "pointsin") <line> <text bold="true">Points</text> </line> <line> <text align="right" length="48">${paymentline.printTotal()}</text> </line> #end #if ($paymentline.name == "currency") <line> <text bold="true">Currency - ${paymentline.printCurrency()}</text> </line> <line> <text align="left" length="12">Tendered:</text> <text align ="right" length="36">${paymentline.printCurrency()}${paymentline.printPaidCurrency()}</text> </line> <line> <text align="left" length="15">Conversion Rate:</text> <text align ="right" length="33">${paymentline.printRate()}</text> </line> <line> <text align="left" length="12">Change:</text> <text align ="right" length="36">${paymentline.printChange()}</text> </line> #end #if ($paymentline.name == "online") <line> <text bold="true">Online - $paymentline.getTransactionID()</text> </line> <line> <text align="right" length="48">${paymentline.printTotal()}</text> </line> #end #end <line></line> <line> <text align="left" length="10">Cashier:</text> <text>${ticket.printUser()}</text> </line> <line> <text align="left" length="10">Station:</text> #if ($ticket.getProperty("orderfrom")) <text>${ticket.getProperty("orderfrom")}</text> #else <text>${ticket.printHost()}</text> #end </line> <line></line> <line> <text align="center" length="48">Thank you for your visit.</text> </line> <!-- TICKET COUPON START --> <!-- TICKET COUPON END --> </ticket> #end #foreach ($paymentline in $ticket.payments) #if ($paymentline.name == "cash") <opendrawer/> #end #if ($paymentline.name == "cashrefund") <opendrawer/> #end #end </output> Save & restart