POS - Cash flow report (ver. 2)
This code snippet is intented to implement a simple cash flow report (ver. 2).
To Menu.Root add new row:
submenu.addPanel("/com/openbravo/images/appointment.png", "Menu.Cash", "/com/openbravo/reports/cash.bs");
Into pos_messages.properties add new row:
Menu.Cash=Cash flow (long)
Into roles add new row:
<class name="/com/openbravo/reports/cash.bs"/>
Make new file called cash1.bs into reports folder:
// Openbravo POS is a point of sales application designed for touch screens. // Copyright (C) 2007-2008 Openbravo, S.L. // http://sourceforge.net/projects/openbravopos // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA report = new com.openbravo.pos.reports.PanelReportBean(); report.setTitleKey("Menu.Cash"); report.setReport("/com/openbravo/reports/cash"); report.setResourceBundle("com/openbravo/reports/cash_messages"); report.setSentence("SELECT " + "RECEIPTS.DATENEW, " + "PAYMENTS.PAYMENT, " + "SUM( PAYMENTS.TOTAL ) AS PAYMENT_TOTAL " + "FROM RECEIPTS " + "LEFT JOIN PAYMENTS ON RECEIPTS.ID = PAYMENTS.RECEIPT " + "WHERE ?(QBF_FILTER) " + "GROUP BY DATE_FORMAT(RECEIPTS.DATENEW, '%d.%m.%Y'), PAYMENTS.PAYMENT"); report.addParameter("RECEIPTS.DATENEW"); report.addParameter("RECEIPTS.DATENEW"); paramdates = new com.openbravo.pos.reports.JParamsDatesInterval(); paramdates.setStartDate(com.openbravo.beans.DateUtils.getToday()); report.addQBFFilter(paramdates); report.addField("DATENEW", com.openbravo.data.loader.Datas.TIMESTAMP); report.addField("PAYMENT", com.openbravo.data.loader.Datas.STRING); report.addField("PAYMENT_TOTAL", com.openbravo.data.loader.Datas.DOUBLE); return report;
Make new file called cash1.jrxml into reports folder:
<?xml version="1.0" encoding="UTF-8"?> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="cash" pageWidth="595" pageHeight="842" columnWidth="535" leftMargin="30" rightMargin="30" topMargin="20" bottomMargin="20"> <property name="ireport.scriptlethandling" value="0"/> <property name="ireport.encoding" value="UTF-8"/> <import value="net.sf.jasperreports.engine.*"/> <import value="java.util.*"/> <import value="net.sf.jasperreports.engine.data.*"/> <parameter name="ARG" class="java.lang.Object" isForPrompting="false"/> <queryString> <![CDATA[SELECT RECEIPTS.DATENEW, PAYMENTS.PAYMENT, SUM( PAYMENTS.TOTAL ) AS PAYMENT_TOTAL FROM RECEIPTS LEFT JOIN PAYMENTS ON RECEIPTS.ID = PAYMENTS.RECEIPT GROUP BY DATE_FORMAT(RECEIPTS.DATENEW, '%d.%m.%Y'), PAYMENTS.PAYMENT]]> </queryString> <field name="DATENEW" class="java.util.Date"/> <field name="PAYMENT" class="java.lang.String"/> <field name="PAYMENT_TOTAL" class="java.lang.Double"/> <background> <band/> </background> <title> <band height="72"> <rectangle radius="5"> <reportElement key="rectangle-1" mode="Opaque" x="0" y="0" width="530" height="36" forecolor="#000000" backcolor="#409617"/> <graphicElement fill="Solid"> <pen lineWidth="0.25" lineStyle="Solid"/> </graphicElement> </rectangle> <image scaleImage="Clip"> <reportElement key="image-1" x="390" y="1" width="132" height="34"/> <box> <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <bottomPen lineWidth="0.0" lineColor="#000000"/> <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> </box> <imageExpression class="java.awt.Image"><![CDATA[com.openbravo.data.loader.ImageUtils.readImageFromResource("/com/openbravo/images/poweredby.png")]]></imageExpression> </image> <textField pattern="" isBlankWhenNull="false"> <reportElement key="textField-18" mode="Transparent" x="13" y="7" width="375" height="28" forecolor="#FFFFFF" backcolor="#FFFFFF"/> <box> <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <bottomPen lineWidth="0.0" lineColor="#000000"/> <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#FFFFFF"/> </box> <textElement textAlignment="Left" verticalAlignment="Top" rotation="None" lineSpacing="Single"> <font fontName="Dialog" size="18" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica" pdfEncoding="Cp1252" isPdfEmbedded="false"/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$R{label.title}]]></textFieldExpression> </textField> <textField pattern="" isBlankWhenNull="false"> <reportElement key="textField-19" mode="Opaque" x="213" y="45" width="173" height="20" forecolor="#000000" backcolor="#FFFFFF"/> <box> <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <bottomPen lineWidth="0.0" lineColor="#000000"/> <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> </box> <textElement textAlignment="Right" verticalAlignment="Top" rotation="None" lineSpacing="Single"> <font fontName="Dialog" size="12" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica-Bold" pdfEncoding="Cp1252" isPdfEmbedded="false"/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$R{label.printed}]]></textFieldExpression> </textField> <textField evaluationTime="Report" pattern="dd.MM.yyyy HH:mm:ss" isBlankWhenNull="false"> <reportElement key="textField" x="388" y="45" width="144" height="18"/> <textElement> <font size="12"/> </textElement> <textFieldExpression class="java.util.Date"><![CDATA[new java.util.Date()]]></textFieldExpression> </textField> <textField pattern="" isBlankWhenNull="true"> <reportElement key="textField-2" mode="Transparent" x="73" y="45" width="54" height="20"/> <box> <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <bottomPen lineWidth="0.0" lineColor="#000000"/> <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#FFFFFF"/> </box> <textElement textAlignment="Left" verticalAlignment="Top" rotation="None" lineSpacing="Single"> <font fontName="Dialog" size="12" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica" pdfEncoding="Cp1252" isPdfEmbedded="false"/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[com.openbravo.format.Formats.DATE.formatValue((java.util.Date)((Object[])((Object[])$P{ARG})[0])[1])]]></textFieldExpression> </textField> <textField pattern="" isBlankWhenNull="true"> <reportElement key="textField-3" mode="Transparent" x="138" y="45" width="59" height="20"/> <box> <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <bottomPen lineWidth="0.0" lineColor="#000000"/> <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#FFFFFF"/> </box> <textElement textAlignment="Left" verticalAlignment="Top" rotation="None" lineSpacing="Single"> <font fontName="Dialog" size="12" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica" pdfEncoding="Cp1252" isPdfEmbedded="false"/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[com.openbravo.format.Formats.DATE.formatValue((java.util.Date)((Object[])((Object[])$P{ARG})[0])[3])]]></textFieldExpression> </textField> <staticText> <reportElement key="staticText-1" mode="Transparent" x="128" y="45" width="10" height="20"/> <box> <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <bottomPen lineWidth="0.0" lineColor="#000000"/> <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#FFFFFF"/> </box> <textElement textAlignment="Center" verticalAlignment="Top" rotation="None" lineSpacing="Single"> <font fontName="Dialog" size="12" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica" pdfEncoding="Cp1252" isPdfEmbedded="false"/> </textElement> <text><![CDATA[- ]]></text> </staticText> <textField pattern="" isBlankWhenNull="false"> <reportElement key="textField-19" mode="Opaque" x="5" y="45" width="64" height="20" forecolor="#000000" backcolor="#FFFFFF"/> <box> <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <bottomPen lineWidth="0.0" lineColor="#000000"/> <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> </box> <textElement textAlignment="Right" verticalAlignment="Top" rotation="None" lineSpacing="Single"> <font fontName="Dialog" size="12" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica-Bold" pdfEncoding="Cp1252" isPdfEmbedded="false"/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$R{label.period}]]></textFieldExpression> </textField> </band> </title> <pageHeader> <band/> </pageHeader> <columnHeader> <band height="37"> <textField pattern="" isBlankWhenNull="false"> <reportElement key="textField-22" mode="Opaque" x="13" y="9" width="104" height="20" forecolor="#000000" backcolor="#FFFFFF"/> <box> <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <bottomPen lineWidth="0.0" lineColor="#000000"/> <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> </box> <textElement textAlignment="Left" verticalAlignment="Top" rotation="None" lineSpacing="Single"> <font fontName="Dialog" size="12" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica" pdfEncoding="Cp1252" isPdfEmbedded="false"/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$R{label.date}]]></textFieldExpression> </textField> <textField pattern="" isBlankWhenNull="false"> <reportElement key="textField-20" mode="Opaque" x="422" y="9" width="108" height="20" forecolor="#000000" backcolor="#FFFFFF"/> <box> <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <bottomPen lineWidth="0.0" lineColor="#000000"/> <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> </box> <textElement textAlignment="Left" verticalAlignment="Top" rotation="None" lineSpacing="Single"> <font fontName="Dialog" size="12" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica" pdfEncoding="Cp1252" isPdfEmbedded="false"/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$R{label.sum}]]></textFieldExpression> </textField> <textField pattern="" isBlankWhenNull="false"> <reportElement key="textField-22" mode="Opaque" x="138" y="9" width="124" height="20" forecolor="#000000" backcolor="#FFFFFF"/> <box> <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <bottomPen lineWidth="0.0" lineColor="#000000"/> <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> </box> <textElement textAlignment="Left" verticalAlignment="Top" rotation="None" lineSpacing="Single"> <font fontName="Dialog" size="12" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica" pdfEncoding="Cp1252" isPdfEmbedded="false"/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$R{label.payment}]]></textFieldExpression> </textField> <line> <reportElement key="line-4" mode="Opaque" x="0" y="25" width="530" height="1" forecolor="#000000" backcolor="#FFFFFF"/> <graphicElement fill="Solid"> <pen lineWidth="0.25" lineStyle="Solid"/> </graphicElement> </line> <line> <reportElement key="line-4" mode="Opaque" x="0" y="28" width="530" height="1" forecolor="#000000" backcolor="#FFFFFF"/> <graphicElement fill="Solid"> <pen lineWidth="0.25" lineStyle="Solid"/> </graphicElement> </line> </band> </columnHeader> <detail> <band height="28"> <line> <reportElement key="line-2" mode="Opaque" x="0" y="15" width="530" height="1" forecolor="#000000" backcolor="#FFFFFF"/> <graphicElement fill="Solid"> <pen lineWidth="0.25" lineStyle="Solid"/> </graphicElement> </line> <textField isBlankWhenNull="false"> <reportElement key="textField" x="138" y="0" width="160" height="18"/> <textElement/> <textFieldExpression class="java.lang.String"><![CDATA[str("transpayment." + (String)field_PAYMENT.getValue())]]></textFieldExpression> </textField> <textField isBlankWhenNull="true"> <reportElement key="textField" x="422" y="0" width="108" height="18"/> <textElement/> <textFieldExpression class="java.lang.String"><![CDATA[com.openbravo.format.Formats.CURRENCY.formatValue($F{PAYMENT_TOTAL})]]></textFieldExpression> </textField> <textField isBlankWhenNull="false"> <reportElement key="textField" x="13" y="0" width="114" height="18"/> <textElement/> <textFieldExpression class="java.lang.String"><![CDATA[com.openbravo.format.Formats.TIMESTAMP.formatValue($F{DATENEW})]]></textFieldExpression> </textField> </band> </detail> <columnFooter> <band/> </columnFooter> <pageFooter> <band height="50"> <textField pattern="" isBlankWhenNull="false"> <reportElement key="textField-16" mode="Opaque" x="422" y="20" width="40" height="20" forecolor="#000000" backcolor="#FFFFFF"/> <box> <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <bottomPen lineWidth="0.0" lineColor="#000000"/> <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#FFFFFF"/> </box> <textElement textAlignment="Right" verticalAlignment="Top" rotation="None" lineSpacing="Single"> <font fontName="Dialog" size="10" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica" pdfEncoding="Cp1252" isPdfEmbedded="false"/> </textElement> <textFieldExpression class="java.lang.Integer"><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> </textField> <textField evaluationTime="Report" pattern="" isBlankWhenNull="false"> <reportElement key="textField-17" mode="Opaque" x="482" y="20" width="40" height="20" forecolor="#000000" backcolor="#FFFFFF"/> <box> <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <bottomPen lineWidth="0.0" lineColor="#000000"/> <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#FFFFFF"/> </box> <textElement textAlignment="Left" verticalAlignment="Top" rotation="None" lineSpacing="Single"> <font fontName="Dialog" size="10" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica" pdfEncoding="Cp1252" isPdfEmbedded="false"/> </textElement> <textFieldExpression class="java.lang.Integer"><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> </textField> <staticText> <reportElement key="staticText-7" mode="Opaque" x="462" y="20" width="20" height="20" forecolor="#000000" backcolor="#FFFFFF"/> <box> <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <bottomPen lineWidth="0.0" lineColor="#000000"/> <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#FFFFFF"/> </box> <textElement textAlignment="Center" verticalAlignment="Top" rotation="None" lineSpacing="Single"> <font fontName="Dialog" size="10" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica" pdfEncoding="Cp1252" isPdfEmbedded="false"/> </textElement> <text><![CDATA[/]]></text> </staticText> <line> <reportElement key="line-5" mode="Opaque" x="3" y="10" width="530" height="1" forecolor="#000000" backcolor="#FFFFFF"/> <graphicElement fill="Solid"> <pen lineWidth="0.25" lineStyle="Solid"/> </graphicElement> </line> </band> </pageFooter> <summary> <band height="60"/> </summary> </jasperReport>
Make new file called cash1_messages.properties into reports folder:
# Openbravo POS is a point of sales application designed for touch screens. # Copyright (C) 2007-2008 Openbravo, S.L. # http://sourceforge.net/projects/openbravopos # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA label.title=Cashregister log label.noreference= label.noproduct=(no sales) label.printed=Printed: label.date=Date label.ticket=Ticket no label.sum=Sum label.customer=Customer label.payment=Payment label.period=Period: transpayment.cash=Cash transpayment.magcard=Card transpayment.cashrefund=Refund transpayment.magcardrefund=Card refund transpayment.cheque=Cheque transpayment.chequerefund=Cheque refund transpayment.cashin=(in) Cash transpayment.cashout=(out) Cash transpayment.free=Free transpayment.ticket=Ticket transpayment.paperin=Note input transpayment.paperout=Note output transpayment.debt=Debt transpayment.debtpaid=Debt paid
Save changes and restart the application.