<style>
  #modal-cliente .card {
    box-shadow: none !important;
    border-radius: 0 !important;
    margin-bottom: 0 !important;
  }

  #modal-cliente .card-header {
    box-shadow: 0px 1px rgb(0 0 0 / 20%) !important;
  }

  #modal-cliente .card-body {
    padding-left: 1.25rem !important;
    padding-top: 0px;
    padding-bottom: 0px;
    padding-right: 1.25rem !important;
  }

  #modal-cliente .header-content-page .title-page,
  #modal-cliente .title-content-page .title,
  #modal-cliente .title-page {
    font-size: 20px;
    line-height: normal;
    font-weight: 500;
    color: #343a40;
    margin: 0;
    font-family: Roboto, Arial, sans-serif;
  }

  #modal-cliente fieldset:not(.border-Field) {
    padding: 0px !important;
  }

  #lblRepresentantes:hover {
    cursor: pointer;
  }

  .border-FieldModal .textoBordaModal {
    font-size: 1.1em !important;
    text-align: left !important;
    width: auto;
    padding: 0 10px;
    border-bottom: none;
  }

  .border-FieldModal {
    border: 1px solid var(--font-color) !important;
    padding: 0 1.0em 1.0em 1.0em !important;
    margin: 0 0 1.0em 0 !important;
    -webkit-box-shadow: 0px 0px 0px 0px #000;
    box-shadow: 0px 0px 0px 0px #000;
    border-radius: 3px !important;
  }

  .border-Field.modalCliente .textoBorda {
    font-size: 1.0em !important;
    text-align: left !important;
    width: auto;
    padding: 0 10px;
    border-bottom: none;
  }

  .border-Field.modalCliente {
    border: 1.0px solid var(--font-color) !important;
    padding: 0 1.0em 1.0em 1.0em !important;
    -webkit-box-shadow: 0px 0px 0px 0px #000;
    box-shadow: 0px 0px 0px 0px #000;
    padding-bottom: 0px !important;
    border-radius: 3px !important;
    margin-bottom: 1em !important;
  }

  input[type="button"] {
    border: none;
  }
</style>

<div id="modal-cliente" class="modal" tabindex="-1" role="dialog">
  <div class="modal-dialog modal-xl modal-dialog-scrollable" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 id="myModalLabel" class="modal-title">Cadastro de Cliente <button id="btnModalNovoCliente" class="btn btn-sm btn-danger ml-2">+ Novo</button></h5>
        <input id="txtCodCli" class="d-none" />
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        <fieldset>
          <form style="text-align:left!important;" id="form-cliente" name="form-cliente">
            <div class="card card-header" role="tab" id="geral">
              <a style="width:100%;" data-toggle="collapse" data-parent="#multiCollapseExample1" href="#multiCollapseExample1" aria-expanded="true" aria-controls="collapseOne1">
                <div class="row">
                  <div style="max-width:20px;margin-top:auto; margin-bottom: auto" class="col-1">
                    <i class="fas fa-angle-down"></i>
                  </div>
                  <div class="col-11">
                    <h4 class="title-page">
                      Geral
                    </h4>
                  </div>
                </div>
              </a>
            </div>
            <div class="collapse  show" id="multiCollapseExample1">
              <div class="card card-body">
                <div class=" tab-pane fade show active" role="tabpanel" aria-labelledby="geral-tab">
                  <div class="form-row pt-2">
                    <fieldset class="form border-Field modalCliente mb-0 pb-0">
                      <legend class="textoBorda mb-0 pb-0">Opções</legend>
                      <div class="form-row mb-2">
                        <div class="icheck-primary form-group form-check ml-1" style="border-right: 1px solid var(--font-color)">
                          <input type="checkbox" class="form-check-input" id="cbConsumidorFinal">
                          <label class="form-check-label pr-2" for="cbConsumidorFinal">Consumidor Final</label>
                        </div>
                        <div class="icheck-primary form-group form-check ml-3">
                          <input type="checkbox" class="form-check-input" id="cbAtivoCli">
                          <label class="form-check-label pr-2" for="cbAtivoCli">Ativo</label>
                        </div>
                        <div class="icheck-primary form-check">
                          <input type="checkbox" class="form-check-input" id="cbBloqueado">
                          <label class="form-check-label pr-2" for="cbBloqueado">Bloqueado</label>
                        </div>
                      </div>
                    </fieldset>
                    <fieldset class="form border-Field modalCliente mb-0 pb-0 ml-2">
                      <legend class="textoBorda mb-0 pb-0">Tipo de Entidade</legend>
                      <div class="form-row ml-2 mb-2">
                        <div class="icheck-primary form-group form-check">
                          <input type="checkbox" class="form-check-input" id="cbTipoCliente">
                          <label class="form-check-label pr-2" for="cbTipoCliente">Cliente</label>
                        </div>
                        <div class="icheck-primary form-group form-check">
                          <input type="checkbox" class="form-check-input" id="cbTipoFornecedor">
                          <label class="form-check-label pr-2" for="cbTipoFornecedor">Fornecedor</label>
                        </div>
                        <div class="icheck-primary form-group form-check">
                          <input type="checkbox" class="form-check-input" id="cbTipoTerceiros">
                          <label class="form-check-label pr-2" for="cbTipoTerceiros">Terceiros</label>
                        </div>
                        <div class="icheck-primary form-group form-check">
                          <input type="checkbox" class="form-check-input" id="cbTipoRepresentante">
                          <label class="form-check-label pr-2" for="cbTipoRepresentante">Representante</label>
                        </div>
                        <div class="icheck-primary form-group form-check">
                          <input type="checkbox" class="form-check-input" id="cbTipoProspecto">
                          <label class="form-check-label pr-2" for="cbTipoProspecto">Prospecto</label>
                        </div>
                        <div class="icheck-primary form-group form-check">
                          <input type="checkbox" class="form-check-input" id="cbTipoFuncionario">
                          <label class="form-check-label pr-2" for="cbTipoFuncionario">Funcionário</label>
                        </div>
                      </div>
                    </fieldset>
                  </div>

                  <div class="form-row">
                    <div class="col-md-3  col-12 form-group" id="tourcodigo">
                      <label data-error="wrong" class="labelGeral" data-success="right" for="txtCodigoCliente">Código
                      </label>
                      <input type="text" class="input-default focus form-control" id="txtCodigoCliente" aria-describedby="codError" name="txtCodigoCliente" class="form-control" placeholder="Gerado automaticamente" readonly disabled>
                    </div>
                    <div class="form-group col-md-2 col-1">
                      <label>Tipo</label>
                      <select id="rgTipoEnt" class="input-default focus custom-select select-ent">
                        <option value="" selected disabled>Selecione uma opção</option>
                      </select>
                    </div>
                    <div class="form-group group-default col-md-3 col-12">
                      <div class="relative" id="cnpjTour">
                        <label>CNPJ/CPF *</label>
                        <div class="input-group">
                          <input type="text" class="input-default focus form-control validate" id="txtCNPJModalCli" name="txtCNPJModalCli" required placeholder="CNPJ ou CPF">
                          <div class="input-group-append">
                            <button class="btn bg-danger" id="btnConsultaReceita" type="button"><i class="m-0 p-0 fas fa-solid fa-globe"></i>
                            </button>
                          </div>
                        </div>
                      </div>
                    </div>
                    <div class="form-group col-md-2 col-12">
                      <label>Data de cadastro</label>
                      <input type="date" max="2500-12-31" class="input-default focus form-control" id="txtDataCadastro">
                    </div>
                    <div class="form-group col-md-2 col-12 d-none">
                      <label>Atual</label>
                      <input type="date" max="2500-12-31" class="input-default focus form-control" id="txtDataAlteracao">
                    </div>
                    <div class="form-group col-md-2 col-12">
                      <label>Data de nascimento</label>
                      <input type="date" max="2500-12-31" class="input-default focus form-control" id="txtDataNascimento" name="txtDataNascimento">
                    </div>
                    <div class="form-group col-md-1 col-1 d-none" style="margin-top:8px;">
                      <label></label>
                      <input type="text" max="2500-12-31" class="input-default focus form-control" id="txtClassificacao">
                    </div>
                  </div>

                  <div class="form-row">
                    <div class="form-group col-md-5" id="nomeTour">
                      <label>Nome *</label>
                      <input type="text" class="input-default focus form-control validate" id="txtNome" name="txtNome" required placeholder="Nome">
                    </div>
                    <div class="form-group col-md-5">
                      <label>Fantasia</label>
                      <input type="text" class="input-default focus form-control" name="txtFantasia" id="txtFantasia" placeholder="Fantasia">
                    </div>
                    <div class="form-group col-md-2 col-1">
                      <label>Classificação:</label>
                      <select id="rgClassificacao" class="input-default focus custom-select select-ent">
                        <option value="" selected disabled>Selecione uma opção</option>
                        <option value="A">A</option>
                        <option value="B">B</option>
                        <option value="C">C</option>
                        <option value="D">D</option>
                        <option value="E">E</option>
                        <option value="F">F</option>
                        <option value="G">G</option>
                        <option value="H">H</option>
                        <option value="I">I</option>
                      </select>
                    </div>
                  </div>
                  <div class="form-row">
                    <div class="form-group col-sm-4 col-md-4 col-12">
                      <label>Email</label>
                      <input type="email" class="input-default focus form-control" name="txtEmail" id="txtEmail" placeholder="exemplo@exemplo.com" maxlength="50">
                    </div>

                    <div class="form-group col-md-1 col-12" id="dddTelefoneTour">
                      <label>DDI: *</label>
                      <input type="text" maxlength="5" class="input-default focus form-control validate" id="txtDDI" name="txtDDI">
                    </div>
                    <div class="form-group col-sm-1 col-md-1 col-12" id="dddTelefoneTour">
                      <label>DDD *</label>
                      <input type="text" class="input-default focus form-control validate" id="txtDDD" name="txtDDD" maxlength="4" required>
                    </div>
                    <div class="form-group col-sm-3 col-md-3 col-12" id="telefoneTour">
                      <label>Telefone *</label>
                      <input type="text" class="input-default focus form-control validate" id="txtTelefone" name="txtTelefone" maxlength="20" required>
                    </div>
                    <div class="form-group col-md-3">
                      <label>Indicador da IE do destinatário</label>
                      <select id="rgIE" class="input-default custom-select">
                        <option value="" selected disabled>Selecione uma opção</option>
                        <option value="1">Contribuinte ICMS (informar a IE do destinatário)
                        </option>
                        <option value="2">Contribuinte isento de Inscrição no cadastro de
                          Contribuintes do ICMS</option>
                        <option value="9">Não Contribuinte, que pode ou não possuir
                          Inscrição Estadual no Cadastro de Contribuintes do ICMS</option>
                      </select>
                    </div>
                    <div class="form-group col-md-2 col-12">
                      <label>Status:</label>
                      <select id="selectStatus" class="input-default focus custom-select select-ent">
                        <option value="0">Ativo</option>
                        <option value="1">Inativo</option>
                        <option value="2">Inativo Irrecuperável</option>
                        <option value="3">Inativo p/ Segmento</option>
                      </select>
                    </div>
                  </div>
                  <div class="form-group">
                    <label>Observação</label>
                    <textarea style="resize: none" id="txtObsCli" placeholder="Observação" class="input-default focus form-control" rows="3"></textarea>
                  </div>
                </div>
              </div>
            </div>

            <div class="card card-header" role="tab">
              <a style="width:100%;" id="documentoaba" data-toggle="collapse" data-parent="#multiCollapseExample2" href="#multiCollapseExample2" aria-expanded="true" aria-controls="collapseOne1">
                <div class="row">
                  <div style="max-width:20px;margin-top:auto; margin-bottom: auto" class="col-1">
                    <i class="fas fa-angle-right"></i>
                  </div>
                  <div class="col-11">
                    <h4 class="title-page">
                      Documento
                    </h4>
                  </div>
                </div>
              </a>
            </div>

            <div class="collapse" id="multiCollapseExample2">
              <div class="card card-body">
                <div class="tab-pane fade show active" role="tabpanel" aria-labelledby="documento-tab">
                  <div class="form-row pt-2">
                    <div class="form-group col-md-4 col-12">
                      <label>IE</label>
                      <input type="text" class="input-default focus form-control" id="txtIE" name="txtIE" placeholder="IE">
                    </div>
                    <div class="form-group col-md-4 col-12">
                      <label>RG</label>
                      <input type="text" class="input-default focus form-control" id="txtRG" name="txtRG" placeholder="RG">
                    </div>

                    <div class="form-group col-md-4 col-12">
                      <label>Emissor</label>
                      <input type="text" class="input-default focus form-control" id="txtEmissor" name="txtEmissor" placeholder="Emissor">
                    </div>
                  </div>

                  <div class="form-row">
                    <div class="form-group col-md-6 col-6">
                      <label>Sexo</label>
                      <select id="rgSexo" class="input-default custom-select ">
                        <option value="" selected disabled>Selecione uma opção</option>
                        <option value="M">Masculino</option>
                        <option value="F">Feminino</option>
                      </select>
                    </div>
                    <div class="form-group col-md-6 col-6">
                      <label>Porte Empresa</label>
                      <select id="rgPorteEmpresa" class="input-default focus custom-select ">
                        <option value="" selected disabled>Selecione uma opção</option>
                        <option value="SA">SA</option>
                        <option value="LTDA">LTDA</option>
                        <option value="SIMPLES">SIMPLES</option>
                        <option value="ME">ME</option>
                        <option value="EPP">EPP</option>
                        <option value="NORMAL">NORMAL</option>
                        <option value="MEI">MEI</option>
                        <option value="EIRELLI">EIRELLI</option>
                      </select>
                    </div>
                  </div>
                </div>
              </div>
            </div>

            <div class="card card-header" role="tab">
              <a style="width:100%;" id="endereco" data-toggle="collapse" data-parent="#multiCollapseExample3" href="#multiCollapseExample3" aria-expanded="true" aria-controls="collapseOne1">
                <div class="row">
                  <div style="max-width:20px;margin-top:auto; margin-bottom: auto" class="col-1">
                    <i class="fas fa-angle-right"></i>
                  </div>
                  <div class="col-11">
                    <h4 class="title-page">
                      Endereço
                    </h4>
                  </div>
                </div>
              </a>
            </div>
            <div class="collapse" id="multiCollapseExample3">
              <div class="card card-body">
                <div class="card card-header" role="tab">
                  <a style="width:100%;" id="EnderecoGeral" data-toggle="collapse" data-parent="#enderecoGeral" href="#enderecoGeral" aria-expanded="true" aria-controls="collapseOne1">
                    <div class="row">
                      <div style="max-width:20px;margin-top:auto; margin-bottom: auto" class="col-1">
                        <i class="fas fa-angle-right"></i>
                      </div>
                      <div class="col-11">
                        <h4 class="title-page">
                          Geral
                        </h4>
                      </div>
                    </div>
                  </a>
                </div>
                <div class="collapse" id="enderecoGeral">
                  <div class="card-body">
                    <div class="pt-2 form-row">
                      <div class="form-group col-12">
                        <label data-error="wrong" data-success="right" for="txtPais">País *
                        </label>
                        <div class="input-group">
                          <input type="text" autocomplete="off" class="input-default focus form-control validate" id="txtPais" name="txtPais" required placeholder="País *">
                          <div class="input-group-append">
                            <button class="btn bg-danger" id="btn-pais-entidade" name="btn-pais-entidade" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                            <button class="btn bg-danger" id="btn-limpar-pais-entidade" name="btn-limpar-pais-entidade" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                          </div>
                        </div>
                      </div>
                      <div class="form-group col-md-4 col-12" id="cepTour">
                        <label>Cep *</label>
                        <div class="input-group">
                          <input type="text" class="input-default focus form-control validate" id="txtCep" name="txtCep" required>
                          <div class="input-group-append">
                            <button class="btn bg-danger" id="btnCep" name="btnCep" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                            <button class="btn bg-danger" id="btnLimpaCep" name="btnLimpaCep" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                          </div>
                        </div>
                      </div>
                      <div class="form-group col-md-4 col-12">
                        <label>Cidade</label>
                        <input type="text" class="input-default focus form-control" name="txtCidade" id="txtCidade" placeholder="Cidade" readonly>
                      </div>
                      <div class="form-group col-md-4 col-12">
                        <label>UF</label>
                        <input type="text" class="input-default focus form-control" name="txtUF" id="txtUF" placeholder="UF" readonly>
                      </div>
                    </div>
                    <div class="form-group">
                      <label>Rua *</label>
                      <input type="text" class="input-default focus form-control" name="txtRua" id="txtRua" placeholder="Rua" required>
                    </div>
                    <div class="form-row">
                      <div class="form-group col-md-6 col-12">
                        <label>Número *</label>
                        <input type="text" class="input-default focus form-control" name="txtNumeroCliente" id="txtNumeroCliente" placeholder="Número" required>
                      </div>
                      <div class="form-group col-md-6 col-12">
                        <label>Bairro *</label>
                        <input type="text" class="input-default focus form-control" name="txtBairro" id="txtBairro" placeholder="Bairro" required>
                      </div>
                      <div class="form-group col-md-12 col-12">
                        <label>Complemento</label>
                        <input type="text" class="input-default focus form-control" name="txtComplemento" id="txtComplemento" placeholder="Complemento">
                      </div>
                    </div>
                  </div>
                </div>

                <div class="card card-header" role="tab">
                  <a style="width:100%;" id="entrega" data-toggle="collapse" data-parent="#enderecoEntrega" href="#enderecoEntrega" aria-expanded="true" aria-controls="collapseOne1">
                    <div class="row">
                      <div style="max-width:20px;margin-top:auto; margin-bottom: auto" class="col-1">
                        <i class="fas fa-angle-right"></i>
                      </div>
                      <div class="col-11">
                        <h4 class="title-page">
                          Entrega
                        </h4>
                      </div>
                    </div>
                  </a>
                </div>
                <div class="collapse" id="enderecoEntrega">
                  <div class="card-body">
                    <div class="pt-2 form-row" id="endereco_entrega_geral">
                      <div class="form-group col-12" id="cepTour">
                        <div class="form-row pt-2">
                          <div class="form-group col-md-4 col-12">
                            <label>Cep</label>
                            <div class="input-group">
                              <input type="text" class="input-default focus form-control" id="txtCepEntrega" name="txtCepEntrega">
                              <div class="input-group-append">
                                <button class="btn bg-danger" id="btnCepEntrega" name="btnCepEntrega" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                                <button class="btn bg-danger" id="btnLimpaCepEntrega" name="btnLimpaCepEntrega" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                              </div>
                            </div>
                          </div>
                          <div class="form-group col-md-4 col-12">
                            <label>Cidade</label>
                            <input type="text" class="input-default focus form-control" id="txtCidadeEntrega" name="txtCidadeEntrega" placeholder="Cidade" readonly>
                          </div>
                          <div class="form-group col-md-4 col-12">
                            <label>UF</label>
                            <input type="text" class="input-default focus form-control" id="txtUFEntrega" name="txtUFEntrega" placeholder="UF" readonly>
                          </div>
                        </div>
                        <div class="form-group">
                          <label>Rua</label>
                          <input type="text" class="input-default focus form-control" id="txtRuaEntrega" name="txtRuaEntrega" placeholder="Rua">
                        </div>
                        <div class="form-row">
                          <div class="form-group col-md-3 col-12">
                            <label>Número</label>
                            <input type="text" class="input-default focus form-control" id="txtNumeroEntrega" name="txtNumeroEntrega" placeholder="Número">
                          </div>
                          <div class="form-group col-md-3 col-12">
                            <label>Bairro</label>
                            <input type="text" class="input-default focus form-control" id="txtBairroEntrega" name="txtBairroEntrega" placeholder="Bairro">
                          </div>

                          <div class="form-group col-md-3 col-12">
                            <label>Inscrição</label>
                            <input type="text" class="input-default focus form-control" id="txtInscEnt" name="txtInscEnt" placeholder="Inscrição">
                          </div>
                          <div class="form-group col-md-3 col-12">
                            <label>CNPJ</label>
                            <input type="text" class="input-default focus form-control" id="txtCNPJEnt" name="txtCNPJEnt" placeholder="CNPJ">
                          </div>
                          <div class="form-group col-md-12 col-12">
                            <label>Complemento</label>
                            <input type="text" class="input-default focus form-control" id="txtComplementoEntrega" name="txtComplementoEntrega" placeholder="Complemento">
                          </div>
                        </div>

                      </div>
                    </div>
                  </div>
                </div>
                <div class="card card-header" role="tab">
                  <a style="width:100%;" id="cobranca" data-toggle="collapse" data-parent="#enderecoCobranca" href="#enderecoCobranca" aria-expanded="true" aria-controls="collapseOne1">
                    <div class="row">
                      <div style="max-width:20px;margin-top:auto; margin-bottom: auto" class="col-1">
                        <i class="fas fa-angle-right"></i>
                      </div>
                      <div class="col-11">
                        <h4 class="title-page">
                          Cobrança
                        </h4>
                      </div>
                    </div>
                  </a>
                </div>
                <div class="collapse" id="enderecoCobranca">
                  <div class="card-body">
                    <div class="pt-2 form-row" id="endereco_cobranca_geral">
                      <div class="form-group col-12" id="cepTour">
                        <div class="pt-2 form-row">
                          <div class="form-group col-md-4 col-12">
                            <label>Cep</label>
                            <div class="input-group">
                              <input type="text" class="input-default focus form-control" id="txtCepCobranca" name="txtCepCobranca">
                              <div class="input-group-append">
                                <button class="btn bg-danger" id="btnCepCobranca" name="btnCepCobranca" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                                <button class="btn bg-danger" id="btnLimpaCepCobranca" name="btnLimpaCepCobranca" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                              </div>
                            </div>
                          </div>
                          <div class="form-group col-md-4 col-12">
                            <label>Cidade</label>
                            <input type="text" class="input-default focus form-control" id="txtCidadeCobranca" name="txtCidadeCobranca" placeholder="Cidade" readonly>
                          </div>
                          <div class="form-group col-md-4 col-12">
                            <label>UF</label>
                            <input type="text" class="input-default focus form-control" id="txtUFCobranca" name="txtUFCobranca" placeholder="UF" readonly>
                          </div>
                        </div>
                        <div class="form-group">
                          <label>Rua</label>
                          <input type="text" class="input-default focus form-control" id="txtRuaCobranca" name="txtRuaCobranca" placeholder="Rua">
                        </div>
                        <div class="form-row">
                          <div class="form-group col-md-3 col-12">
                            <label>Número</label>
                            <input type="text" class="input-default focus form-control" id="txtNumeroCobranca" name="txtNumeroCobranca" placeholder="Número">
                          </div>
                          <div class="form-group col-md-3 col-12">
                            <label>Bairro</label>
                            <input type="text" class="input-default focus form-control" id="txtBairroCobranca" name="txtBairroCobranca" placeholder="Bairro">
                          </div>
                          <div class="form-group col-md-3 col-12">
                            <label>Inscrição</label>
                            <input type="text" class="input-default focus form-control" id="txtInscCob" name="txtInscCob" placeholder="Inscrição">
                          </div>
                          <div class="form-group col-md-3 col-12">
                            <label>CNPJ</label>
                            <input type="text" class="input-default focus form-control" id="txtCNPJCob" name="txtCNPJCob" placeholder="CNPJ">
                          </div>
                          <div class="form-group col-md-12 col-12">
                            <label>Complemento</label>
                            <input type="text" class="input-default focus form-control" id="txtComplementoCobranca" name="txtComplementoCobranca" placeholder="Complemento">
                          </div>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            <div class="card card-header" role="tab">
              <a style="width:100%;" id="venda" data-toggle="collapse" data-parent="#multiCollapseExample4" href="#multiCollapseExample4" aria-expanded="true" aria-controls="collapseOne1">
                <div class="row">
                  <div style="max-width:20px;margin-top:auto; margin-bottom: auto" class="col-1">
                    <i class="fas fa-angle-right"></i>
                  </div>
                  <div class="col-11">
                    <h4 class="title-page">
                      Venda
                    </h4>
                  </div>
                </div>
              </a>
            </div>
            <div class="collapse" id="multiCollapseExample4">
              <div class="card card-body">
                <div class="tab-pane fade show active" role="tabpanel" aria-labelledby="venda-tab">
                  <div class="pt-2 form-row">

                    <div class="col-5 col-md-5" id="GrupoInfoTour">
                      <label data-error="wrong" data-success="right" for="txtRepresentante-modal"><a id="lblRepresentantes" style="text-decoration: underline" class="hover-overlay" target="_blank">Representante</a></label>
                      <div class="input-group">
                        <input type="text" autocomplete="off" class="input-default focus form-control" id="txtRepresentante-modal" name="txtRepresentante-modal" class="form-control" placeholder="Representante">
                        <div class="input-group-append">
                          <button class="btn bg-danger" id="btn-representante-modal" name="btn-representante-modal" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                          <button class="btn bg-danger" id="btn-Arepresentante-modal" name="btn-Arepresentante-modal" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                        </div>
                      </div>
                    </div>

                    <div class="col-5 col-md-5" id="GrupoInfoTour">
                      <label data-error="wrong" data-success="right" for="txtTabela-modal">Tabela</label>
                      <div class="input-group">
                        <input type="text" autocomplete="off" class="input-default focus form-control" id="txtTabela-modal" name="txtTabela-modal" class="form-control" placeholder="Tabela">
                        <div class="input-group-append">
                          <button class="btn bg-danger" id="btn-tabela-modal" name="btn-tabela-modal" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                          <button class="btn bg-danger" id="btn-Atabela-modal" name="btn-Atabela-modal" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                        </div>
                      </div>
                    </div>

                    <div class="form-group col-md-2 col-12">
                      <label>% Desconto</label>
                      <input type="text" class="input-default focus form-control" id="txtPercDescontoModal" maxlength="2">
                    </div>

                  </div>
                  <div class="form-row">
                    <div class="form-group col-md-3 col-12">
                      <label>Crédito Grupo</label>
                      <input type="number" class="input-default focus form-control" id="txtCreditoGrupoModal" min="0" disabled>
                    </div>
                    <div class="form-group col-md-3 col-12">
                      <label>Limite Crédito</label>
                      <input type="number" class="input-default focus form-control" id="txtLimiteCredito" min="0">
                    </div>
                    <div class="form-group col-md-3 col-12">
                      <label>Limite Usado</label>
                      <input type="number" class="input-default focus form-control" id="txtLimiteUsado" min="0" disabled>
                    </div>
                    <div class="form-group col-md-3 col-12">
                      <label>Limite Disponível</label>
                      <input type="number" class="input-default focus form-control" id="txtLimiteDisponivel" min="0" disabled>
                    </div>
                  </div>
                  <div class="form-row">
                    <div class="form-group col-md-3 col-12">
                      <label>Limite Fidelidade</label>
                      <input type="number" class="input-default focus form-control" id="txtLimiteFidelidade" min="0">
                    </div>
                    <div class="form-group col-md-3 col-12">
                      <label>Limite Usado</label>
                      <input type="number" class="input-default focus form-control" id="txtLimiteFidelidadeUsado" min="0" disabled>
                    </div>
                    <div class="form-group col-md-3 col-12">
                      <label>Limite Disponível</label>
                      <input type="number" class="input-default focus form-control" id="txtLimiteFidelidadeDisponivel" min="0" disabled>
                    </div>
                    <div class="form-group col-md-3 col-12">
                      <input type="checkbox" class="form-check-input" id="cbIntegraShop" style="margin-top: 31px; margin-left: 1px;">
                      <label class="form-check-label pr-2" for="cbIntegraShop" style="margin-top: 26px; margin-left: 20px;">Não integrar com Sistema do Shopping</label>
                    </div>
                  </div>
                </div>
              </div>
            </div>

            <div class="card card-header" role="tab">
              <a style="width:100%;" id="venda" data-toggle="collapse" data-parent="#multiCollapseContábil" href="#multiCollapseContábil" aria-expanded="true" aria-controls="collapseOne1">
                <div class="row">
                  <div style="max-width:20px;margin-top:auto; margin-bottom: auto" class="col-1">
                    <i class="fas fa-angle-right"></i>
                  </div>
                  <div class="col-11">
                    <h4 class="title-page">
                      Contábil
                    </h4>
                  </div>
                </div>
              </a>
            </div>
            <div class="collapse" id="multiCollapseContábil">
              <div class="card card-body">
                <div class="tab-pane fade show active" role="tabpanel" aria-labelledby="venda-tab">
                  <div class="pt-2 form-row" style="margin-bottom: 1.5%">

                    <div class="col-6" id="GrupoInfoTour">
                      <label data-error="wrong" data-success="right" for="txtContaClienteModal">Conta Cliente
                      </label>
                      <div class="input-group">
                        <input type="text" autocomplete="off" class="input-default focus form-control" id="txtContaClienteModal" name="txtContaClienteModal" class="form-control" placeholder="Conta Cliente">
                        <div class="input-group-append">
                          <button class="btn bg-danger" id="btn-contaclienteModal" name="btn-contacliente" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                          <button class="btn bg-danger" id="btn-limpa-contaclienteModal" name="btn-limpa-contaclienteModal" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                        </div>
                      </div>
                    </div>

                    <div class="col-6" id="GrupoInfoTour">
                      <label data-error="wrong" data-success="right" for="ContaFornecedorModal">Conta Fornecedor
                      </label>
                      <div class="input-group">
                        <input type="text" autocomplete="off" class="input-default focus form-control" id="txtContaFornecedorModal" name="txtContaFornecedorModal" class="form-control" placeholder="Conta Fornecedor">
                        <div class="input-group-append">
                          <button class="btn bg-danger" id="btn-contafornecedorModal" name="btn-contafornecedor" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                          <button class="btn bg-danger" id="btn-limpa-contafornecedorModal" name="btn-limpa-contafornecedorModal" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                        </div>
                      </div>
                    </div>

                    <div class="col-6" id="GrupoInfoTour">
                      <label data-error="wrong" data-success="right" for="ContaCAdiantamentoModal">Conta C. Adiantamento
                      </label>
                      <div class="input-group">
                        <input type="text" autocomplete="off" class="input-default focus form-control" id="txtContaCAdiantamentoModal" name="txtContaCAdiantamentoModal" class="form-control" placeholder="Conta Cliente Adiantamento">
                        <div class="input-group-append">
                          <button class="btn bg-danger" id="btn-CadiantamentoModal" name="btn-Cadiantamento" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                          <button class="btn bg-danger" id="btn-limpa-CadiantamentoModal" name="btn-limpa-CadiantamentoModal" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                        </div>
                      </div>
                    </div>

                    <div class="col-6" id="GrupoInfoTour">
                      <label data-error="wrong" data-success="right" for="ContaFAdiantamentoModal">Conta F. Adiantamento
                      </label>
                      <div class="input-group">
                        <input type="text" autocomplete="off" class="input-default focus form-control" id="txtContaFAdiantamentoModal" name="txtContaFAdiantamentoModal" class="form-control" placeholder="Conta Fornecedor Adiantamento">
                        <div class="input-group-append">
                          <button class="btn bg-danger" id="btn-FadiantamentoModal" name="btn-Fadiantamento" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                          <button class="btn bg-danger" id="btn-limpa-FadiantamentoModal" name="btn-limpa-FadiantamentoModal" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                        </div>
                      </div>
                    </div>

                    <div class="col-6" id="GrupoInfoTour">
                      <label data-error="wrong" data-success="right" for="txtContaCDevolucaoModal">Conta C.Devolução
                      </label>
                      <div class="input-group">
                        <input type="text" autocomplete="off" class="input-default focus form-control" id="txtContaCDevolucaoModal" name="txtContaCDevolucaoModal" class="form-control" placeholder="Conta Cliente Devolução">
                        <div class="input-group-append">
                          <button class="btn bg-danger" id="btn-CdevolucaoModal" name="btn-Cdevolucao" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                          <button class="btn bg-danger" id="btn-limpa-CdevolucaoModal" name="btn-limpa-CdevolucaoModal" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                        </div>
                      </div>
                    </div>

                    <div class="col-6" id="GrupoInfoTour">
                      <label data-error="wrong" data-success="right" for="txtContaFDevolucaoModal">Conta F. Devolução
                      </label>
                      <div class="input-group">
                        <input type="text" autocomplete="off" class="input-default focus form-control" id="txtContaFDevolucaoModal" name="txtContaFDevolucaoModal" class="form-control" placeholder="Conta Fornecedor Devolução">
                        <div class="input-group-append">
                          <button class="btn bg-danger" id="btn-FdevolucaoModal" name="btn-Fdevolucao" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                          <button class="btn bg-danger" id="btn-limpa-FdevolucaoModal" name="btn-limpa-FdevolucaoModal" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                        </div>
                      </div>
                    </div>

                    <div class="col-6" id="GrupoInfoTour">
                      <label data-error="wrong underline" data-success="right" href="" for="txtMoeda"><a id="lblMoeda" style="text-decoration: underline" class="hover-overlay" target="_blank">Moedas:</a>
                      </label>
                      <div class="input-group">
                        <select class="js-example-programmatic js-states form-control" id="txtMoedaModal" name="txtMoedaModal" multiple="multiple"> </select>
                        <!-- <input type="text" autocomplete="off" class="input-default focus form-control" id="txtContaFDevolucao" name="txtContaFDevolucao" class="form-control" placeholder="Conta Fornecedor Devolução"> -->
                        <div class="input-group-append">
                          <button class="btn bg-danger" id="btnMoedaModal" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                          <button class="btn bg-danger" id="btn-limpa-moedaModal" name="btn-limpa-moedaModal" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                        </div>
                      </div>
                    </div>

                  </div>

                </div>
              </div>
            </div>


            <div class="card card-header" role="tab">
              <a style="width:100%;" id="Adicionais" data-toggle="collapse" data-parent="#multiCollapseExample5" href="#multiCollapseExample5" aria-expanded="true" aria-controls="collapseOne1">
                <div class="row">
                  <div style="max-width:20px;margin-top:auto; margin-bottom: auto" class="col-1">
                    <i class="fas fa-angle-right"></i>
                  </div>
                  <div class="col-11">
                    <h4 class="title-page">
                      Adicionais
                    </h4>
                  </div>
                </div>
              </a>
            </div>
            <div class="collapse" id="multiCollapseExample5">
              <div class="card card-body">
                <div class="tab-pane fade show active" role="tabpanel" aria-labelledby="adicionais-tab">
                  <div class="pt-2 form-row">
                    <div class="form-group col-4">
                      <label>Local de Trabalho</label>
                      <input type="text" class="input-default focus form-control validate" id="txtLocalTrab" name="txtLocalTrab" placeholder="Local de Trabalho" maxlength="50">
                      <input type="text" class="input-default focus form-control validate" id="txtRegiao" name="txtRegiao" placeholder="Região" hidden>
                    </div>
                    <div class="form-group col-4" id="ClasseInfoTour">
                      <label data-error="wrong" data-success="right" for="txtClasse">Classe *</label>
                      <div class="input-group">
                        <input type="text" autocomplete="off" class="input-default focus form-control" id="txtClasse" name="txtClasse" class="form-control" placeholder="Classe">
                        <div class="input-group-append">
                          <button class="btn bg-danger" id="btn-Classe" name="btn-Classe" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                          <button class="btn bg-danger" id="btn-limpa-Classe" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                        </div>
                      </div>
                    </div>
                    <div class="form-group col-4" id="ClasseInfoTour">
                      <label data-error="wrong" data-success="right" for="txtConfXMLModal">Conf. XML</label>
                      <div class="input-group">
                        <input type="text" autocomplete="off" class="input-default focus form-control" id="txtConfXMLModal" name="txtConfXMLModal" class="form-control" placeholder="Conf. XML">
                        <div class="input-group-append">
                          <button class="btn bg-danger" id="btnConfXMLModal" name="btnConfXMLModal" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                          <button class="btn bg-danger" id="btnLimpaConfXMLModal" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                        </div>
                      </div>
                    </div>
                    <div class="form-group col-4" id="nomepaitour">
                      <label> Nome Pai</label>
                      <input type="text" class="input-default focus form-control validate" id="txtNomePai" name="txtNomePai" placeholder="Nome Pai" maxlength="50">
                    </div>
                    <div class="form-group col-4" id="nomemaetour">
                      <label> Nome Mãe</label>
                      <input type="text" class="input-default focus form-control validate" id="txtNomeMae" name="txtNomeMae" placeholder="Nome Mãe" maxlength="50">
                    </div>
                    <div class="col-4" id="GrupoInfoTour">
                      <label data-error="wrong underline" data-success="right" href="" for="txtSetor"><a id="lblSetor" style="text-decoration: underline" class="hover-overlay" target="_blank">Setor:</a>
                      </label>
                      <div class="input-group">
                        <select class="js-example-programmatic js-states form-control" id="txtSetor" name="txtSetor" multiple="multiple"> </select>
                        <div class="input-group-append">
                          <button class="btn bg-danger d-none" id="btnSetor" name="btnSetor" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                          <button class="btn bg-danger d-none" id="btnLimpaSetor" name="btnLimpaSetor" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                        </div>
                      </div>
                    </div>

                    <div class="form-group col-4" id="estadociviltour">
                      <label> Estado Civil</label>
                      <input type="text" class="input-default focus form-control validate" id="txtEstadoCivil" name="txtEstadoCivil" placeholder="Estado Civil" maxlength="50">
                    </div>
                    <div class="form-group col-4" id="rendatour">
                      <label> Renda</label>
                      <input type="text" class="input-default focus form-control validate" id="txtRenda" name="txtRenda" placeholder="Renda" value="0.00" maxlength="50">
                    </div>
                    <div class="form-group col-4" id="dtadmissaotour">
                      <label> Data Admissão</label>
                      <input type="date" max="2500-12-31" class="input-default focus form-control validate" id="txtDtAdmissao" name="txtDtAdmissao" value="1899-12-30" maxlength="50">
                    </div>
                    <div class="form-group col-md-4">
                      <label>Tributação</label>
                      <select id="rgTributacao" class="input-default focus custom-select">
                        <option value="" selected>Selecione uma opção</option>
                        <option value="A">A - Normal s/ Substituição</option>
                        <option value="N">N - Normal c/ Substituição - Regime Normal</option>
                        <option value="L">L - Normal c/ Substituição - Simples Nacional</option>
                        <option value="D">D - Diferenciada c/ Substituição</option>
                        <option value="S">S - Simples</option>
                        <option value="R">R - Simples s/ Inscrição Estatual</option>
                        <option value="C">C - Carga Média</option>
                        <option value="P">P - Substituição com Alíq.Simples</option>
                      </select>
                    </div>
                    <div class="form-group col-4" id="GrupoInfoTour">
                      <label data-error="wrong" data-success="right" for="txtGrupo">Grupo</label>
                      <div class="input-group">
                        <input type="text" autocomplete="off" class="input-default focus form-control" id="txtGrupo" name="txtGrupo" class="form-control" placeholder="Grupo">
                        <div class="input-group-append">
                          <button class="btn bg-danger" id="btn-Grupo" name="btn-Grupo" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                          <button class="btn bg-danger" id="btn-AGrupo" name="btn-AGrupo" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                        </div>
                      </div>
                    </div>
                    <div class="form-group col-4" id="PerfilInfoTour">
                      <label data-error="wrong" data-success="right" for="txtPerfil">Perfil</label>
                      <div class="input-group">
                        <input type="text" autocomplete="off" class="input-default focus form-control" id="txtPerfil" name="txtPerfil" class="form-control" placeholder="Perfil">
                        <div class="input-group-append">
                          <button class="btn bg-danger" id="btnPerfil" name="btnPerfil" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                          <button class="btn bg-danger" id="btnLimpaPerfil" name="btnLimpaPerfil" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                        </div>
                      </div>
                    </div>
                    <div class="form-group col-4" id="BancoInfoTour">
                      <!-- <label data-error="wrong" data-success="right" for="txtBanco"><a id="lblBanco" style="text-decoration: underline" class="hover-overlay" target="_blank">Banco:</a></label> -->
                      <label data-error="wrong" data-success="right" for="txtBanco">Banco:</label>
                      <div class="input-group">
                        <input type="text" autocomplete="off" class="input-default focus form-control" id="txtBanco" name="txtBanco" placeholder="Banco">
                        <div class="input-group-append">
                          <button class="btn bg-danger" id="btn-Banco" name="btn-Banco" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                          <button class="btn bg-danger" id="btn-ABanco" name="btn-ABanco" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                        </div>
                      </div>
                    </div>
                    <div class="form-group col-4" id="ContaInfoTour">
                      <label data-error="wrong" data-success="right" for="txtConta">Conta:</label>
                      <div class="input-group">
                        <input type="text" autocomplete="off" class="input-default focus form-control" id="txtConta" name="txtConta" placeholder="Conta">
                        <div class="input-group-append">
                          <button class="btn bg-danger" id="btn-Conta" name="btn-Conta" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                          <button class="btn bg-danger" id="btn-AConta" name="btn-AConta" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                        </div>
                      </div>
                    </div>
                    <div class="form-group col-4">
                      <label> Agência:</label>
                      <input type="text" class="input-default focus form-control validate" id="txtAgencia" name="txtAgencia" placeholder="Agência">
                    </div>
                    <div class="form-group col-md-4">
                      <label>Tipo Frete</label>
                      <select id="rgTipoFrete" class="input-default focus custom-select">
                        <option value="" selected>Selecione uma opção</option>
                        <option value="0">0 - Contratação do Frete por conta do Remetente (CIF)</option>
                        <option value="1">1 - Contratação do Frete por conta do Destinatário (FOB)</option>
                        <option value="2">2 - Contratação do Frete por conta de Terceiros</option>
                        <option value="3">3 - Transporte Próprio por conta do Remetente</option>
                        <option value="4">4 - Transporte Próprio por conta do Destinatário</option>
                        <option value="9">9 - Sem Ocorrência de Transporte</option>
                      </select>
                    </div>
                    <div class="form-group col-4">
                      <label data-error="wrong" data-success="right" for="txtTransportadoraModal">Transportadora</label>
                      <div class="input-group">
                        <input type="text" autocomplete="off" class="input-default focus form-control" id="txtTransportadoraModal" name="txtTransportadoraModal" placeholder="Transportadora">
                        <div class="input-group-append">
                          <button class="btn bg-danger" id="btnPesquisaTransportadoraModal" name="btnPesquisaTransportadoraModal" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                          <button class="btn bg-danger" id="btnLimpaTransportadoraModal" name="btnLimpaTransportadoraModal" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                        </div>
                      </div>
                    </div>
                    <div class="form-group col-4">
                      <label data-error="wrong" data-success="right" for="txtCodImportado">Código Importado</label>
                      <div class="input-group">
                        <input type="text" autocomplete="off" class="input-default focus form-control" id="txtCodImportado" placeholder="Código Importado" disabled>
                      </div>
                    </div>
                    <div class="form-group col-4">
                      <label data-error="wrong" data-success="right" for="txtCnae">CNAE</label>
                      <div class="input-group">
                        <input type="text" autocomplete="off" class="input-default focus form-control cnaeModalEntidade" id="txtCnae" name="txtCnae" placeholder="CNAE">
                        <div class="input-group-append">
                          <button class="btn bg-danger cnaeModalEntidade" id="btnCnae" name="btnCnae" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                          <button class="btn bg-danger cnaeModalEntidade" id="btnLimpaCnae" name="btnLimpaCnae" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                        </div>
                      </div>
                    </div>
                    <div class="form-group col-12" id="MidiasSociaisInfoTour" style="margin-bottom: 8px;">
                      <label data-error="wrong" data-success="right" for="txtMidiaSocial">Midias Sociais</label>
                      <div class="input-group">
                        <textarea style="resize: none" id="txtMidiaSocial" maxlength="1000" placeholder="Midias Sociais" class="input-default focus form-control" rows="3"></textarea>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            <div class="card card-header" role="tab">
              <a style="width:100%;" id="venctoDup" data-toggle="collapse" data-parent="#multiCollapseExample6" href="#multiCollapseExample6" aria-expanded="true" aria-controls="collapseOne1">
                <div class="row">
                  <div style="max-width:20px;margin-top:auto; margin-bottom: auto" class="col-1">
                    <i class="fas fa-angle-right"></i>
                  </div>
                  <div class="col-11">
                    <h4 class="title-page">
                      Dados Faturamento / Certificações
                    </h4>
                  </div>
                </div>
              </a>
            </div>
            <div class="collapse" id="multiCollapseExample6">
              <div class="card card-body">
                <div class="tab-pane fade show active" role="tabpanel" aria-labelledby="venda-tab">
                  <div class="pt-2 form-row" style="margin-bottom: 1.5%">

                    <div class="col-12 form">
                      <fieldset class="form border-FieldModal mb-0 pb-0 h-100">
                        <legend class="textoBordaModal mb-0 pb-0">Suframa</legend>

                        <div class="form-row col-md-12" style="margin-top: 1px;">
                          <div class="flex form-group px-0 mb-2 col-12">
                            <div class="form-group col-3" id="Suframatour">
                              <label><a style="text-decoration: underline" href="https://servicos.suframa.gov.br/servicos/" target="_blank">Suframa</a></label>
                              <input type="text" class="input-default focus form-control validate" id="txtSuframa" name="txtSuframa" placeholder="Suframa">
                            </div>
                            <div class="form-group col-3" id="ValidadeSuframatour">
                              <label>Validade</label>
                              <input type="date" class="input-default focus form-control validate" id="txtValidadeSuframa" name="txtValidadeSuframa">
                            </div>
                            <div class="flex form-group mt-4 pt-3">
                              <div class="icheck-primary">
                                <input type="checkbox" class="form-check-input" id="cbBenefIcms">
                                <label class="form-check-label" for="cbBenefIcms">Benefício ICMS</label>
                              </div>
                              <div class="icheck-primary">
                                <input type="checkbox" class="form-check-input" id="cbBenefPis">
                                <label class="form-check-label" for="cbBenefPis">Benefício PIS</label>
                              </div>
                              <div class="icheck-primary">
                                <input type="checkbox" class="form-check-input" id="cbBenefCofins">
                                <label class="form-check-label" for="cbBenefCofins">Benefício COFINS</label>
                              </div>
                            </div>
                          </div>
                        </div>

                      </fieldset>
                    </div>

                  </div>
                </div>
              </div>
            </div>

            <div class="card card-header" role="tab" id="Contato">
              <a style="width:100%;" data-toggle="collapse" data-parent="#multiCollapseContato" href="#multiCollapseContato" aria-expanded="true" aria-controls="collapseOne1">
                <div class="row">
                  <div style="max-width:20px;margin-top:auto; margin-bottom: auto" class="col-1">
                    <i class="fas fa-angle-right"></i>
                  </div>
                  <div class="col-11">
                    <h4 class="title-page">
                      Contato
                    </h4>
                  </div>
                </div>
              </a>
            </div>
            <div class="collapse" id="multiCollapseContato">
              <div class="tab-pane fade show active" role="tabpanel" aria-labelledby="Contato-tab">
                <div class="col-md-12 col-12">
                  <div class="col-md-auto col-12 form mt-2" id="tipos">
                    <fieldset class="form border-Field mb-0 pb-0">
                      <legend class="textoBorda mb-0 pb-0">Opções:</legend>
                      <div class="form-row ml-2 mb-2">
                        <div class="icheck-primary">
                          <input type="radio" class="form-check-input" checked name="tipocontato" id="cbPessoaFisica">
                          <label class="form-check-label pr-2" for="cbPessoaFisica">Cliente</label>
                        </div>
                        <div class="icheck-primary">
                          <input type="radio" class="form-check-input" name="tipocontato" id="cbPessoaJuridica">
                          <label class="form-check-label pr-5" for="cbPessoaJuridica">Fornecedor</label>
                        </div>
                        <div class="icheck-primary">
                          <input type="checkbox" class="form-check-input" checked name="cbMaladireta" id="cbMaladireta">
                          <label class="form-check-label pr-2" for="cbMaladireta">Mala Direta</label>
                        </div>
                        <div class="icheck-primary">
                          <input type="checkbox" class="form-check-input" name="cbWhatsApp" id="cbWhatsApp">
                          <label class="form-check-label pr-2" for="cbWhatsApp">Autoriza WhatsApp</label>
                        </div>
                        <div class="icheck-primary">
                          <input type="checkbox" class="form-check-input" name="cbEmail" id="cbEmail">
                          <label class="form-check-label pr-2" for="cbEmail">Autoriza E-mail</label>
                        </div>
                      </div>
                    </fieldset>
                  </div>

                  <div class="col-md-12 col-lg-2 col-12 mb-2">
                    <label data-error="wrong" class="labelGeral" data-success="right" for="txtNumeroContato">Número: </label>
                    <input type="text" disabled class="input-default focus form-control" id="txtNumeroContato" name="txtNumeroContato" class="form-control" placeholder="Gerado Automaticamente"></input>
                  </div>
                  <div class="col-md-12 col-lg-6 col-12 mb-2">
                    <label data-error="wrong" class="labelGeral" data-success="right" for="txtNomeContato">Nome: * </label>
                    <input type="text" class="input-default focus form-control" disabled id="txtNomeContato" name="txtNomeContato" placeholder="Nome" class="form-control"></input>
                  </div>
                  <div class="col-md-12 col-lg-4 col-sm-12 col-12 mb-2">
                    <label data-error="wrong" class="labelGeral" data-success="right" for="txtCPFCNPJContato">CPF/CPNJ:</label>
                    <input type="text" class="input-default focus form-control mt-0" disabled id="txtCPFCNPJContato" name="txtCPFCNPJContato" placeholder="CPF/CNPJ" class="form-control"></input>
                  </div>
                  <div class="col-lg-3 col-md-12 col-sm-6 col-12 mb-2 form-group">
                    <label data-error="wrong" class="labelGeral" data-success="right" for="txtCelularContato">Celular: </label>
                    <div class="relative">
                      <div class="input-group">
                        <input type="text" class="input-default focus form-control" disabled id="txtCelularContato" name="txtCelularContato" placeholder="Celular" class="form-control" />

                        <div class="input-group-append" style="position: relative;">
                          <span class="fab fa-whatsapp text-white" style="font-size: 27px; position: absolute; left: 11px; top: 48%; transform: translateY(-50%); z-index: 2; pointer-events: none;"></span>
                          <input disabled type="button" class="btn" title="Formata o número do celular. Ex.: 5547988888888." style="background-color:#25d366; height: 100%; padding-left: 30px; z-index: 1;" id="btnFormataNumero">
                        </div>
                      </div>
                    </div>

                  </div>
                  <div class="col-lg-3 col-md-12 col-sm-6 col-12 mb-2">
                    <label data-error="wrong" class="labelGeral" data-success="right" for="txtTelefoneContato">Telefone: </label>
                    <input type="text" class="input-default focus form-control" disabled id="txtTelefoneContato" name="txtTelefoneContato" placeholder="Telefone" class="form-control"></input>
                  </div>
                  <div class="col-lg-6 col-md-12 col-sm-12 col-12 mb-2">
                    <label autocomplete="off" disabled readonly class="labelGeral" id="lblEmailContato">E-mail:</label>
                    <input type="text" class="input-default focus form-control" disabled readonly id="zezinho" placeholder="exemplo@exemplo.com" maxlength="50" autocomplete="off"></input>
                  </div>

                  <div class="col-lg-8 col-md-12 col-sm-12 col-12 mb-2">
                    <label data-error="wrong" class="labelGeral" data-success="right" for="txtObsContatoEntidade">Observação:
                    </label>
                    <input type="text" class="input-default focus form-control" id="txtObsContatoEntidade" disabled name="txtObsContatoEntidade" class="form-control"></input>
                  </div>
                  <div class="col-lg-4 col-md-12 col-sm-12 col-12 mb-2">
                    <label data-error="wrong" class="labelGeral" data-success="right" for="selecTipoContatoEntidade">Tipo:
                    </label>
                    <select class="input-default focus custom-select" disabled id="selectModificacao2">
                      <option selected value="0">Agendamento</option>
                      <option value="1">Comercial</option>
                      <option value="2">Compras</option>
                      <option value="3">Estilista</option>
                      <option value="4">Financeiro</option>
                      <option value="5">Laboratório</option>
                      <option value="6">NFe</option>
                      <option value="7">Orçamento</option>
                      <option value="8">Ord.Produção</option>
                      <option value="9">Pagar</option>
                      <option value="10">Receber</option>
                      <option value="11">SAC</option>
                      <option value="12">Serviço</option>
                      <option value="13">Sócio/Gerente</option>
                      <option value="14">Vendas</option>
                      <option value="15">Qualidade</option>
                      <option value="16">Marketing</option>
                      <option value="17">Ref.Comerciais</option>
                      <option value="18">CTe</option>
                      <option value="19">Representante</option>
                      <option value="20">Facção</option>
                      <option value="21">RH</option>
                      <option value="22">Tecelagem</option>
                    </select>
                  </div>

                  <div class="col-lg-12 col-md-12 col-sm-12 col-12 mb-2">
                    <label ata-error="wrong" class="labelGeral" data-success="right" for="txtDoContato">Texto do Contato: </label>
                    <textarea class="form-control" disabled id="txtDoContato" style="resize: none; height: 120px;" placeholder="" row="20"></textarea>
                  </div>

                  <div class="col-12 table-responsive pt-3">
                    <table id="tabelaContatos" class="table table-select table-hover" width="100%">
                      <thead>
                      </thead>
                      <tbody>
                      </tbody>
                    </table>
                  </div>
                </div>

                <div class="modal-footer  justify-content-start" style="border-top: 0px;">
                  <input type="button" class="btn btn-sisp" style="background-color:yellowgreen;" id="btnIncluiContato" value="Incluir">
                  <input type="button" class="btn btn-primary btn-sisp d-none" id="btnGravaContato" value="Confirmar">
                  <input type="button" class="btn btn-primary btn-sisp" id="btnAlteraContatoDentroModal" value="Alterar">
                  <input type="button" class="btn btn-danger btn-sisp d-none" id="btnCancelarAlteracao" value="Cancelar">
                  <input type="button" class="btn btn-dark btn-sisp" id="btnDuplicarContato" value="Duplicar">
                  <input type="button" class="btn btn-danger btn-sisp" id="btnExcluirContatoModal" value="Excluir">
                </div>

              </div>
            </div>

            <div class="modal fade" id="modalVinculaSetor" tabindex="-1" role="dialog" aria-labelledby="modalCondicao" aria-hidden="true">
              <div class="modal-dialog modal-lg">
                <div class="modal-content">
                  <div class="modal-header">
                    <h4 id="modalCondicao-titulo" class="modal-title">Adicionar Setor</h4>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                      <span aria-hidden="true">&times;</span>
                    </button>
                  </div>
                  <div class="modal-body p-4">
                    <div class="row">
                      <div class="col-sm-12">
                        <div class="row">
                          <div class="col-sm-12">
                            <label style="margin-bottom: .1rem!important;" data-error="wrong" data-success="right" for="txtAddSetor">Setor:</label>
                            <div class="input-group">
                              <input type="text" class="input-default focus form-control" id="txtAddSetor" name="txtAddSetor" class="form-control" placeholder="Setor">
                              <div class="input-group-append">
                                <button class="btn bg-danger" id="btnAddSetor" name="btnAddSetor" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                                <button class="btn bg-danger" id="btnLimpaAddSetor" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                              </div>
                            </div>
                          </div>
                          <div class="col-sm-4">
                            <label style="margin-bottom: .1rem!important;" data-error="wrong" data-success="right" for="txtPerc100">Perc_100:</label>
                            <div class="input-group">
                              <input type="text" class="input-default focus form-control" id="txtPerc100" name="txtPerc100" class="form-control" placeholder="Perc_100">
                            </div>
                          </div>
                          <div class="col-sm-4">
                            <label style="margin-bottom: .1rem!important;" data-error="wrong" data-success="right" for="txtPercPontualidade">Perc_Pontualidade:</label>
                            <div class="input-group">
                              <input type="text" class="input-default focus form-control" id="txtPercPontualidade" name="txtPercPontualidade" class="form-control" placeholder="Perc_Pontualidade">
                            </div>
                          </div>
                          <div class="col-sm-4">
                            <label style="margin-bottom: .1rem!important;" data-error="wrong" data-success="right" for="txtPercQual">Perc_Qual:</label>
                            <div class="input-group">
                              <input type="text" class="input-default focus form-control" id="txtPercQual" name="txtPercQual" class="form-control" placeholder="Perc_Qual">
                            </div>
                          </div>
                          <div class="col-sm-12" style="margin-top:5px">
                            <button id="txtAdicionarSetor" type="button" class="btn btn-primary btn-block mt-2">
                              Adicionar Setor
                            </button>
                          </div>

                          <div class="col-sm-12 mt-3 pb-4 table-responsive card-body">
                            <table id="tabelaSetor" class="table table-sm table-select table-hover" width="100%">
                              <thead>
                                <th>Código</th>
                                <th>Descrição</th>
                                <th>Perc_100</th>
                                <th>Perc_Pontualidade</th>
                                <th>Perc_Qual</th>
                              </thead>
                              <tbody>
                              </tbody>
                            </table>
                          </div>

                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            <div class="modal fade" id="modalVinculaMoeda" tabindex="-1" role="dialog" aria-labelledby="modalVinculaMoeda" aria-hidden="true">
              <div class="modal-dialog modal-lg">
                <div class="modal-content">
                  <div class="modal-header">
                    <h4 id="modalCondicao-titulo" class="modal-title">Adicionar Moeda</h4>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                      <span aria-hidden="true">&times;</span>
                    </button>
                  </div>
                  <div class="modal-body p-4">
                    <div class="row">
                      <div class="col-sm-12">
                        <div class="row">
                          <div class="col-sm-12">
                            <label style="margin-bottom: .1rem!important;" data-error="wrong" data-success="right" for="txtAddMoeda">Moeda:</label>
                            <div class="input-group">
                              <input type="text" class="input-default focus form-control" id="txtAddMoeda" name="txtAddMoeda" class="form-control" placeholder="Moeda">
                              <div class="input-group-append">
                                <button class="btn bg-danger" id="btnAddMoeda" name="btnAddMoeda" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                                <button class="btn bg-danger" id="btnLimpaAddMoeda" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                              </div>
                            </div>
                          </div>
                          <div class="col-sm-12" style="margin-top:5px">
                            <button id="txtAdicionarMoeda" type="button" class="btn btn-primary btn-block mt-2">
                              Adicionar Moeda
                            </button>
                          </div>
                          <div class="col-sm-12 mt-3 pb-4 table-responsive card-body">
                            <table id="tabelaMoedas" class="table table-sm table-select table-hover" width="100%">
                              <thead>
                                <th>Código</th>
                                <th>Descrição</th>
                              </thead>
                              <tbody>
                              </tbody>
                            </table>
                          </div>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            <div class="modal fade" id="modalVinculaRepresentante" tabindex="-1" role="dialog" aria-labelledby="modalVinculaRepresentante" aria-hidden="true">
              <div class="modal-dialog modal-lg">
                <div class="modal-content">
                  <div class="modal-header">
                    <h4 id="modalCondicao-titulo" class="modal-title">Adicionar Representante</h4>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                      <span aria-hidden="true">&times;</span>
                    </button>
                  </div>
                  <div class="modal-body p-4">
                    <div class="row">
                      <div class="col-sm-12">
                        <div class="row">
                          <div class="col-sm-6">
                            <label style="margin-bottom: .1rem!important;" data-error="wrong" data-success="right" for="txtAddRepresentante">Representante:</label>
                            <div class="input-group">
                              <input type="text" class="input-default focus form-control" id="txtAddRepresentante" name="txtAddRepresentante" class="form-control" placeholder="Representante">
                              <div class="input-group-append">
                                <button class="btn bg-danger" id="btnAddRepresentante" name="btnAddRepresentante" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                                <button class="btn bg-danger" id="btnLimpaAddRepresentante" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                              </div>
                            </div>
                          </div>
                          <div class="col-sm-3">
                            <label style="margin-bottom: .1rem!important;" data-error="wrong" data-success="right" for="txtAddComFat">Com. Fat.:</label>
                            <div class="input-group">
                              <input type="text" class="input-default focus form-control  maskDecimais" id="txtAddComFat" name="txtAddComFat" value="0,00" placeholder="ComFat">
                            </div>
                          </div>
                          <div class="col-sm-3">
                            <label style="margin-bottom: .1rem!important;" data-error="wrong" data-success="right" for="txtAddComRec">Com. Rec.:</label>
                            <div class="input-group">
                              <input type="text" class="input-default focus form-control  maskDecimais" id="txtAddComRec" name="txtAddComRec" value="0,00" placeholder="ComRec">
                            </div>
                          </div>
                          <div class="col-sm-4" style="margin-top:5px">
                            <button id="btnAdicionarRepresentante" type="button" class="btn btn-primary btn-block mt-2">
                              Adicionar Representante
                            </button>
                          </div>
                          <div class="col-sm-12 mt-3 pb-4 table-responsive card-body">
                            <table id="tabelaRepresentantes" class="table table-sm table-select table-hover" width="100%">
                              <thead>
                              </thead>
                              <tbody>
                              </tbody>
                            </table>
                          </div>
                        </div>
                        <div class="modal-footer">
                          <input id="btnConfirmarRepresentante" type="button" style="font-size:15px;" class="btn btn-danger btn-sisp btn-lg action-button float-left" value="Confirmar">
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            <!-- </div> -->

          </form>
        </fieldset>
      </div>

      <div class="modal-footer position-sticky bottom-0 border-top" style="z-index:1055;">
        <button type="button" id="btnVoltar" style="font-size:15px;" class="btn btn-success btn-sisp btn-lg action-button-previous" data-dismiss="modal">Voltar</button>
        <input id="btnGravar" type="submit" form="form-cliente" style="font-size:15px;" class="btn btn-danger btn-sisp btn-lg action-button float-right" value="Gravar">
      </div>

    </div>
  </div>
</div>

<script src="../plugins/jquery/jquery.min.js"></script>
<script>
  $(document).ready(async function() {

    function validarCaracteres(value) {
      if (value === "") return 0; // Permite que o valor vazio passe na validação
      const regex = /^[a-zA-ZÀ-ÿ0-9&@#\*\.,'"\-()!\s]+$/;
      const valido = regex.test(value);
      return valido ? 0 : 1;
    }

    $('#txtCNPJModalCli').focus();

    let qtdeAberturasModal = 0;

    $('.maskDecimais').maskMoney({
      decimal: ".",
      thousands: "",
      precision: 2,
    });

    //masks
    var options = {
      onKeyPress: function(cpf, ev, el, op) {
        var masks = ['000.000.000-000', '00.000.000/0000-00'];
        $('#txtCNPJModalCli').mask((cpf.length > 14) ? masks[1] : masks[0], op);
      }
    }

    $('#txtPercDescontoModal').on('keypress', function(event) {
      let regex = new RegExp("^[0-9]+$");
      let key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
      if (!regex.test(key)) {
        event.preventDefault();
        return false;
      }
    });

    const paramCadastraSemCPF = await CopiaParametro('VENDA', 40);
    const usaCertificadoA3 = await CopiaParametro("FATURAMENTO", 2);
    const usuarioMasterSupervisor = await UsuarioMasterOuSupervisor();
    const bTipoUsuarioMasterOuSupervisor = usuarioMasterSupervisor[0].TIPO != '0' ?? false;
    const cadastraEntidadeBloqueada = await CopiaParametro('ENTIDADE', 2);
    const bloqueiaEditarEntidade = await CopiaParametro('ENTIDADE', 3);
    const alterarLimiteCredito = await CopiaParametro('ENTIDADE', 0);
    const alterarLimiteFidelidade = await CopiaParametro('ENTIDADE', 1);
    const alterarGrupo = await CopiaParametro('ENTIDADE', 6);
    const semPorteBloqueiaCadastroPessoaJuridica = await CopiaParametro('ENTIDADE', 5);
    const paramFinan = await BuscaParametrosReceber();
    const paramContaContabil = paramFinan[14].VALOR;
    const camposObrigatorios = await retornaCamposObrigatorios('venda');
    const alterarTipoCnpjCpf = await CopiaParametro('ENTIDADE', 7);
    let parametrosEntidade = await BuscaParametrosEntidade();

    function validarPorteCadastroPessoaJuridica() {

      const tipoEnt = verifica_cpf_cnpj($('#txtCNPJModalCli').val()) == 'CNPJ' ? '2' : '1'
      const porteEmpresa = $('#rgPorteEmpresa').val();

      const tipoEntValido = (tipoEnt === '2');
      const porteInvalido = (!porteEmpresa);

      if (semPorteBloqueiaCadastroPessoaJuridica === '1' && tipoEntValido && porteInvalido) {
        msgAlerta("Informe o porte da empresa, na aba 'Documentos'");
        if (!$('#multiCollapseExample2').hasClass('show')) {
          $('#documentoaba').trigger('click');
        }
        return true;
      }
      return false;
    }

    await adicionaTipos();

    $('#btnModalNovoCliente').trigger('click');


    // $('#txtCNPJModalCli').length > 11 ? $('#txtCNPJModalCli').mask('00.000.000/0000-00', options) : $(
    //   '#txtCNPJModalCli').mask('000.000.000-00#', options);

    var SPMaskBehavior = function(val) {
        return val.replace(/\D/g, '').length === 9 ? '00000-0000' : '0000-00009';
      },
      spOptions = {
        onKeyPress: function(val, e, field, options) {
          field.mask(SPMaskBehavior.apply({}, arguments), options);
        }
      };

    $('#btnEstatisticas').on('click', async function() {
      await abreEstatisticasCliente($('#txtCodigoCliente').val(), $('#txtNome').val());
    });

    $('#btnAdicionarRepresentante').on('click', async function() {
      const obj = {
        CODREP: pegaChave('#txtAddRepresentante'),
        NOME: pegaDescricao('#txtAddRepresentante'),
        COM1: pegaValor('#txtAddComFat'),
        COM2: pegaValor('#txtAddComRec')
      }
      if (($.fn.DataTable.isDataTable('#tabelaRepresentantes')) && ($("#tabelaRepresentantes").DataTable().data().count() > 0)) {
        $('#tabelaRepresentantes').DataTable().rows().data().toArray().filter((item) => {
          let codigoTabela = item.CODREP ? item.CODREP.match(/\d+/)[0] : null;
          let codigoInput = pegaChave('#txtAddRepresentante');
          if (codigoTabela == codigoInput) {
            throw msgAlerta(`Não pode inserir duas vezes o mesmo representante (${codigoInput}), verifique!`);
          }
        });

        if (!$('#txtAddRepresentante').val()) {
          throw msgAlerta('Código do representante não preenchido, impossível continuar!')
        }

        $('#tabelaRepresentantes')
          .DataTable()
          .row
          .add(obj).draw(false);

        $('#txtAddRepresentante').val('');
        $('#txtAddComFat').val(0.00);
        $('#txtAddComRec').val(0.00);

        return;
      };


      const titulosRepresentantes = [{
          title: "Codigo",
          data: "CODREP"
        },
        {
          title: "Nome",
          data: "NOME"
        },
        {
          title: "Com. Fat.",
          data: "COM1"
        },
        {
          title: "Com. Rec.",
          data: "COM2"
        }
      ];

      $("#tabelaRepresentantes").DataTable({
        destroy: true,
        filter: false,
        paging: false,
        scrollX: true,
        autoWidth: true,
        columns: titulosRepresentantes,
        data: [obj],
        columnDefs: [{
            "render": function(data) {
              return parseFloat(data).toLocaleString("pt-BR", {
                maximumFractionDigits: 2,
                minimumFractionDigits: 2
              })
            },
            "targets": [2, 3],
            "className": 'pr-4 text-right'
          },
          {
            targets: [0],
            render: function(data, type, row) {
              return '<div style="text-align:start;"> ' +
                '    <button class="btn btn-info btn-sm dropdown-toggle btnVerificaOpcoes" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> ' +
                '      ' + data + ' ' +
                '    </button> ' +
                '    <div class="dropdown-menu" style="max-width: 30px"> ' +
                '    <button class="dropdown-item" type="button" title="Excluir" id="btn-excluir">Excluir</button>  ' +
                '</div>';
            },
          },
        ]
      });

      $('#txtAddRepresentante').val('');
      $('#txtAddComFat').val(0.00);
      $('#txtAddComRec').val(0.00);
    });

    $('#tabelaRepresentantes').on('click', '#btn-excluir', async function() {
      msgAlerta('Você realmente deseja excluir esse registro?', async () => {
        const data = $("#tabelaRepresentantes").DataTable().row($(this).parents("tr"));
        data.remove().draw(false);
      });
    });

    if (cadastraEntidadeBloqueada == 1) {
      $('#cbBloqueado').prop('checked', true);
      if (usuarioMasterSupervisor[0].TIPO == '0') {
        $('#cbBloqueado').on('change', function() {
          if (!$(this).is(':checked')) {
            msgErro("Usuário do tipo 'USUÁRIO' não tem permissão para cadastrar uma entidade desbloqueada! Impossível desmarcar essa opção.");
            $('#cbBloqueado').prop('checked', true);
            return;
          };
        });
      };
    };

    $('#modal-cliente').on('shown.bs.modal', async function(event) {
      const relatedTargetId = event.target.id;
      if (relatedTargetId !== 'modalVinculaRepresentante') {
        if (qtdeAberturasModal > 0) {
          limpaCampos();
          await desbloqueiaCamposParametros();
        };
        qtdeAberturasModal = qtdeAberturasModal + 1;
      }
    });

    $("#txtCNPJModalCli").on("focusout", function() {
      aplicaMascaraCNPJ();
    })

    async function preencheDDI() {
      setTimeout(async () => {
        const pais = pegaChave('#txtPais')
        if (!pais) {
          return
        }
        const ddi = (await buscaValor('CADPAIS', 'DDI', 'CODIGO', pais)).DDI
        if (!(ddi != ''))
          $('#txtDDI').val(ddi)
      }, 500)
    }

    function aplicaMascaraCNPJ() {
      const mascara = $("#rgTipoEnt").val();
      if (mascara) {
        $("#txtCNPJModalCli").mask(mascara);
        const cpfCnpjFormatado = $("#txtCNPJModalCli").val();
        $("#txtCNPJModalCli").unmask();
        $("#txtCNPJModalCli").val(cpfCnpjFormatado);
      }
    }

    $('#txtCNPJModalCli').change(async function() {
      $.LoadingOverlay("show");
      try {
        if ($(this).val() == '') {
          return;
        }

        let bAbort = false;
        aplicaMascaraCNPJ();
        const mascara = $("#rgTipoEnt").val();
        const cpfCnpjFormatado = $("#txtCNPJModalCli").val();
        const parametroBloquearCPFCNPJInvalido = parametrosEntidade[8].VALOR ?? 0;
        const callback = () => {
          $('#txtCNPJModalCli').val('');
          $('#txtCNPJModalCli').focus();
        }

        if (parametroBloquearCPFCNPJInvalido == '1') {
          if ((mascara == "###.###.###-##") && (!valida_cpf(cpfCnpjFormatado))) {
            msgAlerta('CPF inválido, impossível continuar.', callback, undefined, undefined, callback, false, true);
            return;
          }
          if ((mascara == "##.###.###/####-##") && (!valida_cnpj(cpfCnpjFormatado))) {
            msgAlerta('CNPJ inválido, impossível continuar.', callback, undefined, undefined, callback, false, true);
            return;
          }
        } else {
          if (mascara == "###.###.###-##") {
            if (!valida_cpf(cpfCnpjFormatado)) {
              await msgAguardaConfirmacao("CPF inválido, deseja continuar?",
                () => {},
                () => {
                  $(this).val("");
                  bAbort = true;
                });
              if (bAbort) {
                return;
              }
            }
          } else if (mascara == "##.###.###/####-##") {
            if (!valida_cnpj(cpfCnpjFormatado)) {
              await msgAguardaConfirmacao("CNPJ inválido, deseja continuar?",
                () => {},
                () => {
                  $(this).val("");
                  bAbort = true;
                });
              if (bAbort) {
                return;
              }
            }
          }

        }

        let response = await requisicao('GET', '/Sisplan/Cliente/V1/Entidade?', `CNPJ=${$('#txtCNPJModalCli').val()}`);

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

        if (jsonStr.length > 0) {
          $.LoadingOverlay("hide");
          toastr.warning(
            'CNPJ/CPF informado já existe!',
            'Atençã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: async function() {
                const clienteJson = jsonStr[0];
                $('#txtCodCli').val(clienteJson.CODCLI);
                await carregaDadosCliente(clienteJson);
              }
            }
          ).css({
            "margin-top": "20%",
            "width": "500px",
            "max-width": "500px",
            "color": "black"
          });
          return;
        }

        // if ((!valida_cpf_cnpj($('#txtCNPJModalCli').val())) && (paramCadastraSemCPF != 1 ?? 0)) {
        //   $("#txtCNPJModalCli").rules('add', 'valida_cpf_cnpj');
        //   $('#txtCNPJModalCli').focus();
        // }

        var cliente = $('#txtCodCli').val();
        const verifica_CPF_CNPJ = verifica_cpf_cnpj($('#txtCNPJModalCli').val()) == 'CNPJ';
        if ((verifica_CPF_CNPJ) && ((cliente == 'create') && ($('#txtNome').val() == ''))) {
          await buscaDadosCliente(cliente, $('#txtCNPJModalCli').val().replace(/[^0-9]/g, ''));

          if ($("#txtCep").val() == '') {
            const jsonStr = await buscaValoresPadroes('ENTIDADE')

            if (jsonStr[35].VALOR !== '') {
              $('#txtCep').val(jsonStr[35].VALOR)
              $('#txtCep').trigger('blur')
              $('#txtNumeroCliente').val(jsonStr[36].VALOR)
            }
          }
          if ($('#txtCodCli').val() == '') {
            $('#txtCodCli').val('create');
          }
        }

        if (!verifica_CPF_CNPJ) {
          $('#btnConsultaReceita').attr('disabled', true);
        } else {
          $('#btnConsultaReceita').attr('disabled', false);
        }

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

    $('#txtRenda').maskMoney({
      decimal: '.',
      thousands: '',
      precision: 2
    });

    jQuery.validator.addMethod('valida_cpf_cnpj', function(value, element) {
      return valida_cpf_cnpj(value);
    });

    jQuery.validator.addMethod("validarCaracteres", function(value) {
      return validarCaracteres(value) === 0;
    });


    $('#txtNome').on('input', function() {
      $('#txtNome').val($('#txtNome').val().toUpperCase());
    });

    async function verificaCheckBox() {
      if ($('#cbTipoCliente').is(':checked') == false &
        $('#cbTipoFornecedor').is(':checked') == false &
        $('#cbTipoTerceiros').is(':checked') == false &
        $('#cbTipoRepresentante').is(':checked') == false &
        $('#cbTipoProspecto').is(':checked') == false &
        $('#cbTipoFuncionario').is(':checked') == false) {
        return false;
      }
    }
    //funcoes
    async function carregaDadosCliente(clienteJson) {
      const cliente = $('#txtCodCli').val();
      try {
        var response = await requisicao('GET', '/Sisplan/Funcoes/v1/pesquisa?',
          `JSON={ "tabela":"ENTIDADE", "camposSelect":["OBS"], "where": ["CODCLI = '${cliente}'"]}`, null)
        if (!response) {
          var obs = ''
          return;
        } else {
          var jsonStr = await response.json()
          if (response.status != 200) {
            $.LoadingOverlay("hide");
            msgErro(jsonStr['RESULT'][0].mensagem);
            return;
          }

          var obs = jsonStr['RESULT'][0][0].OBS;
        }
      } catch (error) {
        console.error(error);
        var obs = ''
      }

      try {
        var response = await requisicao(
          "GET",
          "/Sisplan/Funcoes/v1/pesquisa?",
          `JSON={ "tabela":"CADCONTA", "camposSelect":["descricao"], "where": ["CONTA = '${clienteJson.CONTA}'"]}`,
          null
        );
        if (!response) {
          var sitcli = "";
          return;
        }
        var jsonStr = await response.json();
        if (response.status != 200) {
          $.LoadingOverlay("hide");
          msgErro(jsonStr.RESULT[0].mensagem);
          return;
        }
        const descricao = !jsonStr.RESULT[0][0]?.DESCRICAO ? clienteJson.CONTA : jsonStr.RESULT[0][0]?.DESCRICAO;
        insereValor('#txtConta', clienteJson.CONTA, descricao);
      } catch (error) {}

      try {
        var response = await requisicao(
          "GET",
          "/Sisplan/Funcoes/v1/pesquisa?",
          `JSON={ "tabela":"cadban", "camposSelect":["NOME_BANCO"], "where": ["BANCO = '${clienteJson.BANCO}'"]}`,
          null
        );
        if (!response) {
          var sitcli = "";
          return;
        }
        var jsonStr = await response.json();
        if (response.status != 200) {
          $.LoadingOverlay("hide");
          msgErro(jsonStr.RESULT[0].mensagem);
          return;
        }

        insereValor('#txtBanco', clienteJson.BANCO, jsonStr.RESULT[0][0].NOME_BANCO);
      } catch (error) {}

      try {
        var response = await requisicao('GET', '/sisplan/funcoes/v1/pesquisa?',
          `JSON={ "tabela":"ENTIDADE", "camposSelect":["ENTIDADE.CODREP", "REPRESEN.NOME"], "leftJoin": [{"tabela": "represen", "condicao": "entidade.codrep = represen.codrep"}], "where": ["ENTIDADE.CODCLI = '${cliente}'"]}`,
          null)
        if (!response) {
          var represen = ''
          return;
        } else {
          var jsonStr = await response.json();
          if (response.status != 200) {
            $.LoadingOverlay("hide");
            msgErro(jsonStr['RESULT'][0].mensagem);
            return;
          }

          var represen = `[${jsonStr['RESULT'][0][0].CODREP}] - ${jsonStr['RESULT'][0][0].NOME}`;
        }
      } catch (error) {
        console.error(error);
        var represen = ''
      }

      try {
        var response = await requisicao('GET', '/sisplan/funcoes/v1/pesquisa?',
          `JSON={ "tabela":"ENTIDADE", "camposSelect":["ENTIDADE.TABELA", "REGIAO.DESCRICAO"], "leftJoin": [{"tabela": "REGIAO", "condicao": "entidade.tabela = regiao.regiao"}], "where": ["ENTIDADE.CODCLI = '${cliente}'"]}`,
          null)
        if (!response) {
          var tabPreco = ''
          return;
        } else {
          var jsonStr = await response.json()
          if (response.status != 200) {
            $.LoadingOverlay("hide");
            msgErro(jsonStr['RESULT'][0].mensagem)
            return
          }

          var tabPreco = `[${jsonStr['RESULT'][0][0].TABELA}] - ${jsonStr['RESULT'][0][0].DESCRICAO}`
        }
      } catch (error) {
        console.error(error);
        var tabPreco = ''
      }

      try {
        var codigoPais = '';
        var response = await requisicao('GET', '/sisplan/funcoes/v1/pesquisa?', `JSON={ "tabela":"ENTIDADE", "camposSelect":["ENTIDADE.COD_PAIS", "CADPAIS.NOME"], "leftJoin": [{"tabela": "CADPAIS", "condicao": "ENTIDADE.COD_PAIS = CADPAIS.CODIGO"}], "where": ["ENTIDADE.CODCLI = '${cliente}'"]}`, null);
        if (!response) {
          codigoPais = '';
          return;
        }
        var jsonStr = await response.json();
        if (response.status != 200) {
          $.LoadingOverlay("hide");
          msgErro(jsonStr.RESULT[0].mensagem);
          return;
        }

        codigoPais = jsonStr.RESULT[0][0].COD_PAIS === '' ? '' : `[${jsonStr.RESULT[0][0].COD_PAIS}] - ${jsonStr.RESULT[0][0].NOME}`;

      } catch (error) {
        codigoPais = '';
      }

      try {
        var response = await requisicao(
          "GET",
          "/sisplan/funcoes/v1/pesquisa?",
          `JSON={ "tabela":"ENTIDADE", "camposSelect":["ENTIDADE.TRANSPORTE", "TABTRAN.NOME"], "leftJoin": [{"tabela": "TABTRAN", "condicao": "ENTIDADE.TRANSPORTE = TABTRAN.CODIGO"}], "where": ["ENTIDADE.CODCLI = '${cliente}'"]}`,
          null
        );
        if (!response) {
          var transportadora = "";
          return;
        }
        var jsonStr = await response.json();
        if (response.status != 200) {
          $.LoadingOverlay("hide");
          msgErro(jsonStr.RESULT[0].mensagem);
          return;
        }

        var transportadora =
          jsonStr.RESULT[0][0].TRANSPORTE === "" ?
          "" :
          `[${jsonStr.RESULT[0][0].TRANSPORTE}] - ${jsonStr.RESULT[0][0].NOME}`;
      } catch (error) {
        var transportadora = "";
      }

      try {
        var response = await requisicao(
          "GET",
          "/sisplan/funcoes/v1/pesquisa?",
          `JSON={ "tabela":"ENTIDADE", "camposSelect":["ENTIDADE.COD_CONF_XML", "FATCONF_XML.DESCRICAO"], "leftJoin": [{"tabela": "FATCONF_XML", "condicao": "ENTIDADE.COD_CONF_XML = FATCONF_XML.CODIGO"}], "where": ["ENTIDADE.CODCLI = '${cliente}'"]}`,
          null
        );
        if (!response) {
          var confXML = "";
          return;
        }
        var jsonStr = await response.json();
        if (response.status != 200) {
          $.LoadingOverlay("hide");
          msgErro(jsonStr.RESULT[0].mensagem);
          return;
        }

        var confXML =
          jsonStr.RESULT[0][0].COD_CONF_XML === "" ?
          "" :
          `[${jsonStr.RESULT[0][0].COD_CONF_XML}] - ${jsonStr.RESULT[0][0].DESCRICAO}`;
      } catch (error) {
        var confXML = "";
      }

      try {
        const response = await requisicao(
          "GET",
          "/sisplan/funcoes/v1/pesquisa?",
          `JSON={ "tabela":"ENT_MOEDA", "camposSelect":["ENT_MOEDA.CODMOE" , "MOEDA.DESCRICAO"], 
                    "where": ["ENT_MOEDA.CODCLI = '${cliente}'"], 
                    "leftjoin": [{"tabela": "MOEDA", "condicao" : "ENT_MOEDA.CODMOE = MOEDA.CODMOE"}]}`,
          null
        );
        if (!response) {
          var moedas = "";
          return;
        }
        const jsonStr = await response.json();
        if (response.status != 200) {
          $.LoadingOverlay("hide");
          msgErro(jsonStr.RESULT[0].mensagem);
          return;
        }

        var moedas = jsonStr.RESULT[0];
      } catch (error) {
        var moedas = "";
      }

      try {
        var codigoGrupo = '';
        var response = await requisicao('GET', '/sisplan/funcoes/v1/pesquisa?', `JSON={ "tabela":"ENTIDADE", "camposSelect":["ENTIDADE.GRUPO", "GRUPO_CLI.DESCRICAO"], "leftJoin": [{"tabela": "GRUPO_CLI", "condicao": "ENTIDADE.GRUPO = GRUPO_CLI.CODIGO"}], "where": ["ENTIDADE.CODCLI = '${cliente}'"]}`, null);
        if (!response) {
          codigoGrupo = '';
          return;
        }
        var jsonStr = await response.json();
        if (response.status != 200) {
          $.LoadingOverlay("hide");
          msgErro(jsonStr.RESULT[0].mensagem);
          return;
        }

        codigoGrupo = jsonStr.RESULT[0][0].GRUPO === '' ? '' : `[${jsonStr.RESULT[0][0].GRUPO}] - ${jsonStr.RESULT[0][0].DESCRICAO}`;

      } catch (error) {
        codigoGrupo = '';
      }

      let responseValidaMascara = await requisicao("GET", "/sisplan/cliente/v1/validamascara?", `CNPJ=${$('#txtCNPJModalCli').val().length}`, null);

      const mascara = await responseValidaMascara.text();

      if (mascara) {
        $('#rgTipoEnt').val(mascara).change();
      } else if (clienteJson.CNPJ.length == 18) {
        $('#rgTipoEnt').val('##.###.###/####-##').change();
      } else {
        $('#rgTipoEnt').val('###.###.###-##').change();
      }

      const naoPermiteAlterarTipoCNPJ = ((alterarTipoCnpjCpf == '0') || ((alterarTipoCnpjCpf == '2') && (!bTipoUsuarioMasterOuSupervisor)));
      if (naoPermiteAlterarTipoCNPJ) {
        $('#rgTipoEnt').prop('disabled', true);
      }

      $('#txtCNPJModalCli').val(clienteJson.CNPJ);
      $('#txtCNPJModalCli').attr('disabled', (naoPermiteAlterarTipoCNPJ));
      if (clienteJson.DATA_BUSCA != undefined) {
        $("#txtDataAlteracao").val(clienteJson.DATA_BUSCA.slice(0, 10));
      }
      if (clienteJson.DATA_CAD != undefined) {
        $("#txtDataCadastro").val(clienteJson.DATA_CAD.slice(0, 10));
      }
      $('#txtNome').val(clienteJson.NOME);
      $('#txtFantasia').val(clienteJson.FANTASIA);
      $('#txtObsCli').val(obs);
      $('#cbAtivoCli').prop('checked', clienteJson.ATIVO == 'S');
      $('#cbBloqueado').prop('checked', clienteJson.BLOQUEIO == 'S');
      $('#cbConsumidorFinal').prop('checked', clienteJson.CONS_FINAL == 'Sim');
      $('#cbIntegraShop').prop('checked', clienteJson.INTEGRA_SHOPP == 'N');
      $('#txtRG').val(clienteJson.NUM_RG);
      $('#txtEmissor').val(clienteJson.EMI_RG);
      $('#txtIE').val(clienteJson.INSCRICAO);
      $('#rgSexo').val(clienteJson.SEXO == "M" ? "M" : "F").change();
      // $('#txtDataNascimento').val(clienteJson.DT_NASC.slice(0, 10));
      if (clienteJson.DT_NASC != undefined) {
        $("#txtDataNascimento").val(clienteJson.DT_NASC.slice(0, 10));
      }
      $('#txtPais').val(codigoPais ? codigoPais : '[1058] - BRASIL');
      insereValor('#txtRegiao', clienteJson.REG_ESTADO, clienteJson.REG_ESTADO);
      $('#txtCep').val(clienteJson.CEP);
      $('#txtRua').val(clienteJson.ENDERECO);
      $('#txtNumeroCliente').val(clienteJson.NUMERO);
      $('#txtComplemento').val(clienteJson.COMPLEMENTO);
      $('#txtBairro').val(clienteJson.BAIRRO);
      $('#rgIE').val(clienteJson.IE_DESTINATARIO).change();
      $('#rgTributacao').val(clienteJson.SIMPLES);
      $('#txtGrupo').val(codigoGrupo);
      $("#rgTipoFrete").val(clienteJson.TP_FRETE);
      $("#txtTransportadoraModal").val(transportadora);
      $('#txtMidiaSocial').val(clienteJson.MIDIAS_SOCIAIS);

      var retorno = await BuscaCep($('#txtCep'));
      $('#txtCidade').val(retorno[0]);
      $('#txtUF').val(retorno[1]);

      $('#txtDDI').val(!clienteJson.DDI.startsWith('+') && clienteJson.DDI ? `+${clienteJson.DDI}` : clienteJson.DDI);
      $('#txtDDD').val(clienteJson.DDD_FONE);
      $('#txtTelefone').val(clienteJson.TELEFONE);
      $('#txtEmail').val(clienteJson.EMAIL);
      $('#txtCepEntrega').val(clienteJson.CEP_ENT);
      $('#txtRuaEntrega').val(clienteJson.END_ENT);
      $('#txtNumeroEntrega').val(clienteJson.NUM_ENT);
      $('#txtComplementoEntrega').val(clienteJson.COMP_ENT);
      $('#txtBairroEntrega').val(clienteJson.BAIRRO_ENT);

      var retorno = await BuscaCep($('#txtCepEntrega'));
      $('#txtCidadeEntrega').val(retorno[0]);
      $('#txtUFEntrega').val(retorno[1]);

      $('#txtCepCobranca').val(clienteJson.CEP_COB);
      $('#txtRuaCobranca').val(clienteJson.END_COB);
      $('#txtNumeroCobranca').val(clienteJson.NUM_COB);
      $('#txtComplementoCobranca').val(clienteJson.COMP_COB);
      $('#txtBairroCobranca').val(clienteJson.BAIRRO_COB);
      $("#rgClassificacao").val(clienteJson.CLASSIFICA.trim());

      var retorno = await BuscaCep($('#txtCepCobranca'));
      $('#txtCidadeCobranca').val(retorno[0]);
      $('#txtUFCobranca').val(retorno[1]);

      $('#txtRepresentante-modal').val(represen);
      $('#txtCreditoGrupoModal').val(clienteJson.CRED_CONSIGNADO);
      $('#txtLimiteCredito').val(clienteJson.CREDITO);
      $('#txtLimiteUsado').val(clienteJson.CREDITO_UTILIZADO ?? 0);
      $('#txtLimiteDisponivel').val($('#txtLimiteCredito').val() - $('#txtLimiteUsado').val());
      $('#txtLimiteFidelidade').val(clienteJson.LIMITE_FID);
      $('#txtLimiteFidelidadeUsado').val(clienteJson.LIMITE_UTIL_FID ?? 0);
      $('#txtLimiteFidelidadeDisponivel').val($('#txtLimiteFidelidade').val() - $('#txtLimiteFidelidadeUsado').val());
      $('#txtTabela-modal').val(tabPreco);
      $('#txtLocalTrab').val(clienteJson.LOCAL_TRAB);
      $('#txtNomePai').val(clienteJson.NOME_PAI);
      $('#txtNomeMae').val(clienteJson.NOME_MAE);
      $('#txtEstadoCivil').val(clienteJson.ESTADO_CIVIL);
      $('#txtRenda').val(clienteJson.RENDA);
      if (clienteJson.DT_ADMISSAO != undefined) {
        $("#txtDtAdmissao").val(clienteJson.DT_ADMISSAO.slice(0, 10));
      }
      $('#txtCodigoCliente').val(clienteJson.CODCLI);
      $('#txtClasse').val(clienteJson.CLASSE);
      $("#txtConfXMLModal").val(confXML);
      $("#txtInscCob").val(clienteJson.INSC_COB);
      $("#txtInscEnt").val(clienteJson.INSC_ENT);
      $("#txtCNPJCob").val(clienteJson.CNPJ_COB);
      $("#txtCNPJEnt").val(clienteJson.CNPJ_ENT);
      $('#txtPercDescontoModal').val(clienteJson.DESCONTO);
      $("#txtCodImportado").val(clienteJson.COD_IMPORTADO);
      $('#txtAgencia').val(clienteJson.AGENCIA);

      insereValor('#txtPerfil', clienteJson.PERFIL, {
        tabela: 'PERFIL',
        campoBusca: 'DESCRICAO',
        campoWhere: 'CODIGO',
        valorWhere: clienteJson.PERFIL
      })

      insereValor('#txtCnae', clienteJson.CNAE, {
        tabela: 'CADCNAE',
        campoBusca: 'DESCRICAO',
        campoWhere: 'CODIGO',
        valorWhere: clienteJson.CNAE
      })

      //SUFRAMA
      $('#txtSuframa').val(clienteJson.SUFRAMA)
      $('#txtValidadeSuframa').val(clienteJson.VALIDA_SUFRAMA)
      if (clienteJson.SUFRAMA_CONF === 'I') {
        $('#cbBenefIcms').prop('checked')
      }
      if (clienteJson.SUFRAMA_CONF === 'P') {
        $('#cbBenefPis').prop('checked')
      }
      if (clienteJson.SUFRAMA_CONF === 'C') {
        $('#cbBenefCofins').prop('checked')
      }

      if (clienteJson.TIPO_ENTIDADE.includes('C')) {
        $("#cbTipoCliente").prop("checked", true);
      }
      if (clienteJson.TIPO_ENTIDADE.includes('F')) {
        $("#cbTipoFornecedor").prop("checked", true);
      }
      if (clienteJson.TIPO_ENTIDADE.includes('T')) {
        $("#cbTipoTerceiros").prop("checked", true);
      }
      if (clienteJson.TIPO_ENTIDADE.includes('R')) {
        $("#cbTipoRepresentante").prop("checked", true);
      }
      if (clienteJson.TIPO_ENTIDADE.includes('P')) {
        $("#cbTipoProspecto").prop("checked", true);
      }

      if (clienteJson.TIPO_ENTIDADE.includes('E')) {
        $("#cbTipoFuncionario").prop("checked", true);
      }

      let representantes = "";
      try {
        const response = await requisicao(
          "GET",
          "/sisplan/funcoes/v1/pesquisa?",
          `JSON={ "tabela":"CLI_COM", "camposSelect":["CLI_COM.CODREP" , "REPRESEN.NOME", "CLI_COM.COM1", "CLI_COM.COM2"], 
                    "where": ["CLI_COM.CODCLI = '${cliente}'"], 
                    "leftjoin": [{"tabela": "REPRESEN", "condicao" : "CLI_COM.CODREP = REPRESEN.CODREP"}]}`,
          null
        );
        if (!response) {
          return;
        }
        const jsonStr = await response.json();
        if (response.status != 200) {
          $.LoadingOverlay("hide");
          msgErro(jsonStr.RESULT[0].mensagem);
          return;
        }

        representantes = jsonStr.RESULT[0];
      } catch (error) {
        representantes = "";
      }

      if ($.fn.DataTable.isDataTable('#tabelaRepresentantes')) {
        $('#tabelaRepresentantes').DataTable().destroy();
        $('#tabelaRepresentantes').empty();
      };


      const titulosRepresentantes = [{
          title: "Codigo",
          data: "CODREP"
        },
        {
          title: "Nome",
          data: "NOME"
        },
        {
          title: "Com. Fat.",
          data: "COM1"
        },
        {
          title: "Com. Rec.",
          data: "COM2"
        }
      ];

      $("#tabelaRepresentantes").DataTable({
        destroy: true,
        filter: false,
        paging: false,
        scrollX: true,
        autoWidth: true,
        columns: titulosRepresentantes,
        data: representantes,
        columnDefs: [{
            "render": function(data) {
              return parseFloat(data).toLocaleString("pt-BR", {
                maximumFractionDigits: 2,
                minimumFractionDigits: 2
              })
            },
            "targets": [2, 3],
            "className": 'pr-4 text-right'
          },
          {
            targets: [0],
            render: function(data, type, row) {
              return '<div style="text-align:start;"> ' +
                '    <button class="btn btn-info btn-sm dropdown-toggle btnVerificaOpcoes" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> ' +
                '      ' + data + ' ' +
                '    </button> ' +
                '    <div class="dropdown-menu" style="max-width: 30px"> ' +
                '    <button class="dropdown-item" type="button" title="Excluir" id="btn-excluir">Excluir</button>  ' +
                '</div>';
            },
          },
        ]
      });

      if (cliente != "" && cliente != "create" && cliente.length < 30) {
        await buscaDadosEntidadeContabil(cliente);
        $('#txtMoedaModal').empty().trigger('change');
        await insereValorPesquisaVarios('txtMoedaModal', 'CODMOE', 'DESCRICAO', moedas);
      }

      if (bloqueiaEditarEntidade == 1) {
        if (usuarioMasterSupervisor[0].TIPO == '0') {
          await bloqueiaCamposParametros();
        };
      };

      if (cliente != "" && cliente != "create") {
        $('#txtLimiteCredito').attr('readonly', ['0', '2'].includes(alterarLimiteCredito));
        $('#txtLimiteFidelidade').attr('readonly', ['0', '2'].includes(alterarLimiteFidelidade));
        $('#txtGrupo').attr('disabled', ['0', '2'].includes(alterarGrupo));
        $('#btn-Grupo').attr('disabled', ['0', '2'].includes(alterarGrupo));
        $('#btn-AGrupo').attr('disabled', ['0', '2'].includes(alterarGrupo));
      } else {
        $('#txtLimiteCredito').attr('readonly', alterarLimiteCredito == '2');
        $('#txtLimiteFidelidade').attr('readonly', alterarLimiteFidelidade == '2');
        $('#txtGrupo').attr('disabled', alterarGrupo == '2');
        $('#btn-Grupo').attr('disabled', alterarGrupo == '2');
        $('#btn-AGrupo').attr('disabled', alterarGrupo == '2');
      }
    };

    const cliente = $('#txtCodCli').val();
    if (cliente != "" && cliente != "create") {
      $('#txtLimiteCredito').attr('readonly', ['0', '2'].includes(alterarLimiteCredito));
      $('#txtLimiteFidelidade').attr('readonly', ['0', '2'].includes(alterarLimiteFidelidade));
      $('#txtGrupo').attr('disabled', ['0', '2'].includes(alterarGrupo));
      $('#btn-Grupo').attr('disabled', ['0', '2'].includes(alterarGrupo));
      $('#btn-AGrupo').attr('disabled', ['0', '2'].includes(alterarGrupo));
    } else {
      $('#txtLimiteCredito').attr('readonly', alterarLimiteCredito == '2');
      $('#txtLimiteFidelidade').attr('readonly', alterarLimiteFidelidade == '2');
      $('#txtGrupo').attr('disabled', alterarGrupo == '2');
      $('#btn-Grupo').attr('disabled', alterarGrupo == '2');
      $('#btn-AGrupo').attr('disabled', alterarGrupo == '2');
    }

    async function bloqueiaCamposParametros() {
      $('#cbConsumidorFinal').addClass('cbModalClienteVenda');
      $('#cbAtivoCli').addClass('cbModalClienteVenda');
      $('#cbTipoCliente').addClass('cbModalClienteVenda');
      $('#cbTipoFornecedor').addClass('cbModalClienteVenda');
      $('#cbTipoTerceiros').addClass('cbModalClienteVenda');
      $('#cbTipoRepresentante').addClass('cbModalClienteVenda');
      $('#cbTipoProspecto').addClass('cbModalClienteVenda');
      $('#cbTipoFuncionario').addClass('cbModalClienteVenda');
      $('#txtCodigoCliente').prop('readonly', true);
      $('#txtCNPJModalCli').prop('readonly', true);
      $('#btnConsultaReceita').prop('disabled', true);
      $('#txtDataCadastro').prop('readonly', true);
      $('#txtDataAlteracao').prop('readonly', true);
      $('#txtDataNascimento').prop('readonly', true);
      $('#txtNome').prop('readonly', true);
      $('#txtFantasia').prop('readonly', true);
      $('#rgIE').prop('disabled', true);
      $('#txtEmail').prop('readonly', true);
      $('#txtDDI').prop('readonly', true);
      $('#txtDDD').prop('readonly', true);
      $('#txtTelefone').prop('readonly', true);
      $('#txtObsCli').prop('readonly', true);
      $('#txtIE').prop('readonly', true);
      $('#txtRG').prop('readonly', true);
      $('#txtEmissor').prop('readonly', true);
      $('#rgSexo').prop('disabled', true);
      $('#rgPorteEmpresa').prop('disabled', true);
      $('#txtPais').prop('readonly', true);
      $('#btn-pais-entidade').prop('disabled', true);
      $('#btn-limpar-pais-entidade').prop('disabled', true);
      $('#txtCep').prop('readonly', true);
      $('#txtCep').prop('disabled', true);
      $('#btnCep').prop('disabled', true);
      $('#btnLimpaCep').prop('disabled', true);
      $('#txtCidade').prop('readonly', true);
      $('#txtUF').prop('readonly', true);
      $('#txtRua').prop('readonly', true);
      $('#txtNumeroCliente').prop('readonly', true);
      $('#txtBairro').prop('readonly', true);
      $('#txtComplemento').prop('readonly', true);
      $('#txtRepresentante-modal').prop('readonly', true);
      $('#btn-representante-modal').prop('disabled', true);
      $('#btn-Arepresentante-modal').prop('disabled', true);
      $('#txtTabela-modal').prop('readonly', true);
      $('#btn-tabela-modal').prop('disabled', true);
      $('#btn-Atabela-modal').prop('disabled', true);
      $('#txtCreditoGrupoModal').prop('readonly', true);
      $('#txtLimiteCredito').prop('readonly', true);
      $('#txtLimiteUsado').prop('readonly', true);
      $('#txtLimiteDisponivel').prop('readonly', true);
      $('#txtLimiteFidelidade').prop('readonly', true);
      $('#txtLimiteFidelidadeUsado').prop('readonly', true);
      $('#txtLimiteFidelidadeDisponivel').prop('readonly', true);
      $('#cbIntegraShop').addClass('cbModalClienteVenda');
      $('#txtContaClienteModal').prop('readonly', true);
      $('#btn-contaclienteModal').prop('disabled', true);
      $('#btn-limpa-contaclienteModal').prop('disabled', true);
      $('#txtContaFornecedorModal').prop('readonly', true);
      $('#btn-contafornecedorModal').prop('disabled', true);
      $('#btn-limpa-contafornecedorModal').prop('disabled', true);
      $('#txtContaCAdiantamentoModal').prop('readonly', true);
      $('#btn-CadiantamentoModal').prop('disabled', true);
      $('#btn-limpa-CadiantamentoModal').prop('disabled', true);
      $('#txtContaFAdiantamentoModal').prop('readonly', true);
      $('#btn-FadiantamentoModal').prop('disabled', true);
      $('#btn-limpa-FadiantamentoModal').prop('disabled', true);
      $('#txtContaCDevolucaoModal').prop('readonly', true);
      $('#btn-CdevolucaoModal').prop('disabled', true);
      $('#btn-limpa-CdevolucaoModal').prop('disabled', true);
      $('#txtContaFDevolucaoModal').prop('readonly', true);
      $('#btn-FdevolucaoModal').prop('disabled', true);
      $('#btn-limpa-FdevolucaoModal').prop('disabled', true);
      $('#txtMoedaModal').prop('disabled', true);
      $('#btnMoedaModal').prop('disabled', true);
      $('#btn-limpa-moedaModal').prop('disabled', true);
      $('#txtLocalTrab').prop('readonly', true);
      $('#txtClasse').prop('readonly', true);
      $('#btn-Classe').prop('disabled', true);
      $('#btn-limpa-Classe').prop('disabled', true);
      $('#txtConfXMLModal').prop('readonly', true);
      $('#btnConfXMLModal').prop('disabled', true);
      $('#btnLimpaConfXMLModal').prop('disabled', true);
      $('#txtNomePai').prop('readonly', true);
      $('#txtNomeMae').prop('readonly', true);
      $('#txtEstadoCivil').prop('readonly', true);
      $('#txtRenda').prop('readonly', true);
      $('#txtDtAdmissao').prop('readonly', true);
      $('#rgTributacao').prop('disabled', true);
      $('#txtGrupo').prop('readonly', true);
      $('#btn-Grupo').prop('disabled', true);
      $('#btn-AGrupo').prop('disabled', true);
      $('#rgTipoFrete').prop('disabled', true);
      $('#txtTransportadoraModal').prop('readonly', true);
      $('#btnPesquisaTransportadoraModal').prop('disabled', true);
      $('#btnLimpaTransportadoraModal').prop('disabled', true);
      $('#txtMidiaSocial').prop('readonly', true);
      $('#btnEstatisticas').prop('disabled', true);
      $('input.select2-search__field').parent().addClass('backgroundTransparent');
      $('input.select2-search__field').parent().parent().addClass('backgroundTransparent');
      $('input.select2-search__field').parent().parent().parent().addClass('backgroundTransparent');
      $('.cbModalClienteVenda').on('change', async function() {
        msgErro('Você não tem permissão pra alterar essa opção! Impossível continuar.');
        if ($(this).is(':checked')) {
          $(this).prop('checked', false);
        } else {
          $(this).prop('checked', true);
        }
        return;
      });
      $('.cnaeModalEntidade').prop('disabled', true)
    };

    $('#txtDDD').on('keypress', function(event) {
      let regex = new RegExp("^[0-9]+$");
      let key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
      if (!regex.test(key)) {
        event.preventDefault();
        return false;
      }
    });

    $('#txtCNPJModalCli').on('blur', async function() {
      if ($('#txtCNPJCob').val() == '') {
        $('#txtCNPJCob').val($('#txtCNPJModalCli').val());
      }
      if ($('#txtCNPJEnt').val() == '') {
        $('#txtCNPJEnt').val($('#txtCNPJModalCli').val());
      }
    });

    async function desbloqueiaCamposParametros() {
      $('.cbModalClienteVenda').off('change');
      $('#cbConsumidorFinal').removeClass('cbModalClienteVenda');
      $('#cbAtivoCli').removeClass('cbModalClienteVenda');
      $('#cbTipoCliente').removeClass('cbModalClienteVenda');
      $('#cbTipoFornecedor').removeClass('cbModalClienteVenda');
      $('#cbTipoTerceiros').removeClass('cbModalClienteVenda');
      $('#cbTipoRepresentante').removeClass('cbModalClienteVenda');
      $('#cbTipoProspecto').removeClass('cbModalClienteVenda');
      $('#cbTipoFuncionario').removeClass('cbModalClienteVenda');
      $('#txtCodigoCliente').prop('readonly', false);
      $('#txtCNPJModalCli').prop('readonly', false);
      $('#btnConsultaReceita').prop('disabled', false);
      $('#txtDataCadastro').prop('readonly', false);
      $('#txtDataAlteracao').prop('readonly', false);
      $('#txtDataNascimento').prop('readonly', false);
      $('#txtNome').prop('readonly', false);
      $('#txtFantasia').prop('readonly', false);
      $('#rgIE').prop('disabled', false);
      $('#txtEmail').prop('readonly', false);
      $('#txtDDD').prop('readonly', false);
      $('#txtTelefone').prop('readonly', false);
      $('#txtObsCli').prop('readonly', false);
      $('#txtIE').prop('readonly', false);
      $('#txtRG').prop('readonly', false);
      $('#txtEmissor').prop('readonly', false);
      $('#rgSexo').prop('disabled', false);
      $('#rgPorteEmpresa').prop('disabled', false);
      $('#txtPais').prop('readonly', false);
      $('#btn-pais-entidade').prop('disabled', false);
      $('#btn-limpar-pais-entidade').prop('disabled', false);
      $('#txtCep').prop('readonly', false);
      $('#txtCep').prop('disabled', false);
      $('#btnCep').prop('disabled', false);
      $('#btnLimpaCep').prop('disabled', false);
      $('#txtCidade').prop('readonly', false);
      $('#txtUF').prop('readonly', false);
      $('#txtRua').prop('readonly', false);
      $('#txtNumeroCliente').prop('readonly', false);
      $('#txtBairro').prop('readonly', false);
      $('#txtComplemento').prop('readonly', false);
      $('#txtRepresentante-modal').prop('readonly', false);
      $('#btn-representante-modal').prop('disabled', false);
      $('#btn-Arepresentante-modal').prop('disabled', false);
      $('#txtTabela-modal').prop('readonly', false);
      $('#btn-tabela-modal').prop('disabled', false);
      $('#btn-Atabela-modal').prop('disabled', false);
      $('#txtCreditoGrupoModal').prop('readonly', false);
      $('#txtLimiteCredito').prop('readonly', false);
      $('#txtLimiteUsado').prop('readonly', false);
      $('#txtLimiteDisponivel').prop('readonly', false);
      $('#txtLimiteFidelidade').prop('readonly', false);
      $('#txtLimiteFidelidadeUsado').prop('readonly', false);
      $('#txtLimiteFidelidadeDisponivel').prop('readonly', false);
      $('#cbIntegraShop').removeClass('cbModalClienteVenda');
      $('#txtContaClienteModal').prop('readonly', false);
      $('#btn-contaclienteModal').prop('disabled', false);
      $('#btn-limpa-contaclienteModal').prop('disabled', false);
      $('#txtContaFornecedorModal').prop('readonly', false);
      $('#btn-contafornecedorModal').prop('disabled', false);
      $('#btn-limpa-contafornecedorModal').prop('disabled', false);
      $('#txtContaCAdiantamentoModal').prop('readonly', false);
      $('#btn-CadiantamentoModal').prop('disabled', false);
      $('#btn-limpa-CadiantamentoModal').prop('disabled', false);
      $('#txtContaFAdiantamentoModal').prop('readonly', false);
      $('#btn-FadiantamentoModal').prop('disabled', false);
      $('#btn-limpa-FadiantamentoModal').prop('disabled', false);
      $('#txtContaCDevolucaoModal').prop('readonly', false);
      $('#btn-CdevolucaoModal').prop('disabled', false);
      $('#btn-limpa-CdevolucaoModal').prop('disabled', false);
      $('#txtContaFDevolucaoModal').prop('readonly', false);
      $('#btn-FdevolucaoModal').prop('disabled', false);
      $('#btn-limpa-FdevolucaoModal').prop('disabled', false);
      $('#txtMoedaModal').prop('disabled', false);
      $('#btnMoedaModal').prop('disabled', false);
      $('#btn-limpa-moedaModal').prop('disabled', false);
      $('#txtLocalTrab').prop('readonly', false);
      $('#txtClasse').prop('readonly', false);
      $('#btn-Classe').prop('disabled', false);
      $('#btn-limpa-Classe').prop('disabled', false);
      $('#txtConfXMLModal').prop('readonly', false);
      $('#btnConfXMLModal').prop('disabled', false);
      $('#btnLimpaConfXMLModal').prop('disabled', false);
      $('#txtNomePai').prop('readonly', false);
      $('#txtNomeMae').prop('readonly', false);
      $('#txtEstadoCivil').prop('readonly', false);
      $('#txtRenda').prop('readonly', false);
      $('#txtDtAdmissao').prop('readonly', false);
      $('#rgTributacao').prop('disabled', false);
      $('#txtGrupo').prop('readonly', false);
      $('#btn-Grupo').prop('disabled', false);
      $('#btn-AGrupo').prop('disabled', false);
      $('#rgTipoFrete').prop('disabled', false);
      $('#txtTransportadoraModal').prop('readonly', false);
      $('#btnPesquisaTransportadoraModal').prop('disabled', false);
      $('#btnLimpaTransportadoraModal').prop('disabled', false);
      $('#txtMidiaSocial').prop('readonly', false);
      $('#btnEstatisticas').prop('disabled', false);
      $('input.select2-search__field').parent().removeClass('backgroundTransparent');
      $('input.select2-search__field').parent().parent().removeClass('backgroundTransparent');
      $('input.select2-search__field').parent().parent().parent().removeClass('backgroundTransparent');
      $('.cnaeModalEntidade').prop('disabled', false)
    };

    $('#btnModalNovoCliente').on('click', async function() {
      await limpaCampos();
      insereValor('#txtPais', '1058', 'BRASIL');
      const paisPadrao = await retornaPaisPadraoEntidade();
      if (paisPadrao) {
        $('#txtPais').val(paisPadrao);
      }
      await preencheDDI()
      await carregaValoresPadroes();
      $('#rgTipoEnt').prop('disabled', false);
      $('#txtCNPJModalCli').focus();
      await buscaRegiao();
    });

    $('#rgSemanaMes').change(async function() {
      await desabilitaDiasConformeSelect();
    });

    async function desabilitaDiasConformeSelect() {
      if ($('#rgSemanaMes').val() === 'SEMANA') {
        $('.cbsSemana').attr('disabled', false);
        $('.cbsMes').attr('disabled', true);
      } else if ($('#rgSemanaMes').val() === 'MES') {
        $('.cbsSemana').attr('disabled', true);
        $('.cbsMes').attr('disabled', false);
      } else {
        $('.cbsSemana').attr('disabled', false);
        $('.cbsMes').attr('disabled', false);
      }
    }



    $('#form-cliente').validate({
      debug: false,
      ignore: "",
      rules: {
        txtCNPJModalCli: {
          required: paramCadastraSemCPF != '1',
          // valida_cpf_cnpj: paramCadastraSemCPF != '1',
        },
        txtNome: {
          required: true,
          validarCaracteres: true,
        },
        txtFantasia: {
          validarCaracteres: true,
        },
        txtPais: {
          required: true,
        },
        txtCep: {
          required: true,
        },
        txtRua: {
          required: true,
        },
        txtNumero: {
          required: true,
        },
        txtBairro: {
          required: true,
        },
        txtDDD: {
          required: true,
        },
        txtTelefone: {
          required: true,
        }
      },
      messages: {
        txtCNPJModalCli: {
          required: paramCadastraSemCPF != '1' ? "Informe um CNPJ/CPF válido." : '',
          valida_cpf_cnpj: paramCadastraSemCPF != '1' ? "Informe um CNPJ/CPF válido." : '',
        },
        txtNome: {
          required: "Informe um nome válido.",
          validarCaracteres: "Nome não pode conter caracteres especiais",
        },
        txtFantasia: {
          validarCaracteres: "Fantasia não pode conter caracteres especiais",
        },
        txtPais: {
          required: "Informe um País válido."
        },
        txtCep: {
          required: "Informe um CEP válido."
        },
        txtRua: {
          required: "Informe uma Rua válida.",
        },
        txtNumero: {
          required: "Informe um Número válido.",
        },
        txtBairro: {
          required: "Informe um Bairro válido.",
        },
        txtDDD: {
          required: "Informe um DDD válido"
        },
        txtTelefone: {
          required: "Informe um Telefone válido"
        }
      },
      errorElement: 'span',
      errorPlacement: function(error, element) {
        error.addClass('invalid-feedback');
        element.closest('.form-group').append(error);
      },
      highlight: function(element, errorClass, validClass) {
        $(element).addClass('is-invalid');
      },
      unhighlight: function(element, errorClass, validClass) {
        $(element).removeClass('is-invalid');
      },
      invalidHandler: function(e, validator) {
        if (validator.errorList.length) {
          if (validator.errorList[0].element.id == "txtCep" || validator.errorList[0].element.id == "txtPais") {
            if (!$("#multiCollapseExample3").hasClass("show")) {
              $("#multiCollapseExample3").collapse("show");
            }
          }
          if (validator.errorList[0].element.id == "txtRua") {
            if (!$("#multiCollapseExample3").hasClass("show")) {
              $("#multiCollapseExample3").collapse("show");
            }
          }
          if (validator.errorList[0].element.id == "txtNumero") {
            if (!$("#multiCollapseExample3").hasClass("show")) {
              $("#multiCollapseExample3").collapse("show");
            }
          }
          if (validator.errorList[0].element.id == "txtBairro") {
            if (!$("#multiCollapseExample3").hasClass("show")) {
              $("#multiCollapseExample3").collapse("show");
            }
          }
          let id = $(
            $(`#${$(validator.errorList[0].element).prop("id")}`)
            .closest(".card-body")
            .closest(".collapse")
          ).prop("id");
          if ((!$(`#${id}`).hasClass('show')) && id != "multiCollapseExample1") {
            $(`a[href='#${id}']`).trigger("click");
          }
        }
      },

      submitHandler: async function(form, event) {
        event.preventDefault();

        if (camposObrigatorios) {
          if (camposObrigatorios.length > 0) {
            for (let i = 0; i < camposObrigatorios.length; i++) {
              const campo = $(`#${camposObrigatorios[i]}`);
              if (campo.prop('type') == 'date') {
                if (campo.val() == '' || campo.val() == '1899-01-01') {
                  const nomeCampo = campo.prev('label').text();

                  msgErro('O campo "' + nomeCampo + '" não pode estar vazio ou com a data padrão! Tente novamente.');
                  return;
                };
              };
            };
          };
        }

        const cliente = $('#txtCodCli').val();
        if (cliente == 'create') {
          try {
            $.LoadingOverlay("show");
            if (paramCadastraSemCPF != '1') {
              let validaCNPJ = formata_cpf_cnpj($('#txtCNPJModalCli').val());
              if (validaCNPJ != false) {
                $("#txtCNPJModalCli").val(validaCNPJ)
              }

              let response = await requisicao('GET', '/Sisplan/Cliente/V1/Entidade?',
                `CNPJ=${$('#txtCNPJModalCli').val()}`);

              let jsonStr = await response.json();
              if (response.status != 200) {
                $.LoadingOverlay("hide");
                msgErro(jsonStr.mensagem);
                return;
              }

              if (jsonStr.length > 0) {
                $.LoadingOverlay("hide");
                msgAlerta('CNPJ/CPF informado já existe');
                // window.location.href = '<?php echo BASE_URI; ?>/cliente/' + jsonStr[0].CODCLI;
                return;
              }
            }

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

        try {
          $.LoadingOverlay("show");

          //replace nos cep
          var cep = $('#txtCep').val().replace(/\D/g, '');
          var cepCobranca = $('#txtCepCobranca').val().replace(/\D/g, '');
          var cepEntrega = $('#txtCepEntrega').val().replace(/\D/g, '');

          let response = await requisicao('GET', '/sisplan/funcoes/v1/pesquisa?',
            `JSON={"tabela":"CADCEP", "camposSelect":["CEP"], "where": ["CEP = '${cep}'"]}`, null);

          let jsonStr = await response.json();
          if (response.status != 200) {
            $.LoadingOverlay("hide");
            msgErro(jsonStr['RESULT'][0].mensagem);
            return;
          }

          if (jsonStr['RESULT'][0].length <= 0) {
            $.LoadingOverlay("hide");
            msgAlerta('Cep não informado ou inválido.');
            $('#txtCep').focus();
            return;
          }

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

        try {
          $.LoadingOverlay("show");

          var codrep = $('#txtRepresentante-modal').val().substring(1, $('#txtRepresentante-modal').val().indexOf(
            '] - '));
          var tabela = $('#txtTabela-modal').val().substring(1, $('#txtTabela-modal').val().indexOf(
            '] - '));

          var entidade = new Object();

          let validaCNPJ = formata_cpf_cnpj($('#txtCNPJModalCli').val());
          if (validaCNPJ != false) {
            $("#txtCNPJModalCli").val(validaCNPJ)
          }

          const temCaracteresEspeciais = validarCaracteres($("#txtNome").val()) > 0;
          if (temCaracteresEspeciais) {
            msgErro("Nome não pode conter caracteres especiais");
            return;
          }

          const fantasiaTemCaracteresEspeciais = validarCaracteres($("#txtFantasia").val()) > 0;
          if (fantasiaTemCaracteresEspeciais) {
            msgErro("Fantasia não pode conter caracteres especiais");
            return;
          }

          const dadosRepresentantes = buscaDadosRepresentantes();
          const representantes = {
            cliComClientes: dadosRepresentantes
          }

          if (validarPorteCadastroPessoaJuridica()) {
            $.LoadingOverlay("hide");
            return
          }

          if (await validaContaContabil()) {
            return
          }

          entidade.CNPJ = $('#txtCNPJModalCli').val();
          entidade.CNPJ_ENT = $("#txtCNPJEnt").val();
          entidade.CNPJ_COB = $("#txtCNPJCob").val();
          entidade.DATA_CAD = $('#txtDataCadastro').val() + 'T00:00:00Z';
          entidade.DATA_BUSCA = $('#txtDataAlteracao').val() + 'T00:00:00Z';
          entidade.NOME = $('#txtNome').val();
          entidade.FANTASIA = $('#txtFantasia').val();
          entidade.OBS = $('#txtObsCli').val();
          entidade.ATIVO = $('#cbAtivoCli').is(":checked") ? 'S' : 'N';
          entidade.BLOQUEIO = $('#cbBloqueado').is(":checked") ? 'S' : 'N';
          entidade.CONS_FINAL = $("#cbConsumidorFinal").is(":checked") ? "Sim" : "Nao";
          entidade.INTEGRA_SHOPP = $("#cbIntegraShop").is(":checked") ? "N" : "S";
          entidade.NUM_RG = $('#txtRG').val();
          entidade.EMI_RG = $('#txtEmissor').val();
          entidade.INSCRICAO = $('#txtIE').val();
          entidade.SEXO = $('#rgSexo').val();
          entidade.PORTE_EMPRESA = $("#rgPorteEmpresa").val();
          entidade.DT_NASC = $('#txtDataNascimento').val();
          entidade.COD_PAIS = pegaChave('#txtPais');
          entidade.CEP = cep;
          entidade.ENDERECO = $('#txtRua').val();
          entidade.NUMERO = $('#txtNumeroCliente').val();
          entidade.COMPLEMENTO = $('#txtComplemento').val();
          entidade.BAIRRO = $('#txtBairro').val();
          entidade.TIPO = verifica_cpf_cnpj($('#txtCNPJModalCli').val()) == 'CNPJ' ? '2' : '1';
          entidade.IE_DESTINATARIO = $('#rgIE').val();
          entidade.DDI = $("#txtDDI").val().replace(/\+/g, '');
          entidade.DDD_FONE = $('#txtDDD').val();
          entidade.TELEFONE = $('#txtTelefone').val();
          entidade.EMAIL = $('#txtEmail').val();
          validaCNPJ = verifica_cpf_cnpj(entidade.CNPJ);
          entidade.SIMPLES = validaCNPJ == 'CNPJ' ? 'N' : 'S';
          entidade.CEP_COB = cepCobranca;
          entidade.END_COB = $('#txtRuaCobranca').val();
          entidade.NUM_COB = $('#txtNumeroCobranca').val();
          entidade.COMP_COB = $('#txtComplementoCobranca').val();
          entidade.BAIRRO_COB = $('#txtBairroCobranca').val();
          entidade.CEP_ENT = cepEntrega;
          entidade.END_ENT = $('#txtRuaEntrega').val();
          entidade.NUM_ENT = $('#txtNumeroEntrega').val();
          entidade.REG_ESTADO = pegaChave('#txtRegiao');
          entidade.COMP_ENT = $('#txtComplementoEntrega').val();
          entidade.BAIRRO_ENT = $('#txtBairroEntrega').val();

          entidade.CRED_CONSIGNADO = $('#txtCreditoGrupoModal').val();
          entidade.CREDITO = $('#txtLimiteCredito').val();
          entidade.CREDITO_UTILIZADO = $('#txtLimiteUsado').val();
          entidade.PERFIL = pegaChave('#txtPerfil');

          entidade.LIMITE_FID = $('#txtLimiteFidelidade').val();
          entidade.LIMITE_UTIL_FID = $('#txtLimiteFidelidadeUsado').val();
          entidade.LOCAL_TRAB = $("#txtLocalTrab").val();
          entidade.ESTADO_CIVIL = $("#txtEstadoCivil").val();
          entidade.NOME_PAI = $("#txtNomePai").val();
          entidade.NOME_MAE = $("#txtNomeMae").val();
          entidade.RENDA = $("#txtRenda").val();
          entidade.DT_ADMISSAO = $("#txtDtAdmissao").val();

          entidade.CODREP = codrep
          entidade.TABELA = tabela
          entidade.SIMPLES = $("#rgTributacao").val() != '' ? $("#rgTributacao").val() : ($('#txtCNPJModalCli').val().length == 14 ? 'S' : 'A');
          entidade.GRUPO = pegaChave("#txtGrupo");
          entidade.CLASSE = pegaChave("#txtClasse");
          entidade.COD_CONF_XML = pegaChave('#txtConfXMLModal');
          entidade.MIDIAS_SOCIAIS = $('#txtMidiaSocial').val();
          entidade.INSC_COB = $('#txtInscCob').val();
          entidade.INSC_ENT = $('#txtInscEnt').val();
          entidade.TP_FRETE = $('#rgTipoFrete').val();
          entidade.TRANSPORTE = pegaChave('#txtTransportadoraModal');
          entidade.MOEDA = parseInt($('#txtMoedaModal').val()[0]);
          // const moedas = await formataListas($('#txtMoedaModal').val().toString());
          // entidade.TIPO_DIAS_VENCTO = $('#rgSemanaMes').val();
          //CERTIFICAÇÔES
          // entidade.ABVTEX = $('#txtABVTEX').val();
          // entidade.DISNEY = $('#txtDisney').val();
          // entidade.VALIDA_ABVTEX = !$('#dtABVTEX').val() ? '1899-01-01' : $('#dtABVTEX').val();
          // entidade.LICENCIADO = !$('#dtLicenciado').val() ? '1899-01-01' : $('#dtLicenciado').val();
          //SUFRAMA
          entidade.SUFRAMA = $('#txtSuframa').val();
          entidade.VALIDA_SUFRAMA = $('#txtValidadeSuframa').val() != '' ? $('#txtValidadeSuframa').val() : '1899-12-31';
          entidade.SUFRAMA_CONF = $('#cbBenefIcms').prop('checked') ? 'I' : '';
          entidade.SUFRAMA_CONF += $('#cbBenefPis').prop('checked') ? 'P' : '';
          entidade.SUFRAMA_CONF += $('#cbBenefCofins').prop('checked') ? 'C' : '';
          entidade.COD_IMPORTADO = $("#txtCodImportado").val();
          entidade.CNAE = pegaChave('#txtCnae');

          entidade.BANCO = pegaChave('#txtBanco');
          entidade.CONTA = pegaChave('#txtConta');
          entidade.AGENCIA = $('#txtAgencia').val();
          entidade.STATUS = $('#selectStatus').val()



          let tamanhoVazio = ''
          while ($('#txtClassificacao').val().length < 4) {
            tamanhoVazio += ' ';
            $('#txtClassificacao').val(tamanhoVazio);
          }
          let classificacaoAtual = $('#rgClassificacao').val() != null ? $('#txtClassificacao').val() + $('#rgClassificacao').val() : '';
          $('#txtClassifica').val(classificacaoAtual);
          entidade.CLASSIFICA = classificacaoAtual

          entidade.DESCONTO = $('#txtPercDescontoModal').val()

          entidade.TIPO_ENTIDADE = '';
          if ($("#cbTipoCliente").is(":checked")) {
            entidade.TIPO_ENTIDADE += 'C';
          }
          if ($("#cbTipoFornecedor").is(":checked")) {
            entidade.TIPO_ENTIDADE += 'F';
          }
          if ($("#cbTipoTerceiros").is(":checked")) {
            entidade.TIPO_ENTIDADE += 'T';
          }
          if ($("#cbTipoRepresentante").is(":checked")) {
            entidade.TIPO_ENTIDADE += 'R';
          }
          if ($("#cbTipoProspecto").is(":checked")) {
            entidade.TIPO_ENTIDADE += 'P';
          }
          if ($("#cbTipoFuncionario").is(":checked")) {
            entidade.TIPO_ENTIDADE += 'E';
          }


          const checkBox = await verificaCheckBox();

          if (checkBox == false) {
            try {
              msgErro('É preciso selecionar pelo menos um tipo de entidade');
              return;
            } catch (error) {
              return;
            }
          }

          const dados = buscaDadosSetores();
          const dadosMoedas = buscaDadosMoedas();

          const setores = {
            setores: dados
          }
          const moedas = {
            moedas: dadosMoedas
          }

          if (cliente != 'create') {
            entidade.CODCLI = cliente
          }

          $('#modal-cliente').on('shown.bs.modal', function() {
            const linkContato = $('a[data-toggle="collapse"][href="#multiCollapseContato"]');

            if (linkContato.attr('aria-expanded') === 'true') {
              linkContato.trigger('click');
            }
          });

          const entidadeContabil = {
            CODCLI: cliente,
            CON_CLI: pegaChave('#txtContaClienteModal'),
            ADI_CLI: pegaChave('#txtContaCAdiantamentoModal'),
            DEV_CLI: pegaChave('#txtContaCDevolucaoModal'),
            CON_FOR: pegaChave('#txtContaFornecedorModal'),
            ADI_FOR: pegaChave('#txtContaFAdiantamentoModal'),
            DEV_FOR: pegaChave('#txtContaFDevolucaoModal')
          };

          const header =
            `LISTADIAS=${encodeURIComponent(JSON.stringify({ ARR_DIAS_VENCTO: [] }))}` +
            `&MOEDAS=${JSON.stringify(moedas)}` +
            `&SETORES=${JSON.stringify(setores)}` +
            `&CLICOM=${JSON.stringify(representantes)}` +
            `&CODUSUARIO=${getCookie('cod_usuario')}`

          const body =
            `JSON=${JSON.stringify(entidade)}` +
            `&CONTABIL=${JSON.stringify(entidadeContabil)}`

          var response = await requisicao(cliente != 'create' ? 'PUT' : 'POST',
            '/Sisplan/Cliente/V1/Entidade?', header, body, 30000)

          const listaDeContatos = [];

          if (!response) {
            $.LoadingOverlay("hide");
            return;
          }

          var jsonStr = await response.json()
          if (response.status != 200) {
            $.LoadingOverlay("hide");
            msgErro(jsonStr.mensagem)
            return
          }

          // await cadastroEntidadeContabil(jsonStr[0].CODCLI);

          $.LoadingOverlay("hide");
          toastr.success(
            'Cadastro efetuado 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: function() {
                try {
                  $('#modal-cliente').modal('hide');
                  $('#txt-cliente').val();
                  insereValor('#txtCliente', jsonStr[0].CODCLI, jsonStr[0].NOME);
                  insereValor('#txt-cliente', jsonStr[0].CODCLI, jsonStr[0].NOME);
                  $('#btn_confirmar_cliente').trigger('click');
                } catch {
                  console.log('erro ao fechar o modal cliente');
                }
              }
            }
          ).css({
            "margin-top": "20%",
            "width": "500px",
            "max-width": "500px"
          });
        } catch (error) {
          console.error(error);
          $.LoadingOverlay("hide");
          msgErro('Não foi possível gravar os dados do cliente: ' + error)
        } finally {
          $.LoadingOverlay("hide");
        }
      }
    });

    $('#txtDDI').on('input', function() {
      var value = $(this).val();
      value = value.replace(/\D/g, '');
      if (value.length > 0) {
        value = '+' + value;
      }
      $(this).val(value);
    });

    async function BuscaCep(cepInput) {
      try {
        var cep = cepInput.val().replace('-', '').trim()
        var response = await requisicao('GET', '/sisplan/funcoes/v1/pesquisa?',
          `JSON={ "tabela":"CADCEP", "camposSelect":["CIDADE.NOME CIDADE", "CIDADE.COD_UF UF"], "leftJoin": [{"tabela": "CIDADE", "condicao": "CADCEP.CODMUN = CIDADE.CODIGO"}], "where": ["CADCEP.cep = '${cep}'"]}`,
          null)
        if (!response) {
          var cidade = ''
          var uf = ''
        } else {

          var jsonStr = await response.json()
          if (response.status != 200) {
            $.LoadingOverlay("hide");
            msgErro(jsonStr['RESULT'][0].mensagem)
            return
          }

          var cidade = jsonStr['RESULT'][0][0].CIDADE
          var uf = jsonStr['RESULT'][0][0].UF
        }
      } catch (error) {
        console.error(error);
        var cidade = ''
        var uf = ''
      }
      return [cidade, uf]
    };

    async function BuscaECadastraCep(cepInput) {
      try {
        $.LoadingOverlay("show");
        try {
          const cep = cepInput.val().replace('-', '').trim();
          const response = await requisicao('GET', '/sisplan/cep/v1/CEP?', `CEP=${cep}`, null);

          if (!response) {
            return;
          }

          const jsonStr = await response.json();
          if (response.status != 200) {
            msgAlerta(jsonStr.mensagem, () => {
              abreCadastroCep(cepInput)
            }, undefined, undefined);
            return;
          }

          return [jsonStr.nOMCIDADE, jsonStr.eSTCEP, jsonStr.nOMCEP, jsonStr.bAIRRO];

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

    async function abreCadastroCep(cepField) {
      $('#modal-CEP').attr('cepField', cepField[0].id)
      $('#modal-CEP').modal('show');
      $('#txt_Cep').val('');
      $('#txtEndereco').val('');
      $('#txtBairroCEP').val('');
      $('#txtUfCEPCadastro').val('');
      $('#txtCidadeCEPCadastro').val('');
      $('#txtPaisCEPCadastro').val('');
      if ((cepField.val() != '') || (cepField.val() != undefined) || (cepField.val() != null)) {
        $('#txt_Cep').val(`${cepField.val().substr(0, 5)}-${cepField.val().substr(-3)}`);
      }
    };

    let infoCep = '';

    $('#txtCep').blur(async function() {
      await limpaCep();
      infoCep = $('#txtCep');
      try {
        let retorno = await BuscaECadastraCep(infoCep);
        if (retorno != undefined) {
          if (retorno[0] != '') {
            $("#txtCidade").val(retorno[0]);
          }
          if (retorno[1] != '') {
            $("#txtUF").val(retorno[1]);
          }
          if (retorno[2] != '') {
            $("#txtRua").val(retorno[2]);
          }
          if (retorno[3] != '') {
            $("#txtBairro").val(retorno[3]);
          }
        }
      } catch (error) {
        console.error(error);
      }
    });

    $('#txtCepEntrega').blur(async function() {
      await limpaCepEntrega()
      infoCep = $('#txtCepEntrega');
      try {
        let retorno = await BuscaECadastraCep(infoCep);
        if (retorno != undefined) {
          if (retorno[0] != '') {
            $("#txtCidadeEntrega").val(retorno[0]);
          }
          if (retorno[1] != '') {
            $("#txtUFEntrega").val(retorno[1]);
          }
          if (retorno[2] != '') {
            $("#txtRuaEntrega").val(retorno[2]);
          }
          if (retorno[3] != '') {
            $("#txtBairroEntrega").val(retorno[3]);
          }
        }
      } catch (error) {
        console.error(error);
      }
    });

    $('#txtCepCobranca').blur(async function() {
      await limpaCepCobranca();
      infoCep = $('#txtCepCobranca');
      try {
        let retorno = await BuscaECadastraCep(infoCep);
        if (retorno != undefined) {
          if (retorno[0] != '') {
            $("#txtCidadeCobranca").val(retorno[0]);
          }
          if (retorno[1] != '') {
            $("#txtUFCobranca").val(retorno[1]);
          }
          if (retorno[2] != '') {
            $("#txtRuaCobranca").val(retorno[2]);
          }
          if (retorno[3] != '') {
            $("#txtBairroCobranca").val(retorno[3]);
          }
        }
      } catch (error) {
        console.error(error);
      }
    });

    $("#btnLimpaCep").on('click', function() {
      limpaCep()
    });

    $('#lblRepresentantes').on('click', async function() {
      $('#modalVinculaRepresentante').modal('show');
      if ($.fn.DataTable.isDataTable('#tabelaRepresentantes')) {
        await sleep(200);
        $("#tabelaRepresentantes").DataTable().columns.adjust().draw(false);
      }
    });

    function buscaDadosRepresentantes() {
      let dados;
      if ($.fn.DataTable.isDataTable('#tabelaRepresentantes')) {
        const tabelaRepresentantes = $('#tabelaRepresentantes').DataTable().rows().data().toArray();

        dados = tabelaRepresentantes.map((item) => ({
          codCli: $('#txtCodCli').val(),
          codRep: item.CODREP ? item.CODREP.match(/\d+/)[0] : '',
          com1: parseFloat(item.COM1),
          com2: parseFloat(item.COM2)
        }))
      } else {
        dados = []
      }

      return dados
    }

    $('#btnConfirmarRepresentante').on('click', async function() {
      $('#modalVinculaRepresentante').modal('hide');
    });

    $("#btnLimpaCepEntrega").on('click', function() {
      limpaCepEntrega()
    });

    $("#btnLimpaCepCobranca").on('click', function() {
      limpaCepCobranca()
    });

    async function limpaCep() {
      $('#txtCidade').val('');
      $('#txtUF').val('');
      $('#txtRua').val('');
      $('#txtNumeroCliente').val('');
      $('#txtBairro').val('');
    }

    async function limpaCepEntrega() {
      $('#txtCidadeEntrega').val('');
      $('#txtUFEntrega').val('');
      $('#txtRuaEntrega').val('');
      $('#txtNumeroEntrega').val('');
      $('#txtBairroEntrega').val('');
    }

    async function limpaCepCobranca() {
      $('#txtCidadeCobranca').val('');
      $('#txtUFCobranca').val('');
      $('#txtRuaCobranca').val('');
      $('#txtNumeroCobranca').val('');
      $('#txtBairroCobranca').val('');
    }
    async function limpaCampos() {
      $('#txtCNPJModalCli').val('');
      $('#txtCNPJModalCli').attr('disabled', false);
      //valores padrões
      $('#rgIE').val('9').change();
      $('#txtDataCadastro').val(new Date().toISOString().slice(0, 10));
      $('#txtDataAlteracao').val(new Date().toISOString().slice(0, 10));
      $('#txtDataNascimento').val('1899-01-01');
      $('#rgSexo').val("M").change();
      $('rgPorteEmpresa').val('');
      $('#txtCodCli').val('create');
      $('#txtNome').val('');
      $('#txtFantasia').val('');
      $('#txtObsCli').val('');
      $('#cbAtivoCli').prop('checked', true);
      if (cadastraEntidadeBloqueada != 1) {
        $('#cbBloqueado').prop('checked', false);
      };
      $('#cbIntegraShop').prop('checked', false);
      $('#cbConsumidorFinal').prop('checked', true);
      $('#txtRG').val('');
      $('#txtEmissor').val('');
      $('#txtIE').val('');
      $('#txtCep').val('');
      $('#txtPais').val('');
      $('#txtRua').val('');
      $('#txtNumeroCliente').val('');
      $('#txtComplemento').val('');
      $('#txtBairro').val('');
      $('#txtCidade').val('');
      $('#txtUF').val('');
      $('#txtDDI').val('');
      $('#txtDDD').val('');
      $('#txtTelefone').val(''.TELEFONE);
      $('#txtEmail').val('');
      $('#txtCepEntrega').val('');
      $('#txtRuaEntrega').val('');
      $('#txtNumeroEntrega').val('');
      $('#txtComplementoEntrega').val('');
      $('#txtBairroEntrega').val('');
      $('#txtCidadeEntrega').val('');
      $('#txtUFEntrega').val('');
      $('#txtCepCobranca').val('');
      $('#txtRuaCobranca').val('');
      $('#txtNumeroCobranca').val('');
      $('#txtComplementoCobranca').val('');
      $('#txtBairroCobranca').val('');
      $('#txtCidadeCobranca').val('');
      $('#txtUFCobranca').val('');
      $('#txtRepresentante-modal').val('');
      $('#txtCreditoGrupoModal').val('');
      $('#txtLimiteCredito').val('');
      $('#txtLimiteUsado').val(0);
      $('#txtLimiteDisponivel').val(0);
      $('#txtLimiteFidelidade').val(0);
      $('#txtLimiteFidelidadeUsado').val(0);
      $('#txtLimiteFidelidadeDisponivel').val(0);
      $('#txtTabela-modal').val('');
      $('#txtCodigoCliente').val('');
      $('#txtLocalTrab').val('');
      $('#txtInscCob').val('');
      $('#txtCNPJCob').val('');
      $('#txtCNPJEnt').val('');
      $('#txtContaClienteModal').val('');
      $('#txtContaCAdiantamentoModal').val('');
      $('#txtContaCDevolucaoModal').val('');
      $('#txtContaFornecedorModal').val('');
      $('#txtContaFAdiantamentoModal').val('');
      $('#txtContaFDevolucaoModal').val('');
      limpaValor("#txtBanco");
      limpaValor("#txtConta");
      $("#txtAgencia").val('');
      $('#txtMoedaModal').empty().trigger('change');
      $("#cbTipoCliente").prop("checked", false);
      $("#cbTipoFornecedor").prop("checked", false);
      $("#cbTipoTerceiros").prop("checked", false);
      $("#cbTipoRepresentante").prop("checked", false);
      $("#cbTipoProspecto").prop("checked", false);
      $("#cbTipoFuncionario").prop("checked", false);
    };

    $(`#btnCep`).pesquisa_serverside(
      [`#txtCep`, `#txtCepInv`],
      ["CADCEP.CEP", "CIDADE.NOME"],
      ["CADCEP.CEP", "CIDADE.NOME"],
      '{' +
      '  "tabela":"CADCEP", "camposSelect":["CADCEP.CEP", "CADCEP.NOMCEP", "CADCEP.BAIRRO", "CADCEP.CODMUN", "CIDADE.NOME", "CIDADE.POPULACAO", "CIDADE.COD_UF", "TABUF.DESCRICAO", "CADPAIS.CODIGO", "CADPAIS.NOME", "CADCEP.COD_INTERNO"],' +
      '  "leftJoin": [' +
      '     {"tabela": "CIDADE", "condicao": "CADCEP.CODMUN = CIDADE.CODIGO AND CIDADE.COD_UF = CADCEP.ESTCEP"}, ' +
      '     {"tabela": "TABUF", "condicao": "TABUF.CODIGO = CADCEP.ESTCEP AND TABUF.PAIS = CADCEP.COD_PAIS"}, ' +
      '     {"tabela": "CADPAIS", "condicao": "CADPAIS.CODIGO = CADCEP.COD_PAIS"}' +
      '   ]' +
      ', "where": null}',
      'Pesquisa de CEP',
      '',
      [true, true]
    );

    $(`#btnCepEntrega`).pesquisa_serverside(
      [`#txtCepEntrega`, `#txtCepInv`],
      ["CADCEP.CEP", "CIDADE.NOME"],
      ["CADCEP.CEP", "CIDADE.NOME"],
      '{' +
      '  "tabela":"CADCEP", "camposSelect":["CADCEP.CEP", "CADCEP.NOMCEP", "CADCEP.BAIRRO", "CADCEP.CODMUN", "CIDADE.NOME", "CIDADE.POPULACAO", "CIDADE.COD_UF", "TABUF.DESCRICAO", "CADPAIS.CODIGO", "CADPAIS.NOME", "CADCEP.COD_INTERNO"],' +
      '  "leftJoin": [' +
      '     {"tabela": "CIDADE", "condicao": "CADCEP.CODMUN = CIDADE.CODIGO AND CIDADE.COD_UF = CADCEP.ESTCEP"}, ' +
      '     {"tabela": "TABUF", "condicao": "TABUF.CODIGO = CADCEP.ESTCEP AND TABUF.PAIS = CADCEP.COD_PAIS"}, ' +
      '     {"tabela": "CADPAIS", "condicao": "CADPAIS.CODIGO = CADCEP.COD_PAIS"}' +
      '   ]' +
      ', "where": null}',
      'Pesquisa de CEP',
      '',
      [true, true]
    );

    $(`#btnCepCobranca`).pesquisa_serverside(
      [`#txtCepCobranca`, `#txtCepInv`],
      ["CADCEP.CEP", "CIDADE.NOME"],
      ["CADCEP.CEP", "CIDADE.NOME"],
      '{' +
      '  "tabela":"CADCEP", "camposSelect":["CADCEP.CEP", "CADCEP.NOMCEP", "CADCEP.BAIRRO", "CADCEP.CODMUN", "CIDADE.NOME", "CIDADE.POPULACAO", "CIDADE.COD_UF", "TABUF.DESCRICAO", "CADPAIS.CODIGO", "CADPAIS.NOME", "CADCEP.COD_INTERNO"],' +
      '  "leftJoin": [' +
      '     {"tabela": "CIDADE", "condicao": "CADCEP.CODMUN = CIDADE.CODIGO AND CIDADE.COD_UF = CADCEP.ESTCEP"}, ' +
      '     {"tabela": "TABUF", "condicao": "TABUF.CODIGO = CADCEP.ESTCEP AND TABUF.PAIS = CADCEP.COD_PAIS"}, ' +
      '     {"tabela": "CADPAIS", "condicao": "CADPAIS.CODIGO = CADCEP.COD_PAIS"}' +
      '   ]' +
      ', "where": null}',
      'Pesquisa de CEP',
      '',
      [true, true]
    );

    $('#txtRepresentante-modal').autocompleta(1, `JSON={ "tabela":"represen", "camposSelect":[ "codrep chave", "nome descricao"], "where": null}`);
    $('#txtTabela-modal').autocompleta(1, `JSON={ "tabela":"regiao", "camposSelect":[ "regiao chave", "descricao descricao"], "where": null}`);
    $('#txtContaClienteModal').autocompleta(1, `JSON={ "tabela":"CONTA_CONT", "camposSelect":[ "CODIGO CHAVE", "DESCRICAO DESCRICAO"], "where": null}`);
    $('#txtContaCAdiantamentoModal').autocompleta(1, `JSON={ "tabela":"CONTA_CONT", "camposSelect":[ "CODIGO CHAVE", "DESCRICAO DESCRICAO"], "where": null}`);
    $('#txtContaCDevolucaoModal').autocompleta(1, `JSON={ "tabela":"CONTA_CONT", "camposSelect":[ "CODIGO CHAVE", "DESCRICAO DESCRICAO"], "where": null}`);
    $('#txtContaFornecedorModal').autocompleta(1, `JSON={ "tabela":"CONTA_CONT", "camposSelect":[ "CODIGO CHAVE", "DESCRICAO DESCRICAO"], "where": null}`);
    $('#txtContaFAdiantamentoModal').autocompleta(1, `JSON={ "tabela":"CONTA_CONT", "camposSelect":[ "CODIGO CHAVE", "DESCRICAO DESCRICAO"], "where": null}`);
    $('#txtContaFDevolucaoModal').autocompleta(1, `JSON={ "tabela":"CONTA_CONT", "camposSelect":[ "CODIGO CHAVE", "DESCRICAO DESCRICAO"], "where": null}`);
    $('#txtAddSetor').autocompleta(1, `JSON={ "tabela":"CADFLUXO", "camposSelect":[ "CODIGO CHAVE", "DESCRICAO DESCRICAO"], "where": null}`);
    $('#txtSetor').pesquisa_variosServerside(1, '{ "tabela":"CADFLUXO", "camposSelect":[ "CODIGO", "DESCRICAO" ], "where": null}', 'CODIGO', 'DESCRICAO');
    $("#txtAddMoeda").autocompleta(1, `JSON={ "tabela":"MOEDA", "camposSelect":["CODMOE CHAVE, DESCRICAO"], "where": [] }`);
    $("#txtAddRepresentante").autocompleta(1, `JSON={ "tabela":"REPRESEN", "camposSelect":["CODREP CHAVE, NOME DESCRICAO"], "where": [] }`);
    $("#txtConta").autocompleta(1, `JSON={ "tabela":"CADCONTA", "camposSelect":[ "Conta CHAVE", "DESCRICAO"], "where": null}`);
    $("#txtBanco").autocompleta(1, `JSON={ "tabela":"cadban", "camposSelect":["BANCO CHAVE, NOME_BANCO DESCRICAO"], "where": [] }`);

    componenteFiltro('cnae', false, false)

    // AUTOCOMPLETA ADICIONADO NA PAGE DA VENDA E DA DEVOLUCAO
    // $('#txtMoedaModal').pesquisa_variosServerside(1, '{ "tabela":"MOEDA", "camposSelect":[ "CODMOE", "DESCRICAO" ], "where": null}', 'CODMOE', 'DESCRICAO');

    $('#btn-contaclienteModal').pesquisa('#txtContaClienteModal', 'CODIGO', 'DESCRICAO', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"CONTA_CONT", "camposSelect":[ "CODIGO", "DESCRICAO"]}`, 'Pesquisa Conta Cliente', 'CONTA_CONT');
    $('#btn-CadiantamentoModal').pesquisa('#txtContaCAdiantamentoModal', 'CODIGO', 'DESCRICAO', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"CONTA_CONT", "camposSelect":[ "CODIGO", "DESCRICAO"]}`, 'Pesquisa Conta Cliente', 'CONTA_CONT');
    $('#btn-CdevolucaoModal').pesquisa('#txtContaCDevolucaoModal', 'CODIGO', 'DESCRICAO', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"CONTA_CONT", "camposSelect":[ "CODIGO", "DESCRICAO"]}`, 'Pesquisa Conta Cliente', 'CONTA_CONT');
    $('#btn-contafornecedorModal').pesquisa('#txtContaFornecedorModal', 'CODIGO', 'DESCRICAO', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"CONTA_CONT", "camposSelect":[ "CODIGO", "DESCRICAO"]}`, 'Pesquisa Conta Fornecedor', 'CONTA_CONT');
    $('#btn-FadiantamentoModal').pesquisa('#txtContaFAdiantamentoModal', 'CODIGO', 'DESCRICAO', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"CONTA_CONT", "camposSelect":[ "CODIGO", "DESCRICAO"]}`, 'Pesquisa Conta Cliente', 'CONTA_CONT');
    $('#btn-FdevolucaoModal').pesquisa('#txtContaFDevolucaoModal', 'CODIGO', 'DESCRICAO', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"CONTA_CONT", "camposSelect":[ "CODIGO", "DESCRICAO"]}`, 'Pesquisa Conta Cliente', 'CONTA_CONT');
    $('#btnMoedaModal').pesquisa_serversideSel('#txtMoedaModal', `{ "tabela":"MOEDA", "camposSelect":[ "CODMOE", "DESCRICAO"], "where": null}`, 'Pesquisa de Moeda');
    $('#btnAddSetor').pesquisa('#txtAddSetor', 'CODIGO', 'DESCRICAO', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"CADFLUXO", "camposSelect":[ "CODIGO", "DESCRICAO"]}`, 'Pesquisa Setor', 'CADFLUXO');
    $('#btnSetor').pesquisa_serversideSel('#txtSetor', `{ "tabela":"CADFLUXO", "camposSelect":[ "CODIGO", "DESCRICAO"], "where": null}`, 'Pesquisa de Setor');
    $("#btnAddMoeda").pesquisa("#txtAddMoeda", "CODMOE", "DESCRICAO", '/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"MOEDA", "camposSelect":[ "CODMOE", "DESCRICAO" ], "where": null}', "Pesquisa Moeda", "MOEDA");
    $("#btnAddRepresentante").pesquisa("#txtAddRepresentante", "CODREP", "NOME", '/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"REPRESEN", "camposSelect":[ "CODREP", "NOME" ], "where": null}', "Pesquisa Representante", "REPRESEN");
    $("#btn-Conta").pesquisa("#txtConta", "CONTA", "DESCRICAO", `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"CADCONTA", "camposSelect":[ "CONTA", "DESCRICAO"]}`, "Pesquisa Conta", "CADCONTA");
    $("#btn-Banco").pesquisa("#txtBanco", "BANCO", "NOME_BANCO", '/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"cadban", "camposSelect":[ "banco", "nome_banco" ], "where": null}', "Pesquisa Banco", "cadban");


    $("#btn-AConta").on('click', function() {
      $('#txtConta').val('');
    });

    $("#btn-ABanco").on('click', function() {
      $('#txtBanco').val('');
    });
    $("#btnLimpaAddRepresentante").on('click', function() {
      $('#txtAddRepresentante').val('');
    });

    $("#btn-limpa-contaclienteModal").on('click', function() {
      $('#txtContaClienteModal').val('');
    });

    $("#btn-limpa-CadiantamentoModal").on('click', function() {
      $('#txtContaCAdiantamentoModal').val('');
    });

    $("#btn-limpa-CdevolucaoModal").on('click', function() {
      $('#txtContaCDevolucaoModal').val('');
    });

    $("#btn-limpa-contafornecedorModal").on('click', function() {
      $('#txtContaFornecedorModal').val('');
    });

    $("#btn-limpa-FadiantamentoModal").on('click', function() {
      $('#txtContaFAdiantamentoModal').val('');
    });

    $("#btn-limpa-FdevolucaoModal").on('click', function() {
      $('#txtContaFDevolucaoModal').val('');
    });

    $("#btn-limpa-moedaModal").on('click', function() {
      $('#txtMoedaModal').empty().trigger('change');
    });

    $("#btnLimpaAddSetor").on('click', function() {
      $('#txtAddSetor').val('');
    });

    $('txtRepresentante-modal')

    $('#btn-representante-modal').pesquisa('#txtRepresentante-modal', "CODREP", "NOME", `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"represen", "camposSelect":[ "codrep", "nome"]}`, "Pesquisa Representante", "represen");
    $('#btn-Arepresentante-modal').on('click', function() {
      $('#txtRepresentante-modal').val('');
    });

    $('#btn-tabela-modal').pesquisa('#txtTabela-modal', "REGIAO", "DESCRICAO", `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela": "regiao", "camposSelect":[ "regiao", "descricao"] }`, "Pesquisa Tabela", "regiao");
    $('#btn-Atabela-modal').on('click', function() {
      $('#txtTabela-modal').val('');
    });

    $('#lblSetor').on('click', function() {
      $('#modalVinculaSetor').modal('show');
    });

    $('#tabelaSetor').DataTable({
      paging: false,
      filter: false,
      info: false,
      order: true,
      destroy: true,
    });

    function retornaBotaoOpcoes(data) {
      var retorno = '<div style="text-align:start;"> ' +
        '    <button class="btn btn-info btn-sm dropdown-toggle btnVerificaOpcoes" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> ' +
        '      ' + data + ' ' +
        '    </button> ' +
        '    <div class="dropdown-menu"> ' +
        '    <button class="dropdown-item" type="button" title="Excluir" id="btn-excluir">Excluir</button>  ' +
        '</div>';
      return retorno;
    };

    $('#txtAdicionarSetor').on('click', async function() {
      $('#tabelaSetor').DataTable().rows().data().toArray().filter((item) => {
        let codigoTabela = item[0].match(/\d+/)[0];
        let codigoInput = pegaChave('#txtAddSetor');
        if (codigoTabela == codigoInput) {
          throw msgAlerta(`Não pode inserir duas vezes o mesmo código de setor (${codigoInput}), verifique!`);
        }
      })
      if (!$('#txtAddSetor').val()) {
        throw msgAlerta('Código de setor não preenchido, impossível continuar!')
      }
      $('#tabelaSetor')
        .DataTable()
        .row
        .add([
          retornaBotaoOpcoes(pegaChave('#txtAddSetor')),
          pegaDescricao('#txtAddSetor'),
          $('#txtPerc100').val(),
          $('#txtPercPontualidade').val(),
          $('#txtPercQual').val(),
        ]).draw(false);

      $('#txtAddSetor').val('')
      $('#txtPerc100').val('')
      $('#txtPercPontualidade').val('')
      $('#txtPercQual').val('')
    });

    $('#tabelaSetor').on('click', '#btn-excluir', async function() {
      msgAlerta('Você realmente deseja excluir esse registro?', async () => {
        const data = $("#tabelaSetor").DataTable().row($(this).parents("tr"));
        await excluirSetor(data);
        data.remove().draw(false);
        // if ($('#txtSetor').val() != '') {
        let newInput = atualizaInputSetor();
        $('#txtSetor').empty().trigger('change');
        await insereValorPesquisaVarios('txtSetor', 'CODIGO', 'DESCRICAO', newInput);
        // }
      });
    });


    function buscaDadosSetores() {
      const tabelaSetor = $('#tabelaSetor').DataTable().rows().data().toArray();

      const dados = tabelaSetor.map((item) => ({
        codCli: $('#txtCodCli').val(),
        setor: item[0].match(/\d+/)[0],
        percentual100: item[2],
        percentualPontualidade: item[3],
        percentualQualidade: item[4],
      }))

      return dados
    }

    $('#txtGravarAddSetor').on('click', async function() {
      if ($('#tabelaSetor').DataTable().rows().data().toArray().length == 0) {
        throw msgAlerta('Nenhum registro na tabela, impossível continuar!')
      }
      try {
        $.LoadingOverlay('show');
        const dados = buscaDadosSetores();

        const body = {
          setores: dados
        }

        const response = await requisicao('POST', `/sisplan/cliente/v1/gravasetores?`, '', JSON.stringify(body), 15000);

        if (!response) {
          return
        }

        if (response.status != 200) {
          throw msgAlerta('Setores não cadastrados, verifique!')
        }

        toastr.success(
          `Cadastro efetuado 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,
          }
        ).css({
          "margin-top": "20%",
          "width": "500px",
          "max-width": "500px"
        });

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

    async function excluirSetor(data) {
      try {
        $.LoadingOverlay("show");
        try {
          let codSetor = data.data()[0].match(/\d+/)[0];
          let response = await requisicao("DELETE", "/sisplan/cliente/v1/excluirsetor?", `SETOR=${encodeURIComponent(codSetor)}&CODCLI=${$('#txtCodCli').val()}`, null);
          if (!response) {
            return;
          }

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

          toastr.success("Exclusão efetuada com sucesso!", "Confirmação", {
            toastClass: "success",
            iconClasses: {
              error: "alert-error",
              info: "alert-info",
              success: "alert-success",
              warning: "alert-warning",
            },
            positionClass: "toast-top-center",
            progressBar: true,
            timeOut: 3000,
            fadeOut: 1000,
          }).css({
            "margin-top": "20%",
            width: "500px",
            "max-width": "500px",
          });

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

    function atualizaInputSetor() {
      let array = []
      $('#tabelaSetor').DataTable().rows().data().toArray().filter((item) => {
        const codigo = item[0].match(/\d+/)[0]; // Extrai o código da primeira coluna
        const descricao = item[1];

        array.push({
          CODIGO: codigo,
          DESCRICAO: descricao
        });
      })

      return array
    }
    $('#tabelaMoedas').on('click', '#btn-excluir', async function() {
      msgAlerta('Você realmente deseja excluir esse registro?', async () => {
        const data = $("#tabelaMoedas").DataTable().row($(this).parents("tr"));
        await excluirMoeda(data);
        data.remove().draw(false);
        let newInput = atualizaInputMoeda();
        $('#txtMoeda').empty().trigger('change');
        await insereValorPesquisaVarios('txtMoeda', 'CODMOE', 'DESCRICAO', newInput);
      });
    });

    async function excluirMoeda(data) {
      try {
        $.LoadingOverlay("show");
        try {
          let codMoe = data.data()[0].match(/\d+/)[0];
          let response = await requisicao("DELETE", "/sisplan/cliente/v1/excluirmoeda?", `CODMOE=${encodeURIComponent(codMoe)}&CODCLI=${$('#txtCodCli').val()}`, null);
          if (!response) {
            return;
          }

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

          toastr.success("Exclusão efetuada com sucesso!", "Confirmação", {
            toastClass: "success",
            iconClasses: {
              error: "alert-error",
              info: "alert-info",
              success: "alert-success",
              warning: "alert-warning",
            },
            positionClass: "toast-top-center",
            progressBar: true,
            timeOut: 3000,
            fadeOut: 1000,
          }).css({
            "margin-top": "20%",
            width: "500px",
            "max-width": "500px",
          });

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

    $('#lblMoeda').on('click', function() {
      $('#modalVinculaMoeda').modal('show');
    });

    function atualizaInputMoeda() {
      let array = []
      $('#tabelaMoedas').DataTable().rows().data().toArray().filter((item) => {
        const codmoe = item[0].match(/\d+/)[0];
        const descricao = item[1];
        array.push({
          CODMOE: codmoe,
          DESCRICAO: descricao
        });
      })
      return array
    }

    $('#tabelaMoedas').DataTable({
      paging: false,
      filter: false,
      info: false,
      order: true,
      destroy: true,
    });

    $('#txtAdicionarMoeda').on('click', async function() {
      $('#tabelaMoedas').DataTable().rows().data().toArray().filter((item) => {
        let codigoTabela = item[0].match(/\d+/)[0];
        let codigoInput = pegaChave('#txtAddMoeda');
        if (codigoTabela == codigoInput) {
          throw msgAlerta(`Não pode inserir duas vezes o mesmo código de Moeda (${codigoInput}), verifique!`);
        }
      })
      if (!$('#txtAddMoeda').val()) {
        throw msgAlerta('Código de moeda não preenchido, impossível continuar!')
      }
      $('#tabelaMoedas')
        .DataTable()
        .row
        .add([
          retornaBotaoOpcoes(pegaChave('#txtAddMoeda')),
          pegaDescricao('#txtAddMoeda'),
        ]).draw(false);

      $('#txtAddMoeda').val('')
    });

    function buscaDadosMoedas() {
      const tabelaMoedas = $('#tabelaMoedas').DataTable().rows().data().toArray();

      const dados = tabelaMoedas.map((item) => ({
        codCli: $('#txtCodCli').val(),
        codMoe: item[0].match(/\d+/)[0],
      }))

      return dados
    }

    $("#btnConsultaReceita").on('click', async function() {
      $.LoadingOverlay("show");
      try {
        const cnpj = $("#txtCNPJModalCli").val();
        $("#txtCNPJConsulta").val(cnpj);
        $("#modalConsultaReceita").modal("show");
      } finally {
        $.LoadingOverlay("hide");
      }
    });

    $('#modal-cliente').on('shown.bs.modal', async function(event) {
      const relatedTargetId = event.target.id;
      if (relatedTargetId !== 'modalVinculaRepresentante') {
        limpaCampos();
        insereValor('#txtPais', '1058', 'BRASIL');
        const paisPadrao = await retornaPaisPadraoEntidade();
        if (paisPadrao) {
          $('#txtPais').val(paisPadrao);
        }
      }
    });

    async function cadastroEntidadeContabil(codcli) {
      try {

        const entidadecontabil = {
          CODCLI: codcli,
          CON_CLI: pegaChave('#txtContaClienteModal'),
          ADI_CLI: pegaChave('#txtContaCAdiantamentoModal'),
          DEV_CLI: pegaChave('#txtContaCDevolucaoModal'),
          CON_FOR: pegaChave('#txtContaFornecedorModal'),
          ADI_FOR: pegaChave('#txtContaFAdiantamentoModal'),
          DEV_FOR: pegaChave('#txtContaFDevolucaoModal')
        };

        let response = await requisicao("POST", "/sisplan/cliente/V1/entidadecontabil?", `JSON=${encodeURIComponent(JSON.stringify(entidadecontabil))}&CODUSUARIO=${getCookie('cod_usuario')}`);

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

        if (jsonStr.RESULT[0].length <= 0) {
          msgAlerta("Erro ao gravar dados da conta");
          return;
        }

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

    async function buscaRegiao() {
      const usuarioLogado = getCookie('cod_usuario');
      const repCadastrado = await buscaValor('ACESSO_USUARIOS', 'CODREP', 'CODIGO', usuarioLogado);
      const buscaRegiao = await CopiaParametro('VENDA', 77);

      if (repCadastrado !== undefined && typeof repCadastrado === 'object') {
        if (buscaRegiao == '1') {
          const regiao = await buscaDepositoUltimoMovimento(repCadastrado.CODREP);
          insereValor('#txtRegiao', regiao.REGIAO, regiao.DESC_REGIAO);
        }
      }
    }

    async function buscaDadosEntidadeContabil(cliente) {
      try {
        var response = await requisicao(
          "GET",
          "/Sisplan/Funcoes/v1/pesquisa?",
          `JSON={ "tabela":"CONT_ENTIDADE", "camposSelect":["CODCLI", "CON_CLI", "ADI_CLI", "DEV_CLI", "CON_FOR", "ADI_FOR", "DEV_FOR"], "where": ["CODCLI = '${cliente}'"]}`,
          null
        );
        if (!response) {
          return;
        }
        var jsonStr = await response.json();

        try {
          let resposta1 = await requisicao(
            "GET",
            "/Sisplan/Funcoes/v1/pesquisa?",
            `JSON={ "tabela":"conta_cont", 
                    "camposSelect":["descricao"], 
                    "where": ["codigo = '${jsonStr.RESULT[0][0].CON_CLI}'"]}`,
            null
          );


          let jsonStr1 = await resposta1.json();

          insereValor(
            $("#txtContaClienteModal"),
            jsonStr.RESULT[0][0].CON_CLI,
            jsonStr1.RESULT[0][0].DESCRICAO
          );
        } catch (error) {}
        try {
          let resposta2 = await requisicao(
            "GET",
            "/Sisplan/Funcoes/v1/pesquisa?",
            `JSON={ "tabela":"conta_cont", 
                      "camposSelect":["descricao"], 
                      "where": ["codigo = '${jsonStr.RESULT[0][0].ADI_CLI}'"]}`,
            null
          );

          let jsonStr2 = await resposta2.json();

          insereValor(
            $("#txtContaCAdiantamentoModal"),
            jsonStr.RESULT[0][0].ADI_CLI,
            jsonStr2.RESULT[0][0].DESCRICAO
          );
        } catch (error) {}

        try {
          let resposta3 = await requisicao(
            "GET",
            "/Sisplan/Funcoes/v1/pesquisa?",
            `JSON={ "tabela":"conta_cont", 
                        "camposSelect":["descricao"], 
                        "where": ["codigo = '${jsonStr.RESULT[0][0].DEV_CLI}'"]}`,
            null
          );


          let jsonStr3 = await resposta3.json();

          insereValor(
            $("#txtContaCDevolucaoModal"),
            jsonStr.RESULT[0][0].DEV_CLI,
            jsonStr3.RESULT[0][0].DESCRICAO
          );
        } catch (error) {}

        try {
          let resposta4 = await requisicao(
            "GET",
            "/Sisplan/Funcoes/v1/pesquisa?",
            `JSON={ "tabela":"conta_cont", 
                          "camposSelect":["descricao"], 
                          "where": ["codigo = '${jsonStr.RESULT[0][0].CON_FOR}'"]}`,
            null
          );

          let jsonStr4 = await resposta4.json();

          insereValor(
            $("#txtContaFornecedorModal"),
            jsonStr.RESULT[0][0].CON_FOR,
            jsonStr4.RESULT[0][0].DESCRICAO
          );
        } catch (error) {}

        try {
          let resposta5 = await requisicao(
            "GET",
            "/Sisplan/Funcoes/v1/pesquisa?",
            `JSON={ "tabela":"conta_cont", 
                            "camposSelect":["descricao"], 
                            "where": ["codigo = '${jsonStr.RESULT[0][0].ADI_FOR}'"]}`,
            null
          );

          let jsonStr5 = await resposta5.json();

          insereValor(
            $("#txtContaFAdiantamentoModal"),
            jsonStr.RESULT[0][0].ADI_FOR,
            jsonStr5.RESULT[0][0].DESCRICAO
          );
        } catch (error) {}

        try {
          let resposta6 = await requisicao(
            "GET",
            "/Sisplan/Funcoes/v1/pesquisa?",
            `JSON={ "tabela":"conta_cont", 
                              "camposSelect":["descricao"], 
                              "where": ["codigo = '${jsonStr.RESULT[0][0].DEV_FOR}'"]}`,
            null
          );

          let jsonStr6 = await resposta6.json();

          insereValor(
            $("#txtContaFDevolucaoModal"),
            jsonStr.RESULT[0][0].DEV_FOR,
            jsonStr6.RESULT[0][0].DESCRICAO
          );
        } catch (error) {}


      } catch (error) {
        console.error(error);
        msgErro('Erro ao buscar dados do banco');
      }
    }

    async function carregaValoresPadroes() {
      const jsonStr = await buscaValoresPadroes('ENTIDADE')

      for (const item of jsonStr) {
        switch (item.CAMPO) {
          case 'GRUPO_CLI': {
            insereValor('#txtGrupo', item.VALOR, {
              tabela: 'GRUPO_CLI',
              campoBusca: 'DESCRICAO',
              campoWhere: 'CODIGO',
              valorWhere: item.VALOR
            });
            break;
          }
          case 'SIT_DUP': {
            insereValor('#txtCstIpiSaida', item.VALOR, {
              tabela: 'TABSIT',
              campoBusca: 'DESCRICAO',
              campoWhere: 'CODIGO',
              valorWhere: item.VALOR
            });
            break;
          }
          case 'IE_DESTINATARIO': {
            $('#rgIE').val(item.VALOR).change();
            break;
          }
          case 'CODREP': {
            insereValor('#txtRepresentante-modal', item.VALOR, {
              tabela: 'REPRESEN',
              campoBusca: 'NOME',
              campoWhere: 'CODREP',
              valorWhere: item.VALOR
            });
            break;
          }
          case 'CONS_FINAL': {
            $('#cbConsumidorFinal').prop('checked', item.VALOR != 'Nao');
            break;
          }
          case 'TRANSPORTE': {
            insereValor('#txtTransportadoraModal', item.VALOR, {
              tabela: 'TABTRAN',
              campoBusca: 'NOME',
              campoWhere: 'CODIGO',
              valorWhere: item.VALOR
            });
            break;
          }
          case 'TP_FRETE': {
            $('#rgTipoFrete').val(item.VALOR).change();
            break;
          }
          case 'CLASSE': {
            insereValor('#txtClasse', item.VALOR, {
              tabela: 'CLASSE_GER',
              campoBusca: 'DESCRICAO',
              campoWhere: 'CODIGO',
              valorWhere: item.VALOR
            });
            break;
          }
          case 'EMAIL': {
            insereValor('#txtEmail', item.VALOR);
            break;
          }
          case 'MOEDAS': {
            if (item.VALOR != '') {
              try {
                const pesquisaMoeda = {
                  camposSelect: ['CODMOE', 'DESCRICAO'],
                  tabela: 'MOEDA',
                  where: [`CODMOE IN (${item.VALOR})`]
                };
                const jsonStr = await retornaJsonPesquisaPadrao(JSON.stringify(pesquisaMoeda));
                // await insereValorPesquisaVarios('txtMoedaModal', 'CODMOE', 'DESCRICAO', jsonStr);
                jsonStr.map((item) => {
                  $('#tabelaMoedas').DataTable().row.add([
                    '<div style="text-align:start;"> ' +
                    '    <button class="btn btn-info btn-sm dropdown-toggle btnVerificaOpcoes" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> ' +
                    '      ' + item.CODMOE + ' ' +
                    '    </button> ' +
                    '    <div class="dropdown-menu"> ' +
                    '    <button class="dropdown-item" type="button" title="Excluir" id="btn-excluir">Excluir</button>  ' +
                    '</div>',
                    item.DESCRICAO,
                  ]).draw(false)
                })

              } catch (error) {
                console.error(error);
              }
            }
            break;
          }
          case 'TIPO_ENTIDADE': {
            switch (item.VALOR) {
              case "CLIENTE":
                $("#cbTipoCliente").prop("checked", true);
                break;
              case "FORNECEDOR":
                $("#cbTipoFornecedor").prop("checked", true);
                break;
              case "TERCEIROS":
                $("#cbTipoTerceiros").prop("checked", true);
                break;
              case "REPRESENTANTE":
                $("#cbTipoRepresentante").prop("checked", true);
                break;
              case "PROSPECTO":
                $("#cbTipoProspecto").prop("checked", true);
                break;
              case "FUNCIONARIO":
                $("#cbTipoFuncionario").prop("checked", true);
                break;
              default:
                break;
            }
            break;
          }
          case 'CEP_PADRAO': {
            if (item.VALOR !== '') {
              insereValor('#txtCep', item.VALOR);
              $('#txtCep').trigger('blur')
            }
            break;
          }
          case 'NUMERO_PADRAO': {
            if (item.VALOR !== '') {
              insereValor('#txtNumeroCliente', item.VALOR);
            }
            break;
          }
          case 'CC_CLIENTE': {
            if ((item.VALOR != '') && (paramContaContabil == 'P')) {
              const contaContabilCliente = await buscaValor("CONTA_CONT", "DESCRICAO", "CODIGO", item.VALOR);
              insereValor('#txtContaClienteModal', item.VALOR, contaContabilCliente.DESCRICAO);
            }
            break;
          }
          case 'CC_FORNECEDOR': {
            if ((item.VALOR != '') && (paramContaContabil == 'P')) {
              const contaContabilFornecedor = await buscaValor("CONTA_CONT", "DESCRICAO", "CODIGO", item.VALOR);
              insereValor('#txtContaFornecedorModal', item.VALOR, contaContabilFornecedor.DESCRICAO);
            }
            break;
          }
          case 'CC_ADIANTAMENTO': {
            if ((item.VALOR != '') && (paramContaContabil == 'P')) {
              const contaContabilAdiantamento = await buscaValor("CONTA_CONT", "DESCRICAO", "CODIGO", item.VALOR);
              insereValor('#txtContaCAdiantamentoModal', item.VALOR, contaContabilAdiantamento.DESCRICAO);
            }
            break;
          }
          case 'CC_DEVOLUCAO': {
            if ((item.VALOR != '') && (paramContaContabil == 'P')) {
              const contaContabilDevolucao = await buscaValor("CONTA_CONT", "DESCRICAO", "CODIGO", item.VALOR);
              insereValor('#txtContaCDevolucaoModal', item.VALOR, contaContabilDevolucao.DESCRICAO);
            }
            break;
          }
          case 'CF_ADIANTAMENTO': {
            if ((item.VALOR != '') && (paramContaContabil == 'P')) {
              const contaFornecedorAdiantamento = await buscaValor("CONTA_CONT", "DESCRICAO", "CODIGO", item.VALOR);
              insereValor('#txtContaFAdiantamentoModal', item.VALOR, contaFornecedorAdiantamento.DESCRICAO);
            }
            break;
          }
          case 'CF_DEVOLUCAO': {
            if ((item.VALOR != '') && (paramContaContabil == 'P')) {
              const contaFornecedorDevolucao = await buscaValor("CONTA_CONT", "DESCRICAO", "CODIGO", item.VALOR);
              insereValor('#txtContaFDevolucaoModal', item.VALOR, contaFornecedorDevolucao.DESCRICAO);
            }
            break;
          }
          case 'TIPO_PESSOA': {
            if (item.VALOR != '') {
              $('#rgTipoEnt').val(item.VALOR).change();
            }
            break;
          }
          case 'TABELA_PRECO': {
            if (item.VALOR != '') {
              const descricao = await buscaValor('REGIAO', 'DESCRICAO', 'REGIAO', item.VALOR);
              insereValor('#txtTabela-modal', item.VALOR, descricao.DESCRICAO);
            }
            break;
          }
          case 'DDD': {
            if (item.VALOR != '') {
              insereValor('#txtDDD', item.VALOR);
            }
            break;
          }
          case 'DDI': {
            if (item.VALOR != '') {
              insereValor('#txtDDI', item.VALOR);
            }
            break;
          }
          case 'TELEFONE': {
            if (item.VALOR != '') {
              insereValor('#txtTelefone', item.VALOR);
            }
            break;
          }
          case 'COD_CONF_XML': {
            insereValor('#txtConfXMLModal', item.VALOR, { tabela: 'FATCONF_XML', campoBusca: 'DESCRICAO', campoWhere: 'CODIGO', valorWhere: item.VALOR });
            break;
          }
        }
      };

      if (isChecked('#cbTipoCliente')) {
        await rotinaTipoEntidade(false); //paramentro false para limpar os campos de fornecedor conforme erp
      } else if (isChecked('#cbTipoFornecedor')) {
        await rotinaTipoEntidade(true); //paramentro true para limpar os campos de cliente conforme erp
      }
    }

    $('#cbTipoCliente').on('click', async function () {
        await rotinaTipoEntidade(true);
    });

    $('#cbTipoFornecedor').on('click', async function () {
        await rotinaTipoEntidade(false);   
    });

    async function rotinaTipoEntidade(bCliente) {
        if ($('#txtCodigoCliente').val() == '') {
            if (bCliente) {
                if (isChecked('#cbTipoCliente')) {
                    await buscaValoresPadroesContabil();
                } else {
                    $('#txtContaClienteModal').val('');    
                    $('#txtContaCAdiantamentoModal').val('');    
                    $('#txtContaCDevolucaoModal').val('');    
                }
            } else {
                if (isChecked('#cbTipoFornecedor')) {
                    await buscaValoresPadroesContabil(bCliente);
                } else {
                    $('#txtContaFornecedorModal').val('');    
                    $('#txtContaFAdiantamentoModal').val('');    
                    $('#txtContaFDevolucaoModal').val('');    
                }
            }
        }
    }

    async function buscaValoresPadroesContabil(bCliente = true) {
        try {
          const jsonStr = await buscaValoresPadroes('ENTIDADE')

          for (const item of jsonStr) {
              switch (item.CAMPO) {
                  case 'CC_CLIENTE': {
                      if ((item.VALOR != '') && (paramContaContabil == 'P') && (bCliente)) {
                          const contaContabilCliente = await buscaValor("CONTA_CONT", "DESCRICAO", "CODIGO", item.VALOR);
                          insereValor('#txtContaClienteModal', item.VALOR, contaContabilCliente.DESCRICAO);
                      }
                      break;
                  }
                  case 'CC_FORNECEDOR': {
                      if ((item.VALOR != '') && (paramContaContabil == 'P') && (!bCliente)) {
                          const contaContabilFornecedor = await buscaValor("CONTA_CONT", "DESCRICAO", "CODIGO", item.VALOR);
                          insereValor('#txtContaFornecedorModal', item.VALOR, contaContabilFornecedor.DESCRICAO);
                      }
                      break;
                  }
                  case 'CC_ADIANTAMENTO': {
                      if ((item.VALOR != '') && (paramContaContabil == 'P') && (bCliente)) {
                          const contaContabilAdiantamento = await buscaValor("CONTA_CONT", "DESCRICAO", "CODIGO", item.VALOR);
                          insereValor('#txtContaCAdiantamentoModal', item.VALOR, contaContabilAdiantamento.DESCRICAO);
                      }
                      break;
                  }
                  case 'CC_DEVOLUCAO': {
                      if ((item.VALOR != '') && (paramContaContabil == 'P') && (bCliente)) {
                          const contaContabilDevolucao = await buscaValor("CONTA_CONT", "DESCRICAO", "CODIGO", item.VALOR);
                          insereValor('#txtContaCDevolucaoModal', item.VALOR, contaContabilDevolucao.DESCRICAO);
                      }
                      break;
                  }
                  case 'CF_ADIANTAMENTO': {
                      if ((item.VALOR != '') && (paramContaContabil == 'P') && (!bCliente)) {
                          const contaFornecedorAdiantamento = await buscaValor("CONTA_CONT", "DESCRICAO", "CODIGO", item.VALOR);
                          insereValor('#txtContaFAdiantamentoModal', item.VALOR, contaFornecedorAdiantamento.DESCRICAO);
                      }
                      break;
                  }
                  case 'CF_DEVOLUCAO': {
                      if ((item.VALOR != '') && (paramContaContabil == 'P') && (!bCliente)) {
                          const contaFornecedorDevolucao = await buscaValor("CONTA_CONT", "DESCRICAO", "CODIGO", item.VALOR);
                          insereValor('#txtContaFDevolucaoModal', item.VALOR, contaFornecedorDevolucao.DESCRICAO);
                      }
                      break;
                  }
              }
          };
        } catch (error) {
            console.log(error);
        }
    }

    $('.collapse').on('shown.bs.collapse', function(e) {
      let clicked = $(document).find("[href='#" + $(e.target).attr('id') + "']")

      clicked
        .parent()
        .find(".fa-angle-right")
        .removeClass("fa-angle-right")
        .addClass("fa-angle-down");
    }).on('hidden.bs.collapse', function(e) {
      let clicked = $(document).find("[href='#" + $(e.target).attr('id') + "']")

      clicked
        .parent()
        .find(".fa-angle-down")
        .removeClass("fa-angle-down")
        .addClass("fa-angle-right");
    });

    async function validaContaContabil() {
      if (paramContaContabil == 'M') {
        let resultado = false;
        if ((true) && (pegaChave('#txtContaClienteModal') == '')) {
          await msgAguardaConfirmacao(`Entidade com o tipo Cliente, e Conta Cliente não preenchida. Deseja continuar?`, () => {
            resultado = false
          }, () => {
            resultado = true
          });
          if (resultado) return resultado;
        }

        if ((isChecked('#cbTipoFornecedor')) && (pegaChave('#txtContaFornecedorModal') == '')) {
          await msgAguardaConfirmacao(`Entidade com o tipo Fornecedor, e Conta Fornecedor não preenchida. Deseja continuar?`, () => {
            resultado = false
          }, () => {
            resultado = true
          });
          if (resultado) return resultado;
        }
      } else if (paramContaContabil == 'B') {
        // if ((isChecked('#cbTipoCliente')) && (pegaChave('#txtContaClienteModal') == '')) {comentado inicialmente pois nesta tela não é validado se está marcado com o tipo cliente
        if ((true) && (pegaChave('#txtContaClienteModal') == '')) {
          await aguardaMsgAlerta(`Entidade com o Tipo Cliente, e Conta Cliente não preenchida. Impossível continuar.`, () => {});
          $('#txtContaClienteModal').focus();
          return true;
        }

        if ((isChecked('#cbTipoFornecedor')) && (pegaChave('#txtContaFornecedorModal') == '')) {
          await aguardaMsgAlerta(`Entidade com o Tipo Fornecedor, e Conta Fornecedor não preenchida. Impossível Continuar.`, () => {});
          $('#txtContaFornecedorModal').focus();
          return true;
        }
      }

      return false;
    }

  });

  //js do campo contato do modal cadastro de cliente

  $('#Contato a').on('click', async function() {
    await retornaContatos()
  });

  let listaContatosTabela = [];

  $('#btnIncluiContato').on('click', function() {
    desbloqueiaCampos();
    limpaCampos();
    $('#txtNumeroContato').val('');
  });

  $('#btnCancelarAlteracao').on('click', async function() {
    limpaCampos();
    bloqueiaCampos();
    if (await existeRegistroNoDataTable()) {
      await carregaContato();
    };
  });

  $('#btnAlteraContatoDentroModal').on('click', async function() {
    if ($('#txtNumeroContato').val() == '') {
      msgErro('Para fazer a alteração do contato, primeiro grave as informações do cliente!')
      return
    }
    desbloqueiaCampos();
  });

  $('#btnDuplicarContato').on('click', async function() {
    duplicarContato();
  })

  $('#btnGravaContato').on('click', async function() {
    let validaCelular = $('#txtCelularContato').val();
    if (validaCelular !== '') {
      const paisEntidade = pegaChave('#txtPais');
      validaCelular = validaCelular.replace(/[^0-9]/g, '');
      if (paisEntidade === '' || paisEntidade === '1058') {
        if (validaCelular.substring(0, 3) === '550') {
          msgErro('DDD incorreto, não pode ter o digito zero! Verifique!');
          return;
        }
        if (validaCelular.length < 12 || !validaCelular.startsWith('55')) {
          msgErro('Sua empresa utiliza o WhatsApp, campo celular precisa ter código do país + DDD + número do telefone. Verifique! Ex.: 5547988888888.');
          return;
        }
        if (validaCelular.length > 13) {
          msgErro('Sua empresa utiliza o WhatsApp, campo celular está com números a mais, precisa ter código do país + DDD + número do telefone. Verifique! Ex.: 5547988888888.');
          return;
        }
      }
    }
    await salvarContato();
  });

  async function salvarContato() {
    $('#lblEmailContato').html('E-mail:');

    try {
      if ($('#txtNomeContato').val() === '') {
        msgAlerta('Campo nome é obrigatório! Favor verifique.');
        return;
      }

      const emailContato = $('#zezinho').val();
      if (emailContato !== '') {
        if (!await validaEmail(emailContato)) {
          msgErro('Por favor, insira um endereço de e-mail válido.');
          $('#zezinho').val('');
          return;
        }
      }

      let numeroContato = $('#txtNumeroContato').val() || '';
      const cepEntidade = $('#txtCep').val();
      const pesquisaPais = {
        camposSelect: ["COD_PAIS"],
        tabela: "CADCEP",
        where: [`CEP = '${cepEntidade}'`],
      };
      const jsonStrDDD = await retornaJsonPesquisaPadrao(JSON.stringify(pesquisaPais));
      const codPais = jsonStrDDD[0].COD_PAIS;

      const nomeContato = $('#txtNomeContato').val();
      const telefoneContato = $('#txtTelefoneContato').val();
      const celularContato = $('#txtCelularContato').val();
      const cpfCnpjContato = $('#txtCPFCNPJContato').val();
      const malaDiretaContato = $('#cbMaladireta').is(':checked') ? 'S' : 'N';
      const tipoContatoCont = $('#cbPessoaJuridica').is(':checked') ? '1' : '0';
      const autorizaWhatsApp = $('#cbWhatsApp').prop('checked') ? 'S' : 'N';
      const autorizaEmail = $('#cbEmail').prop('checked') ? 'S' : 'N';
      const observacaoContato = $('#txtObsContatoEntidade').val();
      const tipoCont = $('#selectModificacao2').val();
      const textoContato = $('#txtDoContato').val();


      const dadosContato = {
        NUMERO: numeroContato,
        CODCLI: $('#txtCodigoCliente').val(),
        NOME: nomeContato,
        TELEFONE: telefoneContato,
        CELULAR: celularContato,
        CPF_CNPJ: cpfCnpjContato,
        EMAIL: emailContato,
        COD_PAIS: codPais,
        AUTORIZA_WHATSAPP: autorizaWhatsApp,
        AUTORIZA_EMAIL: autorizaEmail,
        MALA_DIRETA: malaDiretaContato,
        TIPO_CONTATO: tipoContatoCont,
        OBS: observacaoContato,
        TIPO: tipoCont,
        TEXTO: textoContato,
        ATIVO: true,
        ID_ENT: getCookie('emp_id'),
        id: numeroContato || Date.now().toString()
      };

      const novoContato = {
        NumeroContatoID: dadosContato.NUMERO,
        CodcliEntidade: dadosContato.CODCLI,
        NomeContato: dadosContato.NOME,
        TelefoneContato: dadosContato.TELEFONE,
        CelularContato: dadosContato.CELULAR,
        CPFCNPJContato: dadosContato.CPF_CNPJ,
        EmailContato: dadosContato.EMAIL,
        PaisEntidade: dadosContato.COD_PAIS,
        Autoriza_whatsapp: dadosContato.AUTORIZA_WHATSAPP,
        Autoriza_email: dadosContato.AUTORIZA_EMAIL,
        MalaDiretaContato: dadosContato.MALA_DIRETA === 'S',
        TipoContato: dadosContato.TIPO_CONTATO,
        OBS: dadosContato.OBS,
        TIPO: dadosContato.TIPO,
        TEXTO: dadosContato.TEXTO,
        AtivoContato: dadosContato.ATIVO
      };

      // const indiceContato = listaContatosTabela.findIndex(contato => contato.id === dadosContato.id);
      const indiceContato = listaContatosTabela.findIndex(contato =>
        contato.NUMERO === numeroContato && numeroContato !== '' ||
        (contato.NUMERO === '' && contato.id === dadosContato.id)
      );

      if (indiceContato !== -1) {
        listaContatosTabela[indiceContato] = dadosContato;

        const indiceListaDeContatos = listaDeContatos.findIndex(contato => contato.NumeroContatoID === dadosContato.id);
        if (indiceListaDeContatos !== -1) {
          listaDeContatos[indiceListaDeContatos] = novoContato;
        }
        listaDeContatos.push(novoContato);
        criaMensagemSucesso('Contato alterado com sucesso!');
      } else {
        listaContatosTabela.push(dadosContato);
        listaDeContatos.push(novoContato);
        criaMensagemSucesso('Contato incluído com sucesso!');
      }

      $('#tabelaContatos').DataTable().clear().rows.add(listaContatosTabela).draw();

      limpaCampos();
      bloqueiaCampos();
    } catch (error) {
      msgErro('Erro ao salvar contato. Tente novamente.');
      console.error(error);
    } finally {
      $('#lblEmailContato').html('E-mail:');
    }
  }

  $('#btnExcluirContatoModal').on('click', async function() {
    if (!await existeRegistroNoDataTable()) {
      msgErro("Não existe contato para exclusão! Verifique.");
      return;
    }

    if ($('#txtNumeroContato').val() == '') {
      msgErro('Para fazer a alteração do contato, primeiro grave as informações do cliente!')
      return
    }

    msgAlerta('Você realmente deseja excluir o registro selecionado?', async () => {
      await excluiContato();
    })
  });

  $('#btnFormataNumero').on('click', async function(e) {
    e.preventDefault()
    if ($('#txtCep').val() === '') {
      msgAlerta('CEP não informano na aba de endereço, verifique!')
      return
    }
    const sCEPEntidade = $('#txtCep').val();
    const pesquisaDDD = {
      camposSelect: [
        "CIDADE.DDD"
      ],
      tabela: "CADCEP",
      innerJoin: [{
        tabela: 'CIDADE',
        alias: "CIDADE",
        condicao: 'CIDADE.CODIGO=CADCEP.CODMUN'
      }, ],
      where: [`CADCEP.CEP = '${sCEPEntidade}'`],
    }
    const jsonStrDDD = await retornaJsonPesquisaPadrao(JSON.stringify(pesquisaDDD));
    let numeroCelular = $('#txtCelularContato').val();
    let numeroDDD = jsonStrDDD[0].DDD;
    if (numeroDDD === '') {
      numeroDDD = '47'
    }
    if (numeroCelular.length >= 9) {
      if (numeroCelular.substring(0, 2) !== '55') {
        if (numeroCelular.substring(0, 2) !== numeroDDD) {
          numeroCelular = '55' + numeroDDD + numeroCelular;
        } else {
          numeroCelular = '55' + numeroCelular;
        }
      } else if (numeroCelular.substring(2, 4) !== numeroDDD) {
        numeroCelular = numeroCelular.replace('55', '55' + numeroDDD);
      }
    } else {
      msgErro('Por favor, insira um número de celular válido! Ex.: 5547988888888.')
    }

    $('#txtCelularContato').val(numeroCelular);
  });

  $('#txtCPFCNPJContato').on('focus', function() {
    let options = {
      onKeyPress(cpf, ev, el, op) {
        let masks = ["000.000.000-000", "00.000.000/0000-00"];
        $("#txtCPFCNPJContato").mask(cpf.length > 14 ? masks[1] : masks[0], op);
      },
    };

    if ($("#txtCPFCNPJContato").val().length > 11) {
      $("#txtCPFCNPJContato").mask("00.000.000/0000-00", options);
    } else {
      $("#txtCPFCNPJContato").mask("000.000.000-00#", options);
    }
  });

  $('#btnSobeNaPrimeiraLinha').on('click', async function() {
    if (!await existeRegistroNoDataTable()) {
      msgAlerta('Não existe contatos cadastrados! Verifique.');
      return;
    };

    $('tr.selected').removeClass('selected');
    $($('#tabelaContatos tr')[1]).trigger('click');
  });

  $('#btnDesceNaUltimaLinha').on('click', async function() {
    if (!await existeRegistroNoDataTable()) {
      msgAlerta('Não existe contatos cadastrados! Verifique.');
      return;
    };

    const qtdeRows = $('#tabelaContatos').DataTable().data().toArray().length;
    $('tr.selected').removeClass('selected');
    $($('#tabelaContatos tr')[qtdeRows]).trigger('click');

  });

  $('#btnSobeUmaLinha').on('click', async function() {
    if (!await existeRegistroNoDataTable()) {
      msgAlerta('Não existe contatos cadastrados! Verifique.');
      return;
    };

    const linhaSelected = $($('tr.selected')[0]).index();

    if ((linhaSelected - 1) < 0) {
      msgAlerta('Você já está no primeiro registro!');
      return;
    };

    $('tr.selected').removeClass('selected');
    $($('#tabelaContatos tr')[linhaSelected]).trigger('click');
  });

  $('#btnDesceUmaLinha').on('click', async function() {
    if (!await existeRegistroNoDataTable()) {
      msgAlerta('Não existe contatos cadastrados! Verifique.');
      return;
    };

    const linhaSelected = $($('tr.selected')[0]).index() + 1;
    const linhaAbaixo = linhaSelected + 1;
    const qtdeRows = $('#tabelaContatos').DataTable().data().toArray().length;

    if ((linhaAbaixo - 1) === qtdeRows) {
      msgAlerta('Você já está no último registro!');
      return;
    };

    $($('#tabelaContatos tr')[linhaAbaixo]).trigger('click');
  });

  async function incluiContato() {
    $('#lblEmailContato').html('E-mail:');
    try {
      if ($('#txtNomeContato').val() === '') {
        msgAlerta('Campo nome é obrigatório! Favor verifique.');
        return;
      };

      const emailcontato = $('#zezinho').val();
      if (emailcontato !== '') {
        if (!await validaEmail(emailcontato)) {
          msgErro('Por favor, insira um endereço de e-mail válido.');
          $('#zezinho').val('');
          return;
        }
      }

      const cepEntidade = $('#txtCep').val();
      const pesquisaPais = {
        camposSelect: ["CADCEP.COD_PAIS"],
        tabela: "CADCEP",
        where: [`CADCEP.CEP = '${cepEntidade}'`],
      };
      const jsonStrDDD = await retornaJsonPesquisaPadrao(JSON.stringify(pesquisaPais));
      const codPais = jsonStrDDD[0].COD_PAIS;

      const nomeContato = $('#txtNomeContato').val();
      const telefoneContato = $('#txtTelefoneContato').val();
      const celularContato = $('#txtCelularContato').val();
      const cpfCnpjContato = $('#txtCPFCNPJContato').val();
      const emailContato = $('#zezinho').val();
      const malaDiretaContato = $('#cbMaladireta').is(':checked');
      const ativoContato = true;
      const tipoContatoCont = $('#cbPessoaJuridica').is(':checked') ? '1' : '0';
      const autorizaWhatsApp = $('#cbWhatsApp').prop('checked') ? true : false;
      const autorizaEmail = $('#cbEmail').prop('checked') ? true : false;

      let dadosContatoNovo = {
        NOMECONTATONOVO: nomeContato,
        TELEFONECONTATONOVO: telefoneContato,
        CELULARCONTATONOVO: celularContato,
        CPFCNPJCONTATONOVO: cpfCnpjContato,
        EMAILCONTATONOVO: emailContato,
        MALADIRETACONTATONOVO: malaDiretaContato,
        ATIVOCONTATONOVO: ativoContato,
        TIPOCONTATONOVO: tipoContatoCont,
        NUMEROCONTATOID: 0,
        COD_PAIS: codPais,
        AUTORIZA_WHATSAPP: autorizaWhatsApp,
        AUTORIZA_EMAIL: autorizaEmail
      };

      listaContatosTabela.push({
        NUMERO: ' ',
        CODCLI: ' ',
        NOME: nomeContato,
        TELEFONE: telefoneContato,
        CELULAR: celularContato,
        CPF_CNPJ: cpfCnpjContato,
        EMAIL: emailContato,
        ID_ENT: ' ',
        AUTORIZA_WHATSAPP: autorizaWhatsApp,
        AUTORIZA_EMAIL: autorizaEmail
      });

      atualizaTabelaContatos();
      limpaCampos();

      function atualizaTabelaContatos() {
        let tabela = $('#tabelaContatos').DataTable();
        tabela.rows.add(listaContatosTabela).draw();
      }

      criaMensagemSucesso('Contato foi adicionado à lista!', () => {
        setTimeout(() => {
          $("#btnCancelarAlteracao").trigger('click');
        }, 500);
      });

    } finally {
      $('#lblEmailContato').html('E-mail:');
    }
  }

  async function alteraContato() {
    if ($('#txtNomeContato').val() === '') {
      msgAlerta('Campo nome é obrigatório! Favor verifique.');
      return;
    };

    const emailcontato = $('#zezinho').val();
    if (emailcontato !== '') {
      if (!await validaEmail(emailcontato)) {
        msgErro('Por favor, insira um endereço de e-mail válido.');
        $('#zezinho').val('');
        return;
      }
    }

    const numeroAlteracao = $('#txtNumeroContato').val();
    const entidadeAlteracao = $('#txtCodigoCliente').val();
    const nomeContatoAlteracao = $('#txtNomeContato').val();
    const telefoneContatoAlteracao = $('#txtTelefoneContato').val();
    const celularContatoAlteracao = $('#txtCelularContato').val();
    const cpfCnpjContatoAlteracao = $('#txtCPFCNPJContato').val();
    const emailContatoAlteracao = $('#zezinho').val();
    const malaDiretaContatoAlteracao = $('#cbMaladireta').is(':checked');
    const ativoContatoAlteracao = true;
    const tipoContatoContAlteracao = $('#cbPessoaJuridica').is(':checked') ? '1' : '0';
    const autorizaWhatsApp = $('#cbWhatsApp').prop('checked') ? true : false;
    const autorizaEmail = $('#cbEmail').prop('checked') ? true : false;
    const observacaoContato = $('#txtObsContatoEntidade').val();
    const tipoCont = $('#selectModificacao2').val();
    const textoContato = $('#txtDoContato').val();




    listaContatosTabela = {
      NUMEROCONTATOID: numeroAlteracao,
      ENTIDADECONTATONOVO: entidadeAlteracao,
      NOMECONTATONOVO: nomeContatoAlteracao,
      TELEFONECONTATONOVO: telefoneContatoAlteracao,
      CELULARCONTATONOVO: celularContatoAlteracao,
      CPFCNPJCONTATONOVO: cpfCnpjContatoAlteracao,
      EMAILCONTATONOVO: emailContatoAlteracao,
      MALADIRETACONTATONOVO: malaDiretaContatoAlteracao,
      ATIVOCONTATONOVO: ativoContatoAlteracao,
      TIPOCONTATONOVO: tipoContatoContAlteracao,
      AUTORIZA_WHATSAPP: autorizaWhatsApp,
      AUTORIZA_EMAIL: autorizaEmail,
      OBS: dadosContato.OBS,
      TIPO: dadosContato.TIPO,
      TEXTO: dadosContato.TEXTO,
    };
    $('#tabelaContatos').DataTable().clear().rows.add(listaContatosTabela).draw();

    criaMensagemSucesso('Contato foi alterado com sucesso!');
    limpaCampos();
  }

  async function excluiContato() {
    if ($('#txtCodigoCliente').val() === '' && $('#txtClienteContato').val() === '') {
      msgAlerta('Para realizar a exclusão, primeiro realize o cadastro deste registro.')
    }
    const codcliCliente = $('#txtCodigoCliente').val();
    const numeroCliente = $('#txtNumeroContato').val();
    let response = await requisicao("DELETE", "/sisplan/cliente/v1/deletacontato?", `CODCLI=${codcliCliente}&NUMERO=${numeroCliente}`, null);

    if (response.status === 400) {
      msgAlerta('Não foi possível fazer a exclusão do contato!');
      return;
    }
    if (response.status === 200) {
      criaMensagemSucesso('Contato selecionado foi excluído com sucesso!',
        await retornaContatos()
      );
      return;
    }
  };

  async function carregaContato() {

    const indiceSelecionado = $($('#tabelaContatos tr.selected')[0]).index();
    const linhaSelecionada = $('#tabelaContatos').DataTable().row(indiceSelecionado).data();

    linhaSelecionada.NOME !== '' && linhaSelecionada.NOME !== null ? $('#txtNomeContato').val(linhaSelecionada.NOME) : $('#txtNomeContato').val('');
    linhaSelecionada.TELEFONE !== '' && linhaSelecionada.TELEFONE !== null ? $('#txtTelefoneContato').val(linhaSelecionada.TELEFONE) : $('#txtTelefoneContato').val('');
    linhaSelecionada.CELULAR !== '' && linhaSelecionada.CELULAR !== null ? $('#txtCelularContato').val(linhaSelecionada.CELULAR) : $('#txtCelularContato').val('');
    linhaSelecionada.CPF_CNPJ !== '' && linhaSelecionada.CPF_CNPJ !== null ? $('#txtCPFCNPJContato').val(linhaSelecionada.CPF_CNPJ) : $('#txtCPFCNPJContato').val('');
    linhaSelecionada.EMAIL !== '' && linhaSelecionada.EMAIL !== null ? $('#zezinho').val(linhaSelecionada.EMAIL) : $('#zezinho').val('');
    linhaSelecionada.NUMERO !== '' && linhaSelecionada.NUMERO !== null ? $('#txtNumeroContato').val(linhaSelecionada.NUMERO) : $('#txtNumeroContato').val('');
    linhaSelecionada.TIPO_CONTATO === '1' ? ($('#cbPessoaJuridica').prop('checked', true), $('#cbPessoaFisica').prop('checked', false), $('#cbPessoaFisica').prop('disabled', true), $('#cbPessoaJuridica').prop('disabled', true)) : ($('#cbPessoaJuridica').prop('checked', false), $('#cbPessoaFisica').prop('checked', true), $('#cbPessoaFisica').prop('disabled', true), $('#cbPessoaJuridica').prop('disabled', true));
    linhaSelecionada.MALA_DIRETA === 'S' ? ($('#cbMaladireta').prop('checked', true), $('#cbMaladireta').prop('disabled', true)) : ($('#cbMaladireta').prop('checked', false), $('#cbMaladireta').prop('disabled', true));
    linhaSelecionada.AUTORIZA_WHATSAPP === 'S' ? ($('#cbWhatsApp').prop('checked', true), $('#cbWhatsApp').prop('disabled', true)) : ($('#cbWhatsApp').prop('checked', false), $('#cbWhatsApp').prop('disabled', true))
    linhaSelecionada.AUTORIZA_EMAIL === 'S' ? ($('#cbEmail').prop('checked', true), $('#cbEmail').prop('disabled', true)) : ($('#cbEmail').prop('checked', false), $('#cbEmail').prop('disabled', true))
    linhaSelecionada.OBS !== '' && linhaSelecionada.OBS !== null ? $('#txtObsContatoEntidade').val(linhaSelecionada.OBS) : $('#txtObsContatoEntidade').val('');
    linhaSelecionada.TEXTO !== '' && linhaSelecionada.TEXTO !== null ? $('#txtDoContato').val(linhaSelecionada.TEXTO) : $('#txtDoContato').val('');

    if (linhaSelecionada.TIPO === 'Agendamento') {
      $('#selectModificacao2').val(0);
    } else if (linhaSelecionada.TIPO === 'Comercial') {
      $('#selectModificacao2').val(1);
    } else if (linhaSelecionada.TIPO === 'Compras') {
      $('#selectModificacao2').val(2);
    } else if (linhaSelecionada.TIPO === 'Estilista') {
      $('#selectModificacao2').val(3);
    } else if (linhaSelecionada.TIPO === 'Financeiro') {
      $('#selectModificacao2').val(4);
    } else if (linhaSelecionada.TIPO === 'Laboratório') {
      $('#selectModificacao2').val(5);
    } else if (linhaSelecionada.TIPO === 'NFe') {
      $('#selectModificacao2').val(6);
    } else if (linhaSelecionada.TIPO === 'Orçamento') {
      $('#selectModificacao2').val(7);
    } else if (linhaSelecionada.TIPO === 'Ord.Produção') {
      $('#selectModificacao2').val(8);
    } else if (linhaSelecionada.TIPO === 'Pagar') {
      $('#selectModificacao2').val(9);
    } else if (linhaSelecionada.TIPO === 'Receber') {
      $('#selectModificacao2').val(10);
    } else if (linhaSelecionada.TIPO === 'SAC') {
      $('#selectModificacao2').val(11);
    } else if (linhaSelecionada.TIPO === 'Serviço') {
      $('#selectModificacao2').val(12);
    } else if (linhaSelecionada.TIPO === 'Sócio/Gerente') {
      $('#selectModificacao2').val(13);
    } else if (linhaSelecionada.TIPO === 'Vendas') {
      $('#selectModificacao2').val(14);
    } else if (linhaSelecionada.TIPO === 'Qualidade') {
      $('#selectModificacao2').val(15);
    } else if (linhaSelecionada.TIPO === 'Marketing') {
      $('#selectModificacao2').val(16);
    } else if (linhaSelecionada.TIPO === 'Ref.Comerciais') {
      $('#selectModificacao2').val(17);
    } else if (linhaSelecionada.TIPO === 'CTe') {
      $('#selectModificacao2').val(18);
    } else if (linhaSelecionada.TIPO === 'Representante') {
      $('#selectModificacao2').val(19);
    } else if (linhaSelecionada.TIPO === 'Facção') {
      $('#selectModificacao2').val(20);
    } else if (linhaSelecionada.TIPO === 'RH') {
      $('#selectModificacao2').val(21);
    } else if (linhaSelecionada.TIPO === 'Tecelagem') {
      $('#selectModificacao2').val(22);
    };
    if (linhaSelecionada.TIPO === 'NFe') {
      $('#lblSomenteXML').removeClass('d-none');
    } else {
      $('#lblSomenteXML').addClass('d-none');
    }

  };

  async function retornaContatos() {
    if ($.fn.DataTable.isDataTable('#tabelaContatos')) {
      $('#tabelaContatos').DataTable().destroy();
      $('#tabelaContatos').empty();
    };

    const codcliEntidadeContato = $('#txtCodCli').val()

    const PesquisaContatosJaCad = {
      tabela: "CONTATO",
      camposSelect: ["NUMERO",
        "CODCLI",
        "NOME",
        "FONE AS TELEFONE",
        "CELULAR",
        "EMAIL",
        "CPF_CNPJ",
        "TIPO",
        "TEXTO",
        "OBS",
        "MALA_DIRETA",
        "ID_ENT",
        "AUTORIZA_WHATSAPP",
        "AUTORIZA_EMAIL"
      ],
      where: [
        `1=1 AND CODCLI = '${codcliEntidadeContato}'`,
      ],
      orderBy: [
        "NUMERO",
      ]

    };

    const jsonStrContatosPesquisa = await retornaJsonPesquisaPadrao(JSON.stringify(PesquisaContatosJaCad));

    listaContatosTabela = jsonStrContatosPesquisa;

    const FormatoDtNovo = 'DD/MM/YYYY';

    const dataSetColsModal = [];

    dataSetColsModal.push({
      title: 'Número',
      data: 'NUMERO',
    });

    dataSetColsModal.push({
      title: 'Código',
      data: 'CODCLI',
    });

    dataSetColsModal.push({
      title: 'Nome',
      data: 'NOME',
    });

    dataSetColsModal.push({
      title: 'Telefone',
      data: 'TELEFONE',
    });

    dataSetColsModal.push({
      title: 'Celular',
      data: 'CELULAR',
    });

    dataSetColsModal.push({
      title: 'E-mail',
      data: 'EMAIL',
    });

    dataSetColsModal.push({
      title: 'Texto',
      data: 'TEXTO',
    });

    dataSetColsModal.push({
      title: 'Tipo',
      data: 'TIPO',
    });

    dataSetColsModal.push({
      title: 'Observações',
      data: 'OBS',
    });

    dataSetColsModal.push({
      title: 'CPF/CNPJ',
      data: 'CPF_CNPJ',
    });

    dataSetColsModal.push({
      title: 'ID Ent',
      data: 'ID_ENT',
    });

    dataSetColsModal.push({
      title: 'Autoriza WhatsApp',
      data: 'AUTORIZA_WHATSAPP',
    });

    dataSetColsModal.push({
      title: 'Autoriza E-mail',
      data: 'AUTORIZA_EMAIL',
    });

    $('#tabelaContatos').DataTable({
      bPaginate: false,
      destroy: true,
      search: false,
      filter: false,
      info: true,
      order: false,
      columns: dataSetColsModal,
      data: listaContatosTabela,
    });

    $("#tabelaContatos tbody").on("click", "tr", async function() {
      $("#tabelaContatos").dataTable().$("tr.selected").removeClass("selected");
      $(this).addClass("selected");
      await carregaContato();
      bloqueiaCampos();
    });
  };

  async function validaEmail(emaildoContato) {
    const regex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;
    return regex.test(emaildoContato)
  };

  async function existeRegistroNoDataTable() {

    const qtde = $('#tabelaContatos').DataTable().data().toArray().length;

    let existeRegistro;

    if (qtde > 0) {
      existeRegistro = true
    } else {
      existeRegistro = false;
    }

    return existeRegistro;
  };

  async function selectPrimeiraLinha() {

    if (!await existeRegistroNoDataTable()) {
      return;
    };

    $($('#tabelaContatos tbody tr')[0]).addClass('selected');
  };

  async function adicionaTipos() {
    const pesquisaParam = {
      tabela: 'TPDOCPESSOA',
      camposSelect: ['DESCRICAO', 'MASCARA'],
      where: ["ATIVO = 'S'"],
    }
    const jsonStr = await retornaJsonPesquisaPadrao(JSON.stringify(pesquisaParam));
    jsonStr.map((item, index) => {
      $("#rgTipoEnt").append(new Option(item.DESCRICAO, item.MASCARA, null, index == 0));
    });

    if (jsonStr.length > 0) {
      ajustaMaskCpfCnpj();
    }
  };

  async function ajustaMaskCpfCnpj() {
    const alterarTipoCnpjCpf = await CopiaParametro('ENTIDADE', 7);
    const naoPermiteAlterarTipoCNPJ = ((alterarTipoCnpjCpf == '0') || ((alterarTipoCnpjCpf == '2') && (!bTipoUsuarioMasterOuSupervisor)));
    if (($(window.location.href.split('/')).get(-1) != 'create') && ($('#txtCodigoCliente').val() != '') && (naoPermiteAlterarTipoCNPJ)) {
      $('#rgTipoEnt').prop('disabled', true);
      return;
    }

    const options = {
      onKeyPress(cpf, ev, el, op) {
        let mask = pegaValor('#rgTipoEnt').replaceAll('#', '0');
        $("#txtCNPJModalCli").mask(mask, op);
      },
    };

    if (($(window.location.href.split('/')).get(-1) == 'create') && ($('#txtCodigoCliente').val() != '')) {
      $("#txtCNPJModalCli").val('');
    }

    const caracteresMask = filtrarCaracteres(pegaValor('#rgTipoEnt'), ["A", "a", "L", "#", "C", "c"]);
    limitaCaracteresInput("txtCNPJModalCli", caracteresMask.length);

  }

  $('#rgTipoEnt').on('change', function() {
    ajustaMaskCpfCnpj();
  });

  $("#txtCNPJModalCli").on("focus", function() {
    const cnpj = $(this).val();
    const alfanumericos = cnpj.replace(/[^a-zA-Z0-9]/g, "");
    $(this).val(alfanumericos);
  })
</script>