Here is how to add custom reports in Saleculator which can be printed in thermal receipt printer. This feature is available only from version 4.0 u2 onwards.
Procedure #
Go to Administration Menu > Maintenance > Resources
1. Add the below line in Menu.Root:
group.addPanel("/com/posics/images/posreports.png", "Menu.POSReports", "com.posics.pos.reports.JPanelPOSReports");
2. Add below line in Roles:
<class name="com.posics.pos.reports.JPanelPOSReports"/>
3. Create a new text resource with the name POS.Reports and copy-paste below lines:
<?xml version="1.0" encoding="UTF-8"?>
<!--
Posics Saleculator - Billing System.
Copyright (C) 2009 Posics
This file is part of Posics Saleculator.
-->
<configuration>
<button key="button.print" titlekey="Sales Log" template="POS.Report.SalesLog"/>
<button key="button.print" titlekey="Product Sales" template="POS.Report.ProductSales"/>
<button key="button.print" titlekey="Current Inventory" template="POS.Report.CurrentInventory"/>
<button key="button.print" titlekey="Cash Closed" template="POS.Report.CashClosed"/>
<button key="button.print" titlekey="Payments" template="POS.Report.Payments"/>
<button key="button.print" titlekey="Payments" template="POS.Report.ProfitandLoss"/>
<button key="button.print" titlekey="Payments" template="POS.Report.Tax"/>
</configuration>
Save
Sales Log Report: #
Create a new text resource with the name POS.Report.SalesLog and copy-paste below lines:
<?xml version="1.0" encoding="UTF-8"?>
<!--
Posics Saleculator - Billing System.
Copyright (C) 2009 Posics
This file is part of Posics Saleculator.
-->
<output>
<sql><![CDATA[
SELECT TICKETS.TICKETID, RECEIPTS.DATENEW,
SUM((TICKETLINES.PRICE + TICKETLINES.PRICE * TAXES.RATE) * TICKETLINES.UNITS),
SUM((TICKETLINES.PRICE * TAXES.RATE) * TICKETLINES.UNITS)
FROM RECEIPTS
JOIN TICKETS ON RECEIPTS.ID = TICKETS.ID AND (TICKETS.TICKETTYPE=0 OR TICKETS.TICKETTYPE=1)
JOIN TICKETLINES ON TICKETLINES.TICKET = RECEIPTS.ID
JOIN TAXES ON TICKETLINES.TAXID = TAXES.ID
WHERE RECEIPTS.DATENEW >= $startDate AND RECEIPTS.DATENEW <= $endDate
GROUP BY RECEIPTS.ID
ORDER BY RECEIPTS.DATENEW
]]></sql>
<ticket>
<image>Printer.Ticket.Logo</image>
<line></line>
<line size="1">
<text align ="center" length="48" bold="true">Sales Log</text>
</line>
<line></line>
<line>
<text length="12">Start Date:</text>
<text length="36">$startDate</text>
</line>
<line>
<text length="12">End Date:</text>
<text length="36">$endDate</text>
</line>
<line>
</line>
<line>
<text align ="left" length="5">#</text>
<text align ="left" length="20">Date</text>
<text align ="right" length="13">Total</text>
<text align ="right" length="10">Tax</text>
</line>
<line>
<text>------------------------------------------------</text>
</line>
#foreach ($line in $posreport.getResult())
<line>
<text align ="left" length="5">${line.printValue(0)}</text>
<text align ="left" length="20">${line.printDate(1)}</text>
<text align ="right" length="13">${line.printCurrency(2)}</text>
<text align ="right" length="10">${line.printCurrency(3)}</text>
</line>
#end
<line>
<text>------------------------------------------------</text>
</line>
<line>
<text align ="left" length="5">Total</text>
<text align ="left" length="20"></text>
<text align ="right" bold="true" length="13">$posreport.printTotal(2)</text>
<text align ="right" bold="true" length="10">$posreport.printTotal(3)</text>
</line>
</ticket>
</output>
Save
Payments Report: #
Create a new text resource with the name POS.Report.Payments and copy-paste below lines:
<?xml version="1.0" encoding="UTF-8"?>
<!--
Posics Saleculator - Billing System.
Copyright (C) 2009 Posics
This file is part of Posics Saleculator.
-->
<output>
<sql><![CDATA[
SELECT RECEIPTS.DATENEW, TICKETS.TICKETID, PAYMENTS.PAYMENT, PAYMENTS.TOTAL, ACCOUNTHEADS.NAME, PAYMENTS.NOTES
FROM PAYMENTS
JOIN RECEIPTS ON PAYMENTS.RECEIPT = RECEIPTS.ID
LEFT JOIN TICKETS ON TICKETS.ID=RECEIPTS.ID
JOIN ACCOUNTHEADS ON ACCOUNTHEADS.ID = RECEIPTS.ACCOUNTHEAD
WHERE RECEIPTS.DATENEW >= $startDate AND RECEIPTS.DATENEW <= $endDate
ORDER BY RECEIPTS.DATENEW
]]></sql>
<ticket>
<image>Printer.Ticket.Logo</image>
<line></line>
<line size="1">
<text align ="center" length="48" bold="true">Payments</text>
</line>
<line></line>
<line>
<text length="12">Start Date:</text>
<text length="36">$startDate</text>
</line>
<line>
<text length="12">End Date:</text>
<text length="36">$endDate</text>
</line>
<line>
</line>
<line>
<text align ="left" length="20">Date</text>
<text align ="left" length="10">Receipt</text>
<text align ="left" length="8">Type</text>
<text align ="right" length="10">Total</text>
</line>
<line>
<text>------------------------------------------------</text>
</line>
#foreach ($line in $posreport.getResult())
<line>
<text align ="left" length="20">${line.printDate(0)}</text>
<text align ="left" length="10">${line.printValue(1)}</text>
<text align ="left" length="8">${line.printValue(2)}</text>
<text align ="right" length="10">${line.printCurrency(3)}</text>
</line>
#if(!$line.printValue(5).equals(""))
<line>
<text>${line.printValue(4)} - ${line.printValue(5)}</text>
</line>
#end
#end
<line>
<text>------------------------------------------------</text>
</line>
<line>
<text align ="left" length="20">Total</text>
<text align ="left" length="10"></text>
<text align ="left" length="8"></text>
<text align ="right" bold="true" length="10">$posreport.printTotal(3)</text>
</line>
</ticket>
</output>
Save
Cash Closed Report #
Create a new text resource with the name POS.Report.CashClosed and copy-paste below lines:
<?xml version="1.0" encoding="UTF-8"?>
<!--
Posics Saleculator - Billing System.
Copyright (C) 2009 Posics
This file is part of Posics Saleculator.
-->
<output>
<sql><![CDATA[
SELECT CLOSEDCASH.MONEY AS ID, CLOSEDCASH.HOST, CLOSEDCASH.HOSTSEQUENCE, CLOSEDCASH.DATESTART, CLOSEDCASH.DATEEND, SUM(PAYMENTS.TOTAL) AS TOTAL
FROM CLOSEDCASH LEFT JOIN RECEIPTS ON RECEIPTS.MONEY = CLOSEDCASH.MONEY LEFT JOIN PAYMENTS ON PAYMENTS.RECEIPT = RECEIPTS.ID
WHERE CLOSEDCASH.DATEEND IS NOT NULL AND CLOSEDCASH.DATESTART >= $startDate AND CLOSEDCASH.DATESTART <= $endDate
GROUP BY CLOSEDCASH.MONEY ORDER BY CLOSEDCASH.HOSTSEQUENCE DESC
]]></sql>
<ticket>
<image>Printer.Ticket.Logo</image>
<line></line>
<line size="1">
<text align ="center" length="48" bold="true">Cash Closed</text>
</line>
<line></line>
<line>
<text length="12">Start Date:</text>
<text length="36">$startDate</text>
</line>
<line>
<text length="12">End Date:</text>
<text length="36">$endDate</text>
</line>
<line>
</line>
<line>
<text align ="left" length="15">Host</text>
<text align ="left" length="10">Sequence</text>
<text align ="right" length="23">Total</text>
</line>
<line>
<text>------------------------------------------------</text>
</line>
#foreach ($line in $posreport.getResult())
<line>
<text align ="left" length="15">${line.printValue(1)}</text>
<text align ="left" length="10">${line.printValue(2)}</text>
<text align ="right" length="23">${line.printCurrency(5)}</text>
</line>
<line>
<text>${line.printDate(3)} TO ${line.printDate(4)}</text>
</line>
#end
<line>
<text>------------------------------------------------</text>
</line>
<line>
<text align ="left" length="15">Total</text>
<text align ="left" length="10"></text>
<text align ="right" bold="true" length="23">$posreport.printTotal(5)</text>
</line>
</ticket>
</output>
Save
Current Inventory Report: #
Create a new text resource with the name POS.Report.CurrentInventory and copy-paste below lines:
<?xml version="1.0" encoding="UTF-8"?>
<!--
Posics Saleculator - Billing System.
Copyright (C) 2009 Posics
This file is part of Posics Saleculator.
-->
<output>
<sql><![CDATA[
SELECT PRODUCTS.NAME, PRODUCTS.CODE, SUM(STOCKCURRENT.UNITS) AS UNITS, (PRODUCTS.PRICEBUY*SUM(STOCKCURRENT.UNITS)) AS COST
FROM STOCKCURRENT JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID GROUP BY PRODUCTS.ID ORDER BY PRODUCTS.NAME
]]></sql>
<ticket>
<image>Printer.Ticket.Logo</image>
<line></line>
<line size="1">
<text align ="center" length="48" bold="true">Current Inventory</text>
</line>
<line></line>
<line>
<text>Date: $posreport.printDate()</text>
</line>
<line>
</line>
<line>
<text align ="left" length="20">Product</text>
<text align ="right" length="10">Units</text>
<text align ="right" length="18">Value</text>
</line>
<line>
<text>------------------------------------------------</text>
</line>
#foreach ($line in $posreport.getResult())
<line>
<text align ="left" length="20">${line.printValue(0)} (${line.printValue(1)})</text>
<text align ="right" length="10">${line.printValue(2)}</text>
<text align ="right" length="18">${line.printCurrency(3)}</text>
</line>
#end
<line>
<text>------------------------------------------------</text>
</line>
<line>
<text align ="left" length="30">${posreport.printCount()} Products</text>
<text align ="right" bold="true" length="18">$posreport.printTotal(3)</text>
</line>
</ticket>
</output>
Save
Product Sales Report: #
Create a new text resource with the name POS.Report.ProductSales and copy-paste below lines:
<?xml version="1.0" encoding="UTF-8"?>
<!--
Posics Saleculator - Billing System.
Copyright (C) 2009 Posics
This file is part of Posics Saleculator.
-->
<output>
<sql><![CDATA[
SELECT CATEGORIES.NAME, PRODUCTS.NAME, PRODUCTS.CODE, SUM(TICKETLINES.UNITS) AS UNITS, SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL
FROM RECEIPTS, TICKETS, TICKETLINES
LEFT JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID
LEFT JOIN CATEGORIES ON CATEGORIES.ID=PRODUCTS.CATEGORY
WHERE RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND
RECEIPTS.DATENEW >= $startDate AND RECEIPTS.DATENEW <= $endDate
GROUP BY PRODUCTS.ID ORDER BY CATEGORIES.NAME, PRODUCTS.NAME
]]></sql>
<ticket>
<image>Printer.Ticket.Logo</image>
<line></line>
<line size="1">
<text align ="center" length="48" bold="true">Product Sales</text>
</line>
<line></line>
<line>
<text length="12">Start Date:</text>
<text length="36">$startDate</text>
</line>
<line>
<text length="12">End Date:</text>
<text length="36">$endDate</text>
</line>
<line>
</line>
<line>
<text align ="left" length="25">Product</text>
<text align ="right" length="10">Units</text>
<text align ="right" length="13">Total</text>
</line>
<line>
<text>------------------------------------------------</text>
</line>
#foreach ($line in $posreport.getResult())
<line>
<text align ="left" length="25">${line.printValue(1)} (${line.printValue(2)})</text>
<text align ="right" length="10">${line.printValue(3)}</text>
<text align ="right" length="13">${line.printCurrency(4)}</text>
</line>
#end
<line>
<text>------------------------------------------------</text>
</line>
<line>
<text align ="left" length="25">Total</text>
<text align ="right" length="10"></text>
<text align ="right" bold="true" length="13">$posreport.printTotal(4)</text>
</line>
</ticket>
</output>
Save
Profit and Loss Report: #
Create a new text resource with the name POS.Report.ProfitandLoss and copy-paste below lines:
<output>
<sql><![CDATA[
SELECT TICKETS.TICKETID, RECEIPTS.DATENEW,
SUM(TICKETLINES.PRICE * TICKETLINES.UNITS),
SUM((TICKETLINES.PRICE-PRODUCTS.PRICEBUY) * TICKETLINES.UNITS)
FROM RECEIPTS
JOIN TICKETS ON RECEIPTS.ID = TICKETS.ID AND (TICKETS.TICKETTYPE=0 OR TICKETS.TICKETTYPE=1)
JOIN TICKETLINES ON TICKETLINES.TICKET = RECEIPTS.ID
JOIN PRODUCTS ON PRODUCTS.ID= TICKETLINES.PRODUCT
WHERE RECEIPTS.DATENEW >= $startDate AND RECEIPTS.DATENEW <= $endDate
GROUP BY TICKETS.TICKETID, RECEIPTS.DATENEW
ORDER BY RECEIPTS.DATENEW;
]]></sql>
<ticket>
<image>Printer.Ticket.Logo</image>
<line></line>
<line size="1">
<text align ="center" length="48" bold="true">Invoice Profit</text>
</line>
<line></line>
<line>
<text length="12">Start Date:</text>
<text length="36">$startDate</text>
</line>
<line>
<text length="12">End Date:</text>
<text length="36">$endDate</text>
</line>
<line>
</line>
<line>
<text align ="left" length="5">#</text>
<text align ="left" length="20">Date</text>
<text align ="right" length="13">Total</text>
<text align ="right" length="10">Profit</text>
</line>
<line>
<text>------------------------------------------------</text>
</line>
#foreach ($line in $posreport.getResult())
<line>
<text align ="left" length="5">${line.printValue(0)}</text>
<text align ="left" length="20">${line.printDate(1)}</text>
<text align ="right" length="13">${line.printCurrency(2)}</text>
<text align ="right" length="10">${line.printCurrency(3)}</text>
</line>
#end
<line>
<text>------------------------------------------------</text>
</line>
<line>
<text align ="left" length="5">Total</text>
<text align ="left" length="20"></text>
<text align ="right" bold="true" length="13">$posreport.printTotal(2)</text>
<text align ="right" bold="true" length="10">$posreport.printTotal(3)</text>
</line>
</ticket>
</output>
Save
Tax Report (SGST & CGST): #
Create a new text resource with the name POS.Report.Tax and copy-paste below lines:
<?xml version="1.0" encoding="UTF-8"?>
<!--
Posics Saleculator - Billing System.
Copyright (C) 2009 Posics
This file is part of Posics Saleculator.
-->
<output>
<sql><![CDATA[
SELECT RECEIPTS.ID AS RECEIPT, RECEIPTS.DATENEW AS DATE, TICKETS.TICKETID, SUM(TICKETLINES.UNITS) AS QTY,
IFNULL(TAXLINES.BASE,0)+(2*IFNULL(TAXLINES.AMOUNT,0))
+IFNULL(CGST6.BASE,0)+(2*IFNULL(CGST6.TAX,0))
+IFNULL(CGST9.BASE,0)+(2*IFNULL(CGST9.TAX,0))
+IFNULL(CGST12.BASE,0)+(2*IFNULL(CGST12.TAX,0)) AS TOTAL,
IFNULL(TAXLINES.BASE, 0) AS GST5BASE, IFNULL(TAXLINES.AMOUNT,0) AS CGST25TAX, IFNULL(SGST25.TAX,0) AS SGST25TAX,
IFNULL(CGST6.BASE, 0) AS GST12BASE, IFNULL(CGST6.TAX,0) AS CGST6TAX, IFNULL(SGST6.TAX,0) AS SGST6TAX,
IFNULL(CGST9.BASE, 0) AS GST18BASE, IFNULL(CGST9.TAX,0) AS CGST9TAX, IFNULL(SGST9.TAX,0) AS SGST9TAX,
IFNULL(CGST12.BASE, 0) AS GST24BASE, IFNULL(CGST12.TAX,0) AS CGST12TAX, IFNULL(SGST12.TAX,0) AS SGST12TAX,
IFNULL(EXEMPT.BASE, 0) AS EXEMPTBASE, IFNULL(EXEMPT.TAX,0) AS EXEMPTTAX
FROM RECEIPTS
JOIN TICKETS ON TICKETS.ID=RECEIPTS.ID
LEFT JOIN TICKETLINES ON TICKETS.ID=TICKETLINES.TICKET
LEFT JOIN TAXLINES ON RECEIPTS.ID=TAXLINES.RECEIPT AND TAXLINES.TAXID='5f864912-ae05-4594-9948-febe2fef454b'
LEFT JOIN TAXES ON TAXLINES.TAXID=TAXES.ID
LEFT JOIN (
SELECT RECEIPTS.ID AS RECEIPT, TICKETS.TICKETID, TAXES.NAME AS TAXNAME, TAXLINES.BASE, TAXLINES.AMOUNT AS TAX FROM RECEIPTS
JOIN TICKETS ON TICKETS.ID=RECEIPTS.ID
JOIN TICKETLINES ON TICKETS.ID=TICKETLINES.TICKET
JOIN TAXLINES ON RECEIPTS.ID=TAXLINES.RECEIPT AND TAXLINES.TAXID='666249c8-b5a5-4fda-b7bf-296bc7ac4c80'
JOIN TAXES ON TAXLINES.TAXID=TAXES.ID
WHERE RECEIPTS.DATENEW >= $startDate AND RECEIPTS.DATENEW <= $endDate
GROUP BY RECEIPTS.ID) SGST25 ON RECEIPTS.ID=SGST25.RECEIPT
LEFT JOIN (
SELECT RECEIPTS.ID AS RECEIPT, TICKETS.TICKETID, TAXES.NAME AS TAXNAME, TAXLINES.BASE, TAXLINES.AMOUNT AS TAX FROM RECEIPTS
JOIN TICKETS ON TICKETS.ID=RECEIPTS.ID
JOIN TICKETLINES ON TICKETS.ID=TICKETLINES.TICKET
JOIN TAXLINES ON RECEIPTS.ID=TAXLINES.RECEIPT AND TAXLINES.TAXID='30f17067-3e48-4c76-a123-fc1da49ff3ae'
JOIN TAXES ON TAXLINES.TAXID=TAXES.ID
WHERE RECEIPTS.DATENEW >= $startDate AND RECEIPTS.DATENEW <= $endDate
GROUP BY RECEIPTS.ID) CGST6 ON RECEIPTS.ID=CGST6.RECEIPT
LEFT JOIN (
SELECT RECEIPTS.ID AS RECEIPT, TICKETS.TICKETID, TAXES.NAME AS TAXNAME, TAXLINES.BASE, TAXLINES.AMOUNT AS TAX FROM RECEIPTS
JOIN TICKETS ON TICKETS.ID=RECEIPTS.ID
JOIN TICKETLINES ON TICKETS.ID=TICKETLINES.TICKET
JOIN TAXLINES ON RECEIPTS.ID=TAXLINES.RECEIPT AND TAXLINES.TAXID='db386ab4-b837-47fd-894b-10ec0f433710'
JOIN TAXES ON TAXLINES.TAXID=TAXES.ID
WHERE RECEIPTS.DATENEW >= $startDate AND RECEIPTS.DATENEW <= $endDate
GROUP BY RECEIPTS.ID) SGST6 ON RECEIPTS.ID=SGST6.RECEIPT
LEFT JOIN (
SELECT RECEIPTS.ID AS RECEIPT, TICKETS.TICKETID, TAXES.NAME AS TAXNAME, TAXLINES.BASE, TAXLINES.AMOUNT AS TAX FROM RECEIPTS
JOIN TICKETS ON TICKETS.ID=RECEIPTS.ID
JOIN TICKETLINES ON TICKETS.ID=TICKETLINES.TICKET
JOIN TAXLINES ON RECEIPTS.ID=TAXLINES.RECEIPT AND TAXLINES.TAXID='249d73a7-b09e-4e4c-8863-a85957dd7191'
JOIN TAXES ON TAXLINES.TAXID=TAXES.ID
WHERE RECEIPTS.DATENEW >= $startDate AND RECEIPTS.DATENEW <= $endDate
GROUP BY RECEIPTS.ID) CGST9 ON RECEIPTS.ID=CGST9.RECEIPT
LEFT JOIN (
SELECT RECEIPTS.ID AS RECEIPT, TICKETS.TICKETID, TAXES.NAME AS TAXNAME, TAXLINES.BASE, TAXLINES.AMOUNT AS TAX FROM RECEIPTS
JOIN TICKETS ON TICKETS.ID=RECEIPTS.ID
JOIN TICKETLINES ON TICKETS.ID=TICKETLINES.TICKET
JOIN TAXLINES ON RECEIPTS.ID=TAXLINES.RECEIPT AND TAXLINES.TAXID='c564d077-0c3a-42f8-a4ad-f74437a5e89f'
JOIN TAXES ON TAXLINES.TAXID=TAXES.ID
WHERE RECEIPTS.DATENEW >= $startDate AND RECEIPTS.DATENEW <= $endDate
GROUP BY RECEIPTS.ID) SGST9 ON RECEIPTS.ID=SGST9.RECEIPT
LEFT JOIN (
SELECT RECEIPTS.ID AS RECEIPT, TICKETS.TICKETID, TAXES.NAME AS TAXNAME, TAXLINES.BASE, TAXLINES.AMOUNT AS TAX FROM RECEIPTS
JOIN TICKETS ON TICKETS.ID=RECEIPTS.ID
JOIN TICKETLINES ON TICKETS.ID=TICKETLINES.TICKET
JOIN TAXLINES ON RECEIPTS.ID=TAXLINES.RECEIPT AND TAXLINES.TAXID='27eefa5f-07ce-4437-93b3-1fa6cd5b7da6'
JOIN TAXES ON TAXLINES.TAXID=TAXES.ID
WHERE RECEIPTS.DATENEW >= $startDate AND RECEIPTS.DATENEW <= $endDate
GROUP BY RECEIPTS.ID) CGST12 ON RECEIPTS.ID=CGST12.RECEIPT
LEFT JOIN (
SELECT RECEIPTS.ID AS RECEIPT, TICKETS.TICKETID, TAXES.NAME AS TAXNAME, TAXLINES.BASE, TAXLINES.AMOUNT AS TAX FROM RECEIPTS
JOIN TICKETS ON TICKETS.ID=RECEIPTS.ID
JOIN TICKETLINES ON TICKETS.ID=TICKETLINES.TICKET
JOIN TAXLINES ON RECEIPTS.ID=TAXLINES.RECEIPT AND TAXLINES.TAXID='715e7d89-70df-4aed-be72-92c9a71bc32a'
JOIN TAXES ON TAXLINES.TAXID=TAXES.ID
WHERE RECEIPTS.DATENEW >= $startDate AND RECEIPTS.DATENEW <= $endDate
GROUP BY RECEIPTS.ID) SGST12 ON RECEIPTS.ID=SGST12.RECEIPT
LEFT JOIN (
SELECT RECEIPTS.ID AS RECEIPT, TICKETS.TICKETID, TAXES.NAME AS TAXNAME, TAXLINES.BASE, TAXLINES.AMOUNT AS TAX FROM RECEIPTS
JOIN TICKETS ON TICKETS.ID=RECEIPTS.ID
JOIN TICKETLINES ON TICKETS.ID=TICKETLINES.TICKET
JOIN TAXLINES ON RECEIPTS.ID=TAXLINES.RECEIPT AND TAXLINES.TAXID='000'
JOIN TAXES ON TAXLINES.TAXID=TAXES.ID
WHERE RECEIPTS.DATENEW >= $startDate AND RECEIPTS.DATENEW <= $endDate
GROUP BY RECEIPTS.ID) EXEMPT ON RECEIPTS.ID=EXEMPT.RECEIPT
WHERE RECEIPTS.DATENEW >= $startDate AND RECEIPTS.DATENEW <= $endDate
GROUP BY RECEIPTS.ID
ORDER BY TICKETS.TICKETID
]]></sql>
<ticket>
<line></line>
<line size="1">
<text>Saleculator Point of Sale</text>
</line>
<line size="1">
<text>GST Return</text>
</line>
<line></line>
<line>
<text length="12">Start Date:</text>
<text length="36">$startDate</text>
</line>
<line>
<text length="12">End Date:</text>
<text length="36">$endDate</text>
</line>
<line>
</line>
<line>
<text align ="left" length="20">DATE</text>
<text align ="center" length="10">TICKET ID</text>
<text align ="center" length="10">QTY</text>
<text align ="right" length="10">TOTAL</text>
<text align ="right" length="10">GST5BASE</text>
<text align ="right" length="10">CGST2.5</text>
<text align ="right" length="10">SGST2.5</text>
<text align ="right" length="10">GST12BASE</text>
<text align ="right" length="10">CGST6</text>
<text align ="right" length="10">SGST6</text>
<text align ="right" length="10">GST18BASE</text>
<text align ="right" length="10">CGST9</text>
<text align ="right" length="10">SGST9</text>
<text align ="right" length="10">GST24BASE</text>
<text align ="right" length="10">CGST12</text>
<text align ="right" length="10">SGST12</text>
<text align ="right" length="10">EXEMPT</text>
</line>
<line>
<text></text>
</line>
#foreach ($line in $posreport.getResult())
<line>
<text align ="left" length="20">${line.printDate(1)}</text>
<text align ="center" length="10">${line.printValue(2)}</text>
<text align ="center" length="10">${line.printValue(3)}</text>
<text align ="right" length="10">${line.printCurrency(4)}</text>
<text align ="right" length="10">${line.printCurrency(5)}</text>
<text align ="right" length="10">${line.printCurrency(6)}</text>
<text align ="right" length="10">${line.printCurrency(7)}</text>
<text align ="right" length="10">${line.printCurrency(8)}</text>
<text align ="right" length="10">${line.printCurrency(9)}</text>
<text align ="right" length="10">${line.printCurrency(10)}</text>
<text align ="right" length="10">${line.printCurrency(11)}</text>
<text align ="right" length="10">${line.printCurrency(12)}</text>
<text align ="right" length="10">${line.printCurrency(13)}</text>
<text align ="right" length="10">${line.printCurrency(14)}</text>
<text align ="right" length="10">${line.printCurrency(15)}</text>
<text align ="right" length="10">${line.printCurrency(16)}</text>
<text align ="right" length="10">${line.printCurrency(17)}</text>
</line>
#end
<line>
<text></text>
</line>
<line>
<text align ="left" length="20">Total</text>
<text align ="left" length="10"></text>
<text align ="center" bold="true" length="10">$posreport.printTotal(3)</text>
<text align ="right" bold="true" length="10">$posreport.printTotal(4)</text>
<text align ="right" bold="true" length="10">$posreport.printTotal(5)</text>
<text align ="right" bold="true" length="10">$posreport.printTotal(6)</text>
<text align ="right" bold="true" length="10">$posreport.printTotal(7)</text>
<text align ="right" bold="true" length="10">$posreport.printTotal(8)</text>
<text align ="right" bold="true" length="10">$posreport.printTotal(9)</text>
<text align ="right" bold="true" length="10">$posreport.printTotal(10)</text>
<text align ="right" bold="true" length="10">$posreport.printTotal(11)</text>
<text align ="right" bold="true" length="10">$posreport.printTotal(12)</text>
<text align ="right" bold="true" length="10">$posreport.printTotal(13)</text>
<text align ="right" bold="true" length="10">$posreport.printTotal(14)</text>
<text align ="right" bold="true" length="10">$posreport.printTotal(15)</text>
<text align ="right" bold="true" length="10">$posreport.printTotal(16)</text>
<text align ="right" bold="true" length="10">$posreport.printTotal(17)</text>
</line>
</ticket>
</output>
Save
Note: Follow the below steps to find the Tax ID for different Tax Types
- Open MySQL prompt (Windows)
- Type SELECT * FROM TAXES; (Press Enter)
- This will show you an output listing all the available Taxes along with their IDs, double click on the ID to highlight and copy the same. (Refer to the below Image, Tax IDs are shown by the red tick marks)

Methods used in POS Reports #
$posreport.getResult(): Get result of the executed query $posreport.roundDouble(value, decimals): Get rounded value $posreport.formatCurrency(value): Get currency format of the value $posreport.getTotal(field_number): Get total of the field $posreport.printTotal(field_number): Print currency formatted total of the field $posreport.printCount(): Print number of records in the result $posreport.printDate(): Print current date and time $line.printValue(field_number): Print field value as text $line.printCurrency(field_number): Print field value as currency $line.printDate(field_number): Print field value as date $line.getDouble(field_number): Get double value of the field for calculation $line.getInteger(field_number): Get integer value of the field for calculation
Leave a Reply