View Categories

Setting Printer.Ticket for 80 column pre-printed form

14 min read

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

0 Comments

Leave a Reply

Arrow-up