$(document).ready(async function () {

  $('#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: '#btnFiltros',
        popover: {
          title: 'Botão Filtros',
          description: 'Clique aqui para abrir os filtros e realizar uma consulta.',
          position: 'right'
        }
      },
      {
        element: '#btnImprimir',
        popover: {
          title: 'Botão Imprimir',
          description: 'Clique aqui para imprimir um relatório.',
          position: 'right'
        }
      },
      {
        element: '#divRelatorio',
        popover: {
          title: 'Tabela com os Dados',
          description: 'Aqui, após clicar em consultar ficam os dados filtrados.',
          position: 'bottom'
        }
      }
      ]);
      driver.start();
    });
  });

  let activeColVis = '';

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

  if (colunas == null || colunas.relOrdemCompra == undefined) {
    localStorage.setItem('colunasInvisiveisRelatorios', JSON.stringify({ ...colunas, relOrdemCompra: [] }))
    colunas = JSON.parse(localStorage.getItem('colunasInvisiveisRelatorios'))
  }

  await preencheOrdenacaoTela('RelOrdemCompra');

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

      const novasColunas = retornaNovasColunasInvisiveis();
      let cols = JSON.parse(localStorage.getItem('colunasInvisiveisRelatorios'));

      if (activeColVis == 'buttonColVis') {
        tabela = '#tabelaOrdemCompra'
        localStorage.setItem('colunasInvisiveisRelatorios', JSON.stringify({ ...cols, relNfEntra: novasColunas }))
      }
      $(tabela).DataTable().columns().visible(true);

      $(tabela).DataTable().columns().every(
        function () {
          if ((novasColunas).indexOf(this.dataSrc()) != -1) {
            this.visible(false); 3
          }
        })
    } finally {
      $.LoadingOverlay('hide');
      $('#modal-ColunasVisiveis').modal('hide');
    }
  })

  $('#btnLimparFiltros').on('click', async function () {

    $('#dtEmissaoDe').val('')
    $('#dtEmissaoAte').val('')
    $('#dtEntregaDe').val('')
    $('#dtEntregaAte').val('')
    $('#dtEntregaItensDe').val('')
    $('#dtEntregaItensAte').val('')
    $('#dtEntregaItensOrigDe').val('')
    $('#dtEntregaItensOrigAte').val('')

    if ($('#cbPorGrade').prop('checked')) {
      $('#cbPorGrade').prop('checked', false);
    }

    $('#btnLimpaProduto').trigger('click');
    $('#btnLimpaMaterial').trigger('click');
    $('#btnLimpaServico').trigger('click');
    $('#btnLimpaCor').trigger('click');
    $('#btnLimpaFornecedor').trigger('click');
    $('#btnLimpaEntrega').trigger('click');
    $('#btnLimpaOrdemCompra').trigger('click');
    $('#btnLimpaTransporte').trigger('click');
    $('#btnLimpaPedido').trigger('click');
    $('#btnLimpaDeposito').trigger('click');
    $('#btnLimpaNumOf').trigger('click');
    $('#btnLimpaGrupoProd').trigger('click');
    $('#btnLimpaGrupoMat').trigger('click');
    $('#btnLimpaColecao').trigger('click');
    $('#btnLimpaMatLinha').trigger('click');
    $('#btnLimpaLinha').trigger('click');
    $('#btnLimpaClasse').trigger('click');
    $('#btnLimpaColecaoOC').trigger('click');
    $('#btnLimpaEtiqueta').trigger('click');
    $('#btnLimpaSubGrupo').trigger('click');
    $('#btnLimpaStatus').trigger('click');
    $('#btnLimpaStatusProd').trigger('click');
    $('#btnLimpaStatusOC').trigger('click');
    $('#btnLimpaUsuario').trigger('click');
    $('#btnLimpaComprador').trigger('click');
    $('#btnLimpaColecaoItem').trigger('click');
    $('#btnLimpaContainer').trigger('click');
    $('#btnLimpaCategoria').trigger('click');
  });

  $('#btnFiltros').on('click', async function () {
    $('#modal-filtros').modal('show');
  });

  $('#rdTipoProduto, #rdTipoMaterial, #rdTipoServico, #rdTipoTodos').on('change', function () {
    $('#txtProduto').empty().trigger('change')
    $('#txtMaterial').empty().trigger('change')
    $('#txtServico').empty().trigger('change')

    if ($('#rdTipoTodos').is(':checked')) {
      $('#inputCor').addClass('mt-1')
      $('#inputFornecedor').addClass('mt-1')
      $('#inputMaterial').removeClass('d-none')
      $('#inputProduto').removeClass('d-none')
      $('#inputServico').removeClass('d-none')
      $('#inputGrupoProduto').removeClass('d-none')
      $('#inputGrupoMaterial').removeClass('d-none')
      $('#inputLinhaMaterial').removeClass('d-none')
      $('#inputLinhaProduto').removeClass('d-none')
      $('#inputStatusMaterial').removeClass('d-none')
      $('#inputStatusProduto').removeClass('d-none')
    } else if ($('#rdTipoServico').is(':checked')) {
      $('#inputMaterial').addClass('d-none')
      $('#inputProduto').addClass('d-none')
      $('#inputGrupoProduto').addClass('d-none')
      $('#inputGrupoMaterial').addClass('d-none')
      $('#inputLinhaMaterial').addClass('d-none')
      $('#inputLinhaProduto').addClass('d-none')
      $('#inputStatusMaterial').addClass('d-none')
      $('#inputStatusProduto').addClass('d-none')
      $('#inputServico').removeClass('d-none')
    } else if ($('#rdTipoProduto').is(':checked')) {
      $('#inputMaterial').addClass('d-none')
      $('#inputServico').addClass('d-none')
      $('#inputGrupoMaterial').addClass('d-none')
      $('#inputLinhaMaterial').addClass('d-none')
      $('#inputStatusMaterial').addClass('d-none')
      $('#inputGrupoProduto').removeClass('d-none')
      $('#inputLinhaProduto').removeClass('d-none')
      $('#inputStatusProduto').removeClass('d-none')
      $('#inputProduto').removeClass('d-none')
      $('#inputCor').removeClass('mt-1')
      $('#inputFornecedor').removeClass('mt-1')
    } else {
      $('#inputMaterial').removeClass('d-none')
      $('#inputProduto').addClass('d-none')
      $('#inputServico').addClass('d-none')
      $('#inputGrupoProduto').addClass('d-none')
      $('#inputLinhaProduto').addClass('d-none')
      $('#inputStatusProduto').addClass('d-none')
      $('#inputGrupoMaterial').removeClass('d-none')
      $('#inputLinhaMaterial').removeClass('d-none')
      $('#inputStatusMaterial').removeClass('d-none')
      $('#inputCor').removeClass('mt-1')
      $('#inputFornecedor').removeClass('mt-1')
    }
  });

  async function retornaFiltros() {
    const empresas = $('.empresa_selecionada:checked').toArray().length > 0 ? $('.empresa_selecionada:checked').toArray().map(input => input.id.substring(input.id.indexOf('-') + 1, input.id.length))
      : [getCookie('emp_id')];
    const tipo_compra = $('#rdTipoTodos').is(':checked') ? '' : $('#rdTipoProduto').is(':checked') ? 'P' : $('#rdTipoServico').is(':checked') ? 'S' : $('#rdTipoMaterial').is(':checked') ? 'M' : '0';
    const buscar = $('#rdBuscarTodos').is(':checked') ? '' : $('#rdBuscarPendentes').is(':checked') ? '1' : $('#rdBuscarFinalizados').is(':checked') ? '2' : '0';
    const porGrade = $('#cbPorGrade').prop('checked') ? '1' : '0';
    const cod_item = [await formataListas($('#txtProduto').val().toString()), await formataListas($('#txtMaterial').val().toString()), await formataListas($('#txtServico').val().toString())].filter((a) => a != '').toString()

    const retorno =
      `DT_EMISSAO_DE=${$('#dtEmissaoDe').val()}` +
      `&DT_EMISSAO_ATE=${$('#dtEmissaoAte').val()}` +
      `&DT_ENTREGA_DE=${$('#dtEntregaDe').val()}` +
      `&DT_ENTREGA_ATE=${$('#dtEntregaAte').val()}` +
      `&DT_ENTREGA_ITENS_DE=${$('#dtEntregaItensDe').val()}` +
      `&DT_ENTREGA_ITENS_ATE=${$('#dtEntregaItensAte').val()}` +
      `&DT_ENTREGA_ITENS_ORIG_DE=${$('#dtEntregaItensOrigDe').val()}` +
      `&DT_ENTREGA_ITENS_ORIG_ATE=${$('#dtEntregaItensOrigAte').val()}` +
      `&COD_ITEM=${cod_item}` +
      `&TIPO_COMPRA=${tipo_compra}` +
      `&BUSCAR=${buscar}` +
      `&COR=${await formataListas($('#txtCor').val().toString())}` +
      `&ENTREGA=${await formataListas($('#txtEntrega').val().toString())}` +
      `&TRANSPORTE=${await formataListas($('#txtTransporte').val().toString())}` +
      `&ORDEM_COMPRA=${await formataListas($('#txtOrdemCompra').val().toString())}` +
      `&PEDIDO=${await formataListas($('#txtPedido').val().toString())}` +
      `&FORNECEDOR=${await formataListas($('#txtFornecedor').val().toString())}` +
      `&DEPOSITO=${await formataListas($('#txtDeposito').val().toString())}` +
      `&NUMERO_OF=${$('#txtNumeroOf').val()}` +
      `&GRUPO_PRODUTO=${await formataListas($('#txtGrupoProd').val().toString())}` +
      `&GRUPO_MATERIAL=${await formataListas($('#txtGrupoMat').val().toString())}` +
      `&COLECAO=${await formataListas($('#txtColecao').val().toString())}` +
      `&LINHA_MATERIAL=${await formataListas($('#txtMatLinha').val().toString())}` +
      `&LINHA_PRODUTO=${await formataListas($('#txtLinha').val().toString())}` +
      `&CLASSE=${await formataListas($('#txtClasse').val().toString())}` +
      `&COLECAO_OC=${await formataListas($('#txtColecaoOC').val().toString())}` +
      `&EMPRESAS=${empresas}` +
      `&ETIQUETA=${await formataListas($('#txtEtiqueta').val().toString())}` +
      `&SUBGRUPO=${await formataListas($('#txtSubGrupo').val().toString())}` +
      `&STATUS_MATERIAL=${await formataListas($('#txtStatus').val().toString())}` +
      `&STATUS_PRODUTO=${await formataListas($('#txtStatusProd').val().toString())}` +
      `&STATUS_OC=${await formataListas($('#txtStatusOC').val().toString())}` +
      `&USUARIO_PESQUISA=${await formataListas($('#txtUsuario').val().toString())}` +
      `&COMPRADOR=${await formataListas($('#txtComprador').val().toString())}` +
      `&COLECAO_ITEM=${await formataListas($('#txtColecaoItem').val().toString())}` +
      `&CONTAINER=${await formataListas($('#txtContainer').val().toString())}` +
      `&CATEGORIA=${await formataListas($('#txtCategoria').val().toString())}` +
      `&POR_GRADE=${porGrade}`;

    return retorno;
  }

  retornaHintRelatorio('btnImprimir', 'RelOrdemCompra');

  $('#btnImprimir').on('click', async function () {
    try {
      $.LoadingOverlay('show');
      try {
        const url = `/sisplan/relordemcompra/v1/relordemcompra?`;
        const filtros = await retornaFiltros();
        const ordem = `&TELA_ORDENACAO=RelOrdemCompraA&ORDEM_ORDENACAO=${$('#txtOrdem').val()}&INDIVIDUAL=N`;
        const bImprimeAutomatico = await verificaImprimirAutomatico('RelOrdemCompra');
        let arquivo = await GeraRelatorio(`${url}${filtros}${ordem}`, 'POST', 100000, false, 'RelOrdemCompra');
        if (arquivo != undefined) {
          if (!bImprimeAutomatico) {
            window.open(`${BASE_URI}/relatorios_api/pdf/${arquivo}`, '_blank');
          }
          await limparRelatorios();
        }

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

  $('#btnConsultar').on('click', async function () {
    try {
      $.LoadingOverlay("show");
      const filtros = await retornaFiltros();
      var response = await requisicao('GET', '/sisplan/relordemcompra/v1/consultadados?', filtros, null, 500000);

      if (!response) {
        return;
      }

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

      if (jsonStr.length == 0) {
        msgAlerta('Nenhum registro encontrado.');
        return;
      }

      const columns = Object.keys(jsonStr[0]).map(k => ({ title: k, data: k }));
      const colunasInvisiveis = JSON.parse(
        localStorage.getItem("colunasInvisiveisRelatorios")
      );


      criaDataTablePadrao('#tabelaOrdemCompra', true, true, true, true, true, true, true, jsonStr, columns, [], [8, 9, 10, 58, 81, 82, 89, 93], [], [], {}, '', 'buttonColVis', 'buttonExcel2');

      $('#tabelaOrdemCompra').DataTable().columns().every(
        function () {
          if ((colunasInvisiveis.relOrdemCompra).indexOf(this.dataSrc()) != -1) {
            this.visible(false);
          }
        }
      )
      await criaGraficosCabecalho()
      $('#modal-filtros').modal('hide');

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

      $('#buttonExcel2').on('click', async function () {
        const dados = $("#tabelaOrdemCompra").DataTable().data().toArray();
        await exportaCSV("", "", undefined, null, 'Relatório ordem de compra', '', '', 999, false, false, dados);
      })

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

  $('#modal-ColunasVisiveis').on('show.bs.modal', function () {
    const cols = [];
    let tabela = ''
    let colunasInvisiveis = JSON.parse(localStorage.getItem('colunasInvisiveisRelatorios'))

    if (activeColVis == 'buttonColVis') {
      tabela = '#tabelaOrdemCompra'
    }

    $(tabela).DataTable().columns().every(function () {
      cols.push({
        'title': $(this.header()).text().trim(),
        'data': this.dataSrc()
      })
    });

    if (activeColVis == 'buttonColVis') {
      adicionaColunas(cols, colunasInvisiveis.relOrdemCompra ?? [])
    }

  })

  $('#btnSelecionarEmpresas').on('click', function () {
    carregaEmpresasDisponiveis();
  });

  function addPesquisaAutocompleta() {
    componenteFiltro('produto', true, true);
    componenteFiltro('material', true, true);
    componenteFiltro('servico', true, true);
    componenteFiltro('cor', true, true);
    componenteFiltro('pedido', true, true);
    componenteFiltro('colecao', true, true);
    componenteFiltro('ordemCompra', true, true);
    componenteFiltro('notaEntra', true, true);
    componenteFiltro('fornecedor', true, true);
    componenteFiltro('deposito', true, true);
    componenteFiltro('matLinha', true, true);
    componenteFiltro('linha', true, true);
    componenteFiltro('classe', true, true);
    componenteFiltro('etiqueta', true, true);
    componenteFiltro('empresa', true, true);
    componenteFiltro('subGrupo', true, true);
    componenteFiltro('status', true, true);
    componenteFiltro('usuario', true, true);
    componenteFiltro('categoria', true, true);


    $('#txtEntrega').pesquisa_variosServerside(1, `{"tabela":"COMPRA", "camposSelect":[ "ENTIDADE.CODCLI", "ENTIDADE.NOME", "COMPRA.ENTREGA" ], "leftjoin": [{"tabela" : "ENTIDADE", "condicao" : "ENTIDADE.CODCLI= COMPRA.CODFOR"}]}`, "CODCLI", "NOME", "ENTREGA")
    $('#btnEntrega').pesquisa_serversideSel('#txtEntrega', `{"tabela":"COMPRA", "camposSelect":[ "ENTIDADE.CODCLI", "ENTIDADE.NOME", "COMPRA.ENTREGA" ], "leftjoin": [{"tabela" : "ENTIDADE", "condicao" : "ENTIDADE.CODCLI= COMPRA.CODFOR"}]}`, 'Pesquisa Entrega');
    $('#btnLimpaEntrega').on('click', function () { $('#txtEntrega').empty().trigger('change') })

    $('#txtTransporte').pesquisa_variosServerside(1, `{"tabela":"TABTRAN", "camposSelect":[ "TABTRAN.ID", "TABTRAN.NOME" ]}`, "ID", "NOME")
    $('#btnTransporte').pesquisa_serversideSel('#txtTransporte', `{"tabela":"TABTRAN", "camposSelect":[ "TABTRAN.ID", "TABTRAN.NOME" ]}`, 'Pesquisa Transporte');
    $('#btnLimpaTransporte').on('click', function () { $('#txtTransporte').empty().trigger('change') })

    $('#txtNumOf').pesquisa_variosServerside(1, `{"tabela":"CO_ITEN_OF", "camposSelect":[ "CO_ITEN_OF.NUM_OF", "CO_ITEN_OF.NUMERO" ]}`, "ID", "NOME")
    $('#btnNumOf').pesquisa_serversideSel('#txtNumOf', `{"tabela":"CO_ITEN_OF", "camposSelect":[ "CO_ITEN_OF.NUM_OF", "CO_ITEN_OF.NUMERO" ]}`, 'Pesquisa OF');
    $('#btnLimpaNumOf').on('click', function () { $('#txtNumOf').empty().trigger('change') })

    $('#txtGrupoProd').pesquisa_variosServerside(1, `{"tabela":"GRUPO_PA", "camposSelect":[ "GRUPO_PA.CODIGO", "GRUPO_PA.DESCRICAO" ]}`, "ID", "NOME")
    $('#btnGrupoProd').pesquisa_serversideSel('#txtGrupoProd', `{"tabela":"GRUPO_PA", "camposSelect":[ "GRUPO_PA.CODIGO", "GRUPO_PA.DESCRICAO" ]}`, 'Pesquisa Grupo de Produto');
    $('#btnLimpaGrupoProd').on('click', function () { $('#txtGrupoProd').empty().trigger('change') })

    $('#txtGrupoMat').pesquisa_variosServerside(1, `{"tabela":"GRUPO_MA", "camposSelect":[ "GRUPO_MA.CODIGO", "GRUPO_MA.DESCRICAO" ]}`, "ID", "NOME")
    $('#btnGrupoMat').pesquisa_serversideSel('#txtGrupoMat', `{"tabela":"GRUPO_MA", "camposSelect":[ "GRUPO_MA.CODIGO", "GRUPO_MA.DESCRICAO" ]}`, 'Pesquisa Grupo de Material');
    $('#btnLimpaGrupoMat').on('click', function () { $('#txtGrupoMat').empty().trigger('change') })

    $('#txtColecaoOC').pesquisa_variosServerside(1, `{"tabela":"COLECAO", "camposSelect":[ "COLECAO.CODIGO", "COLECAO.DESCRICAO" ]}`, "ID", "NOME")
    $('#btnColecaoOC').pesquisa_serversideSel('#txtColecaoOC', `{"tabela":"COLECAO", "camposSelect":[ "COLECAO.CODIGO", "COLECAO.DESCRICAO" ]}`, 'Pesquisa Coleção de OC');
    $('#btnLimpaColecaoOC').on('click', function () { $('#txtColecaoOC').empty().trigger('change') })

    $('#txtStatusProd').pesquisa_variosServerside(1, `{"tabela":"SITPROD", "camposSelect":[ "SITPROD.CODIGO", "SITPROD.DESCRICAO" ]}`, "CODIGO", "NOME")
    $('#btnStatusProd').pesquisa_serversideSel('#txtStatusProd', `{"tabela":"SITPROD", "camposSelect":[ "SITPROD.CODIGO", "SITPROD.DESCRICAO" ]}`, 'Pesquisa Status');
    $('#btnLimpaStatusProd').on('click', function () { $('#txtStatusProd').empty().trigger('change') })

    $('#txtStatusOC').pesquisa_variosServerside(1, `{"tabela":"SITPROD", "camposSelect":[ "SITPROD.CODIGO", "SITPROD.DESCRICAO" ]}`, "CODIGO", "NOME")
    $('#btnStatusOC').pesquisa_serversideSel('#txtStatusOC', `{"tabela":"SITPROD", "camposSelect":[ "SITPROD.CODIGO", "SITPROD.DESCRICAO" ]}`, 'Pesquisa Status');
    $('#btnLimpaStatusOC').on('click', function () { $('#txtStatusOC').empty().trigger('change') })

    $('#txtComprador').pesquisa_variosServerside(1, `{"tabela":"ENTIDADE", "camposSelect":[ "ENTIDADE.CODCLI", "ENTIDADE.NOME" ]}`, "CODIGO", "NOME")
    $('#btnComprador').pesquisa_serversideSel('#txtComprador', `{"tabela":"ENTIDADE", "camposSelect":[ "ENTIDADE.CODCLI", "ENTIDADE.NOME" ]}`, 'Pesquisa Comprador');
    $('#btnLimpaComprador').on('click', function () { $('#txtComprador').empty().trigger('change') })

    $('#txtColecaoItem').pesquisa_variosServerside(1, `{"tabela":"COLECAO", "camposSelect":[ "COLECAO.ID", "COLECAO.DESCRICAO" ]}`, "ID", "DESCRICAO")
    $('#btnColecaoItem').pesquisa_serversideSel('#txtColecaoItem', `{"tabela":"COLECAO", "camposSelect":[ "COLECAO.ID", "COLECAO.DESCRICAO" ]}`, 'Pesquisa Coleção Item');
    $('#btnLimpaColecaoItem').on('click', function () { $('#txtColecaoItem').empty().trigger('change') })

    $('#txtContainer').pesquisa_variosServerside(1, `{"tabela":"TIPO_CONTAINER", "camposSelect":[ "TIPO_CONTAINER.ID", "TIPO_CONTAINER.DESCRICAO", "TIPO_CONTAINER.CODIGO" ]}`, "ID", "DESCRICAO", "CODIGO")
    $('#btnContainer').pesquisa_serversideSel('#txtContainer', `{"tabela":"TIPO_CONTAINER", "camposSelect":[ "TIPO_CONTAINER.ID", "TIPO_CONTAINER.DESCRICAO", "TIPO_CONTAINER.CODIGO" ]}`, 'Pesquisa Container');
    $('#btnLimpaContainer').on('click', function () { $('#txtContainer').empty().trigger('change') })
  }

  async function criaGraficosCabecalho() {
    const dadosProduto = await carregaDadosOCProduto();
    const dadosMaterial = await carregaDadosOCMaterial();

    Graficos.criarGrafico({
      container: 'graficosRelOrdemCompra',
      tipo: 'pie',
      dados: dadosProduto,
      nomeSerie: 'Produto',
      colunasAgrupamento: ['NUMERO'],
      colunasValor: ['VALOR_PENDENTE'],
      title: 'Produto'
    })
    Graficos.criarGrafico({
      container: 'graficosRelOrdemCompra1',
      tipo: 'pie',
      dados: dadosMaterial,
      nomeSerie: 'Material',
      colunasAgrupamento: ['NUMERO'],
      colunasValor: ['VALOR_PENDENTE'],
      title: 'Material'
    })

  }

  async function carregaDadosOCProduto() {
    $.LoadingOverlay('show');
    try {
      let where = '';

      where += pegaValor('#txtOrdemCompra') != '' ? ` AND COMPRA.NUMERO IN (${$('#txtOrdemCompra').val()})` : '';
      where += pegaValor('#txtCor') != '' ? ` AND CO_ITEN.COR IN (${$('#txtCor').val()})` : '';
      where += pegaValor('#txtFornecedor') != '' ? ` AND COMPRA.CODFOR IN (${$('#txtFornecedor').val()})` : '';
      where += pegaValor('#txtUsuario') != '' ? ` AND COMPRA.USUARIO IN (${$('#txtUsuario').val()})` : '';
      where += pegaValor('#txtStatusProd') != '' ? ` AND SITPROD.CODIGO IN (${$('#txtStatusProd').val()})` : '';
      where += pegaValor('#txtProduto') != '' ? ` AND PRODUTO.CODIGO IN (${$('#txtProduto').val()})` : '';
      where += pegaValor('#txtGrupoProd') != '' ? ` AND GRUPO_PA.CODIGO IN (${$('#txtGrupoProd').val()})` : '';
      where += pegaValor('#txtLinha') != '' ? ` AND TABLIN.CODIGO IN (${$('#txtLinha').val()})` : '';

      if ($("#dtEmissaoDe").val() != "01-01-1200" || $$("#dtEmissaoAte").val() != "01-12-2500") {
        where += ` and COMPRA.DT_EMISSAO >= '${$("#dtEmissaoDe").val()}' and COMPRA.DT_EMISSAO <= '${$("#dtEmissaoAte").val()}'`;
      }

      const pesquisaParam = {
        tabela: "COMPRA",
        camposSelect: [
          'COMPRA.NUMERO',
          'SUM(CAST(CO_ITEN.QTDE AS NUMERIC(10,2)) * CO_ITEN.PRECO) VALOR_PENDENTE',
          'SUM(CAST(CO_ITEN.QTDE_B AS NUMERIC(10,2)) * CAST(CO_ITEN.PRECO AS NUMERIC(10,2))) VALOR_BAIXADO'
        ],
        leftJoin: [
          { tabela: 'CO_ITEN', condicao: 'CO_ITEN.NUMERO = COMPRA.NUMERO' },
          { tabela: 'PRODUTO', condicao: 'PRODUTO.CODIGO = CO_ITEN.CODIGO' },
          { tabela: 'ENTIDADE', condicao: 'COMPRA.CODFOR = ENTIDADE.CODCLI' },
          { tabela: 'SITPROD', condicao: 'SITPROD.CODIGO = PRODUTO.STATUS' },
          { tabela: 'GRUPO_PA', condicao: 'GRUPO_PA.CODIGO = PRODUTO.GRUPO' },
          { tabela: 'TABLIN', condicao: 'TABLIN.CODIGO = PRODUTO.LINHA' },
        ],
        where: [`1=1 ${where} AND CO_ITEN.QTDE > 0 AND CO_ITEN.TP_ITEM = 'P'`],
        groupBy: [
          "COMPRA.NUMERO",
        ]
      };

      const jsonStr = await retornaJsonPesquisaPadrao(JSON.stringify(pesquisaParam));
      if (jsonStr.length == 0) {
        return [];
      }

      jsonStr.forEach(item => {
        const pendente = Number(item.VALOR_PENDENTE) || 0;
        const baixado = Number(item.VALOR_BAIXADO) || 0;

        if (pendente > 0) {
          item.VALOR_GRAFICO = pendente;
          item.NUMERO = `OC ${item.NUMERO} - Pendente`;
        } else if (baixado > 0) {
          item.VALOR_GRAFICO = baixado;
          item.NUMERO = `OC ${item.NUMERO} - Baixado`;
        } else {
          item.VALOR_GRAFICO = 0;
          item.NUMERO = `OC ${item.NUMERO}`;
        }
      });

      return jsonStr;
    } finally {
      $.LoadingOverlay('hide');
    }
  };

  async function carregaDadosOCMaterial() {
    $.LoadingOverlay('show');
    try {
      let where = '';

      // where += pegaChave('#txtEmpresa') != '' ? ` AND COMPRA.EMPRESA = '${pegaChave('#txtEmpresa').replace('_', '')}'` : '';
      where += pegaValor('#txtOrdemCompra') != '' ? ` AND COMPRA.NUMERO IN (${$('#txtOrdemCompra').val()})` : '';
      where += pegaValor('#txtCor') != '' ? ` AND CO_ITEN.COR IN (${$('#txtCor').val()})` : '';
      where += pegaValor('#txtFornecedor') != '' ? ` AND COMPRA.CODFOR IN (${$('#txtFornecedor').val()})` : '';
      where += pegaValor('#txtUsuario') != '' ? ` AND COMPRA.USUARIO IN (${$('#txtUsuario').val()})` : '';
      where += pegaValor('#txtStatus') != '' ? ` AND SITPROD.CODIGO IN (${$('#txtStatus').val()})` : '';
      where += pegaValor('#txtMaterial') != '' ? ` AND MATERIAL.CODIGO IN (${$('#txtMaterial').val()})` : '';
      where += pegaValor('#txtGrupoMat') != '' ? ` AND GRUPO_MA.CODIGO IN (${$('#txtGrupoMat').val()})` : '';
      where += pegaValor('#txtMatLinha') != '' ? ` AND MAT_LINHA.CODIGO IN (${$('#txtMatLinha').val()})` : '';

      if ($("#dtEmissaoDe").val() != "01-01-1200" || $$("#dtEmissaoAte").val() != "01-12-2500") {
        where += ` and COMPRA.DT_EMISSAO >= '${$("#dtEmissaoDe").val()}' and COMPRA.DT_EMISSAO <= '${$("#dtEmissaoAte").val()}'`;
      }

      const pesquisaParam = {
        tabela: "COMPRA",
        camposSelect: [
          'COMPRA.NUMERO',
          'SUM(CAST(CO_ITEN.QTDE AS NUMERIC(10,2)) * CO_ITEN.PRECO) VALOR_PENDENTE'

        ],
        leftJoin: [
          { tabela: 'CO_ITEN', condicao: 'CO_ITEN.NUMERO = COMPRA.NUMERO' },
          { tabela: 'MATERIAL', condicao: 'MATERIAL.CODIGO = CO_ITEN.CODIGO' },
          { tabela: 'ENTIDADE', condicao: 'COMPRA.CODFOR = ENTIDADE.CODCLI' },
          { tabela: 'SITPROD', condicao: 'SITPROD.CODIGO = MATERIAL.STATUS' },
          { tabela: 'GRUPO_MA', condicao: 'GRUPO_MA.CODIGO = MATERIAL.GRUPO' },
          { tabela: 'TABLIN', condicao: 'TABLIN.CODIGO = MATERIAL.LINHA' },
        ],
        where: [`1=1 ${where} AND CO_ITEN.QTDE > 0 AND CO_ITEN.TP_ITEM = 'M'`],
        groupBy: [
          "COMPRA.NUMERO",
        ]
      };

      const jsonStr = await retornaJsonPesquisaPadrao(JSON.stringify(pesquisaParam));
      if (jsonStr.length == 0) {
        return [];
      }

      jsonStr.forEach(item => {
        const pendente = Number(item.VALOR_PENDENTE) || 0;
        const baixado = Number(item.VALOR_BAIXADO) || 0;

        if (pendente > 0) {
          item.VALOR_GRAFICO = pendente;
          item.NUMERO = `OC ${item.NUMERO} - Pendente`;
        } else if (baixado > 0) {
          item.VALOR_GRAFICO = baixado;
          item.NUMERO = `OC ${item.NUMERO} - Baixado`;
        } else {
          item.VALOR_GRAFICO = 0;
          item.NUMERO = `OC ${item.NUMERO}`;
        }
      });

      return jsonStr;
    } finally {
      $.LoadingOverlay('hide');
    }
  };

  addPesquisaAutocompleta();
  innitDateAtual();
});