$("#tutorial").on("click", function () {
  $(document).ready(async function () {
    const driver = new Driver({
      doneBtnText: "Sair",
      closeBtnText: "Fechar",
      nextBtnText: "Próximo",
      prevBtnText: "Anterior",
      allowClose: false,
    });
    driver.defineSteps([{
      element: '#tabNFE',
      popover: {
        title: 'Aba de NFE',
        description: 'Aba para fazer a consulta e exportação de NFE.',
        position: 'bottom'
      }
    },
    {
      element: '#tabNFCE',
      popover: {
        title: 'Aba de NFCE',
        description: 'Aba para fazer a consulta e exportação da NFCE',
        position: 'bottom'
      }
    },
    {
      element: '#tabCFE',
      popover: {
        title: 'Aba de CFE',
        description: 'Aba para fazer a consutla e exportação de CFE.',
        position: 'bottom'
      }
    }
    ]);
    driver.start();
  });
});

$(document).ready(async function () {
  Date.prototype.toDateInputValue = (function () {
    var local = new Date(this);
    local.setMinutes(this.getMinutes() - this.getTimezoneOffset());
    return local.toJSON().slice(0, 10);
  });

  dtAtual = new Date().toDateInputValue();

  //AÇÕES NFE
  $('#tabNFE').on('click', function () {
    $('#cardNFE').removeClass('d-none');
    $('#cardNFCE').addClass('d-none');
    $('#cardCFE').addClass('d-none');
  });

  $('#btnFiltrosNFE').on('click', function () {
    $('#modalFiltrosNFE').modal('show');
  });

  $('#modalFiltrosNFE').on('show.bs.modal', function () {
    $("#tabelaEmissao").DataTable().columns.adjust().draw(false);
  })

  async function consultaEntradasNFE() {
    $('#txtNotaNFE').val('');
    $('#txtNotaNFE').autocompleta(3, `JSON={ "tabela":"NOTA_ENTRA", "camposSelect":[ "NOTAFISCAL CHAVE", "CREDOR DESCRICAO"], "where": ["EMP_ID='${getCookie('emp_id')}'"]}`);
    $('#btnNotaNFE').pesquisa_array(["#txtNotaNFE"], ["NOTAFISCAL"], ["CREDOR"], `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"NOTA_ENTRA", "camposSelect":[ "NOTAFISCAL", "CREDOR"], "where": ["EMP_ID='${getCookie('emp_id')}'"]}`, "Pesquisa Nota", "NOTA_ENTRA");
  }

  async function consultaSaidasNFE() {
    $('#txtNotaNFE').val('');
    $("#txtNotaNFE").autocompleta(3, `JSON={ "tabela":"NOTA", "camposSelect":["FATURA CHAVE, VALOR DESCRICAO"], "where": ["EMP_ID='${getCookie('emp_id')}'"]}`);
    $("#btnNotaNFE").pesquisa_array(["#txtNotaNFE"], ["FATURA"], ["DT_EMISSAO"], `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"NOTA", "camposSelect":[ "FATURA", "DT_EMISSAO"], "where": ["EMP_ID='${getCookie('emp_id')}'"]}`, "Pesquisa Nota", "NOTA");
  }

  $('#rgEntradas, #rgSaidas').on('change', async function () {
    $('#btnNotaNFE').unbind();
    if ($('#rgEntradas').is(':checked')) {
      $('#divEntradas').removeClass('d-none')
      $('#divEntradas').addClass('d-flex')
      $('#divSaidas').removeClass('d-flex')
      $('#divSaidas').addClass('d-none')

      await consultaEntradasNFE();
    } else {
      $('#divEntradas').addClass('d-none')
      $('#divEntradas').removeClass('d-flex')
      $('#divSaidas').addClass('d-flex')
      $('#divSaidas').removeClass('d-none')
      await consultaSaidasNFE();
    }
  });

  $("#btnLimpaNotaNFE").on("click", function () { $("#txtNotaNFE").val("") });

  $('#txtNaturezaNFE').autocompleta(1, `JSON={ "tabela":"NATUREZA", "camposSelect":["NATUREZA CHAVE, DESCRICAO"], "where": null}`);
  $("#btnNaturezaNFE").pesquisa_array(["#txtNaturezaNFE"], ["NATUREZA"], ["DESCRICAO"], `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"natureza", "camposSelect": [ "NATUREZA", "DESCRICAO" ], "where": null}`, "Pesquisa Natureza", "NATUREZA");
  $('#btnLimpaNaturezaNFE').on('click', function () { $('#txtNaturezaNFE').val("") });

  $("#txtClienteNFE").autocompleta(3, 'JSON={ "tabela":"entidade", "camposSelect":[ "codcli chave", "nome descricao"], "where": null}');
  $("#btnClienteNFE").pesquisa_serverside(["#txtClienteNFE"], ["CODCLI", "CNPJ"], ["NOME", "CNPJ"], '{"tabela":"entidade", "camposSelect":["CODCLI", "NOME", "FANTASIA", "CNPJ"], "where": null}', "Pesquisa Cliente");
  $("#btnLimpaClienteNFE").on("click", function () { $("#txtClienteNFE").val("") });

  $("#txtVendedorNFE").autocompleta(1, `JSON={ "tabela":"REPRESEN", "camposSelect":["CODREP CHAVE, NOME DESCRICAO"], "where": [] }`, [], [], []);
  $("#btnVendedorNFE").pesquisa_array(["#txtVendedorNFE"], ["CODREP"], ["NOME"], '/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"REPRESEN", "camposSelect":[ "CODREP", "NOME" ], "where": null}', "Pesquisa Vendedor", "REPRESEN");
  $("#btnLimpaVendedorNFE").on("click", function () { $("#txtVendedorNFE").val("") });

  $("#txtGrupoClienteNFE").autocompleta(1, `JSON={ "tabela":"GRUPO_CLI", "camposSelect":["CODIGO CHAVE, DESCRICAO"], "where": [] }`, [], [], []);
  $("#btnGrupoClienteNFE").pesquisa_array(["#txtGrupoClienteNFE"], ["CODIGO"], ["DESCRICAO"], '/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"GRUPO_CLI", "camposSelect":[ "CODIGO", "DESCRICAO" ], "where": null}', "Pesquisa Qualidade", "GRUPO_CLI");
  $("#btnLimpaGrupoClienteNFE").on("click", function () { $("#txtGrupoClienteNFE").val("") });

  $("#txtTransportadoraNFE").autocompleta(1, `JSON={ "tabela":"TABTRAN", "camposSelect":["CODIGO CHAVE, NOME DESCRICAO"], "where": [] }`, [], [], []);
  $("#btnTransportadoraNFE").pesquisa_array(["#txtTransportadoraNFE"], ["CODIGO"], ["NOME"], '/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"TABTRAN", "camposSelect":[ "CODIGO", "NOME" ], "where": null}', "Pesquisa Transportadora", "TABTRAN");
  $("#btnLimpaTransportadoraNFE").on("click", function () { $("#txtTransportadoraNFE").val("") });

  $('#btnLimparFiltrosNFE').on('click', async function () {
    $('#dtEmissaoDe').val('1200-01-01');
    $('#dtEmissaoAte').val('2500-12-31');
    $('#dtSaidaDe').val('1200-01-01');
    $('#dtSaidaAte').val('2500-12-31');
    $('#dtEntradaDe').val('1200-01-01');
    $('#dtEntradaAte').val('2500-12-31');
    $('#dtEntrEmissaoDe').val('1200-01-01');
    $('#dtEntrEmissaoAte').val('2500-12-31');
    $('#txtNotaNFE').val('');
    $('#txtClienteNFE').val('');
    $('#txtNaturezaNFE').val('');
    $('#txtGrupoClienteNFE').val('');
    $('#txtNaturezaNFE').val('');
    $('#txtVendedorNFE').val('');
    $('#txtTransportadoraNFE').val('');
    $('#txtTransportadoraNFE').val('');
    $('#cbNotasCCePeriodo').prop('checked', false);
    $('#cbInutilizadas').prop('checked', false);
    $('#cbSomenteInutilizadas').prop('checked', false);
    $('#cbCanceladas').prop('checked', false);
    $('#cbExportaDanfe').prop('checked', false);
    $('#cbNotaCancelada').prop('checked', false);
    $('#cbExportaCanceladas').prop('checked', false);
    $('#cbSomenteCanceladas').prop('checked', false);
    $('#cbNaoDenegadas').prop('checked', false);
    $('#cbExportaDanfe').prop('checked', false);
    $('#cbExportaCTeVinculada').prop('checked', false);
    $('#cbCopiaXML').prop('checked', false);
    $('#radioEmitidas').prop('checked', true);
  });

  //AÇÕES NFCE
  $('#tabNFCE').on('click', function () {
    $('#cardNFCE').removeClass('d-none');
    $('#cardNFE').addClass('d-none');
    $('#cardCFE').addClass('d-none');
  });

  $('#btnFiltrosNFCE').on('click', function () {
    $('#modalFiltrosNFCE').modal('show');
  });

  $("#txtNotaNFCE").autocompleta(1, `JSON={ "tabela":"NOTA_NFCE", "camposSelect":["FATURA CHAVE, VALOR DESCRICAO"], "where": ["EMP_ID='${getCookie('emp_id')}'"]}`, [], [], []);
  $("#btnNotaNFCE").pesquisa_array(["#txtNotaNFCE"], ["FATURA"], ["VALOR"], `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"NOTA_NFCE", "camposSelect":[ "FATURA", "VALOR" ], "where":["EMP_ID='${getCookie('emp_id')}'"]}`, "Pesquisa NFCE", "NOTA_NFCE");
  $("#btnLimpaNotaNFCE").on("click", function () { $("#txtNotaNFCE").val("") });

  $("#txtNaturezaNFCE").autocompleta(1, `JSON={ "tabela":"NATUREZA", "camposSelect":["NATUREZA CHAVE, DESCRICAO"], "where": [] }`, [], [], []);
  $('#btnNaturezaNFCE').pesquisa('#txtNaturezaNFCE', 'NATUREZA', 'DESCRICAO', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"NATUREZA", "camposSelect":[ "NATUREZA", "DESCRICAO"]}`, 'Pesquisa Natureza', 'NATUREZA');
  $("#btnLimpaNaturezaNFCE").on("click", function () { $("#txtNaturezaNFCE").val("") });

  $("#txtClienteNFCE").autocompleta(3, 'JSON={ "tabela":"entidade", "camposSelect":[ "codcli chave", "nome descricao"], "where": null}');
  $("#btnClienteNFCE").pesquisa_serverside(["#txtClienteNFCE"], ["CODCLI", "CNPJ"], ["NOME", "CNPJ"], '{"tabela":"entidade", "camposSelect":[ "CODCLI", "NOME", "FANTASIA", "CNPJ" ], "where": null}', "Pesquisa Cliente");
  $("#btnLimpaClienteNFCE").on("click", function () { $("#txtClienteNFCE").val("") });

  $("#txtGrupoClienteNFCE").autocompleta(1, `JSON={ "tabela":"GRUPO_CLI", "camposSelect":["CODIGO CHAVE, DESCRICAO"], "where": [] }`, [], [], []);
  $("#btnGrupoClienteNFCE").pesquisa_array(["#txtGrupoClienteNFCE"], ["CODIGO"], ["DESCRICAO"], '/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"GRUPO_CLI", "camposSelect":[ "CODIGO", "DESCRICAO" ], "where": null}', "Pesquisa Grupo Cliente", "GRUPO_CLI");
  $("#btnLimpaGrupoClienteNFCE").on("click", function () { $("#txtGrupoClienteNFCE").val("") });

  $('#btnLimparFiltrosNFCE').on('click', function () {
    $('#dtEmissaoNFCEDe').val('1200-01-01');
    $('#dtEmissaoNFCEAte').val('2500-12-31');
    $('#txtNotaNFCE').val('');
    $('#txtClienteNFCE').val('');
    $('#txtNaturezaNFCE').val('');
    $('#txtGrupoClienteNFCE').val('');
    $('#cbInutilizadasNFCE').prop('checked', false);
    $('#cbSomenteInutilizadasNFCE').prop('checked', false);
    $('#cbCanceladasNFCE').prop('checked', false);
  });

  $('#btnLimparFiltrosCFE').on('click', function () {
    $('#dtEmissaoCFEDe').val('1200-01-01');
    $('#dtEmissaoCFEAte').val('2500-12-31');
  });

  $('#btnFiltrosNFCE').on('click', function () {
    $('#modalFiltrosNFCE').modal('show');
  });

  //AÇÕES CFE
  $('#tabCFE').on('click', function () {
    $('#cardCFE').removeClass('d-none');
    $('#cardNFE').addClass('d-none');
    $('#cardNFCE').addClass('d-none');
  });

  $('#btnFiltrosCFE').on('click', function () {
    $('#modalFiltrosCFE').modal('show');
  });

  $('#txtVendaCFE').autocompleta(1, `JSON={ "tabela":"venda", "camposSelect":[ "codven CHAVE", "nrcupom descricao"], "where": null}`);
  $('#btnVendaCFE').pesquisa('#txtVendaCFE', 'CODVEN', 'NRCUPOM', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"venda", "camposSelect":[ "codven", "nrcupom"]}`, 'Pesquisa Venda', 'venda');
  $('#btnLimpaVendaCFE').on('click', function () { $('#txtVendaCFE').val('') });

  $('#txtClienteCFE').autocompleta(3, `JSON={ "tabela":"entidade", "camposSelect":[ "codcli chave", "nome descricao"], "where": null}`);
  $('#btnClienteCFE').pesquisa('#txtClienteCFE', 'CODCLI', 'NOME', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"entidade", "camposSelect":[ "codcli", "nome"]}`, 'Pesquisa Cliente', 'entidade');
  $('#btnLimpaClienteCFE').on('click', function () { $('#txtClienteCFE').val('') });

  $('#btnExportarNFE').on('click', async function () {
    if (!$.fn.DataTable.isDataTable("#tabelaNFE")) {
      msgAlerta('Nenhuma nota para exportar.');
      return;
    }
    await exportaNFE();
  });

  $('#btnExportarNFCE').on('click', async function () {
    if (!$.fn.DataTable.isDataTable("#tabelaNFCE")) {
      msgAlerta('Nenhuma nota para exportar.');
      return;
    }
    await exportaNFCE();
  });

  $('#btnExportarCFE').on('click', async function () {
    if (!$.fn.DataTable.isDataTable("#tabelaCFE")) {
      msgAlerta('Nenhuma nota para exportar.');
      return;
    }
    await exportaCFE();
  });

  async function buscaNFE() {
    try {
      params = buscaParamsNFE();
      const response = await requisicao('GET', '/sisplan/exportafiscal/v1/pesquisanfe?', `JSON=${JSON.stringify(params)}`);

      if (!response) {
        return;
      }

      let jsonStr = await response.json();
      if (response.status != 200) {
        msgAlerta(jsonStr.mensagem);
        return
      }

      return jsonStr;

    } catch (error) {
      console.error(error);
      msgAlerta(`Nenhuma nota encontrada, verifique!`);
    }
  }

  function buscaParamsNFE() {
    const obj = {
      ENTRADA_DE: $('#dtEntradaDe').val() != '1200-01-01' ? $('#dtEntradaDe').val() : '1200-01-01',
      ENTRADA_ATE: $('#dtEntradaAte').val() != '2500-12-31' ? $('#dtEntradaAte').val() : '2500-12-31',
      EMISSAO_ENTR_DE: $('#dtEntrEmissaoDe').val() != '1200-01-01' ? $('#dtEntrEmissaoDe').val() : '1200-01-01',
      EMISSAO_ENTR_ATE: $('#dtEntrEmissaoAte').val() != '2500-12-31' ? $('#dtEntrEmissaoAte').val() : '2500-12-31',
      EMISSAO_DE: $('#dtEmissaoDe').val() != '1200-01-01' ? $('#dtEmissaoDe').val() : '1200-01-01',
      EMISSAO_ATE: $('#dtEmissaoAte').val() != '2500-12-31' ? $('#dtEmissaoAte').val() : '2500-12-31',
      SAIDA_DE: $('#dtSaidaDe').val() != '1200-01-01' ? $('#dtSaidaDe').val() : '1200-01-01',
      SAIDA_ATE: $('#dtSaidaAte').val() != '2500-12-31' ? $('#dtSaidaAte').val() : '2500-12-31',
      FATURA: pegaChave('#txtNotaNFE'),
      NATUREZA: pegaChave('#txtNaturezaNFE'),
      CODCLI: pegaChave('#txtClienteNFE'),
      CODREP: pegaChave('#txtVendedorNFE'),
      GRUPO_CLIENTE: pegaChave('#txtGrupoClienteNFE'),
      TRANSPORT: pegaChave('#txtTransportadoraNFE'),
      CANCELADAS: $('#cbNotaCancelada').is(':checked') ? '1' : '0',
      TIPO_NOTA: $('#rgSaidas').is(':checked') ? '1' : '0',
      EMP_ID: getCookie('emp_id'),
    }
    return obj;
  }

  async function buscaNFCE() {
    try {
      params = buscaParamsNFCE();
      const response = await requisicao('GET', '/sisplan/exportafiscal/v1/pesquisanfce?', `JSON=${JSON.stringify(params)}`);

      if (!response) {
        return;
      }

      let json = await response.json();
      if (response.status != 200) {
        msgAlerta(json.mensagem);
        return
      }

      return json;

    } catch (error) {
      console.error(error);
      msgAlerta(`Nenhuma nota encontrada, verifique!`);
    }
  }

  function buscaParamsNFCE() {
    const obj = {
      EMISSAO_DE: $('#dtEmissaoNFCEDe').val() != '1200-01-01' ? $('#dtEmissaoNFCEDe').val() : '1200-01-01',
      EMISSAO_ATE: $('#dtEmissaoNFCEAte').val() != '2500-12-31' ? $('#dtEmissaoNFCEAte').val() : '2500-12-31',
      FATURA: pegaChave('#txtNotaNFCE'),
      NATUREZA: pegaChave('#txtNaturezaNFCE'),
      CODCLI: pegaChave('#txtClienteNFCE'),
      GRUPO_CLIENTE: pegaChave('#txtGrupoClienteNFCE'),
      CANCELADAS: $('#cbCanceladas').is(':checked') ? '1' : '0',
      INUTILIZADAS: $('#cbInutilizadas').is(':checked') ? '1' : '0',
      SOMENTE_CANCELADAS: $('#cbSomenteCanceladas').is(':checked') ? '1' : '0',
      SOMENTE_INUTILIZADAS: $('#cbSomenteInutilizadas').is(':checked') ? '1' : '0',
      EMP_ID: getCookie('emp_id'),
    }
    return obj;
  }

  async function buscaCFE() {
    try {
      params = buscaParamsCFE();
      const response = await requisicao('GET', '/sisplan/exportafiscal/v1/pesquisacfe?', `JSON=${JSON.stringify(params)}`);

      if (!response) {
        return;
      }

      let json = await response.json();
      if (response.status != 200) {
        msgAlerta(json.mensagem);
        return
      }

      return json;

    } catch (error) {
      console.error(error);
      msgAlerta(`Nenhuma nota encontrada, verifique!`);
    }
  }

  function buscaParamsCFE() {
    const obj = {
      EMISSAO_DE: $('#dtEmissaoCFEDe').val() != '1200-01-01' ? $('#dtEmissaoCFEDe').val() : '1200-01-01',
      EMISSAO_ATE: $('#dtEmissaoCFEAte').val() != '2500-12-31' ? $('#dtEmissaoCFEAte').val() : '2500-12-31',
      EMP_ID: getCookie('emp_id'),
    }
    return obj;
  }

  async function exportaNFE() {
    let iArrayChave = [];
    let iArrayFatura = [];

    if ($('#rgEntradas').prop('checked')) {
      iOpcaoCheck = '0';
    } else {
      iOpcaoCheck = '1';
    }
    const notasSelecionadas = $(`#tabelaNFE`).DataTable().rows().data().$(`.campoSelNFE`).toArray().filter((campoSel) => $(campoSel).prop('checked'));
    if (notasSelecionadas.length == 0) {
      msgAlerta('Nenhuma nota selecionada.');
      return;
    }
    try {
      $.LoadingOverlay("show");

      notasSelecionadas.forEach((inputSelecionado) => {
        const closestTr = $(inputSelecionado).closest('tr');
        const data = $(`#tabelaNFE`).DataTable().rows(closestTr).data();
        iArrayChave.push(data[0].CHAVE_NFE);
        if (data[0].FATURA != '') {
          iArrayFatura.push(data[0].FATURA);
        }
      });

      const body = {
        chaves: iArrayChave,
        faturas: iArrayFatura,
      }

      const response = await requisicao('POST', `/Sisplan/exportafiscal/V1/exportanfe?`, `TIPO=${iOpcaoCheck}&EXPORTADANFE=${$('#cbExportaDanfe').is(':checked')}`, `${JSON.stringify(body)}`, 500000);

      if (!response) {
        return;
      }

      let jsonStr = await response.json();
      if (response.status != 200) {
        msgAlerta(jsonStr.mensagem);
      }
      if (response.status == 200) {
        toastr.success(
          'Arquivo compactado com sucesso!',
          'Confirmação', {
          toastClass: 'alert',
          iconClasses: {
            error: 'alert-error',
            info: 'alert-info',
            success: 'alert-success',
            warning: 'alert-warning'
          },
          positionClass: "toast-top-center",
          progressBar: true,
          timeOut: 3000,
          fadeOut: 1000,
          onHidden: () => window.open(`${BASE_URI}/XML/${jsonStr.mensagem}`)
        }
        ).css({
          "margin-top": "20%",
          "width": "500px",
          "max-width": "500px"
        });
      } else {
        return;
      }

    } catch (error) {
      console.log(error)
      msgAlerta('Não foi possivel compactar os arquivos, verifique!');
    } finally {
      $.LoadingOverlay("hide");
    }
  }

  async function exportaNFCE() {
    let iArrayChave = [];
    let iArrayImpresso = [];

    const NotasSelecionadas = $(`#tabelaNFCE`).DataTable().rows().data().$(`.campoSelNFCE`).toArray().filter((campoSel) => $(campoSel).prop('checked'));
    if (NotasSelecionadas.length == 0) {
      msgAlerta('Nenhuma nota selecionada');
      return;
    }


    try {
      $.LoadingOverlay("show");
      NotasSelecionadas.forEach((inputSelecionado) => {
        const closestTr = $(inputSelecionado).closest('tr');
        const data = $(`#tabelaNFCE`).DataTable().rows(closestTr).data().toArray()
        iArrayImpresso.push(data[0].IMPRESSO);
        iArrayChave.push(data[0].CHAVE_NFCE);
      });

      const body = {
        chaves: iArrayChave,
        impresso: iArrayImpresso,
      }
      const response = await requisicao('POST', `/Sisplan/exportafiscal/V1/exportanfce?`, '', `${JSON.stringify(body)}`, 50000);

      let jsonStr = await response.json();

      if (response.status == 200) {
        toastr.success(
          'Arquivo compactado com sucesso!',
          'Confirmação', {
          toastClass: 'alert',
          iconClasses: {
            error: 'alert-error',
            info: 'alert-info',
            success: 'alert-success',
            warning: 'alert-warning'
          },
          positionClass: "toast-top-center",
          progressBar: true,
          timeOut: 3000,
          fadeOut: 1000,
          onHidden: () => window.open(`${BASE_URI}/XML/${jsonStr.mensagem}`)
        }
        ).css({
          "margin-top": "20%",
          "width": "500px",
          "max-width": "500px"
        });
      } else if (response.status != 200) {
        msgAlerta(jsonStr.mensagem);
      }

    } catch (error) {
      console.log(error)
      msgAlerta('Não foi possivel compactar os arquivos, verifique!');
    } finally {
      $.LoadingOverlay("hide");
    }
  }

  function buscaDadosCfe() {
    const tabelaCfe = $('#tabelaCFE').DataTable().rows().data().toArray();

    const objeto = tabelaCfe.map((dados) => dados.SEL == 'S' ? ({
      chave: dados.CHAVE_CFE,
    }) : null).filter((dados) => dados !== null)
    return objeto;
  }

  $('#check_todosCFE').on('click', function () {
    selecionarTodosInputsStone()
  });

  function selecionarTodosInputsStone() {
    $(`#tabelaCFE`).DataTable().rows().data().$(`.campoSelCFE`).toArray().filter((campoSel) => {
      if (!$(campoSel).prop('disabled')) {
        $(campoSel).prop('checked', !campoSel.checked)
        $('#tabelaCFE').DataTable().rows(campoSel.closest('tr')).data().toArray()[0].SEL = campoSel.checked ? 'S' : 'N';
      }
    });
  }

  $('#tabelaCFE').on('click', '.campoSelCFE', async function () {
    lineIsChecked = $('#tabelaCFE').DataTable().rows((this).closest('tr')).data().toArray()[0].SEL == 'N' ? true : false
    newValue = lineIsChecked ? 'S' : 'N'
    $('#tabelaCFE').DataTable().rows((this).closest('tr')).data().toArray()[0].SEL = newValue;
  });

  async function exportaCFE() {
    const notasSelecionadas = $(`#tabelaCFE`).DataTable().rows().data().$(`.campoSelCFE`).toArray().filter((campoSel) => $(campoSel).prop('checked'));
    if (notasSelecionadas.length === 0) {
      msgAlerta('Nenhuma nota selecionada');
      return;
    }
    try {
      $.LoadingOverlay('show');
      let Chaves = buscaDadosCfe();


      const chaves = {
        Chaves: Chaves
      }

      const response = await requisicao('POST', '/Sisplan/exportafiscal/V1/exportacfe?', '', JSON.stringify(chaves), 500000);

      if (!response) return;

      const jsonStr = await response.json();

      if (response.status === 200) {
        toastr.success(
          'Arquivo compactado com sucesso!',
          'Confirmação',
          {
            toastClass: 'alert',
            iconClasses: {
              error: 'alert-error',
              info: 'alert-info',
              success: 'alert-success',
              warning: 'alert-warning'
            },
            positionClass: 'toast-top-center',
            progressBar: true,
            timeOut: 3000,
            fadeOut: 1000,
            onHidden: () => window.open(`${BASE_URI}/XML/${jsonStr.mensagem}`)
          }
        ).css({ 'margin-top': '20%', width: '500px', 'max-width': '500px' });
      } else if (response.status !== 200) {
        return msgAlerta(jsonStr.mensagem);
      }

    } catch (error) {
      console.log(error);
      msgAlerta('Não foi possivel compactar os arquivos, verifique!');
    } finally {
      $.LoadingOverlay('hide');
    }
  }

  function selecionarTodosInputs(tipo) {
    if ($(`#check_todos${tipo}`).is(':checked')) {
      $(`#tabela${tipo}`).DataTable().rows().data().$(`.campoSel${tipo}`).toArray().filter((campoSel) => $(campoSel).prop('checked', true))
    } else {
      $(`#tabela${tipo}`).DataTable().rows().data().$(`.campoSel${tipo}`).toArray().filter((campoSel) => $(campoSel).prop('checked', false))
    }
  }

  function insereCampoSel(posicao, tipo) {
    posicao.render = function (data, type, row, meta) {
      return `<div class="icheck-primary d-inline">
                    <input type="checkbox" id="check_col_${meta.row}_row_${meta.col}" class="campoSel${tipo}">
                    <label for="check_col_${meta.row}_row_${meta.col}"></label>
                </div>`
    }
  }

  $('#btnConsultarNFE').on('click', async function () {
    try {
      $.LoadingOverlay('show')
      if ($.fn.DataTable.isDataTable('#tabelaNFE')) {
        $('#tabelaNFE').DataTable().destroy();
        $('#tabelaNFE').empty();
      };
      let dataSet = await buscaNFE();
      let dataSetCols = [];

      var keys = Object.keys(dataSet[0]);
      dataSetCols.push({
        'title': 'SEL',
        'data': 'SEL',
        'width': '15px'
      });

      insereCampoSel(dataSetCols[0], 'NFE');

      for (var k in keys) {
        dataSetCols.push({
          'title': keys[k],
          'data': keys[k]
        });
      }

      $('#tabelaNFE').DataTable({
        paging: true,
        filter: true,
        info: true,
        order: false,
        destroy: true,
        "language": {
          "sEmptyTable": "Nenhum registro encontrado",
          "sInfo": "_TOTAL_ registros",
          "sInfoEmpty": " 0 registros",
          "sInfoFiltered": "(Filtrados de _MAX_ registros)",
          "sInfoPostFix": "",
          "sInfoThousands": ".",
          "sLengthMenu": "_MENU_ resultados",
          "sLoadingRecords": "Carregando...",
          "sProcessing": "Processando...",
          "sZeroRecords": "Nenhum registro encontrado",
          "sSearch": "Pesquisar (geral): ",
          "oPaginate": {
            "sNext": "Próximo",
            "sPrevious": "Anterior",
            "sFirst": "Primeiro",
            "sLast": "Último"
          },
          "oAria": {
            "sSortAscending": ": Ordenar colunas de forma ascendente",
            "sSortDescending": ": Ordenar colunas de forma descendente"
          }
        },
        "data": dataSet,
        "columns": dataSetCols,
        "columnDefs": [{
          className: "dt-head-center"
        },
        ]
      });

      $('.campoCheck').on('change', function () {
        if (this.checked) {
          $(this).addClass('selecionado');
        } else {
          $(this).removeClass('selecionado');
        }
      });

    } catch (error) {
      console.log(error)
    } finally {
      $.LoadingOverlay('hide');
      $('#modalFiltrosNFE').modal('hide');
    }
  });

  $('#check_todosNFE').on('change', function () {
    selecionarTodosInputs('NFE');
  });

  $('.campoCheck').on('change', function () {
    if (this.checked) {
      $(this).addClass('selecionado');
    } else {
      $(this).removeClass('selecionado');
    }
  });

  $('#btnConsultarNFCE').on('click', async function () {
    try {
      $.LoadingOverlay('show');
      if ($.fn.DataTable.isDataTable('#tabelaNFCE')) {
        $('#tabelaNFCE').DataTable().destroy();
        $('#tabelaNFCE').empty();
      };
      var dataSet = await buscaNFCE();
      var dataSetCols = [];

      var keys = Object.keys(dataSet[0]);
      dataSetCols.push({
        'title': 'SEL',
        'data': 'SEL',
        'width': '15px'
      });

      insereCampoSel(dataSetCols[0], 'NFCE');

      for (var k in keys) {
        dataSetCols.push({
          'title': keys[k],
          'data': keys[k]
        });
      }

      $('#tabelaNFCE').DataTable({
        paging: true,
        filter: true,
        info: true,
        order: false,
        destroy: true,
        "language": {
          "sEmptyTable": "Nenhum registro encontrado",
          "sInfo": "_TOTAL_ registros",
          "sInfoEmpty": " 0 registros",
          "sInfoFiltered": "(Filtrados de _MAX_ registros)",
          "sInfoPostFix": "",
          "sInfoThousands": ".",
          "sLengthMenu": "_MENU_ resultados",
          "sLoadingRecords": "Carregando...",
          "sProcessing": "Processando...",
          "sZeroRecords": "Nenhum registro encontrado",
          "sSearch": "Pesquisar (geral): ",
          "oPaginate": {
            "sNext": "Próximo",
            "sPrevious": "Anterior",
            "sFirst": "Primeiro",
            "sLast": "Último"
          },
          "oAria": {
            "sSortAscending": ": Ordenar colunas de forma ascendente",
            "sSortDescending": ": Ordenar colunas de forma descendente"
          }
        },
        "data": dataSet,
        "columns": dataSetCols,
        "columnDefs": [
          {
            "render": function (data) {
              return parseFloat(data).toLocaleString('pt-br', {
                style: 'currency',
                currency: 'BRL'
              });
            },
            "targets": 9
          },
        ],
      });

      $('#modalFiltrosNFCE').modal('hide');

    } catch (error) {
      console.log(error);

    } finally {
      $.LoadingOverlay('hide');
      $('#modalFiltrosNFCE').modal('hide');
    }
  });

  $('#check_todosNFCE').on('change', function () {
    selecionarTodosInputs('NFCE');
  });

  $('#btnConsultarCFE').on('click', async function () {
    $.LoadingOverlay('show');
    if ($.fn.DataTable.isDataTable('#tabelaCFE')) {
      $('#tabelaCFE').DataTable().destroy();
      $('#tabelaCFE').empty();
    };
    try {
      var dataSet = await buscaCFE();
      dataSetCols = [{
        data: 'SEL',
        title: 'SEL'
      },
      {
        data: 'FATURA',
        title: 'Fatura'
      },
      {
        data: 'SERIE_SAT',
        title: 'Série Sat.'
      },
      {
        data: 'NRCUPOM',
        title: 'NrCupom'
      },
      {
        data: 'DT_EMISSAO',
        title: 'Data de Emissão'
      },
      {
        data: 'IMPRESSO',
        title: 'Impresso'
      },
      {
        data: 'CHAVE_CFE',
        title: 'Chave Cfe'
      },
      {
        data: 'CHAVE_CANC',
        title: 'Chave Cancelamento'
      },
      {
        data: 'CODCLI',
        title: 'CodCli'
      },
      {
        data: 'NOME',
        title: 'Nome'
      },
      {
        data: 'VALOR',
        title: 'Valor'
      }];


      // var keys = Object.keys(dataSet[0]);
      // dataSetCols.push({
      //   'title': 'SEL',
      //   'data': 'SEL',
      //   'width': '15px'
      // });


      // for (var k in keys) {
      //   dataSetCols.push({
      //     'title': keys[k],
      //     'data': keys[k]
      //   });
      // }
      insereCampoSel(dataSetCols[0], 'CFE');

      $('#tabelaCFE').DataTable({
        paging: true,
        filter: true,
        info: true,
        order: false,
        destroy: true,
        pagination: true,
        "language": {
          "sEmptyTable": "Nenhum registro encontrado",
          "sInfo": "_TOTAL_ registros",
          "sInfoEmpty": " 0 registros",
          "sInfoFiltered": "(Filtrados de _MAX_ registros)",
          "sInfoPostFix": "",
          "sInfoThousands": ".",
          "sLengthMenu": "_MENU_ resultados",
          "sLoadingRecords": "Carregando...",
          "sProcessing": "Processando...",
          "sZeroRecords": "Nenhum registro encontrado",
          "sSearch": "Pesquisar (geral): ",
          "oPaginate": {
            "sNext": "Próximo",
            "sPrevious": "Anterior",
            "sFirst": "Primeiro",
            "sLast": "Último"
          },
          "oAria": {
            "sSortAscending": ": Ordenar colunas de forma ascendente",
            "sSortDescending": ": Ordenar colunas de forma descendente"
          }
        },
        "data": dataSet,
        "columns": dataSetCols,
        "columnDefs": [
          {
            "render": function (data) {
              return parseFloat(data).toLocaleString("pt-BR", {
                maximumFractionDigits: 2,
                minimumFractionDigits: 2
              })
            },
            "targets": [10],
          }]
      });

    } catch (error) {
      console.log(error);
    } finally {
      $.LoadingOverlay('hide');
      $('#modalFiltrosCFE').modal('hide');
    }
  });

  $('#check_todosCFE').on('change', function () {
    selecionarTodosInputs('CFE');
  });

  function retornaFiltrosNFE() {
    const sEntradaDe = $('#dtEntradaDe').val() != '1200-01-01' ? $('#dtEntradaDe').val() : '1200-01-01';
    const sEntradaAte = $('#dtEntradaAte').val() != '2500-12-31' ? $('#dtEntradaAte').val() : '2500-12-31';
    const sEmissaoEntrDe = $('#dtEntrEmissaoDe').val() != '1200-01-01' ? $('#dtEntrEmissaoDe').val() : '1200-01-01';
    const sEmissaoEntrAte = $('#dtEntrEmissaoAte').val() != '2500-12-31' ? $('#dtEntrEmissaoAte').val() : '2500-12-31';
    const sEmissaoDe = $('#dtEmissaoDe').val() != '1200-01-01' ? $('#dtEmissaoDe').val() : '1200-01-01';
    const sEmissaoAte = $('#dtEmissaoAte').val() != '2500-12-31' ? $('#dtEmissaoAte').val() : '2500-12-31';
    const sSaidaDe = $('#dtSaidaDe').val() != '1200-01-01' ? $('#dtSaidaDe').val() : '1200-01-01';
    const sSaidaAte = $('#dtSaidaAte').val() != '2500-12-31' ? $('#dtSaidaAte').val() : '2500-12-31';
    const sFatura = pegaChave('#txtNotaNFE');
    const sNatureza = pegaChave('#txtNaturezaNFE');
    const sCliente = pegaChave('#txtClienteNFE');
    const sVendedor = pegaChave('#txtVendedorNFE');
    const sGrupoCliente = pegaChave('#txtGrupoClienteNFE');
    const sTransportadora = pegaChave('#txtTransportadoraNFE');
    const sTipoNota = $('#rgSaidas').is(':checked') ? '1' : '0';
    const sOrdem = sTipoNota;

    const retorno =
      `EMISSAO_DE=${sEmissaoDe}` +
      `&EMISSAO_ATE=${sEmissaoAte}` +
      `&SAIDA_DE=${sSaidaDe}` +
      `&SAIDA_ATE=${sSaidaAte}` +
      `&ENTRADA_DE=${sEntradaDe}` +
      `&ENTRADA_ATE=${sEntradaAte}` +
      `&EMISSAO_ENTR_DE=${sEmissaoEntrDe}` +
      `&EMISSAO_ENTR_ATE=${sEmissaoEntrAte}` +
      `&FATURA=${sFatura}` +
      `&NATUREZA=${sNatureza}` +
      `&CODCLI=${sCliente}` +
      `&GRUPO_CLIENTE=${sGrupoCliente}` +
      `&CODREP=${sVendedor}` +
      `&CODTRAN=${sTransportadora}` +
      `&TIPO_NOTA=${sTipoNota}` +
      `&DOC=NFE` +
      `&ORDEM_IMPRESSAO=${sOrdem}`;

    return retorno;
  }

  function retornaFiltrosNFCE() {
    const sEmissaoDe = $('#dtEmissaoNFCEDe').val() != '1200-01-01' ? $('#dtEmissaoNFCEDe').val() : '1200-01-01';
    const sEmissaoAte = $('#dtEmissaoNFCEAte').val() != '2500-12-31' ? $('#dtEmissaoNFCEAte').val() : '2500-12-31';
    const sFatura = pegaChave('#txtNotaNFCE') != '' ? pegaChave('#txtNotaNFCE') : '';
    const sNatureza = pegaChave('#txtNaturezaNFCE') != '' ? pegaChave('#txtNaturezaNFCE') : '';
    const sCliente = pegaChave('#txtClienteNFCE') != '' ? pegaChave('#txtClienteNFCE') : '';
    const sGrupoCliente = pegaChave('#txtGrupoClienteNFCE') != '' ? pegaChave('#txtGrupoClienteNFCE') : '';


    const sCanceladas = $('#cbCanceladas').is(':checked') ? '1' : '0'
    const sInutilizadas = $('#cbInutilizadas').is(':checked') ? '1' : '0';
    const sSomenteCanceladas = $('#cbSomenteCanceladas').is(':checked') ? '1' : '0';
    const sSomenteInutilizadas = $('#cbSomenteInutilizadas').is(':checked') ? '1' : '0';

    const retorno =
      `EMISSAO_DE=${sEmissaoDe}` +
      `&EMISSAO_ATE=${sEmissaoAte}` +
      `&FATURA=${sFatura}` +
      `&NATUREZA=${sNatureza}` +
      `&CODCLI=${sCliente}` +
      `&GRUPO_CLIENTE=${sGrupoCliente}` +
      `&CANCELADAS=${sCanceladas}` +
      `&INUTILIZADAS=${sInutilizadas}` +
      `&SOMENTE_CANCELADAS=${sSomenteCanceladas}` +
      `&SOMENTE_INUTILIZADAS=${sSomenteInutilizadas}` +
      `&DOC=NFCE` +
      `&ORDEM_IMPRESSAO=2`;

    return retorno;
  }

  function retornaFiltrosCFE() {
    const sEmissaoDe = $('#dtEmissaoCFEDe').val() != '1200-01-01' ? $('#dtEmissaoCFEDe').val() : '1200-01-01';
    const sEmissaoAte = $('#dtEmissaoCFEAte').val() != '2500-12-31' ? $('#dtEmissaoCFEAte').val() : '2500-12-31';

    const retorno =
      `EMISSAO_DE=${sEmissaoDe}` +
      `&EMISSAO_ATE=${sEmissaoAte}` +
      `&DOC=CFE` +
      `&ORDEM_IMPRESSAO=3`;

    return retorno;
  }

  $('#btnImprimirNFE').on('click', async function () {
    try {
      $.LoadingOverlay('show');
      try {
        let url = `/sisplan/impressao/v1/imprimirexportafiscal?`;
        const params = retornaFiltrosNFE();
        let arquivo = await GeraRelatorio(`${url + params}&`, 'POST', 100000, false);
        if (arquivo != undefined) {
          window.open(`${BASE_URI}/relatorios_api/pdf/${arquivo}`, '_blank');
          await limparRelatorios();
        }

      } catch (error) {
        console.error(error);
      }
    } finally {
      $.LoadingOverlay('hide');
    }
  });

  $('#btnImprimirNFCE').on('click', async function () {
    try {
      $.LoadingOverlay('show');
      try {
        let url = `/sisplan/impressao/v1/imprimirexportafiscal?`;
        const params = retornaFiltrosNFCE();
        let arquivo = await GeraRelatorio(`${url + params}&`, 'POST', 100000, false);
        if (arquivo != undefined) {
          window.open(`${BASE_URI}/relatorios_api/pdf/${arquivo}`, '_blank');
          await limparRelatorios();
        }

      } catch (error) {
        console.error(error);
      }
    } finally {
      $.LoadingOverlay('hide');
    }
  });

  $('#btnImprimirCFE').on('click', async function () {
    try {
      $.LoadingOverlay('show');
      try {
        let url = `/sisplan/impressao/v1/imprimirexportafiscal?`;
        const params = retornaFiltrosCFE();
        let arquivo = await GeraRelatorio(`${url + params}&`, 'POST', 100000, false);
        if (arquivo != undefined) {
          window.open(`${BASE_URI}/relatorios_api/pdf/${arquivo}`, '_blank');
          await limparRelatorios();
        }

      } catch (error) {
        console.error(error);
      }
    } finally {
      $.LoadingOverlay('hide');
    }
  });

  $('#rgSaidas').click();
  $('#rgEntradas').click();
  $('#rgSaidas').click();

});