jasper reports - SQL filtering by location in iReport/Fishbowl -


i have report trying add filter, use of parameter, allows user select part number , shows item is, filtered by, location.

the issue ever reason- though have locationgroupid set = locationgroupid wont work or update.

here screenshots.

i using ireport , fishbowl

enter image description here enter image description here


<parameter name="path" class="java.lang.string" isforprompting="false">     <defaultvalueexpression><![cdata["c:/program     files/fishbowl/server/reports/workorder/"]]></defaultvalueexpression> </parameter> <parameter name="module" class="java.lang.object" isforprompting="false">     <defaultvalueexpression><![cdata[null]]></defaultvalueexpression> </parameter> <parameter name="reportdescription" class="java.lang.string"     isforprompting="false">     <defaultvalueexpression><![cdata["generates summary of quantity     , value of parts on hand. lifo/fifo based report."]]>    </defaultvalueexpression>     </parameter>     <parameter name="partnum" class="java.lang.string" isforprompting="false">         <defaultvalueexpression><![cdata[]]></defaultvalueexpression>     </parameter>     <parameter name="locationgroupid" class="java.lang.string" isforprompting="false">     <defaultvalueexpression><![cdata[]]></defaultvalueexpression>     </parameter>     <parameter name="assetaccount" class="java.lang.string" isforprompting="false">     <defaultvalueexpression><![cdata["%"]]></defaultvalueexpression>     </parameter>     <parameter name="daterange1" class="java.util.date" isforprompting="false">     <parameterdescription><![cdata[this month]]></parameterdescription>     <defaultvalueexpression><![cdata[new date()]]></defaultvalueexpression>     </parameter>     <parameter name="daterange2" class="java.util.date" isforprompting="false">     <defaultvalueexpression><![cdata[new date()]]></defaultvalueexpression>     </parameter>     <parameter name="ckshowactivecostinglayers" class="java.lang.string" isforprompting="false">     <parameterdescription><![cdata[10,100]]></parameterdescription>     <defaultvalueexpression><![cdata["10"]]></defaultvalueexpression> </parameter> <parameter name="ckshowfulfilledcostinglayers" class="java.lang.string" isforprompting="false">     <parameterdescription><![cdata[20,100]]></parameterdescription>     <defaultvalueexpression><![cdata["100"]]></defaultvalueexpression> </parameter> <parameter name="ckshowvoidedcostinglayers" class="java.lang.string" isforprompting="false">     <parameterdescription><![cdata[30,100]]></parameterdescription>     <defaultvalueexpression><![cdata["100"]]></defaultvalueexpression> </parameter> <parameter name="showhistoricaldata" class="java.lang.boolean" isforprompting="false">     <defaultvalueexpression><![cdata[new boolean(false)]]>        </defaultvalueexpression>     </parameter>     <querystring> </querystring> <field name="qty" class="java.lang.double"/> <field name="orgqty" class="java.lang.double"/> <field name="orgtotalcost" class="java.lang.double"/> <field name="totalcost" class="java.lang.double"/> <field name="datecreated" class="java.sql.timestamp"/> <field name="partnumber" class="java.lang.string"/> <field name="partdescription" class="java.lang.string"/> <field name="inventoryaccount" class="java.lang.string"/> <field name="locationgroup_id" class="java.lang.integer"/> <field name="company" class="java.lang.string"/> <variable name="assetvalue" class="java.lang.double">     <variableexpression><![cdata[$p{showhistoricaldata}.booleanvalue() == true ? $f{orgtotalcost} : $f{totalcost}]]></variableexpression> </variable> <variable name="totalasset" class="java.lang.double" resettype="group" resetgroup="part" calculation="sum">     <variableexpression><![cdata[$v{assetvalue}]]></variableexpression> </variable> <variable name="reporttotal" class="java.lang.double" calculation="sum">     <variableexpression><![cdata[$v{assetvalue}]]></variableexpression> </variable> <variable name="locationtotal" class="java.lang.double" calculation="sum">     <variableexpression><![cdata[$v{assetvalue}]]></variableexpression> </variable> <variable name="totalcost" class="java.lang.double" resettype="group" resetgroup="part" calculation="sum">     <variableexpression><![cdata[$v{unitcost}]]></variableexpression> </variable> <variable name="grandtotalasset" class="java.lang.double" calculation="sum">     <variableexpression><![cdata[$v{assetvalue}]]></variableexpression> </variable> <variable name="grandtotalcost" class="java.lang.double" calculation="sum">     <variableexpression><![cdata[$v{totalcost}]]></variableexpression> </variable> <variable name="unitcost" class="java.lang.double">     <variableexpression><![cdata[$p{showhistoricaldata}.booleanvalue() == true ? new double($f{orgtotalcost}.doublevalue() / $f{orgqty}.doublevalue()) : new double($f{totalcost}.doublevalue() / $f{qty}.doublevalue())]]>    </variableexpression> </variable> <variable name="dateformat" class="java.lang.string" resettype="none">     <variableexpression><!    [cdata[(system.getproperty("report_date_format"))]]></variableexpression> </variable> 

the issue you're having there no direct link between cost layers , locations. if you're attempting filter parts within given location group you'd need go through tag (on hand inventory table) location.

select costlayer.qty qty, costlayer.orgqty, costlayer.orgtotalcost,     costlayer.totalcost totalcost, costlayer.datecreated datecreated,     part.num partnumber, part.description partdescription, asaccount.name "inventoryaccount",     company.name company, currency.symbol  costlayer     left join part on part.id = costlayer.partid     left join tag on part.id = tag.partid     left join location on tag.locationid = location.id     left join locationgroup on location.locationgroupid = locationgroup.id     left join asaccount on part.inventoryaccountid = asaccount.id     join company on company.id = 1     left join currency on currency.homecurrency = 1  costlayer.datecreated between $p{daterange1} , $p{daterange2}   , costlayer.statusid in ($p!{ckshowactivecostinglayers},$p!{ckshowfulfilledcostinglayers},$p!{ckshowvoidedcostinglayers})   , upper(part.num) upper($p{partnum})   , (upper(coalesce(asaccount.name,'')) upper('%' || $p{assetaccount} || '%'))   , locationgroup.id $p{locationgroupid}  order (case when $p{assetaccount} not cast('%' varchar(256)) asaccount.name else part.num end), part.num asc, costlayer.id, costlayer.datecreated 

this filter , show parts in given location group. setting parameters default value "%" , unselecting use prompt option filter if not selected. keep in mind if want see location group totals may thrown off inventory across multiple location groups if filter all.


Comments

Popular posts from this blog

java - pagination of xlsx file to XSSFworkbook using apache POI -

Unlimited choices in BASH case statement -

apache - How do I stop my index.php being run twice for every user -