|  | @@ -289,7 +289,7 @@ class Rpt_Data_Extractor {
 | 
	
		
			
				|  |  |                          break;
 | 
	
		
			
				|  |  |                      case JV.PROP_HANDLE_TYPE_SUM:
 | 
	
		
			
				|  |  |                          // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/ConstructionCost/tmp/insertedRawDataData10.jsp");
 | 
	
		
			
				|  |  | -                        summaryData(srcData, preHandle, rawDataObj.prjData);
 | 
	
		
			
				|  |  | +                        summaryData(srcData, preHandle, rawDataObj.prjData, rawDataObj.prj);
 | 
	
		
			
				|  |  |                          // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/ConstructionCost/tmp/insertedRawDataData11.jsp");
 | 
	
		
			
				|  |  |                          break;
 | 
	
		
			
				|  |  |                      case JV.PROP_HANDLE_TYPE_ADD_DUMMY:
 | 
	
	
		
			
				|  | @@ -371,9 +371,24 @@ function getModuleDataByKey(prjData, key) {
 | 
	
		
			
				|  |  |      return rst;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -function summaryData(sourceData, handleCfg, prjData){
 | 
	
		
			
				|  |  | +function summaryData(sourceData, handleCfg, prjData, prjMain){
 | 
	
		
			
				|  |  |      let rstArr = [], tempRstArr = [];
 | 
	
		
			
				|  |  |      let curParentPrjData = {};
 | 
	
		
			
				|  |  | +    let precision = 6;
 | 
	
		
			
				|  |  | +    if (handleCfg[JV.PROP_HANDLE_TYPE_PRECISION]) {
 | 
	
		
			
				|  |  | +        if (isNaN(parseInt(handleCfg[JV.PROP_HANDLE_TYPE_PRECISION]))) {
 | 
	
		
			
				|  |  | +            let properties = handleCfg[JV.PROP_HANDLE_TYPE_PRECISION].split('.');
 | 
	
		
			
				|  |  | +            let currentProperty = prjMain[properties[0]];
 | 
	
		
			
				|  |  | +            for (let idx = 1; idx < properties.length; idx++) {
 | 
	
		
			
				|  |  | +                currentProperty = currentProperty[properties[idx]];
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (!isNaN(parseInt(currentProperty))) {
 | 
	
		
			
				|  |  | +                precision = parseInt(currentProperty);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            precision = parseInt(handleCfg[JV.PROP_HANDLE_TYPE_PRECISION]);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |      for (let item of getActDataArr(sourceData)) {
 | 
	
		
			
				|  |  |          if (item._doc) {
 | 
	
		
			
				|  |  |              tempRstArr.push(item._doc);
 | 
	
	
		
			
				|  | @@ -399,10 +414,10 @@ function summaryData(sourceData, handleCfg, prjData){
 | 
	
		
			
				|  |  |                                      dtlItem[sumKey] = parseFloat(dtlItem[sumKey]) - parseFloat(data[calcAheadObj["calc_property"]]);
 | 
	
		
			
				|  |  |                                      break;
 | 
	
		
			
				|  |  |                                  case "*":
 | 
	
		
			
				|  |  | -                                    dtlItem[sumKey] = dtlItem[sumKey] * parseFloat(data[calcAheadObj["calc_property"]]).toFixed(4);
 | 
	
		
			
				|  |  | +                                    dtlItem[sumKey] = dtlItem[sumKey] * parseFloat(data[calcAheadObj["calc_property"]]);
 | 
	
		
			
				|  |  |                                      break;
 | 
	
		
			
				|  |  |                                  case "/":
 | 
	
		
			
				|  |  | -                                    dtlItem[sumKey] = dtlItem[sumKey] / parseFloat(data[calcAheadObj["calc_property"]]).toFixed(4);
 | 
	
		
			
				|  |  | +                                    dtlItem[sumKey] = dtlItem[sumKey] / parseFloat(data[calcAheadObj["calc_property"]]);
 | 
	
		
			
				|  |  |                                      break;
 | 
	
		
			
				|  |  |                                  default:
 | 
	
		
			
				|  |  |                                      break;
 | 
	
	
		
			
				|  | @@ -445,7 +460,7 @@ function summaryData(sourceData, handleCfg, prjData){
 | 
	
		
			
				|  |  |              for (let sumKey of handleCfg[JV.PROP_SUM_SUM_KEYS]) {
 | 
	
		
			
				|  |  |                  if (dtl[sumKey]) {
 | 
	
		
			
				|  |  |                      // sumObj[grpKey][sumKey] += dtl[sumKey];
 | 
	
		
			
				|  |  | -                    sumObj[grpKey][sumKey] = parseFloat(sumObj[grpKey][sumKey]) + parseFloat(dtl[sumKey]);
 | 
	
		
			
				|  |  | +                    sumObj[grpKey][sumKey] = parseFloat(parseFloat(sumObj[grpKey][sumKey]).toFixed(precision)) + parseFloat(parseFloat(dtl[sumKey]).toFixed(precision));
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 |