
// 주문 팝업 선택/입력 object 선택
function createOrderObj_v2(sval, opt, callBack){

  // 옵션설정값
  var getOpt = JSON.parse(JSON.stringify(opt));
  var clickObj = JSON.stringify(opt).replace(/\"/g,'\'');

  // sobj data =======
  var sobj = '';
  
  var vieObjCnt = 0;          // 표출 ojbect 개수 : input-group 사용할지 체크
  var getAjaxCallFlaObj = [];  // select option push object 설정

  // obj_data 갯수에 따라 만들기
  getOpt.obj_data.forEach(function(tvl, idx){

    var class_name = '';  // 추가할 클래스
    if(tvl.class_name != '' && tvl.class_name != undefined) class_name = tvl.class_name;

    var style = '';
    if(tvl.style != '' && tvl.style != undefined) style = 'style="' + tvl.style + '"';

    // input 수정 가능여부 판단
    var readonly = '';
      
    switch(tvl.type){
      
      // type 이 select, select2 
      case 'select' : 
      case 'select2' : 

        if(tvl.editflag == 'N') readonly = 'disabled';

        sobj += '<select class="form-control ' + tvl.type + ' ' + class_name + '" ' + style + ' name="' + tvl.name + '" id="' + tvl.name + '" '+ readonly +'><option value="">' + tvl.placeholder + '</option></select>';

        getAjaxCallFlaObj.push(tvl.name);
        vieObjCnt +=1;
      
        break;
      // type 이 text 일 때
      case 'text' :

          if(tvl.editflag == 'N') readonly = 'readonly';

          sobj += '<input type="text" name="' + tvl.name +'" id="' + tvl.name +'" class="form-control ' + class_name + '" ' + style + ' maxlength="'+ tvl.maxlen +'" placeholder="'+ tvl.placeholder +'" '+ readonly +'>';

          vieObjCnt +=1;

          break;
          
      // type 이 hidden 일 때
      case 'hidden' :

        sobj += '<input type="hidden" name="' + tvl.name +'" id="'+ tvl.name +'">';
        break;

    }

  });
  // sobj data end =======

  // 모달이 있을 경우 input-group에서 생성
  var inputObj = '', modalBtn = '';
  if (getOpt.moinfo.moid != '' && getOpt.moinfo.moid != undefined) {  
    modalBtn = '<button type="button" class="btn btn-default" onclick="orderModalOpen('+ clickObj +')"><i class="fa fa-search"></i></button>';
  }

  // 표출 object 개수 및 검색모달창 사용에 따라서 input-group 사용
  if(vieObjCnt > 1){
    inputObj = '<div class="input-group">' + sobj;
    if(modalBtn != '') inputObj += '<div class="input-group-append">'+ modalBtn +'</div>';
    inputObj += '</div>';
  }else if(modalBtn != ''){
    inputObj = '<div class="input-group">' + sobj +'<div class="input-group-append">'+ modalBtn +'</div></div>';
  }else{
    inputObj = sobj;
  }

  // 주문 팝업 생성, class에 select2존재시 select2() 실행
  $('.'+ getOpt.pname).html(inputObj).find('.select2').select2().trigger('change');

  
  // 주문 팝업 object 이벤트발생에 따라 연결 object value 설정 호출
  getOpt.obj_data.forEach(function(tvl, idx){

    if(tvl.callBack){
      
      var runFunction = eval(tvl.callBack);

      switch(tvl.type){
        case 'select' :
        case 'select2' :

          $("select[name="+ tvl.name +"]").on('change', function(){ runFunction(getOpt, $(this).val()); });
          break;

        case 'text' :

          $("input[name="+ tvl.name +"]").on('keyup blur', function(){ runFunction(getOpt, $(this).val()); });
          break;
      }
    }
  })

  // 생성 select object 존재시 option push
  if(getAjaxCallFlaObj.length > 0){

    createOrderObjGetList(1, 'all', getOpt,function(rval){

      var option_data = '';

      rval.value.forEach(function(vl, idx){
        var seflag = '';
        if(vl.o_idx == sval) seflag = "selected";
        option_data += '<option value="'+ vl.o_idx +'" '+ seflag +'>['+vl.o_num+'] '+ vl.pi_title +'</option>';
        
      });

      // 생성 select object option push
      getAjaxCallFlaObj.forEach(function(ovl, oidx){
        $('select[name='+ ovl +']').append(option_data);
      })     

    });

  }

  
  if(callBack) callBack();
  
}
  
//  주문 팝업 모달 띄우기
var $orderTbObjectModalJson = [];
function orderModalOpen(opt){

  var getOpt = JSON.parse(JSON.stringify(opt));
  var clickObj = JSON.stringify(opt).replace(/\"/g,'\'');

  // 모달 / 컨텐츠 삽입 형태에 따라 생성 구분
  if(getOpt.moinfo.in_ajax_wrap != '' && getOpt.moinfo.in_ajax_wrap != undefined){
    $pobj = $("."+ getOpt.moinfo.in_ajax_wrap);
    $pobj.html('');
    orderModalOpenTbCrate($pobj, opt);
  }else{

    var modalOpt = {id:getOpt.moinfo.moid, tit:getOpt.moinfo.mtit, titUse:'Y', footUse:'N', css:'modal-xl'};

    appendModalCreate(modalOpt, function(){
      $pobj = $('#'+ modalOpt.id +' .modal-body');
      orderModalOpenTbCrate($pobj, opt);

    })

  }

}

// 주문 팝업 테이블 구조 생성
function orderModalOpenTbCrate($pobj, opt){

  var getOpt = JSON.parse(JSON.stringify(opt));
  var clickObj = JSON.stringify(opt).replace(/\"/g,'\'');

  var modalContHTML = '';
  modalContHTML +=
  '<div class="form-body">'+
  '  <div class="form-group row">'+
  '    <input type="hidden" name="'+ shkeyvalure(getOpt.moinfo.shkeyfd,'shordtype') +'" id="'+ shkeyvalure(getOpt.moinfo.shkeyfd,'shordtype') +'" value="'+ shkeyvalure(getOpt.moinfo.shkeyfd,'shordtype','vl') +'" >'+
  '    <div class="col col-12 col-sm-12 col-md-12 '+ shkeyvalure(getOpt.moinfo.shkeyfd,'shdate_wrap') +'">'+
  '    </div>'+
  '    <div class="col col-12 col-sm-12 col-md-3 ">'+
  '      <select class="form-control " name="'+ shkeyvalure(getOpt.moinfo.shkeyfd,'shkey') +'" id="'+ shkeyvalure(getOpt.moinfo.shkeyfd,'shkey') +'">'+
  '        <option value="">:: 선택 ::</option>'+
  '        <option value="onum">주문번호</option>'+
  '        <option value="pname">품명</option>'+
  '        <option value="pcode">품목코드</option>'+
  '      </select>'+
  '    </div>'+
  '    <div class="col col-12 col-sm-12 col-md-3">'+
  '      <label for="shkwd" class="sr-only">검색어</label>'+
  '      <input type="text" name="'+ shkeyvalure(getOpt.moinfo.shkeyfd,'shkwd') +'" id="'+ shkeyvalure(getOpt.moinfo.shkeyfd,'shkwd') +'" class="form-control" maxlength="20" value="" placeholder="검색어 입력">'+
  '    </div>'+
  '    <div class="col col-12 col-sm-12 col-md-2 cus-vm">'+
  '      <button type="button" class="btn btn-dark btn-block" onclick="orderModalGetList(1,'+ clickObj +')"><i class="fa fa-search"></i> 검색</button>'+
  '    </div>'+
  '  </div>'+
  '</div>'+
  '<div class="row">'+
  '  <div class="col-12">'+
  '    <div class="card '+ getOpt.moinfo.pwrap +'">'+
  '      <div class="card-body table-responsive p-0" overflow:auto;">'+
  '      </div>'+
  '    </div>'+
  '  </div>'+
  '</div>';

  $pobj.html(modalContHTML);
  shDateChageCall(90, 'Y', shkeyvalure(getOpt.moinfo.shkeyfd,'shdate_wrap'));

  // table list create ---------
  var orderTbObjectModalJson = [
    {
      datalist_tb: getOpt.moinfo.pwrap,
      tid: getOpt.moinfo.tid,
      tclass:'table table-bordered table-hover cus-table text-nowrap',
      pageflag:'O',
      pageObj: getOpt.moinfo.pgwrap,
      thlist:[
        {
          tit:'번호',
          th_style:'width:90px;',
          td_style:'text-align:center',
        },
        {
          tit:'수주번호',
          th_style:'width:120px;',
          td_style:'text-align:center',
        },
        {
          tit:'수주일',
          th_style:'width:100px;',
          td_style:'text-align:center',
        },
        {
          tit:'현장명',
          th_style:'min-width:120px;',
          td_style:'text-align:left',
        },
        {
          tit:'픔명',
          th_style:'width:160px;',
          td_style:'text-align:center',          
        },
        {
          tit:'거래처',
          th_style:'width:150px;',
          td_style:'text-align:center',
        },
        {
          tit:'선택',
          th_style:'width:100px;',
          td_style:'text-align:center'
        }
      ]
    }
  ];

  // object 생성여부 체크 후 설정
  var exFlag = 'N';
  $orderTbObjectModalJson.forEach(function(tbl, tidx){
    if(tbl.tid == getOpt.moinfo.tid) exFlag = 'Y';
  })

  if(exFlag == 'N') {
    $orderTbObjectModalJson.push({tid:getOpt.moinfo.tid, tbjson: orderTbObjectModalJson, tbobj:dataTableCreate(orderTbObjectModalJson)})

  }else{
    
    $orderTbObjectModalJson.forEach(function(tbl, tidx){
      if(tbl.tid == getOpt.moinfo.tid) {
        $orderTbObjectModalJson[tidx].tbobj = dataTableCreate(orderTbObjectModalJson);
      }
    })

  }
  
  orderModalGetList(1, getOpt);

}

// 
function orderModalGetList(cpage, opt){

  var getOpt = JSON.parse(JSON.stringify(opt));
  var clickObj = JSON.stringify(opt).replace(/\"/g,'\'');


  var $orderTbObject, $orderTbObjectJson;
  $orderTbObjectModalJson.forEach(function(tbl, tidx){
    if(tbl.tid == getOpt.moinfo.tid) {
      $orderTbObject =  tbl.tbobj;
      $orderTbObjectJson = tbl.tbjson;
    }
  })

  // 초기화
  $orderTbObject.find("tbody tr").remove();
  if($orderTbObjectJson[0].pageflag == 'Y') $("#"+$orderTbObjectJson[0].pageObj).html('');
  var tdColcnt = $orderTbObjectJson[0].thlist.length;

  var blankHTML = '<tr><td class="text-center" colspan="'+ tdColcnt +'">조회 데이타가 없습니다.</td></tr>';

  var p_block = 5;
  

  createOrderObjGetList(cpage, '', opt, function(rval){

    var rcnt = 0;
    rval.value.forEach(function(vl, idx){

      var seBtn = '<a href="javascript:;" class="btn btn-default btn-sm" onclick="orderModalGetListPush(\''+ vl.o_idx +'\','+ clickObj +')">선택</a>';

      var op_count = '';
      vl.order_product.forEach(function(svl, sidx){
        op_count = number_format(svl.op_count,'-');
      })
      
      var dataHTML = [vl.list_num, vl.o_num, dateFormateCus(vl.o_start_date,'s'), vl.o_work_name, vl.pi_title, vl.o_organization, seBtn];

      // tbody view
      dataTableCreate_td($orderTbObject,$orderTbObjectJson, dataHTML);

      rcnt += 1;
    })

    if(rcnt <= 0) $orderTbObject.find("tbody").append(blankHTML);

    // 페이징 정보
    $(".data_cnt").html(rval.total_count);
    $(".data_page_num").html(rval.page);
    $(".data_page_num_t").html(rval.total_page);

    var callBackFnc = {cname:'orderModalGetList',param:opt};
    $("#"+$orderTbObjectJson[0].pageObj).html(get_paging_cus(p_block, rval.page, rval.total_page, '','',callBackFnc));

  },'renew');
  
  
}

// 선택처리
function orderModalGetListPush(id, opt){
  
  var getOpt = JSON.parse(JSON.stringify(opt));

  createOrderObjGetListDataArray.forEach(function(pvl,pidx){
      
    if(pvl.o_idx == id){
      
      getOpt.obj_data.forEach(function(vl, idx){
        if(vl.callBack){
          
          var selectMoalCallBackFunc = eval(vl.callBack);
          selectMoalCallBackFunc(getOpt,id);
        }

        var db_id = eval('pvl.'+ vl.db_id);

        if(vl.type == 'text') $("input[name="+ vl.name +"]").val(db_id);
        else if(vl.type == 'select' || vl.type == 'select2') {
          $("select[name="+ vl.name +"]").val(db_id).trigger('change');
        }

      })
    }
  })

  // 모달 hide option
  if (getOpt.moinfo.hideopt == 'Y'){
    $('#'+ getOpt.moinfo.moid).modal('hide');
    $('#'+ getOpt.moinfo.moid +' .modal-body').html('');
  }

}

// 주문 팝업 call
var createOrderObjGetListDataArray = [];
function createOrderObjGetList(cpage, cpage_rows, opt, callBack, renew){

  // 옵션설정값
  var getOpt = JSON.parse(JSON.stringify(opt));
  var clickObj = JSON.stringify(opt).replace(/\"/g,'\'');
  // console.log(getOpt);
  if(getOpt.moinfo.ajaxReCall == 'N' && createOrderObjGetListDataArray.length > 0 && renew != 'renew'){
    if(callBack){
      var reValue = {value:createOrderObjGetListDataArray};
      callBack(reValue);
    }
  }else{

    var page = 1;
    if(cpage !='' && cpage !=undefined) page = cpage;
    var page_rows = 20;
    if(cpage_rows =='all') page_rows = 1000;
    else if(getOpt.moinfo.pgrow != '' && getOpt.moinfo.pgrow != undefined) page_rows = getOpt.moinfo.pgrow;
    
    var url = 'sales/order/';
    var rdata = {
      // 세션정보설정
      uid: memUid,
      auth_code: memAuthCode,
      page_block : dataEncodeDecode('enc',6),
      page       : dataEncodeDecode('enc',page),
      page_rows  : dataEncodeDecode('enc',page_rows),
      shkey      : dataEncodeDecode('enc',$("#"+ shkeyvalure(getOpt.moinfo.shkeyfd,'shkey')).val()),
      shkwd      : dataEncodeDecode('enc',$("#"+ shkeyvalure(getOpt.moinfo.shkeyfd,'shkwd')).val()),
      shordtype  : dataEncodeDecode('enc',$("#"+ shkeyvalure(getOpt.moinfo.shkeyfd,'shordtype')).val()),  // 주문/수주
      shend      : dataEncodeDecode('enc','N'),
      shsdate    : dataEncodeDecode('enc',$("#shsdate").val()),
      shedate    : dataEncodeDecode('enc',$("#shedate").val()),
      shdate_use : dataEncodeDecode('enc',$("#shdate_use").val())
    };

    ajaxHttpData(url, rdata, function(result){
      if(result == 'err' || result == 'fail' || result == 'over'){
      } else {

        createOrderObjGetListDataArray = result.value;
        if(callBack){
          callBack(result);
        }else{

        }

      }
    })
  }
}


// 주문 팝업 object 이벤트발생에 따라 연결 object value 설정
function orderSelectSetValue(opt ,id){

  var getOpt = JSON.parse(JSON.stringify(opt));

  // 초기화
  getOpt.obj_data.forEach(function(vl, idx){
    if(vl.callBack){
      vl.callBackSetData.forEach(function(svl, sidx){
        if(svl.type == 'func'){
          var callFunciton = eval(svl.name);
          callFunciton('',getOpt);
        }else{
          if(svl.type == 'text') $("input[name="+ svl.name +"]").val('');
          else if(svl.type == 'select') $("select[name="+ svl.name +"] option:eq(0)").prop("selected", true).trigger('change');
        }
      })
    }
  })

  // 연결 object 설정
  createOrderObjGetListDataArray.forEach(function(pvl,pidx){
    if(pvl.o_idx == id){

      getOpt.obj_data.forEach(function(vl, idx){
        if(vl.callBack){

          vl.callBackSetData.forEach(function(svl, sidx){

            var db_id = eval('pvl.'+ svl.db_id);

            if(svl.type == 'func'){
              var callFunciton = eval(svl.name);
              callFunciton(db_id,getOpt);
            }else{
              if(svl.type == 'text') $("input[name="+ svl.name +"]").val(db_id);
              else if(svl.type == 'select' || svl.type == 'select2') $("select[name="+ svl.name +"]").val(db_id).prop("selected", true).trigger('change');
            
            }
          })
        }
    
      })
    }
  })

  // 추가 리턴함수 존재시 실행 : 멀티 object 사용시
  getOpt.obj_data.forEach(function(vl, idx){
    if(vl.callBack2){
      $("#"+vl.name).each(function(eidx){
        var runFunctionReturn = eval(vl.callBack2);
        runFunctionReturn(eidx);
      });
    }
  });

}