These are the conventions accepted by Fishbowl for JasperReports. Using these conventions ensures that a custom report will be handled as expected and as desired.


Report basics

  • The root report directory is Fishbowl/Server/reports. Custom reports added to this folder or any subdirectory within this folder will be used by Fishbowl.
    • The hierarchy/organization of reports in the Report Module matches the file structure of Fishbowl/Server/reports. For example, if a folder named Customer exists in the reports directory, then there will be a Customer folder in the Report Module. Any reports within that folder will appear in the matching folder of Report Module.
  • Reports are keyed on path. This means that Fishbowl recognizes a report by where it is physically stored. If a report is moved, then Fishbowl assumes that it is a new report. If a report is copied over an old report, Fishbowl assumes that it is the same report, but that it has been modified and will update all relevant settings.
  • Reports are Case Sensitive This means that "FISHBOWL" is not the same as "Fishbowl".
  • A report must be compiled (.jasper) in order for it to be accessible within Fishbowl.
  • When you add or modify reports in the reports directory, then you must refresh the reports or the changes won't be available in Fishbowl. Open the Report Module. Go to the menu Tools | Module Options.... Run Refresh. Additionally, in order to see the changes all the clients need to be logged out and logged back in. This is also the way to change or undo the effects of Fishbowl parameters. Change the report, compile it and refresh the reports. Once the clients log back in they will be able to see the change.
  • If there are parse errors, then the server log should be checked. Misconfigured Fishbowl parameters are a common problem. For example, it may be that one of the listed module names or additional node paths isn't correct, or an additional node path might conflict with another path. These problems will need to be corrected in the reports.
  • Deleting or moving a report from reports directory will remove any record of it from Fishbowl.

Report conventions

  • Name the report using camelback convention. - Camelback convention is joining multiple words together and capitalizing the first letter of each individual word, i.e. CamelBackConvention. Fishbowl goes through and puts in spaces before every capital letter to make it display properly, i.e. Camel Back Convention. Do this via the Project | Project Options dialog. DO NOT include the word "Report" in the name of the report. It's redundant.
  • Name the file the same name as the report name used above.
  • Don't include a date range in the query. - For reports showing date fields, don't include a date range in the query. Allow Fishbowl to apply the date range using its controls.
  • Make the report hyperlink compatible. - Make the report hyperlink compatible if you are displaying fields which can be linked.

Fishbowl Parameters

  • To access a report's parameters in iReport, go View | Report Parameters. Using the dialog that appears you can create new parameters, modify existing parameters, and delete parameters.
  • All Parameters are Optional. REPORTDESCRIPTION Parameter will be the most useful, so it is Highly Recommended.
  • Parameter Types
    • Special Parameters - Are used to tell Fishbowl to do something Special with the Report.
    • Standard Parameters - Are used to get Information from the User/Fishbowl into the Report. Used change display of report or added to the Query.
    • Auto Parameters - Are added (unless told not to) to the Report. These help with common features.
    • Custom Parameters - Are just like Standard Parameters except a specific Naming/Type Convention is used to help the User enter the Correct Type of Information into the Report.
  • Parameter Fields
    • Parameter Name - The name of the Parameter. Some specific names will produce different Results. A list of Special/Custom Parameters follows this section. Use Camelback Convention for a better display in Fishbowl.
      • Titling - Some Parameters have the option of being Titled. This means adding on to the name of a Custom Parameter. The title can be left blank. The title will help to tell the difference if you use more then one of that type of Custom Parameter. The Title is what will display when Fishbowl ask the user to enter information. EXAMPLE:: parameter Name: partNumBOMPart will ask the user for a part number but will title it as "BOM Part" instead of the standard "Part Number"
    • Parameter Class Type - The Special and Custom Parameters depend on the Class Type you choose. The Parameter Default Expression also depends on the Class Type. java.lang.String is the default and mostly used.
    • For Prompting - All parameters (Except Special Parameters) are displayed to the user when the report is pulled. This field determines whether this parameter is Required or Optional. If all parameters for the Report are Optional then the report will not ask the user for anything and run the report using all defaults for Parameters. If there are some Required parameters (Is For Prompting checked true) then when the Report is run from the Report Module, Fishbowl will ask the user to enter those Parameters.
    • Default Value Expression - This is the Default value for your Parameter. This is the Value that iReports uses when testing your Reports. It is also the Value that Fishbowl puts in the Parameter (uses it for Optional Parameters, it will not add the default if the Parameter is Required. It makes the User enter the Required Information.). There are 2 types of Default Values:
      • Parameter Class Type java.lang.String - This value is surrounded in Quotes. EXAMPLE:: "This is a Default Value for a String".
        • For many Custom Parameters, the best way for Optional Parameters is to follow this Template: [FileName] LIKE $P{Parameter} This is because an Optional Parameter will return a % to the report. EXAMPLE: part.num LIKE $P{partNum} This will allow the user to enter a Part Number or not one, and no part number is entered it will pull all parts.
      • Any other Parameter Class Type - This follows standard Java Syntax. EXAMPLE:: For a Type java.util.Date with default to Todays Date: new Date(). For a Type java.lang.Integer: new Integer(1).
    • Parameter Description - This Field is used by a few Custom Parameters. It houses additional Information that the Parameters needs. cb, dateRangeDefault, and sort use this Field.
  • Special Parameters
    • These Parameters tell Fishbowl to treat this Report a certain way. The User using Fishbowl will never see these parameters, yet they will see the effects of them.
Parameter NameClass TypeDefault ValueAbout
ADDITIONALNODESjava.lang.String{Comma and/or semi-colon separated paths where additional nodes should appear. An example of a path is "/Inventory/PartList.jasper". Note that the path begins at Fishbowl's Server/reports Directory and ends with the report name. The report name must be included. If the proper parent folders do not exist, you will need to create them or Fishbowl will not create the additional node.Makes the report available in multiple folders. In addition to appearing based on where the report is stored in server/reports, a report can be made to appear in as many folders as is desired.
dateRangeNonejava.util.DateNot UsedTurns off Auto Date Range.
DONTALLOWTOjava.lang.String{Comma and/or semi-colon separated names of user groups that should not be able to access the report}Prevents the listed users groups from seeing and from accessing the report. This parameter is strictly restrictive. This means that if a user belongs to one of the user groups listed, then that user will be unable to see or run the report even if the user is the member of a group that is not disallowed. To fine tune permissions, it may be helpful to create new user groups, even a user group for a single user.
DONTSHOWjava.lang.StringNot UsedAutomatically sets a report inactive and hides it from view. Reports using this Parameter are not available to anyone in the Report Module. This parameter is used for module specific built-in reports, i.e. the sales order report that is displayed when a sales order is issued.
ISSUBREPORTONLYjava.lang.StringNot UsedTells Fishbowl to ignore a report and to not store any information about it. This causes a report not to be displayed in the report module. However, the sub report is available for inclusion and use within other active reports.
modulejava.lang.ObjectNot UsedUsed to pull Information from Fishbowl. Common uses are: Company Logo and Tracking Information.
MODULEASSOCIATIONSjava.lang.String{Comma and/or semi-colon separated Names of Modules}Adds the Report to the Tools - Report in the Module Window. This allows quick Access to an array of Reports from any given Module.
pathjava.lang.StringNot UsedIs populated with the Current Path of the Report. This is needed for any Sub-Reports that the Report uses. The Sub-Reports Require the full path to the Sub-Report, this helps to complete that task.
REPORTDESCRIPTIONjava.lang.String{The Report Description}Used to describe the Report. It displays as a Tooltip when the mouse is over the Report in the Report Module. It also displays in the Report Window in the Parameter Dialog.
sortNonejava.lang.StringNot UsedTurns off Auto Sorting.
  • Auto Parameters
    • These Parameters do not have to be added to the Report. They are added automatically.
    • Auto Date Range - Any Date Fields in your Query will be added to a Parameter. You can choose one of these fields and a Range to Filter your Report by these Values. See dateRangeDefault for how to Set the Default Values for this Parameter. If any dateRange1 Parameter is added or the dateRangeNone Parameter is added then the Auto Date Range will not show.
    • Auto Sorting - Sort by the Fields in your Query. This will put all Fields from the Query into a Combo Box to be Sorted by. If any sort Parameter is added or the sortNone Parameter added then this Parameter will not show.
  • Custom Parameters
    • These Parameters will Display additional Information to help the User to input the Correct Desired Information.
Parameter NameClass TypeDefault ValueDescriptionAbout
{Boolean Name}java.lang.Boolean{new Boolean(true) or new Boolean(false)}Not UsedDisplays a simple Check Box with the Parameter Name.
cb[Title]java.lang.String{Default Value Return}{Comma separated choices like this: "Value Return 1, Value Show 1, Value Return 2, Value Show 2".}Allows a list of Items to be Displayed. First Value in list is Returned to Report, the Second Value is Displayed in the Combo Box. This allows a Readable Value to be Displayed while a more useful value is passed to the report.
ck[Title]java.lang.String{Default Value Return}{Comma separated choices like this: "Value Return 1, Value Return 2".}Allows a Check Box to be displayed and Return of String of One of Two Values.
customerID[Title]java.lang.String{Default Customer ID}Not UsedProvides a Search Option for Customers.
{Date Name}java.util.Date{Default Date Value}Not UsedDisplays Room to enter a Date. Also provides a Button to a Calendar Display.
dateRangeDefaultjava.lang.String{Default Field Name}{Default Range Name}Populates an Auto Date Range with a Specific Field and Specific Range to Default to.
dateRange1[Title]java.util.Date{Default Value for From Date}Not UsedPopulates 2 Parameters together to provide a Date Range. Gives a Combo Box of common Date choices - Today, This Week, Last Year, etc. Use the same [Title] for dateRange2.
dateRange2[Title]java.util.Date{Default Value for To Date}Not UsedDoes nothing by itself. dateRange1[Title] populates this Parameter.
{Double Name}java.lang.Double{Default Double Value}Not UsedDisplay a standard Form Box to add a Double (Number with Decimals). Checks to makes sure Input is Valid.
{Integer Name}java.lang.Integer{Default Integer Value}Not UsedDisplay a standard Form Box to add an Integer (Number without Decimals). Check to make sure Input is Valid.
locationGroupID[Title]java.lang.String{Default Location Group ID}Not UsedProvides a Search Option for Location Groups. Caution! This parameter works differently due to security restrictions. Fishbowl will return a list of Valid Location Group IDs instead of a '%' if no Location Group is selected. Example for WHERE Clause: (locationgroup.id IN ($P!{locationGroupID}))
locationID[Title]java.lang.String{Default Location ID}Not UsedProvides a Search Option for Locations.
partNum[Title]java.lang.String{Default Part Number}Not UsedProvides a Search Option for Part Numbers.
pickID[Title]java.lang.String{Default Pick ID}Not UsedWill Display the SO/PO Number with the Date and give the User a Search for a Pick. Passes the Pick ID to the Report.
poNum[Title]java.lang.String{Default PO Number}Not UsedProvides a Search Option for PO Numbers.
productNum[Title]java.lang.String{Default Product Number}Not UsedProvides a Search Option for Product Numbers.
productTree1[Title] java.lang.String {Defualt Product Tre Node ID} Not Used Provides a Product Tree that users can select a node to filter by. Returns a list of the ID of the selected node, plus the ID of its children categories.
productTree2[Title] java.lang.String Not Used Not Used Does nothing by itself. When coupled with the productTree1 parameter, it will allow users to view products that are not in the product tree. It returns either % or the selected node ID. Example for WHERE clause: AND ((COALESCE(producttreeid,0) IN ($P!{productTree1})) OR ((COALESCE(producttreeid,0) LIKE $P{productTree2})))
qbClassID[Title]java.lang.String{Default Quick Book Class ID}Not UsedProvides a Search Option for Quick Book Classes.
receiptID[Title] java.lang.String {Default Receipt ID} Not Used Provides a Search Option of r a Receipt. Displays the order number to the user, but passes the ID to the report.
rmaNum[Title] java.lang.String {Default RMA Number} Not Used Provides a Search Option for RMA's.
salesPerson[Title] java.lang.String {Default Sales Person Name} Not Used Provides a Drop Down of Sales Persons
shipID[Title]java.lang.String{Default Ship ID}Not UsedWill Display the SO/PO Number with the Date and give the User a Search for a Ship. Passes the Ship ID to the Report.
soNum[Title]java.lang.String{Default SO Number}Not UsedProvides a Search Option for SO Numbers.
sort[Title]java.lang.String{Default Sort Values. Comma separated.}{Comma separated choices for sorting like this: "SQL Name 1, Show Name 1, SQL Name 2, Show Name 2".}Allows a List of Items to be Displayed in a Combo Box. Additional Sort boxes can be added from the Parameter Dialog Box. The First Value is added to a List to return, while the Second Value is displayed in the Combo Box. This allows a Readable Value to be Displayed while the SQL Value is passed to the Report.
{String Name}java.lang.String{Default String ValueNot UsedDisplay a standard Form Box to add a String.
vendorID[Title]java.lang.String{Default Vendor ID}Not UsedProvides a Search Option for Vendors.
woNum[Title]java.lang.String{Default WO Number}Not UsedProvides a Search Option for WO Numbers.


Give us a ring
1.800.774.7085

Fishbowl in Action

We spent months evaluating inventory products that work with QuickBooks. All of them came up short in many different areas, except Fishbowl Inventory. Integration was very simple and straightforward. We have paid for our investment in Fishbowl Inventory in less than six months time just in saved man hours alone.
The Fireside Inc.
Owner


Value is the name of the game with my small business, and Fishbowl Inventory scores a hole-in-one. Wonderfully attentive support staff, constant improvements based on customer feedback, and a robust product—all at a great value. Highly recommended.
Caliper Club Works, Inc
President