| 
					
				 | 
			
			
				@@ -1,8 +1,6 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let JV = require('./jpc_value_define'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let JpcFieldHelper = require('./helper/jpc_helper_field'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let JpcBandHelper = require('./helper/jpc_helper_band'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-let JpcBand = require('./jpc_band'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-let JpcFlowTabHelper = require('./helper/jpc_helper_flow_tab'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let JpcCommonHelper = require('./helper/jpc_helper_common'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let JpcDiscreteHelper = require('./helper/jpc_helper_discrete'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let JpcTextHelper = require('./helper/jpc_helper_text'); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -20,11 +18,24 @@ JpcBillTabSrv.prototype.createNew = function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[JV.NODE_BILL_INFO][JV.NODE_BILL_CONTENT][JV.PROP_BILL_FIELDS], null, me.disp_fields_idx); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    JpcBillTabResult.paging = function(rptTpl) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let me = this, rst = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let detail_fields = rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (detail_fields && detail_fields.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            rst = detail_fields[0].length; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    JpcBillTabResult.paging = function(rptTpl, dataObj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let rst = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        function getDataLength(fields_str) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let dataFields = dataObj[fields_str]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (dataFields && dataFields.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rst = dataFields[0].length; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (rptTpl[JV.NODE_FIELD_MAP]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                getDataLength(JV.DATA_DETAIL_DATA); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                getDataLength(JV.DATA_MASTER_DATA); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DISCRETE_FIELDS]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                getDataLength(JV.DATA_DISCRETE_DATA); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DISCRETE_PARAMS]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rst = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -36,31 +47,42 @@ JpcBillTabSrv.prototype.createNew = function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //2. start to output detail-part 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let unitFactor = JpcCommonHelper.getUnitFactor(rptTpl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //2.1 output content 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        tabRstLst.push(me.outputContent(rptTpl, dataObj, page, bands, unitFactor, controls, pageStatus)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tabRstLst.push(me.outputContent(rptTpl, dataObj, page, bands, unitFactor, controls, pageStatus, $CURRENT_RPT)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //2.2 output discrete 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         tabRstLst.push(JpcDiscreteHelper.outputDiscreteInfo(rptTpl[JV.NODE_BILL_INFO][JV.NODE_DISCRETE_INFO], bands, dataObj, unitFactor, pageStatus, page - 1, 1, 0, $CURRENT_RPT)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    JpcBillTabResult.outputContent = function(rptTpl, dataObj, page, bands, unitFactor, controls, pageStatus) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (let i = 0; i < tabRstLst.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            rst = rst.concat(tabRstLst[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tabRstLst[i] = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    JpcBillTabResult.outputContent = function(rptTpl, dataObj, page, bands, unitFactor, controls, pageStatus, $CURRENT_RPT) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = this, rst = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let tab = rptTpl[JV.NODE_BILL_INFO][JV.NODE_BILL_CONTENT]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let band = bands[tab[JV.PROP_BAND_NAME]]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (band) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]] == true) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let tab_fields = tab[JV.PROP_BILL_FIELDS]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let data_details = dataObj[JV.DATA_MASTER_DATA]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let data_details = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    data_details = dataObj[JV.DATA_DETAIL_DATA]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    data_details = dataObj[JV.DATA_MASTER_DATA]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 for (let i = 0; i < tab_fields.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     let tab_field = tab_fields[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     let data_field = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (me.disp_fields_idx[i] != JV.BLANK_FIELD_INDEX) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (me.disp_fields_idx.length > i && me.disp_fields_idx[i] !== JV.BLANK_FIELD_INDEX) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         data_field = data_details[me.disp_fields_idx[i]]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        data_field = JE.F(tab_field[JV.PROP_FIELD_ID]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        data_field = JE.F(tab_field[JV.PROP_FIELD_ID], $CURRENT_RPT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (data_field) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             data_field = data_field[JV.PROP_AD_HOC_DATA]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (!(tab_field[JV.PROP_HIDDEN])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        let cellItem = JpcCommonOutputHelper.createCommonOutput(tab_field, JpcFieldHelper.getValue(data_field, page - 1), controls); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        let val = JpcFieldHelper.getValue(data_field, page - 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        let cellItem = JpcCommonOutputHelper.createCommonOutput(tab_field, val, controls); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         cellItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, true, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         rst.push(cellItem); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -79,8 +101,8 @@ JpcBillTabSrv.prototype.createNew = function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return JpcBillTabResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 module.exports = new JpcBillTabSrv(); 
			 |