<script>

{*-- ここからjsでのデータ表示用 ---------------------------------------------------*}
let detail_data=[];

function doHeaderEnable(pmode) { {*pmode:H Header有効・D 明細有効*}
  let h = $("#headerTop");
  let d = $("#detailTop");
  let m = $("#funcMenu");
  let mode = h.find(".mode").val();
  if (pmode == "H") { {*Header有効*}
    h.removeClass("noevent");
    d.addClass("noevent");
    $(".Func3").removeClass("noevent");
    $(".Func4").removeClass("noevent");
    $(".Func5").removeClass("noevent");
    $(".Func9").removeClass("noevent");
    $(".Func12").removeClass("noevent");

    {*ヘッダーフォーカス*}
    d.find(".cucd")[0].focus();
  } else {
    h.addClass("noevent");

    d.removeClass("noevent");
    $(".Func3").removeClass("noevent");
    $(".Func4").removeClass("noevent");
    $(".Func5").removeClass("noevent");
    $(".Func9").removeClass("noevent");

    {*データ部フォーカス*}
    d.find(".cucd")[0].focus();
  }
}

function clearHeader() {  {*headerクリア*}
  let frm = $("#headerTop");
  let container = frm.closest(".container");
  doHeaderEnable("D");
  common.clearInputData(container);
}

var init_data={
  vlin:'1',
};

function clearDetail() {
  common.clearAllError();
  $("#detail .detail").remove(); {*明細クリア*}
}

function setOneRow() {
  clearDetail();  {*一旦クリア*}
  {*明細に最初の一行追加*}
  var el = af224x_detail.appendRow(init_data);
  $("#detail").append(el);
  var detail = $("#detail").find(".detail");
  detail.find(".datepicker").each(function (index) {
    common.setDatepickerInfo($(this));
  });
}

function dspDetail() { {*データ表示*}
  let frm = $("#headerTop");
  let detail = $("#detail").find(".detail");
  {*明細行配列クリア*}
  detail_data.splice(0);
  setOneRow();  {*1行作成*}
  doHeaderEnable("D");

}

{*明細行用関数*}
var af224x_detail = {
  appendRow: function (d) {
    let frm = $("#headerTop");
    let mode = common.getValue(frm.find(".mode"));
    var n = stringUtil.nvl;
    var row =
    ' <div class="col wp-100 detail"> ' +
    '<div class="col wp-100 rowinfo detailMain cucdGrp cuscdGrp af222x1popup">' +
    '  <div class="col wp-100"> ' +
    '    <div class="col wd-1000" > ' +
    '      <input name="cucd" type="text" class="form-control input-sm item wd-S cucd eventcucd popCucd required " maxlength="7" value="' + n(d.cucd) + '"> '+
    '      <input name="cuscd" type="text" class="form-control input-sm item wd-S cuscd eventcuscd popCuscd required " maxlength="6" value="' + n(d.cuscd) + '"> '+
    '      <input type="button" class="col popbtn cmdCucd" tabindex="-1" value="?"/> '+
    '      <input name="cunm" type="text" class="form-control input-sm item wd-180 cunm longnm" readonly value="' + n(d.cunm) + '"/> '+
    '      <input name="spnm" type="text" class="form-control input-sm item wd-170 spnm longnm" readonly value="' + n(d.spnm) + '"/> '+
    '      <select name="tcls" class="col form-control input-sm wd-select-SS tcls tcls224 item " style="padding-left:0px;"> '+
    '        <option value="" ></option> '+
    '        {foreach from=$listTcls item=select name=select} '+
    '          <option value="{$select.cd}" >{$select.nm}</option> '+
    '        {/foreach} '+
    '      </select> '+
    '      <input name="vseq" type="text" class="form-control input-sm item wd-M vseq popAf222x1" maxlength="15" value="' + n(d.vseq) + '"/> '+
    '      <input name="viseq" type="hidden" class="viseq " value="' + n(d.viseq) + '"> ' +
    '      <input type="button" class="col popbtn cmdAf222x1" tabindex="-1" value="?"/> ' +
    '      <input name="adat" type="text" class="form-control input-sm item wd-date adat" readonly value="' + n(d.adat) + '"/> '+
    '      <input name="amt" type="text" class="form-control input-sm item wd-number amt number" readonly value="' + common.addFigure(n(d.amt)) + '"/> '+
    '      <input name="sbat" type="hidden" class="sbat" value="' + n(d.sbat) + '"/> '+
    '    </div> ' +
    '    <div class="col wd-160" > ' +
    '      <input name="nvseq" type="text" class="form-control input-sm item wd-M nvseq" maxlength="15" value="' + n(d.nvseq) + '"/> '+
    '    </div> ' +
    '    <div class="col wd-040" > ' +
    '      <input name="chkLineDel"  type="checkbox" class="form-control item input-sm wd-kbn chkLineDel" value="1" tabindex="-1"/>' +
    '    </div> ' +
    '  </div>' +
    '<hr>' +
    '</div>' +
    ' </div> ';
    return row;
  },
}


{*-- ここまでjsでのデータ表示用 ---------------------------------------------------*}

  function getAur32Info($me) {  {*伝票番号入力時*}
    let frmh = $("#headerTop");
    let detail = $me.closest(".detail");

    var sendData = {};
    sendData["cucd"] = common.getValue(detail.find(".cucd"));
    sendData["cuscd"] = common.getValue(detail.find(".cuscd"));
    sendData["tcls"] = common.getValue(detail.find(".tcls"));
    sendData["vseq"] = common.getValue(detail.find(".vseq"));
    sendData["viseq"] = common.getValue(detail.find(".viseq"));
    sendData["sbat2"] = common.getValue(frmh.find(".sbat2"));
    common.postData(
        "./getAur32Info.php"
      , sendData
      , function (data) {
        var obj = JSON.parse(data);
        let ret = obj.ret;
        if(ret == '0') {
          common.setValue(detail.find(".amt"),common.addFigure(obj.amt));
          common.setValue(detail.find(".adat"),obj.adat);
          common.setValue(detail.find(".viseq"),obj.viseq);
          common.setValue(detail.find(".sbat"),obj.sbat);
        } else {
          alert(obj.msg);
          common.setValue(detail.find(".vseq"), "");
          detail.find(".vseq").focus();
        }
      }
      , function (error) {
        alert(error.msg);
      }
    );
  }

  function chkAur32Info($me) {  {*新伝票番号入力時*}
    let frmh = $("#headerTop");
    let detail = $me.closest(".detail");

    var sendData = {};
    sendData["cucd"] = common.getValue(detail.find(".cucd"));
    sendData["cuscd"] = common.getValue(detail.find(".cuscd"));
    sendData["tcls"] = common.getValue(detail.find(".tcls"));
    sendData["vseq"] = common.getValue(detail.find(".vseq"));
    sendData["nvseq"] = common.getValue(detail.find(".nvseq"));
    sendData["sbat"] = common.getValue(detail.find(".sbat"));
    sendData["sbat2"] = common.getValue(frmh.find(".sbat2"));
    common.postData(
        "./chkAur32Info.php"
      , sendData
      , function (data) {
        var obj = JSON.parse(data);
        let ret = obj.ret;
        if(ret == '0') {
        } else {
          alert(obj.msg);
        }
      }
      , function (error) {
        alert(error.msg);
      }
    );
  }

  function setNewLineData($me) {
    let frm = $("#headerTop");
    let mode = common.getValue(frm.find(".mode"));
    let detail = $me.closest(".contents").find(".detail.selectRow");

    detail.find(".datepicker").each(function (index) {
      common.setDatepickerInfo($(this));
    });
    detail.find(".popbtn").each(function (index) {
      common.setValue($(this),"?");
    });

    detail.find(".cucd").focus();
  }

  function chkRegBefore() { {*登録前チェック!*}
    var frm = $("#headerTop");
    var detail = $("#detail .detail");
    var errflg = false;
    var warflg = false;
    let detail_len = detail.length;
    let w_cnt = 0;

    for(i = 0 ; i < detail_len ; i++) {
      var $me = $(detail[i]);
      {*チェック*}
      if (!stringUtil.isEmpty(common.getValue($me.find(".cucd")))
            || !stringUtil.isEmpty(common.getValue($me.find(".cuscd")))
            || !stringUtil.isEmpty(common.getValue($me.find(".vseq"))) ) {  {*cucd, cuscd, vseqの何れかが入力されていたら*}
          $me .find(".required").each(function (index) {
            var el = $(this);
            wprompt="必須です。";
            // 必須チェック
            if(stringUtil.isEmpty(el.val())) {
              common.addError(el, wprompt, null, true);
              errflg = true;
            }
          });

        if (!errflg) {  {*必須チェックOKの場合*}
          {*重複チェック*}
          if (i+1 <= detail_len) {
            for(j = i + 1 ; j < detail_len ; j++) {
              var $me_sub = $(detail[j]);
              if (!stringUtil.isEmpty(common.getValue($me_sub.find(".cucd")))
                    || !stringUtil.isEmpty(common.getValue($me_sub.find(".cuscd")))
                    || !stringUtil.isEmpty(common.getValue($me_sub.find(".vseq"))) ) {  {*cucd, cuscd, vseqの何れかが入力されていたら*}
                {*旧で同じ伝票が指定されている*}
                if (common.getValue($me.find(".cucd")) == common.getValue($me_sub.find(".cucd"))
                      && common.getValue($me.find(".cuscd")) == common.getValue($me_sub.find(".cuscd"))
                      && common.getValue($me.find(".tcls")) == common.getValue($me_sub.find(".tcls"))
                      && common.getValue($me.find(".vseq")) == common.getValue($me_sub.find(".vseq")) ) {
                  common.addError($me_sub.find(".vseq"), "同一伝票番号が指定されています", null, true);
                  errflg = true;
                }
                {*新で同じ伝票が指定されている*}
                if (common.getValue($me.find(".cucd")) == common.getValue($me_sub.find(".cucd"))
                      && common.getValue($me.find(".cuscd")) == common.getValue($me_sub.find(".cuscd"))
                      && common.getValue($me.find(".tcls")) == common.getValue($me_sub.find(".tcls"))
                      && common.getValue($me.find(".sbat")) == common.getValue($me_sub.find(".sbat"))
                      && common.getValue($me.find(".nvseq")) == common.getValue($me_sub.find(".nvseq")) ) {
                  common.addError($me_sub.find(".nvseq"), "同一伝票番号が指定されています", null, true);
                  errflg = true;
                }
              }
            }
          }
        }

        w_cnt = w_cnt + 1;
      }

    }

    if(errflg) {
      alert("エラーがあります。");
      return false;
    } else {
      if (w_cnt == 0) {
        alert("データを入力して下さい。");
        return false;
      } else {
        return true;
      }
    }
  }

  $(document).ready(function(){
    /* 明細 高さ 自動設定
    //===================================================================*/
    common.setDetailHeight( $("#detail") );

    common.removeLoading();
    dspDetail();  {*明細表示*}

    /* イベント
    //===================================================================*/
    //　F1
    $(document).on("click", ".Func1:not('.noevent')", function(e) {
    });
    //　F2
    $(document).on("click", ".Func2:not('.noevent')", function(e) {
      $(".btn-search-before").trigger("click");
    });
    //　F3 行削除
    $(document).on("click", ".Func3:not('.noevent')", function(e) {
      $(".btn-del").trigger("click");
    });
    //　F4 行挿入
    $(document).on("click", ".Func4:not('.noevent')", function(e) {
      $(".btnLineIns").trigger("click");
    });
    //　F5 クリア
    $(document).on("click", ".Func5:not('.noevent')", function(e) {
        clearHeader();
        setOneRow();
    });
    //　F6
    $(document).on("click", ".Func6:not('.noevent')", function(e) {
    });
    //　F7 前頁
    $(document).on("click", ".Func7:not('.noevent')", function(e) {
    });
    //　F8 次頁
    $(document).on("click", ".Func8:not('.noevent')", function(e) {
    });
    //　F9 登録/実行
    $(document).on("click", ".Func9:not('.noevent')", function(e) {
      $(".btn-reg-before").trigger("click");
    });
    //　F10
    $(document).on("click", ".Func10:not('.noevent')", function(e) {
    });
    //　F11 表示
    $(document).on("click", ".Func11:not('.noevent')", function(e) {
    });
    //　F12 メニュー/戻る
    $(document).on("click", ".Func12:not('.noevent')", function(e) {
      $('.btn-close').trigger('click');
    });

    //画面初期表示時動作

    //MENUボタン===============================
    $(document).on("regSuccess", ".btn-reg", function(e,options){
      setOneRow();
      clearHeader();
      alert("登録しました");
    });

    //=== header ===
    $(document).on("click", ".btn-reg-before", function(e) {
      var detail = $("#detail .detail");
      var frmh = $(this).closest(".contents").find(".header");
      var errflg = false;
      var wret;

      errflg = chkRegBefore();  {*登録前チェック。*}
      if (errflg) { {*チェックOK*}
        $(".headermenu").find(".btn-reg").trigger("click");
      }
    });

    //====明細行動作======
    $(document).on("afterSelectaf222x1", ".vseq", function(e) {
      let $me = $(this);
      getAur32Info($me);
    });

    $(document).on("change", ".cucd, .cuscd, .tcls", function(e) {  {*得意先～区分*}
      let $me = $(this);
      let detail = $me.closest(".detail");
      if ($me.hasClass("cucd")) {
        common.setValue(detail.find(".cuscd"), "");
        common.setValue(detail.find(".spnm"), "");
        common.setValue(detail.find(".tcls"), "");
      } else if ($me.hasClass("cuscd")) {
        common.setValue(detail.find(".tcls"), "");
      }

      common.setValue(detail.find(".vseq"), "");
      common.setValue(detail.find(".adat"), "");
      common.setValue(detail.find(".amt"), "");
      common.setValue(detail.find(".sbat"), "");
      common.setValue(detail.find(".viseq"), "");
      common.setValue(detail.find(".nvseq"), "");
    });

    $(document).on("change", ".vseq", function(e) {  {*伝票番号入力*}
      let $me = $(this);
      let detail = $me.closest(".detail");
      common.setValue(detail.find(".adat"), "");
      common.setValue(detail.find(".amt"), "");
      common.setValue(detail.find(".sbat"), "");
      common.setValue(detail.find(".viseq"), "");
      if (!stringUtil.isEmpty(common.getValue($me))) {
        if (stringUtil.isEmpty(common.getValue(detail.find(".cucd"))) || stringUtil.isEmpty(common.getValue(detail.find(".cuscd"))) ) {
          alert("得意先を指定して下さい。");
          common.setValue($me, "");
          detail.find(".cucd").focus();
          return false;
        }
        if (stringUtil.isEmpty(common.getValue(detail.find(".tcls"))) ) {
          alert("区分を指定して下さい。");
          common.setValue($me, "");
          detail.find(".tcls").focus();
          return false;
        }

        getAur32Info($me);
      }
    });

    $(document).on("change", ".nvseq", function(e) {  {*新伝票番号入力*}
      let $me = $(this);
      let detail = $me.closest(".detail");
      if (!stringUtil.isEmpty(common.getValue($me))) {
        if (stringUtil.isEmpty(common.getValue(detail.find(".vseq")))) {
          alert("旧伝票番号を指定してください。");
          common.setValue($me, "");
          detail.find(".nvseq").focus();
          return false;
        } else {
          if (common.getValue(detail.find(".vseq")) == common.getValue(detail.find(".nvseq"))) {
            alert("伝票番号が重複しています。");
            common.setValue($me, "");
            detail.find(".nvseq").focus();
            return false;
          }
        }
        if (stringUtil.isEmpty(common.getValue(detail.find(".cucd"))) || stringUtil.isEmpty(common.getValue(detail.find(".cuscd"))) ) {
          alert("得意先を指定して下さい。");
          common.setValue($me, "");
          detail.find(".cucd").focus();
          return false;
        }
        if (stringUtil.isEmpty(common.getValue(detail.find(".tcls"))) ) {
          alert("区分を指定して下さい。");
          common.setValue($me, "");
          detail.find(".tcls").focus();
          return false;
        }

        chkAur32Info($me);
      }
    });

    $(document).on("insertLine", ".selectRow", function(e) {
      setNewLineData($(this));
    });
    $("#lastDetail").focus(function(){
      var details = $("#detailTop .detail:last")[0];
      if(!!!details){
        return true;
      }

      var newRow = commonLine.insertDetail(details);
      common.setDetailHeight();
      $(newRow).find(":enabled")[0].focus();
      $(window).scrollTop($(newRow).parent().offset().top);
      setNewLineData($(newRow));
    });


    //=== footer ===


  });

</script>
