compVO.setCompanyCodeSys01ITM03(pk.getCompanyCodeSys01ITM01());
compVO.setDescriptionSYS10("");
compVO.setItemCodeItm01ITM03(pk.getItemCodeITM01());
compVO.setQtyITM03(new BigDecimal(1));
DefaultMutableTreeNode node = new OpenSwingTreeNode(compVO);
DefaultTreeModel model = new DefaultTreeModel(node);
String sql2 = "'" + pk.getItemCodeITM01() + "'";
ArrayList nodes = new ArrayList();
ArrayList nodes2 = new ArrayList(); // current nodes...
Hashtable auxnodes = new Hashtable();
nodes.add(node);
// read from ITM03 table...
Response res = null;
java.util.List rows = null;
java.util.List auxlist = null;
DefaultMutableTreeNode auxnode,auxnode2 = null;
String currentItemCode = null;
do {
res = QueryUtil.getQuery(
conn,
new UserSessionParameters(username),
sql1+sql2+sql3,
values,
attribute2dbField,
MaterialVO.class,
"Y",
"N",
null,
new GridParams(),
true
);
if (!res.isError()) {
rows = ((VOListResponse)res).getRows();
auxnodes.clear();
nodes2 = new ArrayList();
sql2 = "";
// group items per item code parent...
for(int i=0;i<rows.size();i++) {
compVO = (MaterialVO)rows.get(i);
sql2 += "'"+compVO.getItemCodeItm01ITM03()+"',";
auxnode = new OpenSwingTreeNode(compVO);
auxlist = (ArrayList)auxnodes.get(compVO.getParentItemCodeItm01ITM03());
if (auxlist==null) {
auxlist = new ArrayList();
auxnodes.put(compVO.getParentItemCodeItm01ITM03(),auxlist);
}
auxlist.add(auxnode);
nodes2.add(auxnode);
}
if (sql2.length()>0)
sql2 = sql2.substring(0,sql2.length()-1);
// add items to the corresponding parent...
for(int i=0;i<nodes.size();i++) {
auxnode = (DefaultMutableTreeNode)nodes.get(i);
compVO = (MaterialVO)auxnode.getUserObject();
auxlist = (ArrayList)auxnodes.get(compVO.getItemCodeItm01ITM03());
if (auxlist!=null)
for(int j=0;j<auxlist.size();j++) {
auxnode.add( (DefaultMutableTreeNode) auxlist.get(j));
((MaterialVO)((DefaultMutableTreeNode)auxlist.get(j)).getUserObject()).setQtyITM03(
((MaterialVO)((DefaultMutableTreeNode)auxlist.get(j)).getUserObject()).getQtyITM03().multiply(
((MaterialVO)auxnode.getUserObject()).getQtyITM03()).setScale(5,BigDecimal.ROUND_HALF_UP)
);
}
}
nodes = nodes2;
}
}
while (!res.isError() && rows.size()>0);
if (res.isError())
throw new Exception(res.getErrorMessage());
res = compCurr.loadCompanyCurrency(pk.getCompanyCodeSys01ITM01(),langId,username,customizedFields);
if (res.isError())
throw new Exception(res.getErrorMessage());
CurrencyVO currVO = (CurrencyVO)((VOResponse)res).getVo();
// navigate through the tree and fetch item prices...
pstmt = conn.prepareStatement(
"select sum(PUR04_SUPPLIER_ITEM_PRICES.VALUE),count(PUR04_SUPPLIER_ITEM_PRICES.VALUE),PUR03_SUPPLIER_PRICELISTS.CURRENCY_CODE_REG03 "+
"from PUR04_SUPPLIER_ITEM_PRICES,PUR03_SUPPLIER_PRICELISTS "+
"where "+
"PUR04_SUPPLIER_ITEM_PRICES.COMPANY_CODE_SYS01=PUR03_SUPPLIER_PRICELISTS.COMPANY_CODE_SYS01 and "+
"PUR04_SUPPLIER_ITEM_PRICES.PROGRESSIVE_REG04=PUR03_SUPPLIER_PRICELISTS.PROGRESSIVE_REG04 and "+
"PUR04_SUPPLIER_ITEM_PRICES.PRICELIST_CODE_PUR03=PUR03_SUPPLIER_PRICELISTS.PRICELIST_CODE and "+
"PUR04_SUPPLIER_ITEM_PRICES.COMPANY_CODE_SYS01=? and "+
"PUR04_SUPPLIER_ITEM_PRICES.ITEM_CODE_ITM01=? and "+
"PUR04_SUPPLIER_ITEM_PRICES.START_DATE<=? and "+
"(PUR04_SUPPLIER_ITEM_PRICES.END_DATE>? or PUR04_SUPPLIER_ITEM_PRICES.END_DATE is null) "+
"group by PUR03_SUPPLIER_PRICELISTS.CURRENCY_CODE_REG03"
);
pstmt2 = conn.prepareStatement(
"select sum(PRO02_MANUFACTURE_PHASES.VALUE) "+
"from PRO02_MANUFACTURE_PHASES,ITM01_ITEMS "+
"where "+
"PRO02_MANUFACTURE_PHASES.COMPANY_CODE_SYS01=ITM01_ITEMS.COMPANY_CODE_SYS01 and "+
"PRO02_MANUFACTURE_PHASES.MANUFACTURE_CODE_PRO01=ITM01_ITEMS.MANUFACTURE_CODE_PRO01 and "+
"ITM01_ITEMS.COMPANY_CODE_SYS01=? and "+
"ITM01_ITEMS.ITEM_CODE=?"
);
res = expandNode(conn,currVO,pstmt,pstmt2,(DefaultMutableTreeNode)model.getRoot());
if (res.isError())
throw new Exception(res.getErrorMessage());
return new VOResponse(model);
} catch (Exception ex1) {