// let colunasGenerico = JSON.parse(localStorage.getItem('colunasInvisiveisRelatorios'));

// if (colunasGenerico == null || colunasGenerico.abaGenerico == undefined) {
//   localStorage.setItem('colunasInvisiveisRelatorios', JSON.stringify({ ...colunasGenerico, AbaGenerico: [] }));
//   colunasGenerico = JSON.parse(localStorage.getItem('colunasInvisiveisRelatorios'));
// }

// $("#btnConfirmarColunas").on("click", async function () {
//   try {
//     $.LoadingOverlay("show");

//     const novasColunasGenerico = retornaNovasColunasInvisiveis();

//     localStorage.setItem(
//       "colunasInvisiveisRelatorios",
//       JSON.stringify({ ...colunasGenerico, AbaGenerico: novasColunasGenerico })
//     );

//     $("#tabelaDados").DataTable().columns().visible(true);

//     $("#tabelaDados")
//       .DataTable()
//       .columns()
//       .every(function () {
//         if (novasColunasGenerico.indexOf(this.dataSrc()) != -1) {
//           this.visible(false);
//         }
//       });
//   } finally {
//     $.LoadingOverlay("hide");
//     $("#modal-ColunasVisiveis").modal("hide");
//   }
// });

// $("#modal-ColunasVisiveis").on("show.bs.modal", function () {
//   const cols = [];

//   let colunasInvisiveisGenerico = JSON.parse(
//     localStorage.getItem("colunasInvisiveisRelatorios")
//   );

//   $("#tabelaDados")
//     .DataTable()
//     .columns()
//     .every(function () {
//       cols.push({
//         title: $(this.header()).text(),
//         data: this.dataSrc(),
//       });
//     });
//   adicionaColunas(cols, colunasInvisiveisGenerico.abaGenerico ?? []);
// });

$('#txtClienteGenerico').autocompleta(1, `JSON={"tabela":"CLASSE_GER", "camposSelect":[ "CODIGO CHAVE", "DESCRICAO DESCRICAO"], "where": null}`);
$('#btnClienteGenerico').pesquisa('#txtClienteGenerico', 'CODIGO', 'DESCRICAO', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"CLASSE_GER", "camposSelect":[ "CODIGO", "DESCRICAO"]}`, 'Pesquisa Classe Gerencial', 'CLASSE_GER');
$('#btnLimpaClienteGenerico').on('click', function () {
  $('#txtClienteGenerico').val('');
});

$('#txtBancoGenerico').autocompleta(1, `JSON={"tabela":"CLASSE_GER", "camposSelect":[ "CODIGO CHAVE", "DESCRICAO DESCRICAO"], "where": null}`);
$('#btnBancoGenerico').pesquisa('#txtBancoGenerico', 'CODIGO', 'DESCRICAO', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"CLASSE_GER", "camposSelect":[ "CODIGO", "DESCRICAO"]}`, 'Pesquisa Classe Gerencial', 'CLASSE_GER');
$('#btnLimpaBancoGenerico').on('click', function () {
  $('#txtBancoGenerico').val('');
});

$('#txtContaGenerico').autocompleta(1, `JSON={"tabela":"CLASSE_GER", "camposSelect":[ "CODIGO CHAVE", "DESCRICAO DESCRICAO"], "where": null}`);
$('#btnContaGenerico').pesquisa('#txtContaGenerico', 'CODIGO', 'DESCRICAO', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"CLASSE_GER", "camposSelect":[ "CODIGO", "DESCRICAO"]}`, 'Pesquisa Classe Gerencial', 'CLASSE_GER');
$('#btnLimpaContaGenerico').on('click', function () {
  $('#txtContaGenerico').val('');
});

$('#txtClasseBaixaGenerico').autocompleta(1, `JSON={"tabela":"HISTCP", "camposSelect":[ "HISTORICO CHAVE", "DESCRICAO DESCRICAO"], "where": null}`);
$('#btnClasseBaixaGenerico').pesquisa_serverside(['#txtClasseBaixaGenerico'], ['HISTORICO'], ['DESCRICAO'], '{"tabela":"HISTCP", "camposSelect":[ "HISTORICO", "DESCRICAO"], "where": null}', 'Pesquisa de Histórico');
$('#btnLimpaClasseBaixaGenerico').on('click', function () {
  $('#txtClasseBaixaGenerico').val('');
});

$('#txtClasseDespesaGenerico').autocompleta(1, `JSON={"tabela":"HISTCP", "camposSelect":[ "HISTORICO CHAVE", "DESCRICAO DESCRICAO"], "where": null}`);
$('#btnClasseDespesaGenerico').pesquisa_serverside(['#txtClasseDespesaGenerico'], ['HISTORICO'], ['DESCRICAO'], '{"tabela":"HISTCP", "camposSelect":[ "HISTORICO", "DESCRICAO"], "where": null}', 'Pesquisa de Histórico');
$('#btnLimpaClasseDespesaGenerico').on('click', function () {
  $('#txtClasseDespesaGenerico').val('');
});

$('#txtHistoricoGenerico').autocompleta(1, `JSON={"tabela":"HISTCP", "camposSelect":[ "HISTORICO CHAVE", "DESCRICAO DESCRICAO"], "where": null}`);
$('#btnHistoricoGenerico').pesquisa_serverside(['#txtHistóricoGenerico'], ['HISTORICO'], ['DESCRICAO'], '{"tabela":"HISTCP", "camposSelect":[ "HISTORICO", "DESCRICAO"], "where": null}', 'Pesquisa de Histórico');
$('#btnLimpaHistóricoGenerico').on('click', function () {
  $('#txtHistóricoGenerico').val('');
});

async function validaConfirmacao() {
  if (!$('#txtClasseBaixaGenerico').val() || !await Existe('CLASSE_GER', ['CODIGO'], [$('#txtClasseBaixaGenerico').val()])) {
    throw msgAlerta('Classe/Baixa não informado ou inválido!');
  }
  if (!$('#txtHistoricoGenerico').val() || !await Existe('HISTORICO', ['HISTCP'], [$('#txtHistoricoGenerico').val()])) {
  }
  throw msgAlerta('Histórico não informado ou inválido!');
}

$('#btnVerBaixasGenerico').on('click', async function () {
  if (!$('#txtArquivo').val()) {
    throw msgAlerta('Nenhum arquivo inserido no campo caminho, impossível visualizar as baixas!');
  }
  await verBaixasGenerico();
});

async function verBaixasGenerico() {
  $.LoadingOverlay('show');
  try {
    const Generico = $('#conteudoFormatado').val();
    const body = {
      Generico: JSON.parse(Generico)
    }

    let response = await requisicao('POST', '/sisplan/escretorno/V1/buscabaixasgenerico?', '', JSON.stringify(body), 50000);

    if (!response) {
      return;
    }

    let jsonStr = await response.json();

    dataSetColsGenerico[0].render = function (data, type, row, meta) {
      let checked = true;
      let bloqueia = false;

      if (row.sel == 'S' && row.deixaSel == 'N') {
        checked = false;
        bloqueia = true;
      }
      if (row.sel = 'S' && row.naoSeleciona == 'N') {
        checked = false;
        bloqueia = true;
      }
      let disabledAttribute = bloqueia ? 'disabled' : '';
      return `<div class="icheck-primary d-inline">
                  <input type="checkbox" ${disabledAttribute} ${checked ? 'checked' : ''} id="check_col_${meta.row}_row_${meta.col}" class="campoSelecionado">
                  <label for="check_col_${meta.row}_row_${meta.col}"></label>
              </div>`
    }

    $('#tabelaGenerico').DataTable({
      paging: true,
      filter: false,
      info: false,
      length: false,
      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',
        oPaginate: {
          sNext: 'Próximo',
          sPrevious: 'Anterior',
          sFirst: 'Primeiro',
          sLast: 'Último',
        },
        oAria: {
          sSortAscending: ': Ordenar colunas de forma ascendente',
          sSortDescending: ': Ordenar colunas de forma descendente',
        },
      },
      data: jsonStr,
      columns: dataSetColsGenerico,
      columnDefs: [{
        targets: [6, 7, 8],
        render: function (data, type, row) {
          if (type === 'display' || type === 'filter') {
            var date = new Date(data);
            var dia = date.getDate();
            var mes = date.getMonth() + 1;
            var ano = date.getFullYear();
            if (dia < 10) {
              dia = '0' + dia;
            }
            if (mes < 10) {
              mes = '0' + mes;
            }
            return dia + '/' + mes + '/' + ano;
          } else {
            return data;
          }
        },
      }],
      rowCallback: async function (row, data) {
        if (data.numero == '') {
          // $(row).addClass('bg-gradient-danger')
          $(row).css('background-color', '#B4524D');
          $(row).css('color', '#ecfdff');
          // $(row).css('color', '#B4524D');
        }
        else if (data.naoSeleciona == 'N') {
          $(row).css('background-color', '#3A5E44');
          $(row).css('color', '#ecfdff');
          // $(row).css('color', '#3A5E44');
        }
        else if (data.valorDuplicata != data.valorBrutoArq && data.valorBrutoArq > 0) {
          // $(row).addClass('bg-gradient-primary')
          $(row).css('background-color', '#04336C');
          $(row).css('color', '#ecfdff');
          // $(row).css('color', '#04336C');
        }
      }
    });

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

    // const colunasInvisiveisGenerico = JSON.parse(localStorage.getItem('colunasInvisiveisRelatorios'));

    // $('#tabelaGenerico_length').prepend('<button class="buttonColVis" id="buttonColVis"><i class="fas fa-cogs"></i></button>');
    // $('#tabelaGenerico_length').prepend('<button class="buttonExcel" id="buttonExcel"><i class="fas fa-file-excel"></i></button>');

    // $('#buttonColVis').prop('title', 'Configurar colunas visíveis');
    // $('#buttonExcel').prop('title', 'Exportar');

    // $('#buttonColVis').on('click', async function () {
    //   $.LoadingOverlay('show');
    //   $('#modal-ColunasVisiveis').modal('show');
    //   $.LoadingOverlay('hide');
    // });

    // $('#buttonExcel').on('click', async function () {
    //   const url = '/Sisplan/Funcoes/v1/pesquisa?';
    //   const pesquisa = await montaPesquisa();
    //   await exportaCSV(url, `JSON=${encodeURIComponent(JSON.stringify(pesquisa.pesquisa))}`, true, null, 'Extrato de Cartão - Generico', '#tabelaGenerico');
    // })

    // $('#tabelaGenerico').DataTable().columns().every(
    //   function () {
    //     if ((colunasInvisiveisGenerico.AbaGenerico).indexOf(this.dataSrc()) != -1) {
    //       this.visible(false);
    //     }
    //   })

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

$('#btnConfirmarGenerico').on('click', async function () {
  async function validaConfirmacao() {
    if (isEmpty($('#txtBancoGenerico'))) {
      throw msgAlerta('Banco não informado, verifique!');
    }
    if (isEmpty($('#txtContaGenerico'))) {
      throw msgAlerta('Conta não informada, verifique!');
    }
    if (isEmpty($('#txtClasseBaixaGenerico'))) {
      throw msgAlerta('Classe baixa não informada, verifique!');
    }
    if (isEmpty($('#txtClasseDespesaGenerico'))) {
      throw msgAlerta('Conta não informada, verifique!');
    }
    if (isEmpty($('#txtHistoricoGenerico'))) {
      throw msgAlerta('Histórico não informado, verifique!');
    }
    if (isEmpty($('#txtContaGenerico'))) {
      throw msgAlerta('Conta não informada, verifique!');
    }
    if (isEmpty($('#tabelaGenerico'))) {
      throw msgAlerta('Necessário selecionar algum registro para gravar, verifique!');
    }
  }

  await validaConfirmacao();
  const Generico = await buscaDadosTabelaGenerico();
  const params = await coletaDadosInputsGenerico();

  // if (Generico.length == 0) {
  //   msgAlerta('Não existe dados a serem gravados. Se continuar, vai gerar um registro como "SEM MOVIMENTO". Deseja continuar?');
  // }

  // if (params.dataPagamento != '1200-01-01' || !params.dataPagamento) {
  //   msgAlerta(
  //     'Data de pagamento informada. Todos os lançamentos serão lançados nesta data. Deseja continuar?',
  //     async () => { },
  //     async () => {
  //       resolve();
  //     },
  //   )
  // }

  const body = {
    Generico: Generico,
  }

  const response = await requisicao('POST', `/sisplan/escretorno/V1/confirmagenerico?`, `PARAMS=${params}`, JSON.stringify(body), 90000);

  if (!response) {
    return;
  }

});

async function coletaDadosInputsGenerico() {
  let sugestao = 0;

  if ($('#cbValorGenerico').is(':checked')) {
    sugestao = 0;
  }
  if ($('#rgLiquidacaoNormalSafra').is(':checked')) {
    sugestao = 1;
  }
  if ($('#rgLiquidacaoAntecipadaSafra').is(':checked')) {
    sugestao = 2;
  }
  if ($('#rgLiquidadaAmortizacaoSafra').is(':checked')) {
    sugestao = 3;
  }

  objeto = {
    valorDe: $('#txtValorDeGenerico').val(),
    valorAte: $('#txtValorAteGenerico').val(),
    // nomeArquivo: $('#txtNomeArquivoSafra').val(),
    cliente: pegaChave('#txtClienteGenerico'),
    banco: pegaChave('#txtBancoGenerico'),
    conta: pegaChave('#txtContaGenerico'),
    classeBaixa: pegaChave('#txtClasseBaixaGenerico'),
    classeDespesa: pegaChave('#txtClasseDespesaGenerico'),
    historico: pegaChave('#txtHistoricoSafra'),
    dataPagamento: $('#dtPagamentoGenerico').val(),
    sugestao: sugestao,
  }
  return objeto;
}

async function buscaDadosTabelaGenerico() {
  const tabelaGenerico = $('#tabelaGenerico').DataTable().rows().data().toArray();
  const objeto = {
    Generico: tabelaGenerico.map((dados) => ({
      numero: dados.numero,
      codCli: dados.codCli,
      nome: dados.nome,
      fatura: dados.fatura,
      nsu: dados.nsu,
      dataEmissao: dados.dataEmissao,
      dataVencimento: dados.dataVencimento,
      dataPagamento: dados.dataPagamento,
      parcela: dados.parcela,
      valorBrutoArq: dados.valorBrutoArq,
      valorDuplicata: dados.valorDuplicata,
      valorPago: dados.valorPago,
      valorTarifa: dados.valorTarifa,
      saldo: dados.saldo,
      empId: dados.empId
    })),
  };
  return objeto;
}
