$(document).ready(function(){
  /**
   * fazer login
   */
  $("#form_login").submit(function () {
    let formulario = document.getElementById("form_login");
    let formData = new FormData(formulario);
    $.ajax({
      url: "config/login.php",
      type: "POST",
      data: formData,
      dataType: "json",
      processData: false,
      contentType: false,
      beforeSend: function () {
        $("#btn_login").attr("disabled", true);
      },
      error: function (jqXHR, textStatus, errorThrown) {
        console.log("jqXHR: \n" + jqXHR);
        console.log("textStatus: \n" + textStatus);
        console.log("errorThrown: \n" + errorThrown);
        $("#btn_login").attr("disabled", false);
      },
      success: function (retorno) {
        // console.log(retorno);
        if (retorno["status"]) {
          $(".caixa_logo").notify(retorno["msg"], "success");
          setTimeout(() => {
            window.location = retorno.url;
          }, 1000);
        } else {
          $(".caixa_logo").notify(retorno["msg"], "danger");
        }
        $("#btn_login").attr("disabled", false);
      },
    });
    return false;
  });

  $(function () {
    
    $('[data-toggle="tooltip"]').tooltip();
  });

  $("#pesquisar").on("click",function() {
    $('#prod_sel').selectpicker('toggle');
    $('#prod_sel').selectpicker('refresh');
    $('#prod_sel').selectpicker('toggle');
    $('#prod_sel').selectpicker('refresh');

    let pesquisa = localStorage.getItem('pesquisa');
    if (pesquisa.length > 0) {
      let valor = pesquisa;
      asd(valor);
    }
  });

  $("#modalAmd_form1").submit(function() {
    let formulario = document.getElementById("modalAmd_form1");
    let formData = new FormData(formulario);
    $.ajax({
      url: "config/funcoes_adm.php",
      type: "POST",
      data: formData,
      dataType: "json",
      processData: false,
      contentType: false,
      beforeSend: function () {
        $("#modalAmd_btn").attr("disabled", true);
      },
      error: function (jqXHR, textStatus, errorThrown) {
        console.log("jqXHR: \n" + jqXHR);
        console.log("textStatus: \n" + textStatus);
        console.log("errorThrown: \n" + errorThrown);
        $("#modalAmd_btn").attr("disabled", false);
      },
      success: function (retorno) {
        console.log("Funções ADM - ", retorno)
        if (retorno) {
          $(".caixa_logo").notify("Sucesso!", "success");
          setTimeout(() => {
            window.location.reload();
          }, 1000);
        } else {
          $(".caixa_logo").notify("Falha!", "danger");
        }
        $("#modalAmd_btn").attr("disabled", false);
      },
    });
    
    return false;
  });

  $("#form_dividir_solicitacao").submit(function () {
    let formulario = document.getElementById("form_dividir_solicitacao");
    let formData = new FormData(formulario);
    let notify_divid = document.querySelector("#notify_divid");
    $.ajax({
      url: "config/processos.php",
      type: "POST",
      data: formData,
      dataType: "json",
      processData: false,
      contentType: false,
      beforeSend: function () {
        $("#btnsalvadivid").attr("disabled", true);
      },
      error: function (jqXHR, textStatus, errorThrown) {
        console.log("jqXHR: \n" + jqXHR);
        console.log("textStatus: \n" + textStatus);
        console.log("errorThrown: \n" + errorThrown);
        $("#btnsalvadivid").attr("disabled", false);
      },
      success: function (retorno) {
        notify_divid.style.display = "block";
        if (retorno) {
          notify_divid.classList.add("alert-success");
          notify_divid.textContent = "Sucesso!";
          setTimeout(() => {
            window.location.reload();
          }, 1000);
        } else {
          notify_divid.classList.add("alert-danger");
          notify_divid.textContent = "Falha!";
        }
        $("#btnsalvadivid").attr("disabled", false);

        setTimeout(() => {
          notify_divid.style.display = "none";
        }, 5000);
      },
    });
    return false;
  });

  $("#form_dividir_solicitacao_02").submit(function () {
    let formulario = document.getElementById("form_dividir_solicitacao_02");
    let formData = new FormData(formulario);
    let notify_divid = document.querySelector("#notify_divid_02");
    $.ajax({
      url: "config/processos.php",
      type: "POST",
      data: formData,
      dataType: "json",
      processData: false,
      contentType: false,
      beforeSend: function () {
        $("#btnsalvadivid02").attr("disabled", true);
      },
      error: function (jqXHR, textStatus, errorThrown) {
        console.log("jqXHR: \n" + jqXHR);
        console.log("textStatus: \n" + textStatus);
        console.log("errorThrown: \n" + errorThrown);
        $("#btnsalvadivid02").attr("disabled", false);
      },
      success: function (retorno) {
        notify_divid.style.display = "block";
        if (retorno) {
          notify_divid.classList.add("alert-success");
          notify_divid.textContent = "Sucesso!";
          setTimeout(() => {
            window.location.reload();
          }, 1000);
        } else {
          notify_divid.classList.add("alert-danger");
          notify_divid.textContent = "Falha!";
        }
        $("#btnsalvadivid02").attr("disabled", false);

        setTimeout(() => {
          notify_divid.style.display = "none";
        }, 5000);
      },
    });
    return false;
  });

  /**
   * Criar solicitação a partir de um orçamento
   */
  $("#create_orcamento").submit(function () {
    let formulario = document.getElementById("create_orcamento");
    let formData = new FormData(formulario);
    let result = '';
    $.ajax({
      url: "config/create_orcamento.php",
      type: "POST",
      data: formData,
      dataType: "json",
      processData: false,
      contentType: false,
      beforeSend: function () {
        $("#addOrcamentoSave").attr("disabled", true);
      },
      error: function (jqXHR, textStatus, errorThrown) {
        console.log(`jqXHR: ${jqXHR} \n textStatus: ${textStatus} \n errorThrown: ${errorThrown}`);
        $("#addOrcamentoSave").attr("disabled", false);
      },
      success: function (retorno) {
        $('#addOrcamento').modal('toggle');
        $('#addQtd').modal('toggle');
          if (retorno != null && retorno.length > 0) {
          result += "<form id='form_solicitacao' onSubmit='funcaoSubmit();return false;' method='post'>";
          let values = $.map(retorno ,function(option,index) {
              result += "<div class='row' id='linha_"+index+"'>";
              result += "<div class='col-9'>";
              result += "<label>Produto</label>";
              result += "<input value='"+ option.produto_descricao +"' class='form-control' readonly/>";
              result += "<input value='"+ option.produto_solicitado +"' name='produto_solicitado[]' type='hidden'/>";
              result += "</div>";
              result += "<div class='col-2'>";
              result += "<label>Quantidade</label>";
              result += "<input value='"+ option.qtd_solicitada +"' name='qtd_solicitada[]' class='form-control' required type='number' min='1'/>";
              result += "</div>";
              result += "<div class='col-1'>";
              result += "<button class='btn btn-sm btn-danger' style='margin-top:34px;' data-delremove='linha_"+index+"' onClick='del_remove(this)' type='button'><img src='./utils/img/icons/remove.svg' width='20'></button>";
              result += "</div>";
              result += "</div>";
          });
          result += "<button type='submit' id='btn_solicitacao' class='btn btn-success btn-sm' style='margin-top:20px;'>Salvar Solicitação</button>";
          result += "</form>";
          $("#received_prod").html(result);
        } else {
          $("#received_prod").html("<div class='alert alert-danger'>Nenhum produto foi selecionado.</div>");
        }
        $("#addOrcamentoSave").attr("disabled", false);
      },
    });
    return false;
  });
});

function ChamadaPadrao(form_id, btn_id) {
  var formulario = document.getElementById(form_id);
  var formData = new FormData(formulario);
  $.ajax({
    url: "config/processos.php",
    type: "POST",
    data: formData,
    dataType: "json",
    processData: false,
    contentType: false,
    beforeSend: function () {
      $("#" + btn_id).attr("disabled", true);
    },
    error: function (jqXHR, textStatus, errorThrown) {
      console.log("jqXHR: \n" + jqXHR);
      console.log("textStatus: \n" + textStatus);
      console.log("errorThrown: \n" + errorThrown);
      $("#" + btn_id).attr("disabled", false);
    },
    success: function (retorno) {
      console.log(retorno);
      $("#" + btn_id).attr("disabled", false);
      if (retorno.status) {
        $(".caixa_logo").notify(retorno.msg, "success");
        setTimeout(() => {
          window.location.reload();
        }, 1000);
      } else {
        $(".caixa_logo").notify(retorno.msg, "danger");
      }
    },
  });
  return false;
}

function preparaChamadaPadrao(array) {
  array.forEach(sub_array=>{
    ChamadaPadrao(sub_array[0], sub_array[1]);
  });
}

function popularModal(el,id_solicitacao) {
  $(".id_solicitacao").val(id_solicitacao);
  let active = el.getAttribute("data-active");
  let target = el.getAttribute("data-target");
  let senha = el.getAttribute("data-senha");
  let perfil = el.getAttribute("data-perfil");
  $(target).on('shown.bs.modal', function (e) {
    $(target+" "+senha).focus()
  });
  if (active == 1) {
    pegarItens(id_solicitacao);
  }
  if (perfil == 1) {
    pegarItens2(id_solicitacao);
  }
}

function pegarItens(id_solicitacao) {
  let cod = 16;
  $.ajax({
    url: "config/processos.php",
    type: "POST",
    data: { cod,id_solicitacao },
    dataType: "json",
    error: function (jqXHR, textStatus, errorThrown) {
      console.log("jqXHR: \n" + jqXHR);
      console.log("textStatus: \n" + textStatus);
      console.log("errorThrown: \n" + errorThrown);
    },
    success: function (retorno) {
      // console.log(retorno);
    },
  });
}

function pegarItens2(id_solicitacao) {
  let cod = 16, retorno_msg = '';
  $.ajax({
    url: "config/processos.php",
    type: "POST",
    data: { cod,id_solicitacao },
    dataType: "json",
    error: function (jqXHR, textStatus, errorThrown) {
      console.log("jqXHR: \n" + jqXHR);
      console.log("textStatus: \n" + textStatus);
      console.log("errorThrown: \n" + errorThrown);
    },
    success: function (retorno) {
      if (retorno.length > 0) {
        retorno.map(function(produto,index){
          retorno_msg += '<div class="row" style="margin-bottom: 5px;">';
          retorno_msg += '  <div class="col-10 p-1">';
          retorno_msg += '    <input class="form-control" readonly="" value="'+ produto.codigo + " - " + produto.descricao +'" style="font-size: 14px">';
          retorno_msg += '    <input name="id_produto[]" type="hidden" value="'+ produto.id +'">';
          retorno_msg += '  </div>';
          retorno_msg += '  <div class="col-2 p-1">';
          retorno_msg += '    <input type="number" name="qtd[]" class="form-control" value="'+ produto.quantidade +'" max="'+ produto.quantidade +'" min="0" style="font-size: 14px">';
          retorno_msg += '  </div>';
          retorno_msg += '</div>';
        });

        $("#recebe_produtos_obs").html(retorno_msg);
      }
    },
  });
}


function mudarSituacao(status, id) {
  let cod = 10;
  if (confirm("Deseja continuar com esta ação?")) {
    $.ajax({
      url: "config/processos.php",
      type: "POST",
      data: { status, cod, id },
      dataType: "json",
      error: function (jqXHR, textStatus, errorThrown) {
        console.log("jqXHR: \n" + jqXHR);
        console.log("textStatus: \n" + textStatus);
        console.log("errorThrown: \n" + errorThrown);
      },
      success: function (retorno) {
        if (retorno.status) {
          $(".caixa_logo").notify(retorno.msg, "success");
          setTimeout(() => {
            window.location.reload();
          }, 1000);
        } else {
          $(".caixa_logo").notify(retorno.msg, "danger");
        }
      },
    });
  }
}

function deletarUser(id) {
  let cod = 11;
  if (confirm("Deseja continuar com esta ação?")) {
    $.ajax({
      url: "config/processos.php",
      type: "POST",
      data: { cod, id },
      dataType: "json",
      error: function (jqXHR, textStatus, errorThrown) {
        console.log("jqXHR: \n" + jqXHR);
        console.log("textStatus: \n" + textStatus);
        console.log("errorThrown: \n" + errorThrown);
      },
      success: function (retorno) {
        if (retorno.status) {
          $(".caixa_logo").notify(retorno.msg, "success");
          setTimeout(() => {
            window.location.reload();
          }, 1000);
        } else {
          $(".caixa_logo").notify(retorno.msg, "danger");
        }
      },
    });
  }
}

function popularEditarUser(id, nome, email, tipo, block,vendedor,loja,user_geral) {
  $("#id_esc_up_user").val(id);
  $("#nome_update").val(nome);
  $("#email_update").val(email);
  $("#tipo_update").val(tipo);
  $("#senha_block_edt").val(block);
  $("#email_vendedor").val(vendedor);
  $("#user_geral_edit").val(user_geral);
  $("#loja_edit").val(loja);

  const loja_element = document.querySelector('#loja_edit');
  const loja_geral = document.querySelector('#loja-geral');
  if(loja_geral){
    loja_geral.remove();
  }
  if(user_geral == 'sim'){
    
    loja_element.style.display ='none';
    const output = document.createElement('input');
    output.setAttribute('type', 'text');
    output.setAttribute('readonly', true);
    output.setAttribute('value', "Geral");
    output.classList.add('form-control');
    output.id = 'loja-geral';
    loja_element.parentElement.appendChild(output);
  } else {

    loja_element.style.display ='block';
  }
  
}

function attProd() {
  let result = "";
  let options = $('#prod_sel option:selected');

  if (options != null && options.length > 0) {
    result += "<form id='form_solicitacao' onSubmit='funcaoSubmit();return false;' method='post'>";
    let values = $.map(options ,function(option,index) {
      result += "<div class='row' id='linha_"+index+"'>";
      result += "<div class='col-9'>";
      result += "<label>Produto</label>";
      result += "<input value='"+ option.text +"' class='form-control' readonly/>";
      result += "<input value='"+ option.value +"' name='produto_solicitado[]' type='hidden'/>";
      result += "</div>";
      result += "<div class='col-2'>";
      result += "<label>Quantidade</label>";
      result += "<input value='1' name='qtd_solicitada[]' class='form-control' required type='number' min='1'/>";
      result += "</div>";
      result += "<div class='col-1'>";
      result += "<button class='btn btn-sm btn-danger' style='margin-top:34px;' data-delremove='linha_"+index+"' onClick='del_remove(this)' type='button'><img src='./utils/img/icons/remove.svg' width='20'></button>";
      result += "</div>";
      result += "</div>";
    });
    result += "<button type='submit' id='btn_solicitacao' class='btn btn-success btn-sm' style='margin-top:20px;'>Salvar Solicitação</button>";
    result += "</form>";
    $("#received_prod").html(result);
  } else {
    $("#received_prod").html("<div class='alert alert-danger'>Nenhum produto foi selecionado.</div>");
  }
}

function del_remove(el) {
  let delremove = el.getAttribute("data-delremove");
  let elemento_row = document.getElementById(delremove);
  elemento_row.parentNode.removeChild( elemento_row );
}

function funcaoSubmit() {
  let formulario = document.getElementById("form_solicitacao");
  let formData = new FormData(formulario);
  $.ajax({
    url: "config/solicitacao.php",
    type: "POST",
    data: formData,
    dataType: "json",
    processData: false,
    contentType: false,
    beforeSend: function () {
      $("#btn_solicitacao").attr("disabled", true);
    },
    error: function (jqXHR, textStatus, errorThrown) {
      console.log("jqXHR: \n" + jqXHR);
      console.log("textStatus: \n" + textStatus);
      console.log("errorThrown: \n" + errorThrown);
      $("#btn_solicitacao").attr("disabled", false);
    },
    success: function (retorno) {
      // console.log(retorno);
      if (retorno.status) {
        $(".caixa_logo").notify(retorno.msg, "success");
        setTimeout(() => {
          window.location.reload();
        }, 1000);
      } else {
        $(".caixa_logo").notify(retorno.msg, "danger");
      }
      $("#btn_solicitacao").attr("disabled", false);
    },
  });
}

function asd(valor) {
    $.ajax({
    url: "config/getData.php",
    type: "POST",
    data: {valor},
    dataType: "json",
    beforeSend: function () {
      $("#pesquisar").attr("disabled", true);
      $("#pesquisar").html("<img src='utils/img/gifs.gif' width='20' heitgh='20'/>");
    },
    error: function (jqXHR, textStatus, errorThrown) {
      console.log("jqXHR: \n" + jqXHR);
      console.log("textStatus: \n" + textStatus);
      console.log("errorThrown: \n" + errorThrown);
      $("#pesquisar").attr("disabled", false);
      $("#pesquisar").html("Pesquisar");
    },
    success: function (retorno) {
      $("#pesquisar").attr("disabled", false);
      $("#pesquisar").html("Pesquisar");
      if (retorno != false) {
        //pegar valores que já estavam selecionados
        let options_save = $('#prod_sel option:selected');

        //adicionar novos valores no select
        $("#prod_sel").empty();
        let selectBox = document.getElementById('prod_sel');
        let options = [];
        for(let cc=0;cc<retorno.cod.length;cc++){
          let option = 
          {
            "text"  : retorno.cod[cc] + ' - ' + retorno.descricao[cc],
            "value" : retorno.id[cc],
            "estoque" : retorno.estoque[cc],
          };
          options.push(option);
        }

        for (let gg=0; gg<options.length; gg++) {
          let option = options[gg];
          let new_opt = new Option(option.text, option.value, option.selected);

          //aqui estou verificando se a peça não tem estoque, caso não tenha adiciono os styles
          if (option.estoque <= 0) {
            new_opt.style.background = 'red';
            new_opt.style.color = '#fff';
            // new_opt.setAttribute("disabled",true);
          }


          selectBox.options.add(new_opt);
        }
        $('#prod_sel').selectpicker('refresh');

        //daqui para baixo vou manter os valores que já estavam selecionados
        let options2 = [];
        if (options_save != null && options_save.length > 0) {
          let values = $.map(options_save ,function(option_save) {
            let option_ = 
            {
              "text"  : option_save.text,
              "value" : option_save.value,
              "selected" : true
            };
            options2.push(option_);
          });
        }
        
        for (let gt=0; gt<options2.length; gt++) {
          let result = "";
          let option = options2[gt];
          result += "<option value='"+ option.value +"' selected>"+ option.text +"</option>";
          $('#prod_sel').append(result);
          $('#prod_sel').selectpicker('refresh');
        }
      }
    },
  });
}


//o objetivo desta função é verificar quais itens existem no array 1 e não existem no array 2
//mas se descomentar a parte cometada, poderá tanto verificar o que tem no 2 que não tem no 1 
//ou fazer a verificação nos dois e retornar a fifernca encontrada
function validarDiferenca(r1,r2) {
    let apenasNoR1 = r1.filter(function (element, index, array) {
        if(r2.indexOf(element) == -1)
            return element;
    });
    // let apenasNoR2 = r2.filter(function (element, index, array) {
        // if(r1.indexOf(element) == -1)
            // return element;
    // });
    // let todasAsDiferencas = apenasNoR1.concat(apenasNoR2);
    let todasAsDiferencas = apenasNoR1;
    return todasAsDiferencas;
}

function validarDiferenca2(r1,r2){
  let apenasNoR2 = r2.filter(function (element, index, array) {
    if(r1.indexOf(element) == -1)
      return element;
  });
  let todasAsDiferencas = apenasNoR2;
  return todasAsDiferencas;
}

function alertaMaster(andamento) {
  if (andamento == '1') {
    alertaNow('2');
    alertaNow('3');
    alertaNow('4');
  }
  if (andamento == '2') {}
  if (andamento == '3') {}
  if (andamento == '4') {}
  if (andamento == '5') {}
  if (andamento == '6') {}
  if (andamento == '8') {}
}

function alertaNow(tipo_comparacao){
  let x_play = document.getElementById("notificacao");
  let tipo_on = sessionStorage.getItem('tipo_user_on');
  if (tipo_on == tipo_comparacao) {
    x_play.play();
  }
}

function PopularCards() {
  $.ajax({
    url: "config/getCards.php",
    type: "POST",
    data: {},
    dataType: "json",
    beforeSend: function () {},
    error: function (jqXHR, textStatus, errorThrown) {
      console.log("jqXHR: \n" + jqXHR);
      console.log("textStatus: \n" + textStatus);
      console.log("errorThrown: \n" + errorThrown);
    },
    success: function (retorno) {
      alertForTimes(retorno.array_times);
      //verificar se algum card foi encontrado
      if (retorno.total_itens_encontrados > 0) {
        if (sessionStorage.getItem('array_id_processos')) {
          //pegar array com ids encontrados na última pesquisa
          let array_id_processos = JSON.parse(sessionStorage.getItem('array_id_processos'));
          let diff = validarDiferenca(retorno.array_id_processos,array_id_processos);
          //verificar se algum card foi adicionado
          if (diff.length > 0) {
            /**
            * Aplicar o alerta sonoro
            */
            $('#notificacao').trigger('play');
          }
        } else {
          $('#notificacao').trigger('play');
        }
        //adicionar nova quantidade ao total dos cards
        sessionStorage.setItem('tot_cards', retorno.total_itens_encontrados);
        sessionStorage.setItem('array_id_processos', JSON.stringify(retorno.array_id_processos));
        //renderizar os cards
        $("#recebe_cards").html(retorno.cards);
      } else {
        sessionStorage.removeItem('tot_cards');
        sessionStorage.removeItem('array_id_processos');
        $("#recebe_cards").html("");
      }
    },
  });
}

function alertForTimes(array_times) {
  //verificar se existem itens no array
  if (array_times.length > 0) {

    //verifica se a session existe
    let alert_times = JSON.parse(sessionStorage.getItem('alert_times'));
    
    // CORREÇÃO: Se não existir, além de salvar na sessão, define a variável como um array vazio
    if (!alert_times) { 
      alert_times = []; 
      sessionStorage.setItem('alert_times', JSON.stringify([])); 
    }

    //atribuir arrays em constantes para que possam ser trabalhados
    const novos = array_times;
    const obtidos = alert_times;

    //listar todos os novos e encontrar quais não existem na sessão
    novos.map(function(novo){
      if (!obtidos.find((item) => item.id === novo.id && item.processo === novo.processo)) {
        //função responsável pelo disparo do alerta sonoro
        alertadisparar(novo);
      }
    })
    
  }
}

function alertadisparar(item) {
  let alert_times = JSON.parse(sessionStorage.getItem('alert_times'));
  let new_array = [...alert_times, item];
  //Verifica se o processo atual é 1,2 ou 3
  if ((item.processo == 1 || item.processo == 2 || item.processo == 3) && item.time >= 300) {
    console.log(item);
    //alerta sonoro urgente
    $("#notificacao2").trigger("play");
    //atribuir o novo item ao array de solicitações
    sessionStorage.setItem('alert_times', JSON.stringify(new_array));
  }
}

function AttAlertTimes() {
  
  sessionStorage.setItem('alert_times', JSON.stringify([]));
}

function popularCampoPrivilegio (id) {
  let cod = 14,corpo = "";
  $.ajax({
    url: "config/processos.php",
    type: "POST",
    data: {id,cod},
    dataType: 'json', 
    error: function(jqXHR, textStatus, errorThrown) {
        console.log('jqXHR: \n'+jqXHR);
        console.log('textStatus: \n'+textStatus);
        console.log('errorThrown: \n'+errorThrown);
    },
    success: function(retorno){
        if (retorno) {
            corpo += "<label for='checkcentral'><input type='checkbox' class='i-checks' id='checkcentral' onclick='marcarTodos(this.checked);contador();'> Marcar ou Desmarcar Todos</label><hr>"
          let status = "";
          for (let cc=0;cc<retorno.length;cc++) {
            corpo += "<h5>"+ retorno[cc].categoria +"</h5>";
            for (let gg=0;gg<retorno[cc].camada1.length;gg++) {
              corpo += "<p style='margin:0;'><label for='check_"+ retorno[cc].camada1[gg].id +"'>";
              if (retorno[cc].camada1[gg].active) {
                status = "checked";
              } else {
                status = "";
              }
              corpo += "<input type='checkbox' class='i-checks s-check' name='check[]' value='"+ retorno[cc].camada1[gg].id +"' id='check_"+ retorno[cc].camada1[gg].id +"' "+ status +" /> "+retorno[cc].camada1[gg].descricao;
              corpo += "</label></p>";
            }
          }
        } else {
          alert("Falha");
        }
        $("#recebe_campos").html(corpo);
        document.getElementById("id_user_esc").value = id;
    }
  });
}

function marcarTodos(marcar){
    var itens = document.getElementsByName('check[]');
    var i = 0;
    for(i=0; i<itens.length;i++){
        itens[i].checked = marcar;
    }
}

function contador() {
    var n = $("input.s-check:checked").length;
    if(n === 0){
        $(".btn_ferramenta").hide();
        $(".checkcount").hide();
    }else{
        $(".btn_ferramenta").show();
        $(".checkcount").show();
    }
    $(".checkcount").text( n + ' selecionado(s)' );
};

function popularDivisao(received) {
  const id_solicitacao = document.querySelector(".id_solicitacao").value;
  let retorno_div = "";
  $.ajax({
    url: "config/processos.php",
    type: "POST",
    data: {id_solicitacao,cod: 18},
    dataType: "json",
    beforeSend: function () {},
    error: function (jqXHR, textStatus, errorThrown) {
      console.log("jqXHR: \n" + jqXHR);
      console.log("textStatus: \n" + textStatus);
      console.log("errorThrown: \n" + errorThrown);
    },
    success: function (retorno) {
      if (retorno) {
        for (let cc=0;cc<retorno.length;cc++) {
          retorno_div += "<tr>";
          retorno_div += `<td>${retorno[cc].descricao}<input type='hidden' value='${retorno[cc].id}' name='id_produto[]'/></td>`;
          retorno_div += `<td><input style='width:100%;' id='qtd_01_${retorno[cc].id}' paralelo='qtd_02_${retorno[cc].id}' onChange='diminuirparalelo(this)' data-val='${retorno[cc].quantidade}' value='${retorno[cc].quantidade}' type='number' min='0' max='${retorno[cc].quantidade}' name='qtd_venda[]'/></td>`;
          retorno_div += `<td><input style='width:100%;' id='qtd_02_${retorno[cc].id}' paralelo='qtd_01_${retorno[cc].id}' onChange='diminuirparalelo(this)' data-val='0' value='0' type='number' min='0' max='${retorno[cc].quantidade}' name='qtd_guarda[]'/></td>`;
          retorno_div += "</tr>";
        }
      }
      $(`#${received}`).html(retorno_div);
    },
  });
}

function diminuirparalelo(elemento) {
  let paralelo = elemento.getAttribute('paralelo');
  let val = elemento.getAttribute('data-val');
  let item_paralelo = document.querySelector(`#${paralelo}`);
  let value_paralelo  = item_paralelo.value;
  let new_value = 0;

  if (elemento.value > val) {
   new_value = --value_paralelo;
  }

  if (elemento.value < val) {
   new_value = ++value_paralelo;
  }

  item_paralelo.value = new_value;
  item_paralelo.setAttribute("data-val", new_value);
  elemento.setAttribute("data-val", elemento.value);
}

/**
 * Funções do ADM relacionado às solicitações
 */

function popInfoSolicitacao(id) {
  let result = "";
  $.ajax({
    url: "config/getTimeLine.php",
    type: "POST",
    data: {id},
    dataType: "json",
    beforeSend: function () {
    },
    error: function (jqXHR, textStatus, errorThrown) {
      console.log(`jqXHR: \n ${jqXHR} \n textStatus: \n ${textStatus} \n errorThrown: \n ${errorThrown}`);
    },
    success: function (res) {
      const retorno = res.time_line;
      const retorno_pecas = res.pecas
      // console.log(retorno);return;
      if (retorno.length > 0) {

        result +='<div class="container">';
        result +='<div class="row">';
        result +='<div class="col-md-12">';
        result +='<div class="main-timeline">';
        for (let i=0;i<retorno.length;i++) {
          result +='<div class="timeline '+retorno[i].class+'">';
          result +='    <div class="timeline-content">';
          result +='        <span class="year '+retorno[i].class+'"><img class="icon_timeline" src="'+retorno[i].icon+'" width="30" /> <b style="color:#fff !important;text-shadow: 2px 2px 2px rgba(0,0,0,.3)">'+retorno[i].data+'</b></span>';
          result +='        <h3 class="title"><span class="'+retorno[i].class+'">'+retorno[i].situacao+'</span> <br> <span style="font-size:12px;">User: '+retorno[i].user+'</span></h3>';
          result +='        <p class="description">';
          result +='            '+retorno[i].obs+'';
          result +='        </p>';
          result +='    </div>';
          result +='</div>';
        }
        result +='</div>';
        result +='</div>';
        result +='</div>';
        result +='</div>';
      }


      if (retorno_pecas[0].length > 0) {
        let array_pecas = retorno_pecas[0];

        result +='<h3>Peças da Solicitação</h3>';
        result +='<table class="table table-bordered table-sm">';
        result +='  <thead>';
        result +='    <tr>';
        result +='      <th>Decrição</th>';
        result +='      <th>QTD. Total</th>';
        result +='      <th>QTD. Retirada</th>';
        result +='    </tr>';
        result +='  </thead>';
        result +='  <tbody>';
        for (let i=0;i<array_pecas.length;i++) {

        result +='    <tr>';
        result +='      <td>'+ array_pecas[i].codigo +' - '+ array_pecas[i].descricao +'</td>';
        result +='      <td>'+ array_pecas[i].qtd_total +'</td>';
        result +='      <td>'+ array_pecas[i].qtd_retirada +'</td>';
        result +='    </tr>';

        }
        result +='  </tbody>';
        result +='</table>';

      }

      $("#info_lanc").html(result);
    },
  });
}

function popPecasSolicitacao(id) {
  let result = "";
  let result2 = "";
  $.ajax({
    url: "config/getPecasSolicitacao.php",
    type: "POST",
    data: {id},
    dataType: "json",
    error: function (jqXHR, textStatus, errorThrown) {
      console.log(`jqXHR: \n ${jqXHR} \n textStatus: \n ${textStatus} \n errorThrown: \n ${errorThrown}`);
    },
    success: function (retorno) {
      if (retorno[0].length > 0) {
        let array_pecas = retorno[0];

        result +='<h3>Peças da Solicitação</h3>';
        result +='<table class="table table-bordered table-sm">';
        result +='  <thead>';
        result +='    <tr>';
        result +='      <th>Decrição</th>';
        result +='      <th>QTD. Total</th>';
        result +='      <th>QTD. Retirada</th>';
        result +='    </tr>';
        result +='  </thead>';
        result +='  <tbody>';
        for (let i=0;i<retorno[0].length;i++) {

        result +='    <tr>';
        result +='      <td>'+ array_pecas[i].codigo +' - '+ array_pecas[i].descricao +'</td>';
        result +='      <td>'+ array_pecas[i].qtd_total +'</td>';
        result +='      <td>'+ array_pecas[i].qtd_retirada +'</td>';
        result +='    </tr>';

        }
        result +='  </tbody>';
        result +='</table>';

      } else {
        result = "<div class='alert alert-danger'>Nenhum produto encontrado.</div>";
      }

      if (retorno[1].length > 0) {
        let array_obs = retorno[1];

        result2 +='<hr><h3>Observações da Solicitação</h3>';
        result2 +='<table class="table table-bordered table-sm">';
        result2 +='  <thead>';
        result2 +='    <tr>';
        result2 +='      <th>Data</th>';
        result2 +='      <th>Usuário</th>';
        result2 +='      <th>OBS</th>';
        result2 +='    </tr>';
        result2 +='  </thead>';
        result2 +='  <tbody>';

        for (let ii=0;ii<retorno[1].length;ii++) {

        result2 +='    <tr>';
        result2 +='      <td>'+ array_obs[ii].data +'</td>';
        result2 +='      <td>'+ array_obs[ii].usuario +'</td>';
        result2 +='      <td>'+ array_obs[ii].obs +'</td>';
        result2 +='    </tr>';

        }
        result2 +='  </tbody>';
        result2 +='</table>';

      }

      $("#pecas_lanc").html(result);
      $("#obs_lanc").html(result2);
    },
  });
}

/**
 * ===============================================
 * FUNÇÕES PARA IMPRESSÃO DE CARDS (IMPRESSORA TÉRMICA)
 * ===============================================
 */

// Função chamada pelo clique no botão "Imprimir"
function imprimirCard(event) {
    // Impede que o clique "vaze" para o card e abra o modal
    event.stopPropagation();

    // Pega o próprio botão que foi clicado
    const botaoClicado = event.currentTarget;
    
    // A partir do botão, encontra o "card" pai mais próximo
    const cardElement = botaoClicado.closest('.card');

    if (!cardElement) {
        alert('Erro: Não foi possível localizar o card associado a este botão!');
        return;
    }

    // Pega o ID da solicitação a partir do ID do próprio card
    const idSolicitacao = cardElement.id.split('-')[1];

    // Lógica aprimorada para pegar o nome do vendedor
    const vendedorInfoElement = cardElement.querySelector('.vendedor-info');
    let nomeVendedor = 'Não identificado'; // Valor padrão

    if (vendedorInfoElement) {
        let textoCompleto = vendedorInfoElement.innerText;
        if (textoCompleto.includes(':')) {
            nomeVendedor = textoCompleto.split(':')[1].trim();
        } else {
            nomeVendedor = textoCompleto.trim();
        }
    }
    
    const dataHora = new Date().toLocaleString('pt-BR');

    // Montar o HTML para o recibo de impressão
    let htmlParaImprimir = `
        <style>
            * { font-family: 'Courier New', monospace; font-size: 10pt; margin: 0; padding: 0; }
            h2 { font-size: 12pt; text-align: center; margin-bottom: 10px; }
            p { margin-bottom: 5px; }
            hr { border: none; border-top: 1px dashed black; margin: 10px 0; }
            .info { text-align: center; font-size: 8pt; margin-top: 15px; }
        </style>
        
        <h2>Unidos Importados</h2>
        <p><strong>Comprovante de Retirada</strong></p>
        <p><strong>Vendedor:</strong> ${nomeVendedor}</p>
        <hr>
        <p><strong>Itens da Solicitação N° ${idSolicitacao}:</strong></p>
    `;

    // Nova lógica melhorada para extrair itens
    const itemRows = cardElement.querySelectorAll('.card-body p');
    
    itemRows.forEach(row => {
        const qtdSpan = row.querySelector('.card_qtd');
        const descSpan = row.querySelector('.font-ajus');
        if (qtdSpan && descSpan) {
            const quantidade = qtdSpan.innerText;
            const descricao = descSpan.innerText;
            htmlParaImprimir += `<p>${quantidade} - ${descricao}</p>`;
        }
    });

    htmlParaImprimir += `<hr><p class="info">Impresso em: ${dataHora}</p>`;
    
    executarImpressao(htmlParaImprimir);
}

// Função chamada pelo clique no botão "Imprimir"
/**function imprimirCard(idSolicitacao) {
  //event.stopPropagation(); 
    // Encontrar o elemento do card na página pelo ID que definimos no PHP
    const cardElement = document.getElementById('card-' + idSolicitacao);

    if (!cardElement) {
        alert('Erro: Card não encontrado!');
        return;
    }

    // Lógica aprimorada para pegar o nome do vendedor
    const vendedorInfoElement = cardElement.querySelector('.vendedor-info');
    let nomeVendedor = 'Não identificado'; // Valor padrão

    if (vendedorInfoElement) {
        let textoCompleto = vendedorInfoElement.innerText;
        if (textoCompleto.includes(':')) {
            nomeVendedor = textoCompleto.split(':')[1].trim();
        } else {
            nomeVendedor = textoCompleto.trim();
        }
    }
    
    const dataHora = new Date().toLocaleString('pt-BR');

    // Montar o HTML para o recibo de impressão
    let htmlParaImprimir = `
        <style>
            * { font-family: 'Courier New', monospace; font-size: 10pt; margin: 0; padding: 0; }
            h2 { font-size: 12pt; text-align: center; margin-bottom: 10px; }
            p { margin-bottom: 5px; }
            hr { border: none; border-top: 1px dashed black; margin: 10px 0; }
            .info { text-align: center; font-size: 8pt; margin-top: 15px; }
        </style>
        
        <h2>Unidos Importados</h2>
        <p><strong>Comprovante de Retirada</strong></p>
        <p><strong>Vendedor:</strong> ${nomeVendedor}</p>
        <hr>
        <p><strong>Itens da Solicitação N° ${idSolicitacao}:</strong></p>
    `;

    // ===== NOVA LÓGICA MELHORADA PARA EXTRAIR ITENS =====
    // Seleciona todas as linhas de produto (tags <p>) dentro do corpo do card
    const itemRows = cardElement.querySelectorAll('.card-body p');
    
    itemRows.forEach(row => {
        // Para cada linha, busca a SPAN da quantidade e a SPAN da descrição
        const qtdSpan = row.querySelector('.card_qtd');
        const descSpan = row.querySelector('.font-ajus');

        // Se encontrar as duas, monta a linha do item
        if (qtdSpan && descSpan) {
            const quantidade = qtdSpan.innerText; // Ex: "1x"
            const descricao = descSpan.innerText;  // Ex: "0283639 - BOMBA..."
            htmlParaImprimir += `<p>${quantidade} - ${descricao}</p>`;
        }
    });
    // ===== FIM DA NOVA LÓGICA =====

    htmlParaImprimir += `<hr><p class="info">Impresso em: ${dataHora}</p>`;
    
    executarImpressao(htmlParaImprimir);
}*/

// Função que cria um IFrame temporário e chama a impressão do navegador
function executarImpressao(htmlConteudo) {
    const iframe = document.createElement('iframe');
    iframe.style.position = 'absolute';
    iframe.style.width = '0';
    iframe.style.height = '0';
    iframe.style.border = '0';
    document.body.appendChild(iframe);

    iframe.contentDocument.write(htmlConteudo);
    iframe.contentDocument.close();
    iframe.contentWindow.focus();
    iframe.contentWindow.print();

    // Remove o iframe após a impressão para manter a página limpa
    setTimeout(() => {
        document.body.removeChild(iframe);
    }, 1000);
}