Projects:Goods Movement Report/Technical Specifications
This technical specifications outlines the implementation for the Goods Movement Report redesign. This document builds on the Functional Specification.
The current goods movement report requires redesigning to better fit the function it is intended for. The following elements will be used in the creation of the report:
- Java Servlet - refactor the existing file
- Jasper Report and subreport
- XSQL data files - refactor existing files
- Openbravo ERP Window - refactor the existing form
- Openbravo ERP Menu item - reuse the menu item already in place
- Warehouse - location containing 1 or multiple bins
- Bin - a storage location within a warehouse
- UOM - Unit of Measure - as defined for each product
- Attribute - an attribute of a product describing differentiation between similar products.
User Interface Implementation
The current Goods Movement form is generated using the Application Dictionary. The print options will need to be amended to point to a custom Jasper report which will be manually formatted.
- The report will print in landscape format.
- Report will consist of a header jrxml file with the lines implemented in a sub report.
The following queries will take in the Movement Id from the form. This can be 1 or multiple movement id's as selected in the grid interface. Hence the where clause will use an in statement.
Output of the report will be grouped by the movement header, and then lines (ordered by the line value).
The sql shown below is an outline of the required statements, these will be finalised during implementation.
SELECT client.Name, org.Name, move.documentNo AS Name, move.Description, move.MovementDate FROM M_Movement move INNER JOIN AD_CLIENT client ON move.AD_CLIENT_ID = client.AD_CLIENT_ID INNER JOIN AD_ORG org ON move.AD_ORG_ID = org.AD_ORG_ID WHERE move.M_MOVEMENT_ID IN (?)
SELECT line.LINE, line.M_PRODUCT_ID, prod.Name, line.M_ATTRIBUTESETINSTANCE_ID, attr.Name, -- finalise the field we need here prod.description, line.M_LOCATOR_ID, binFrom.value, binFrom.description, --build this from x,y,z,w/house details line.M_LOCATORTO_ID, binTo.value, binTo.description, --build this from x,y,z,w/house details line.MOVEMENTQTY, line.M_PRODUCT_UOM_ID, line.C_UOM_ID, uom.Name, line.DESCRIPTION FROM M_Movement move INNER JOIN M_MOVEMENT_LINE LINES ON move.M_MOVEMENT_ID = LINES.M_MOVEMENT_ID INNER JOIN M_PRODUCT prod ON line.M_PRODUCT_ID prod.M_PRODUCT_ID INNER JOIN M_LOCATOR binFrom ON line.M_LOCATOR_ID = binFrom INNER JOIN M_LOCATOR binTo ON line.M_LOCATORTO_ID = binTo.M_LOCATOR_ID INNER JOIN C_UOM uom ON line.C_UOM_ID = uom.C_UOM_ID INNER JOIN M_ATTRIBUTESETINSTANCE attr ON line.M_ATTRIBUTESETINSTANCE_ID = attr.M_ATTRIBUTESETINSTANCE_ID WHERE move.M_MOVEMENT_ID IN (?)