|  | @@ -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();
 |