Functional Analysis Standard Report TX
Functional Analysis Standard Report TX
Functional Analysis Standard Report TX
Documentation Control Using the latest version: This document is the approved version written on April 1 and is the first version on this date. Before any use, be sure that you get the latest version currently in force. Information about this document: Filename : Available in : Written by : FunctionalAnalysis - BP Reports TeamRoom Ayush Goyal (e-pricer LAB Team)
Document modification history: Revision Number 1 Revision Date Summary of changes Initial document version. Changes Marked N
TABLE OF CONTENTS 1 PURPOSE...........................................................................................................................................4 2 REFERENCE.......................................................................................................................................5 3 ASSUMPTIONS..................................................................................................................................6 4 DETAILED DESCRIPTION.................................................................................................................7 4.1.1.1 Purpose..................................................................................................................................................7 4.1.1.2 Sequence Diagrams/Interaction Diagrams(Explanation):.....................................................................7 4.1.1.3 Implementation......................................................................................................................................8 4.1.1.3.1 Implemented code explanation.......................................................................................................8 4.1.1.3.2 Summary of important rules applied............................................................................................10 4.1.1.4 Impact or Linkage with other modules...............................................................................................10 4.1.1.5 Summary ............................................................................................................................................11
1 Purpose
The purpose of this document is to describe the Report functionality for BPQuotes at IBM GUI side.
2 Reference
The identified list of IDDs are as follows IDD_G6014_R7 IDD_G6015_R7 IDD_G6016_R7 IDD_G6017_R7 IDD_G6019_R7 CR_721277 CR_701893 CR_284249 BP Standard report. BP History report BP Approval History report BP Reviewer report. BP Tailored report. Ship reporting Assignment of quote Unique feature code
3 Assumptions
We will be discussing here BP Standard report, as maximum portion of reports will be covered alongwith. Then we will be covering the details flow of control for one section. Also the reader is expected to have some basic knowledge of Process Framework, here we aim at reducing the time for bug fixing for reports module.
4 Detailed Description
4.1.1.1 Purpose
Reports are used to have a quick reference of the Bid i.e. the quote; we have different type of reports to represent the different stages during the lifecycle of a bid. Also reports are used to send along with the mail to look at the current state of the bid by the pricer.
buildXMLGuiData() of BPReport.java
4.1.1.3 Implementation
4.1.1.3.1 Implemented code explanation.
Reports are based on Process framework, so we use here dtd, xsl and xml object to populate them. Xml is being populated with the call of buildXMLGuiData() of ReportProcess.java. There on the basis of type of Transaction quote we decide of report type i.e. normal TX quote (Report.java) or BP TX quote (BPReport.java). Then the corresponding buildXMLGuiData() of the report class is being called to build the xml. The sections which are to be displayed is decided by the initXXXReportInformation() for each type of report, there, arraySectionKeyword is used to hold the section ids. These Ids come from the properties file corresponding to the field of like: All_standard_report_sections_tx. On the basis of these ids we go on populating the xml from their respective section classes instantiated in Section.java in the createSection method. The section classes can be referred from Section.java createSection() In the createSection() method we add the following: For ex we require to add a new section for the Featured Details and hence corresponding to the section id we define a new case in the create section method. case S163: { sectionID); } aSection =new SectionFeaturesDetailsUR(pParentReport, break;
After the Section is instantiated we call the buildReportGuiData method which constructs the reort Here two things are done defineColumnsToDisplayFirst the columns to be displayed in the section will be added to the Section class level variable arrayColumnsToDisplay. completeReportGuiDataSecondly the function will create an xml of the below mentioned form which would be provided to the xsl for display. Also we would need to get the data for the report using the function createSSCategories which would fetch the TransactionComponents from the Txdb database When we create the xml the section could have a subsection which could have multiple data rows .The xml representation for the same could be like
<S1_FeatureDetail> <list_total id="1"> <line_component id="1"> ------LINE TITLES-<column_title id="1"> <ct_product>Product</ct_product> <ct_feature_flag>Flag</ct_feature_flag> <ct_description>Description</ct_description> <ct_column>Quantity</ct_column> <ct_description>Warranty period</ct_description> <ct_description>Frequency</ct_description> <ct_column>List price</ct_column> Functional Analysis - BP Reports Page 8 of 12
IBM Global Services Functional Analysis BP Reports </column_title>---VALUES FOR THE LINE TITLES(LINE COMPONENTS) <article1 id=""> <Data id="30"> <product>9264</product> <fet_featureflag>C</fet_featureflag> <description>OTC SHARED SVCS BASIC MED </description> <data_value>1.00</data_value> <description>0</description> <description>0 Months</description> <data_value>212,500.00</data_value> </Data> ---SUB TOTAL-<line_sub_total id="31"> <Data id="31"> <product>Sub total</product> <data_value/> <data_value/> <data_value/> <data_value/> <data_value/> <data_value>3,625,000.00</data_value> </Data> </line_sub_total> </line_component> </list_component> <empty_line> <dd/> </empty_line> </S1_FeatureDetail> To construct the XML we need the XML Tags and the Values to be stored in the same. Each Section contains subsections which are encapsulated by the SSectionCategory Class.The main function being completeReportGuiData. Inside this function we define the Line Components and the Line Totals and the Line Subtotals. For each subsection as mentioned in the xml there are three lines: Line Titles (containing the title of the column) LineComponent (containing the values of that component of that column), and Line Totals (containing the total value of column). For this component section we will have Line of type LineComponent.java, similarly we can have of type LineBrand.java in Brand section, LineFeature.java for Feature display, etc. Lets discuss one control loop for subsection: 1. 2. LineTitles : Once we have subsection(SSection.java), then completeReportGuiData() of its implementation in SSectionCategory.java is executed, here we built a line of column titles and thus completeReportGuiData() of LineTitles.java is used to get all the titles and then are put it into Cell. LineComponent: And then back in completeReportGuiDataWithLineDetails() of SSectionCategory.java it completes the details to be put up w.r.t to that column for that component. For this it goes to Line.buildReportGuiData(), then LineComponent.completeReportGuiData() where it picks up the value from the quote and put it into the Cell. This is iterated for each component in the quote. LineTotals: This is used to put the totals value of all the components of that subsection. In the completeReportGuiDataWithLineDetails() of SSectionCategory.java, in updateCellsTotals () we add up the values of each LineComponent computed above to be available for display in this line. Here we go again in Line.buildReportGuiData(), and then LineTotals.completeReportGuiData() to get the totals value and put them in for corresponding Cell for display.
3.
To get the Full Total subsection of Hardware and Software i.e. to get the total values of at Subsection level we use updateCellsTotals() of SectionComponentDetailsOTC.java in the similar way. In order to display the sections within the xml the xsl uses a generic code as mentioned below
4.1.1.3.2
The rule here is, if you want to look out for a particular problem in the report, and then go step by step. To my observation maximum time these will help: 1. First look for the kind of report and go to its main class; look out for its list of section from the properties file. 2. Then corresponding to the section ids go to the Section.java createSection() to get the section class name. 3. Within that section lookout for any SubSection. 4. If no subsection exists, see for the element which has the problem, if, whether its value has been put in the Section main class itself, you can refer to the .dtd file to get the element name, or also xsl file of that report. 5. To get the xml for better debug analysis, better to write it as a separate file, xmlGuiData.writeToFile(new File("C:/XXX.xml"));
4.1.1.5 Summary
END OF DOCUMENT