<?php include_once('../../config.php') ?>

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>Sisplan Web | Devolução</title>
  <!-- Tell the browser to be responsive to screen width -->
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta http-equiv="cache-control" content="max-age=0" />
  <meta http-equiv="cache-control" content="no-cache" />
  <meta http-equiv="expires" content="0" />
  <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
  <!-- Theme style -->
  <link rel="stylesheet" href="<?php echo BASE_URI; ?>/dist/css/adminlte.min.css?versao=3.2512.9.1">
  <!-- Font Awesome -->
  <link rel="stylesheet" href="<?php echo BASE_URI; ?>/plugins/fontawesome-free/css/all.min.css?versao=3.2512.9.1">
  <!-- Google Font: Source Sans Pro -->
  <link href='https://fonts.googleapis.com/css?family=Roboto:400,300,500,600,700,400italic' rel='stylesheet' type='text/css'>
  <link href='../dist/css/bootstrap.min.css'>
  <link rel="stylesheet" href="<?php echo BASE_URI; ?>/dist/css/custom.css?versao=3.2512.9.1">
  <link rel="stylesheet" href="<?php echo BASE_URI; ?>/dist/css/sisplan.css?versao=3.2512.9.1">
  <link rel="stylesheet" href="<?php echo BASE_URI; ?>/dist/css/PesquisaVariosSelect2.css?versao=3.2512.9.1">
  <link rel="stylesheet" type="text/css" href="<?php echo BASE_URI; ?>/plugins/datatables-keytable/css/keyTable.bootstrap4.min.css?versao=3.2512.9.1">
  <link rel="stylesheet" type="text/css" href="../dist/css/responsive.bootstrap.min.css?versao=3.2512.9.1">
  <link rel="shortcut icon" href="<?php echo BASE_URI; ?>/favicon.ico">
  <link rel="stylesheet" type="text/css" href="<?php echo BASE_URI; ?>/dist/css/driver.min.css?versao=3.2512.9.1" />
  <!-- Toastr -->
  <link rel="stylesheet" href="<?php echo BASE_URI; ?>/plugins/toastr/toastr.min.css?versao=3.2512.9.1">
  <link rel="stylesheet" href="<?php echo BASE_URI; ?>/dist/css/jquery-ui.css?versao=3.2512.9.1">
  <link rel="stylesheet" href="dist/css/animate.min.css">
  <link rel="stylesheet" href="<?php echo BASE_URI; ?>/plugins/icheck-bootstrap/icheck-bootstrap.min.css?versao=3.2512.9.1">
  <link rel="stylesheet" href="<?php echo BASE_URI; ?>/plugins/owl/assets/owl.carousel.min.css?versao=3.2512.9.1">
  <link rel="stylesheet" href="<?php echo BASE_URI; ?>/plugins/owl/assets/owl.theme.default.min.css?versao=3.2512.9.1">
  <link rel="stylesheet" href="<?php echo BASE_URI; ?>/dist/css/normalize.css?versao=3.2512.9.1">
  <link rel="stylesheet" href="<?php echo BASE_URI; ?>/plugins/select2/css/select2.min.css?versao=3.2512.9.1">
  <link rel="stylesheet" href="<?php echo BASE_URI; ?>/plugins/select2-bootstrap4-theme/select2-bootstrap4.min.css?versao=3.2512.9.1">
  <style>
    #fieldset_venda .form-group {
      margin-bottom: 4px !important;
    }

    #tabela-dinamica_wrapper .table.dataTable tbody td,
    #tabela-dinamica_wrapper .table.dataTable thead th {
      white-space: nowrap;
      text-overflow: ellipsis;
      overflow: hidden;
      max-width: 450px;
    }


    .form-control:disabled,
    .form-control[readonly] {
      background-color: #f7f7f7;
      opacity: 1;
    }

    div>button,
    div>.float-right {
      font-size: 15px !important;
    }

    .btn-sm {
      padding-bottom: 0 !important;
      padding-top: 0 !important;
    }

    .close {
      font-size: 25px !important;
    }

    .card {
      background-color: transparent !important;
      box-shadow: none !important;
    }

    table.dataTable {
      width: 100%;
    }

    body {
      margin-bottom: 60px;
    }

    #tabelaItens tr td {
      color: red !important;
    }

    .botoesMenu {
      height: 100%;
      padding-left: auto;
      padding-right: auto;
      color: white !important;
      min-width: 150px;
      font-weight: bold;
      margin-left: -4px !important;
      font-size: 1rem !important;
      background-color: #343a40;
      cursor: pointer !important;
    }

    .botoesMenu:hover {
      background-color: var(--btn-hover);
    }

    @media only screen and (max-width: 400px) {
      .wrappers {
        margin-bottom: 200px;
      }
    }

    .btn-info {
      background-color: var(--blue-color) !important;
    }

    .container-box {
      background-color: var(--card-color) !important;
    }

    .container-box,
    .container-lined {
      box-shadow: 0 1px 1px 0 var(--widget-secondary-color) !important;

    }

    label,
    p,
    h5,
    h4,
    h3,
    h2,
    h1 {
      color: var(--font-color) !important;
    }

    /* .slider.round {
            height: auto !important;
        }
        */
    .switch {
      height: auto !important;
    }

    .btn-group {
      display: block;
      height: 100%;
    }

    .dropdown-menu.show {
      width: 100%;
    }

    .dropdown-item {
      cursor: pointer;
    }


    .navbar {
      padding: 0.3rem 0.5rem;
    }

    #menu_top {
      padding: 0rem;
    }


    .btn-sm {
      padding-bottom: 0 !important;
      padding-top: 0 !important;
    }

    :root {
      --animate-duration: 800ms;
      --animate-delay: 120ms;
    }

    .submenu {
      justify-content: center;
      align-items: center;
      flex-direction: initial !important;
    }

    .owl-carousel {
      text-align: center;
    }

    .owl-carousel .item {
      color: var(--fonteComplete);
      height: 6rem;
      background: rgb(0 0 0 / 35%) !important;
      padding: 1rem;
      border-radius: 10px 10px 10px 10px;
      margin-bottom: 10px;
      margin-top: 10px;
    }

    #form-cliente {
      text-align: start;
      position: relative;
    }

    #form-cliente .card {
      box-shadow: none !important;
      border-radius: 0 !important;
      margin-bottom: 0 !important;
    }

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

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

    .textTroco {
      font-size: 20px;
      text-align: right;
      margin-bottom: 0.5rem;
    }

    .textDesconto {
      color: #4AF76A !important;
    }

    .dropdown-toggle::after {
      margin-left: 0 !important;
    }

    .card-body {
      padding: 0.5rem !important;
    }

    body {
      width: 100%;
      margin-left: 0;
    }

    @media only screen and (min-width: 576px) {
      .footer {
        margin: 0;
        width: calc(99% - 4.6rem);
      }

      .card-body {
        padding: 1.25rem !important;
      }

      body {
        width: calc(100% - 4.6rem) !important;
        margin-left: 4.6rem !important;
      }

      .sidebar-mini.sidebar-collapse .main-sidebar,
      .sidebar-mini.sidebar-collapse .main-sidebar::before {
        margin-left: 0;
        width: 4.6rem;
        overflow-x: hidden;
        box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22) !important;
      }

      .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused,
      .sidebar-mini.sidebar-collapse .main-sidebar:hover {
        width: 250px;
        box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22) !important;
      }

      .sidebar-mini .nav-sidebar,
      .sidebar-mini .nav-sidebar .nav-link,
      .sidebar-mini .nav-sidebar>.nav-header {
        white-space: nowrap;
      }

      .sidebar-mini.sidebar-collapse .brand-text,
      .sidebar-mini.sidebar-collapse .nav-sidebar .nav-link p,
      .sidebar-mini.sidebar-collapse .sidebar .user-panel>.info {
        margin-left: -10px;
        -webkit-animation-name: fadeOut;
        animation-name: fadeOut;
        -webkit-animation-duration: 0.3s;
        animation-duration: 0.3s;
        -webkit-animation-fill-mode: both;
        animation-fill-mode: both;
        visibility: hidden;
      }

      .main-sidebar:hover .nav-sidebar .nav-link p {
        visibility: visible;
        animation-fill-mode: none;
        -webkit-animation-fill-mode: none;
        margin-left: 0;
      }

      .sidebar-mini.sidebar-collapse .nav-sidebar .nav-link p {
        width: 0;
        white-space: nowrap;
      }

    }

    .nav-link {
      display: flex;
      align-items: center;
      width: 100%;
    }

    .nav-link i {
      text-align: center;
      font-size: 25px !important;
      margin-right: 10px !important;
    }

    .menuFlex {
      display: flex;
      align-items: center;
      justify-content: center;
      height: 75%;
    }

    .nav-link i {
      margin-right: 0px !important;
    }

    #buttonLeft {
      margin-left: -8px !important;
      padding: 6px !important;
      padding-right: 8px !important;
      display: flex;
      align-items: center;
      justify-content: center;
      box-shadow: rgb(255, 255, 255) 0px 0.5px 2px !important;
      border-radius: 5px;
    }

    .nav-link p {
      margin-left: 10px !important;
    }

    .nav-item {
      cursor: pointer !important;
    }

    [class*=sidebar-dark-] .sidebar p {
      color: #c2c7d0 !important;
    }

    header {
      margin: 0;
    }

    #subHeader {
      width: 80px;
    }

    #menuVenda {
      background-color: var(--menu-color) !important;
    }

    .main-sidebar {
      height: 100% !important;
      overflow-y: hidden;
      z-index: 1038;
    }

    .layout-fixed .wrapper .sidebar {
      height: calc(100% - (3.5rem + 1px));
    }

    .modal-backdrop {
      display: none;
    }

    .brand-link .brand-image {
      float: left !important;
      line-height: .8 !important;
      margin-left: 0.3rem !important;
      margin-right: 0.5rem !important;
      margin-top: -5px !important;
      max-height: 40px !important;
      width: auto !important;
    }
  </style>
</head>

<aside class="main-sidebar sidebar-dark-primary" id="menuVenda">
  <a class="brand-link">
    <img src="<?php echo BASE_URI; ?>/dist/img/icon.png" alt="Logo Sisplan" class="brand-image">
    <span class="brand-text font-weight-light">Devolução</span>
  </a>

  <div class="sidebar">
    <div class="menuFlex">
      <nav class="mt-2" id="menuGeral">
        <ul class="nav nav-pills nav-sidebar flex-column nav-compact" style="user-select: none;" data-widget="treeview" role="menu" data-accordion="false" id="menu_esquerda">
          <li class="nav-item" id="abreAjuda">
            <a class="nav-link">
              <div id="buttonLeft">
                <i class="nav-icon fas fa-info-circle"></i>
              </div>
              <p>
                Ajuda/Atalhos
              </p>
            </a>
          </li>
          <li class="nav-item" id="abreCadCli">
            <a class="nav-link">
              <div id="buttonLeft">
                <i class="nav-icon fas fa-user-plus"></i>
              </div>
              <p>
                Cadastro de Cliente (F2)
              </p>
            </a>
          </li>
          <li class="nav-item" id="abrePreco">
            <a class="nav-link">
              <div id="buttonLeft">
                <i class="nav-icon fas fas fa-search-dollar"></i>
              </div>
              <p>
                Consulta de preços
              </p>
            </a>
          </li>
        </ul>
      </nav>
    </div>
  </div>
</aside>


<body class=" sidebar-mini layout-fixed sidebar-closed sidebar-collapse">
  <header>
    <div class="card-header" id="menu_top">
      <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
        <div class="d-flex">
          <h6 style="color:white!important;margin-top:auto;margin-bottom:auto;margin-right:5px">Devolução
          </h6>
          <button title="Tutorial" type="button" class="btn btn-info btn-sm" style="color:white!important;margin-right:10px; padding: 5px !important;" id="tutorial" title="Tutorial">
            <i class="fas fa-question-circle"></i>
          </button>
          <!-- <button class="btn" onclick="toggleTheme()">
            <i style="font-size: 25px" id="themeIcon" class="text-white fas"></i>
          </button> -->
        </div>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
          <span class="navbar-toggler-icon"></span>
        </button>

        <div class="collapse navbar-collapse" id="navbarSupportedContent">
          <ul class="navbar-nav mr-auto ml-auto" style="transform: translateX(-11%);">
            <li class="nav-item text-align-center text-center">
              <div class="d-flex justify-content-center">
                <div class="caixa_card" class="row">
                  <div class="col-12">
                    <h6 style="color:white!important;margin:0;padding:0;">Caixa</h6>
                  </div>
                  <div class="col-12">
                    <h6 style="color:white!important;" id="txt_caixa_logado"></h6>
                  </div>
                </div>
                <div class="caixa_card" style="padding-left:10px;border-left: 1px solid #CDCDCD;" class="row">
                  <div class="col-12">
                    <h6 style="color:white!important;margin:0;padding:0;">Usuário</h6>
                  </div>
                  <div class="col-12">
                    <h6 style="color:white!important;" id="txt_usuario_logado"></h6>
                  </div>
                </div>
              </div>
            </li>
          </ul>
          <!-- <a style="padding-left:10%" id="btn-sair" href="">
                                <h1 style="font-size:25px!important;" class="text-white float-right mr-2"><i class="fas fa-sign-out-alt"></i> Sair</h1>
                            </a> -->
          <button type="button" class="btn btn-info float-right mr-2" style="color: white;" id="btn-sair">
            <i class="fas fa-sign-out-alt"></i> Sair PDV
          </button>
        </div>
      </nav>
    </div>
  </header>

  <div class="wrappers devolucao">
    <div class="content-wrappers">
      <section class="content">
        <div class="container-fluid">
          <div class="row">
            <div class="col-12">
              <div class="card" style="height:auto;">
                <div class="card-body">
                  <form id="msform" name="msform">
                    <fieldset id="fieldset_info" style="display:none">
                      <div class="form-card" id="pesquisaDevolucao">
                        <div class="card" style="height:auto;min-height:300px">
                          <div class="card-body container-box">
                            <!-- <form id="form_info"> -->
                            <div class="row">
                              <div class="col-sm-12 col-md-8 col-12" id="divCliente">
                                <label style="margin-bottom: .1rem!important;" data-error="wrong" data-success="right" for="txtCliente">Cliente</label>
                                <div class="input-group" id="clienteDevoTour">
                                  <input type="text" data-selecionado="false" class="input-default focus form-control" id="txtCliente" name="txtCliente" class="form-control" placeholder="Cliente">
                                  <div class="input-group-append">
                                    <button class="btn bg-danger" id="btn-cliente" name="btn-cliente" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                                    <button class="btn bg-danger" id="btn-limpa-cliente" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                                  </div>
                                </div>
                              </div>
                              <div class="col-sm-12 col-md-1 col-12 d-none" id="divSenha">
                                <label style="margin-bottom: .1rem!important;" data-error="wrong" data-success="right" for="txtSenha">Senha</label>
                                <div class="input-group">
                                  <input type="number" data-selecionado="false" class="input-default focus form-control camposInteiro" id="txtSenha" name="txtSenha" class="form-control" placeholder="Senha">
                                </div>
                              </div>
                              <div class="col-sm-12 col-md-4 col-12">
                                <label style="margin-bottom: .1rem!important;" data-error="wrong" data-success="right" for="txtCNPJ">CPF / CNPJ</label>
                                <div class="input-group">
                                  <input type="text" placeholder="CPF / CNPJ" class="input-default focus form-control" id="txtCNPJ" name="txtCNPJ">
                                </div>
                              </div>
                              <div class="col-sm-12 col-md-12 col-12">
                                <label style="margin-bottom: .1rem!important;" data-error="wrong" data-success="right" for="txtVendedor">Vendedor</label>
                                <div class="input-group" id="VendedorDevoTour">
                                  <input type="text" data-selecionado="false" class="input-default focus form-control" id="txtVendedor" name="txtVendedor" class="form-control" placeholder="Vendedor" required>
                                  <div class="input-group-append">
                                    <button class="btn bg-danger" id="btn-vendedor" name="btn-vendedor" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                                    <button class="btn bg-danger" id="btn-limpa-vendedor" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                                  </div>
                                </div>
                              </div>
                              <div class="col-sm-12 col-md-12 col-12 d-none" id="GuiaInfoTour">
                                <label data-error="wrong" data-success="right" for="txtGuia">Guia</label>
                                <div class="input-group">
                                  <input type="text" data-selecionado="false" class="input-default focus form-control d-none" id="txtGuia" name="txtGuia" class="form-control" placeholder="Guia" required>
                                  <div class="input-group-append">
                                    <button class="btn bg-danger" id="btn-guia" name="btn-guia" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                                    <button class="btn bg-danger" id="btn-limpa-guia" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                                  </div>
                                </div>
                              </div>
                              <div class="col-sm-12 col-md-12 col-12">
                                <label style="margin-bottom: .1rem!important;" data-error="wrong" data-success="right" for="txtTabela">Tabela</label>
                                <div class="input-group" id="tabelaDevoTour">
                                  <input type="text" data-selecionado="false" class="input-default focus form-control" id="txtTabela" name="txtTabela" class="form-control" placeholder="Tabela">
                                  <div class="input-group-append">
                                    <button class="btn bg-danger" id="btn-tabela" name="btn-tabela" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                                    <button class="btn bg-danger" id="btn-limpa-tabela" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                                  </div>
                                </div>
                              </div>
                              <div class="col-sm-12 col-md-12 col-12">
                                <label style="margin-bottom: .1rem!important;" data-error="wrong" data-success="right" for="txtDeposito">Depósito</label>
                                <div class="input-group" id="depositoDevoTour">
                                  <input type="text" data-selecionado="false" class="input-default focus form-control" id="txtDeposito" name="txtDeposito" class="form-control" placeholder="Deposito" title="O depósito sugerido provém do cadastro de valores padrões aba Loja/Venda/Devolução, se não conter irá buscar no cadastro de Vendedor Caixa, sendo exclusivo por usuário. Caso não seja informado, o sistema considera o depósito padrão informado no parâmetro 02">
                                  <div class="input-group-append">
                                    <button class="btn bg-danger" id="btn-deposito" name="btn-deposito" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                                    <button class="btn bg-danger" id="btn-limpa-deposito" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                                    <input type="text" placeholder="Lancamento" class="input-default focus form-control d-none" id="txtLancamento" name="txtLancamento">
                                    <input type="text" class="d-none" id="txtCupomDesconto" value="">
                                  </div>
                                </div>
                              </div>
                              <div class="col-sm-12 col-md-12 col-12" id="descricaoVenda">
                                <label style="margin-bottom: .1rem!important;" for="textDescricaoVenda">Observação</label>
                                <input type="text" id="textDescricaoVenda" placeholder="Descrição Venda" class="input-default focus form-control">
                                </input>
                              </div>
                            </div>
                          </div>
                        </div>
                      </div>

                    </fieldset>
                    <fieldset id="fieldset_venda" style="display:none">
                      <div class="form-card">
                        <div class="row">
                          <div class="col-lg-6 col-md-12 col-sm-12 col-12" id="cadastroDevolverProduto">
                            <div class="card" style="height:auto;min-height:500px">
                              <div class="card-body container-box">
                                <div class="row mb-2" style="border-bottom: 1px solid #dee2e6">
                                  <div class="col-sm-6">
                                    <h5>Devolver Item</h5>
                                  </div>
                                  <div class="col-sm-6 d-flex align-items-center justify-content-end mb-1" title="Integração RFID">
                                    <div class="relative divRFID">
                                      <button type="button" class="btn btn-icon-normal btn-danger d-flex align-items-center justify-content-center" style="border-radius: 4px!important; text-align: center;" id="btn-iniciar-epc" name="btn-iniciar-epc" data-button="absolute">
                                        <i style="font-size: 20px;" class="ph-play-thin"></i>
                                      </button>
                                    </div>
                                    <div class="relative ml-2 divRFID">
                                      <button type="button" class="btn btn-icon-normal btn-danger d-flex align-items-center justify-content-center" style="border-radius: 4px!important;" id="btn-parar-epc" name="btn-parar-epc" data-button="absolute">
                                        <i style="font-size: 20px; " class="ph-pause-circle-thin"></i>
                                      </button>
                                    </div>
                                  </div>
                                </div>
                                <div style="padding-left:0px;padding-right:0px" class="col-sm-12 mb-2">
                                  <label style="margin-bottom: .1rem!important;" data-error="wrong" data-success="right" for="txtVenda">Venda Devolvida</label>
                                  <div class="input-group" id="clienteDevoTour" style="border-bottom: 1px solid #dee2e6">
                                    <input type="text" data-selecionado="false" class="input-default focus form-control" id="txtVenda" name="txtVenda" class="form-control" placeholder="Venda Devolvida">
                                    <div class="input-group-append">
                                      <button class="btn bg-danger" id="btn-venda" name="btn-venda" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                                      <button class="btn bg-danger" id="btn-limpa-venda" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                                    </div>
                                  </div>
                                </div>
                                <div style="padding-left:0px;padding-right:0px" id="divVendedorItemDevolucao" class="col-sm-12 mb-2 d-none">
                                  <label style="margin-bottom: .1rem!important;" data-error="wrong" data-success="right" for="txtVendedorItemDevolucao">Vendedor</label>
                                  <div class="input-group" id="vendedorItemDev" style="border-bottom: 1px solid #dee2e6">
                                    <input type="text" data-selecionado="false" class="input-default focus form-control" id="txtVendedorItemDevolucao" name="txtVendedorItemDevolucao" class="form-control" placeholder="Vendedor">
                                    <div class="input-group-append">
                                      <button class="btn bg-danger" id="btnVendedorItemDevolucao" name="btnVendedorItemDevolucao" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                                      <button class="btn bg-danger" id="btnLimpaVendedorItemDevolucao" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                                    </div>
                                  </div>
                                </div>
                                <div style="margin-bottom:15px" class="row">
                                  <div class="col-sm-3 col-12 d-none" id="divQualidade">
                                    <div class="group-default form-group">
                                      <label style="margin-bottom: .1rem!important;" for="txtQualidade">Qualidade
                                      </label>
                                      <div class="relative">
                                        <button type="button" class="btn-icon btn-icon-normal bg-danger" id="btnQualidade" name="btnQualidade" data-button="absolute">
                                          <i style="color: white;font-size:20px;margin-left:-10px;padding:0px" class="fas fa-search"></i>
                                        </button>
                                        <input style="margin-top:9px;" type="text" placeholder="Qualidade" class="input-default form-control validate focus" id="txtQualidade" name="txtQualidade">
                                      </div>
                                    </div>
                                  </div>
                                  <div class="col-sm-3 d-none" id="divQuantid" style="margin-top: 6px;">
                                    <div class="group-default form-group">
                                      <label title="Quantidade" id="lblQuantid" style="margin-bottom: .1rem!important;" for="txtQuantid">Quant.</label>
                                      <div class="relative">
                                        <input style="margin-top:9px;" title="Quantidade" min="0" type="number" placeholder="Quantidade" class="input-default form-control validate focus" id="txtQuantid" name="txtQuantid">
                                      </div>
                                    </div>
                                  </div>
                                  <input type="text" id="txtIdItem" class="d-none" name="txtIdItem">
                                  <input type="text" id="txtCodigoEPC" class="d-none" name="txtCodigoEPC">
                                  <div class="col-sm-12" id="divBarra">
                                    <div class="group-default form-group">
                                      <label style="margin-top:0.5rem!important;margin-bottom:0!important;display: flex; text-align: center; justify-content: space-between" for="txtCodigo">Código de barras
                                        <i title='desativar som bipagem' style="font-size: 20px" class="fas fa-volume-up somAtivo d-none"></i>
                                        <i title='ativar som bipagem' style="font-size: 20px" class="fas fa-volume-mute somInativo"></i>
                                      </label>
                                      <div class="input-group">
                                        <div class="input-group-append">
                                          <button style="margin-top:9px;" class="btn bg-danger" id="btnMenosOuMais" type="button" data-estorno="false">
                                            <i class="m-0 p-0 fas fa-plus"></i>
                                          </button>
                                        </div>
                                        <!-- <div class="relative"> -->
                                        <input style="margin-top:9px;" type="text" placeholder="Barra do Item" class="input-default focus form-control validate" id="txtCodigo" name="txtCodigo">
                                        <button style="margin-top:9px;" type="button" class="btn-icon btn-icon-normal bg-danger" id="btn-codigo" name="btn-codigo">
                                          <i style="color: white;font-size:20px;margin-left:-10px;padding:0px" class="fas fa-search"></i>
                                        </button>
                                        <input type="text" class="d-none" id="txtEmpresaItem" name="txtEmpresaItem">

                                        <!-- </div> -->
                                      </div>
                                    </div>
                                  </div>
                                  <div class="col-sm-6 col-12">
                                    <div class="form-group" style="text-align:center">
                                      <label for="infoprodtam">Foto</label>
                                      <div class="relative" style="display: flex;justify-content: center;align-items: center;">
                                        <img class="pop img img-fluid" id="infoprodimagem" style="max-height:230px;max-width:230px;margin-left: auto;margin-right: auto;" src="<?php echo BASE_URI; ?>/dist/img/prod-1.png">
                                      </div>
                                    </div>
                                  </div>
                                  <div class="col-sm-6 col-12">
                                    <div class="row">
                                      <div class="col-sm-8 col-12">
                                        <div class="form-group">
                                          <label for="infoprodcodigo">Produto</label>
                                          <div class="relative">
                                            <input type="text" placeholder="Produto" class="input-default focus form-control" id="infoprodcodigo" name="infoprodcodigo" readonly>
                                          </div>
                                        </div>
                                      </div>
                                      <div class="col-sm-4 col-12">
                                        <div class="form-group">
                                          <label for="infoprodunidade">Unidade</label>
                                          <div class="relative">
                                            <input type="text" placeholder="UN" class="input-default focus form-control" id="infoprodunidade" name="infoprodunidade" readonly>
                                          </div>
                                        </div>
                                      </div>
                                      <div class="col-sm-8 col-12">
                                        <div class="form-group">
                                          <label for="infoprodcor">Cor</label>
                                          <div class="relative">
                                            <input type="text" placeholder="Cor" class="input-default focus form-control" id="infoprodcor" name="infoprodcor" readonly>
                                          </div>
                                        </div>
                                      </div>
                                      <div class="col-sm-4 col-12">
                                        <div class="form-group">
                                          <label for="infoprodtam">Tamanho</label>
                                          <div class="relative">
                                            <input type="text" placeholder="Tamanho" class="input-default focus form-control" id="infoprodtam" name="infoprodtam" readonly>
                                          </div>
                                        </div>
                                      </div>
                                      <div class="col-sm-8 col-12">
                                        <div class="form-group">
                                          <label for="infoprodbarra">Barra</label>
                                          <div class="relative">
                                            <input type="text" placeholder="Barra" class="input-default focus form-control" id="infoprodbarra" name="infoprodbarra" readonly>
                                          </div>
                                        </div>
                                      </div>
                                      <div class="col-sm-4 col-12">
                                        <div class="form-group">
                                          <label for="infoprodpreco">Preço</label>
                                          <div class="relative">
                                            <input type="text" placeholder="Preço" class="input-default focus form-control" id="infoprodpreco" name="infoprodpreco" readonly>
                                          </div>
                                        </div>
                                      </div>
                                      <div class="col-sm-8 col-12">
                                        <div class="form-group">
                                          <label for="infoprodlote">Lote</label>
                                          <div class="relative">
                                            <input type="text" placeholder="Lote" class="input-default focus form-control" id="infoprodlote" name="infoprodlote" readonly>
                                          </div>
                                        </div>
                                      </div>
                                      <div class="col-sm-4 col-12">
                                        <div class="form-group">
                                          <label for="infoprodqualidade">Qualidade</label>
                                          <div class="relative">
                                            <input type="text" placeholder="Qualidade" class="input-default focus form-control" id="infoprodqualidade" name="infoprodqualidade" readonly>
                                          </div>
                                        </div>
                                      </div>
                                    </div>
                                  </div>
                                </div>
                              </div>
                            </div>
                          </div>
                          <div class="col-lg-6 col-md-12 col-sm-12 col-12" id="listaProdutoDevo">
                            <div class="card" style="height:auto;min-height:350px">
                              <div class="card-body container-box">
                                <div class="row mb-1">
                                  <div class="col-6 d-flex align-items-center">
                                    <h5>Lista de Itens</h5>
                                  </div>
                                  <div class="col-6">
                                    <button class="btn btn-md btn-secondary ml-2 float-right d-none" id="btnDescontoTotal"><i class="fas fa-percentage"></i></button>
                                  </div>
                                </div>
                                <table id="tabelaItens" style="width:100%" width="100%" class="table table-sm table-select">
                                  <thead>
                                    <tr>
                                      <th class="th-sm">Codigo</th>
                                      <th class="th-sm">Descrição</th>
                                      <th class="th-sm">Qtde</th>
                                      <th class="th-sm">Preço</th>
                                      <th class="th-sm">Preço Orig.</th>
                                      <th class="th-sm">% Desconto</th>
                                      <th class="th-sm">Val. Desconto</th>
                                      <th class="th-sm">Total</th>
                                      <th class="th-sm">barra</th>
                                      <th class="th-sm">cor</th>
                                      <th class="th-sm">tam</th>
                                      <th class="th-sm">DESC_COR</th>
                                      <th class="th-sm">qualidade</th>
                                      <th class="th-sm">id_estoque</th>
                                      <th class="th-sm">Venda Dev.</th>
                                      <th class="th-sm">Ações</th>
                                      <th class="th-sm">Controle</th>
                                      <th class="th-sm">Presente</th>
                                      <th class="th-sm">Lote</th>
                                      <th class="th-sm">Tipo</th>
                                      <th class="th-sm">Representante</th>
                                      <th class="th-sm">Unidade</th>
                                      <th class="th-sm">Promocao</th>
                                      <th class="th-sm">Cashback</th>
                                      <th class="th-sm">Empresa</th>
                                      <th class="th-sm">Motivo</th>
                                    </tr>
                                  </thead>
                                  <tbody></tbody>
                                </table>
                              </div>
                            </div>
                            <div class="info-box mb-3" style="background-color: var(--blue-color)!important;">
                              <div class="row">
                                <div class="col-md-6 col-12" style="border-right: 1px solid white">
                                  <div class="flex" style="padding-top:10px;">
                                    <span class="info-box-icon"><i class="fas fa-luggage-cart text-white" style="font-size: 25px;"></i></span>
                                    <div class="info-box-content">
                                      <span class="info-box-text text-white" style="font-size:15px">ITENS</span>
                                      <span id="total_itens" class="info-box-number text-white" style="font-size:17px">0</span>
                                    </div>
                                  </div>
                                </div>
                                <div class="col-md-6 col-12">
                                  <div class="flex" style="padding-top:10px;">
                                    <span class="info-box-icon"><i class="fas fa-shopping-cart text-white" style="font-size: 25px;"></i></span>
                                    <div class="info-box-content ">
                                      <span class="info-box-text text-white" style="font-size:15px">SUBTOTAL</span>
                                      <span id="subtotal_venda" class="info-box-number text-white" style="font-size:17px">0,00</span>
                                    </div>
                                  </div>
                                </div>
                              </div>
                            </div>
                          </div>
                        </div>
                      </div>
                    </fieldset>
                    <fieldset id="fieldset_pagamento" style="display:none">
                      <div class="form-card">
                        <div class="card" style="box-shadow:none!important;height:auto;min-height: 300px">
                          <div class="card-body">
                            <div class="row">
                              <div class="col-lg-6 col-sm-12 form-group">
                                <div class="card" style="height:auto;min-height:290px">
                                  <div class="card-body container-box">
                                    <h5 style="margin-bottom: 15px;">Adicionar Condições</h5>
                                    <div style="border-top: 1px solid #dee2e6" class="row pl-2 mt-2">
                                      <div style="margin-top:4px" class="col-sm-3">
                                        <div class="group-default">
                                          <label for="txtMoeda">Moeda</label>
                                          <div class="relative">
                                            <button type="button" class="btn-icon btn-icon-normal bg-danger" id="btn-moeda" name="btn-moeda" data-button="absolute">
                                              <i style="color: white;font-size:20px;margin-left:-10px;padding:0px" class="fas fa-search"></i>
                                            </button>
                                            <input type="text" placeholder="Moeda" class="input-default focus" id="txtMoeda" name="txtMoeda" readonly>
                                          </div>
                                        </div>
                                      </div>
                                      <div style="margin-top:4px" class="col-sm-3">
                                        <div class="group-default">
                                          <label for="txtCondicaoDePagamento">Cond. Pagamento</label>
                                          <div class="relative">
                                            <button type="button" class="btn-icon btn-icon-normal bg-danger" id="btn-CondicaoDePagamento" name="btn-CondicaoDePagamento" data-button="absolute">
                                              <i style="color: white;font-size:20px;margin-left:-10px;padding:0px" class="fas fa-search"></i>
                                            </button>
                                            <input type="text" placeholder="Condição de Pagamento" class="input-default focus" id="txtCondicaoDePagamento" name="txtCondicaoDePagamento" readonly>
                                          </div>
                                        </div>
                                      </div>
                                      <div style="margin-top:4px" class="col-sm-2">
                                        <div class="group-default">
                                          <label for="txtNrParcelas">Nr. Parcelas</label>
                                          <div class="relative">
                                            <input type="text" placeholder="Nr. Parcelas" class="input-default" id="txtNrParcelas" name="txtNrParcelas" readonly>
                                          </div>
                                        </div>
                                      </div>
                                      <div style="margin-top:4px" class="col-sm-4">
                                        <div class="group-default">
                                          <label for="txtValorParcela">Valor</label>
                                          <div class="relative">
                                            <input type="number" min="0" step="0.01" placeholder="Valor" class="input-default focus" id="txtValorParcela" name="txtValorParcela">
                                          </div>
                                        </div>
                                      </div>
                                      <div class="col-sm-10 mt-2">
                                        <h5 style="width:100%;background-color: var(--blue-color)!important;padding: 5px;border-radius: 3px; padding-top:7px" class="text-white float-left">Saldo à Pagar : <span id="txtsaldo_a_pagar">0,00</span></h5>
                                      </div>
                                      <div class="col-sm-2 mt-2">
                                        <button id="btnAddCondicao" style="font-size:15px" class="btn btn-block btn-lg btn-secondary float-right focus">Adicionar</button>
                                      </div>
                                    </div>
                                  </div>
                                </div>
                              </div>
                              <div class="col-lg-6 col-sm-12">
                                <div class="card" style="height:auto;min-height:290px">
                                  <div class="card-body container-box">
                                    <h5>Condições de Pagamento</h5>
                                    <div class="row">
                                      <div class="col-sm-12">
                                        <table id="tabelaCondicoesDePagamento" style="width:100%" width="100%" class="table table-sm table-select table-hover">
                                          <thead>
                                            <tr>
                                              <th class="th-sm">Ordem
                                              </th>
                                              <th class="th-sm">Moeda
                                              </th>
                                              <th class="th-sm">Condição
                                              </th>
                                              <th class="th-sm">Valor
                                              </th>
                                              <th class="th-sm">Valor Pago
                                              </th>
                                              <th class="th-sm">Ações
                                              </th>
                                              <th class="th-sm">codmoeda</th>
                                              <th class="th-sm">codcondicao</th>
                                              <th class="th-sm">nrparcelas</th>
                                            </tr>
                                          </thead>
                                          <tbody></tbody>
                                        </table>
                                      </div>
                                    </div>
                                  </div>
                                </div>
                              </div>
                              <div class="col-lg-6 col-sm-12 d-none">
                                <div class="card" style="height:auto;min-height:290px">
                                  <div class="card-body container-box">
                                    <h5>Parcelas de Pagamento</h5>
                                    <div class="row">
                                      <div class="col-sm-12 table-responsive">
                                        <table style="width:100%" width="100%" id="tabelaParcelasGeradas" class="table table-sm ">
                                          <thead>
                                            <tr>
                                              <th class="th-sm">Ordem</th>
                                              <th class="th-sm">Nome</th>
                                              <th class="th-sm">CNPJ</th>
                                              <th class="th-sm">Banco</th>
                                              <th class="th-sm">Agencia</th>
                                              <th class="th-sm">Conta</th>
                                              <th class="th-sm">Numero</th>
                                              <th class="th-sm">Vencimento</th>
                                              <th class="th-sm">Valor</th>
                                            </tr>
                                          </thead>
                                          <tbody></tbody>
                                        </table>
                                      </div>
                                    </div>
                                  </div>
                                </div>
                              </div>
                            </div>
                            <div class="row">
                              <div class="col-lg-6 col-sm-12">
                              </div>
                              <div class="col-lg-6 col-sm-12">
                                <div class="card" style="height:auto;min-height:160px">
                                  <div class="card-body container-box" style="background-color: var(--blue-color)!important;">
                                    <h5 class="text-white">Totais</h5>
                                    <table style="width:100%;" id="tabelaTotais" class="table table-sm text-white" width="100%">
                                      <tr>
                                        <th class="th-sm">
                                          <h6>Total Venda:</h6>
                                        </th>
                                        <td>
                                          <h6 id="txtTotalVenda">0,00</h6>
                                        </td>
                                      </tr>
                                      <tr>
                                        <th class="th-sm">
                                          <h6>Pagamentos:</h6>
                                        </th>
                                        <td>
                                          <h6 id="txtTotaisPagamentos">0,00</h6>
                                        </td>
                                      </tr>
                                      <tr>
                                        <th class="th-sm">
                                          <h6>Troco:</h6>
                                        </th>
                                        <td>
                                          <h6 id="txtTotaisTroco">0,00</h6>
                                        </td>
                                      </tr>
                                      <tr>
                                        <th class="th-sm">
                                          <h6>Total:</h6>
                                        </th>
                                        <td>
                                          <h6 id="txtTotaisTotal">0,00</h6>
                                        </td>
                                      </tr>
                                    </table>
                                  </div>
                                </div>
                              </div>
                            </div>
                          </div>
                        </div>
                      </div>
                    </fieldset>
                  </form>
                </div>
              </div>
            </div>
          </div>
        </div>
      </section>
      <div class="modal fade" id="imagemodal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
        <div class="modal-dialog">
          <div class="modal-content">
            <div class="modal-body">
              <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
              <img src="" class="imagepreview" style="width: 100%;">
            </div>
          </div>
        </div>
      </div>
      <div class="modal fade" id="modalProduto" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
        <div class="modal-dialog modal-xl">
          <div class="modal-content">
            <div class="modal-header">
              <h4 id="modalProduto-titulo" class="modal-title">Pesquisa Item</h4>
              <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                <span aria-hidden="true">&times;</span>
              </button>
            </div>
            <div class="modal-body">
              <div class="row">
                <div class="col-sm-4">
                  <input type="text" placeholder="Codigo" class="input-default focus" id="txtProdutoCodigo" name="txtProdutoCodigo">
                </div>
                <div class="col-sm-4">
                  <input type="text" placeholder="Descrição" class="input-default focus" id="txtProdutoDescricao" name="txtProdutoDescricao">
                </div>
                <div class="col-sm-4" style="text-align:center">
                  <button type="button" class="btn btn-info focus" id="btnConsultarProduto" name="btnConsultarProduto">
                    <i class='fas fa-search'></i> Consultar
                  </button>
                </div>
                <div class="col-sm-12 table-responsive">
                  <table style="width:100%" width="100%" id="tabelaProdutoMaterial" class="table table-sm table-select table-hover table-condensed">
                    <!-- <thead>
                      </thead>
                      <tbody>
                      </tbody> -->
                  </table>
                </div>
              </div>
            </div>
            <div class="modal-footer">
              <div class="row">
                <div class="col-sm-12">
                  <button id="btn_confirmar_produto" class="btn btn-danger"> Confirmar </button>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <div class="modal fade" id="modal-dinamico" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
        <div class="modal-dialog modal-xl" style="min-width: 70%">
          <div class="modal-content">
            <div class="modal-header">
              <div class="modal-title">
                <h4>Pesquisa Devolução</h4>
              </div>
              <div>
                <label class="container">
                  <input type="radio" checked="checked" id="radioProduto" name="tipoFat">
                  <span class="checkmark"></span>
                  Produto</label>
                <label class="container">
                  <input type="radio" id="radioMaterial" name="tipoFat">
                  <span class="checkmark"></span>
                  Material</label>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                  <span aria-hidden="true">&times;</span>
                </button>
              </div>
            </div>
            <div class="modal-body" style="padding-bottom: 0 !important">
              <div class="row">
                <div class="col-sm-12 col-lg-4">
                  <div class="group-default form-group">
                    <label for="dtEmiIni">Período de/até:</label>
                    <div class="input-group">
                      <input type="date" max="2500-12-31" value="1200-01-01" class="input-default focus form-control validate mr-1" id="txtDataDe" name="txtDataDe">
                      <input type="date" max="2500-12-31" value="2500-12-31" class="input-default focus form-control validate" id="txtDataAte" name="txtDataAte">
                    </div>
                  </div>
                </div>
                <div class="col-sm-12 col-lg-5 d-flex align-items-center justify-content-start" style="margin-top: 15px;">
                  <label class="container" style="margin-left: 0 !important; padding-left: 0 !important">
                    <input type="checkbox" id="radioMostrarGrade" name="grade">
                    <span class="checkmark" for="radioMostrarGrade">Mostrar Grade Itens</span>
                  </label>
                  <label class="container" style="margin-left: 0 !important; padding-left: 0 !important">
                    <input type="checkbox" id="cbSomenteItensNaoDevolvidos" name="cbSomenteItensNaoDevolvidos">
                    <span class="checkmark" for="cbSomenteItensNaoDevolvidos">Somente Itens não devolvidos</span>
                  </label>
                </div>
                <div class="col-sm-12 col-lg-3 pl-5 pt-4">
                  <button class="btn btn-danger btn-sisp" type='button' id="btnSelecionarEmpresas">Selecionar Empresas</button>   
                </div>
              </div>
              <div class="row">
                <div class="col-sm-4 col-lg-4">
                  <div class="group-default form-group">
                    <label for="txtCodigoDinamico">Barra:</label>
                    <div class="relative">
                      <input type="text" placeholder="Barra" class="input-default focus" id="txtBarraDinamica" name="txtBarraDinamica">
                    </div>
                  </div>
                </div>
                <div class="col-sm-4 col-lg-4">
                  <label data-error="wrong" data-success="right" for="txtClienteDinamico">Cliente:</label>
                  <div class="input-group">
                    <input type="text" data-selecionado="false" class="input-default focus form-control" id="txtClienteDinamico" name="txtClienteDinamico" class="form-control" placeholder="Cliente">
                    <div class="input-group-append">
                      <button class="btn bg-danger" id="btn-cliente-dinamico" name="btn-cliente-dinamico" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                      <button class="btn bg-danger" id="btn-limpa-cliente-dinamico" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                    </div>
                  </div>
                </div>
                <div class="col-sm-4 col-lg-4 form-group" id="pesquisaVenda">
                  <label data-error="wrong" data-success="right" for="txtVendaModal">Venda: </label>
                  <div class="relative">
                    <div class="input-group">
                      <select class="js-example-programmatic js-states form-control" id="txtVendaModal" name="txtVendaModal">
                      </select>
                      <div class="input-group-append">
                        <button class="btn bg-danger" id="btnVendaModal" name="btnVendaModal" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                        <button class="btn bg-danger" id="btnLimpaVendaModal" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                      </div>
                    </div>
                  </div>
                </div>
              </div>

              <div class="row">
                <div class="col-sm-4" id="pesquisaProduto">
                  <label data-error="wrong" data-success="right" for="txtProdutoDinamico">Produto: </label>
                  <div class="relative">
                    <div class="input-group">
                      <select class="js-example-programmatic js-states form-control" id="txtProdutoDinamico" name="txtProdutoDinamico">
                      </select>
                      <div class="input-group-append">
                        <button class="btn bg-danger" id="btn-produto-dinamico" name="btn-produto-dinamico" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                        <button class="btn bg-danger" id="btn-limpa-produto-dinamico" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                      </div>
                    </div>
                  </div>
                </div>
                <!-- <div class="col-sm-4" id="pesquisaProduto">
                  <label data-error="wrong" data-success="right" for="txtProdutoDinamico">Produto:</label>
                  <div class="input-group">
                    <input type="text" class="input-default focus form-control" id="txtProdutoDinamico" name="txtProdutoDinamico" class="form-control" placeholder="Produto">
                    <div class="input-group-append">
                      <button class="btn bg-danger" id="btn-produto-dinamico" name="btn-produto-dinamico" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                      <button class="btn bg-danger" id="btn-limpa-produto-dinamico" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                    </div>
                  </div>
                </div> -->
                <div class="col-sm-4 d-none" id="pesquisaMaterial">
                  <label data-error="wrong" data-success="right" for="txtMaterialDinamico">Material:</label>
                  <div class="input-group">
                    <input type="text" class="input-default focus form-control" id="txtMaterialDinamico" name="txtMaterialDinamico" class="form-control" placeholder="Material">
                    <div class="input-group-append">
                      <button class="btn bg-danger" id="btn-Material-dinamico" name="btn-Material-dinamico" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                      <button class="btn bg-danger" id="btn-limpa-Material-dinamico" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                    </div>
                  </div>
                </div>
                <div class="col-sm-4" id="pesquisaCor">
                  <label data-error="wrong" data-success="right" for="txtCorModal">Cor:</label>
                  <div class="input-group">
                    <input type="text" class="input-default focus form-control" id="txtCorModal" class="form-control" placeholder="Cor">
                    <div class="input-group-append">
                      <button class="btn bg-danger" id="btnCorModal" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                      <button class="btn bg-danger" id="btnLimpaCorModal" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                    </div>
                  </div>
                </div>
                <div class="col-sm-4" id="pesquisaTam">
                  <label data-error="wrong" data-success="right" for="txtTamModal">Tam:</label>
                  <div class="input-group">
                    <input type="text" class="input-default focus form-control" id="txtTamModal" class="form-control" placeholder="Tamanho">
                    <div class="input-group-append">
                      <button class="btn bg-danger" id="btnTamModal" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                      <button class="btn bg-danger" id="btnLimpaTamModal" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                    </div>
                  </div>
                </div>
              </div>
              <div class="row mt-2">
                <div class="col-sm-12">
                  <button class="btn btn-info btn-sisp float-right" id="btn-consulta-dinamica" name="btn-consulta-dinamica">
                    Consultar
                  </button>
                  <label>
                    Lista de Vendas
                  </label>
                </div>
                <div class="row d-none" id="divCheckTodos">
                  <div class="col-sm-12 icheck-primary d-inline pb-2 ml-2 justify-content-between" style="margin-right: 15px; height:30px; margin-left: 15px !important;">
                    <input class="form-check-input" type="checkbox" id="check_todos" value="option1">
                    <label class="form-check-label" for="check_todos">Selecionar Todos</label>
                  </div>
                </div>
                <div class="col-sm-12 table-responsive">
                  <table style="width:100%" width="100%" id="tabela-dinamica" class="table table-sm table-select table-hover table-condensed">
                    <thead>
                    </thead>
                    <tbody>
                    </tbody>
                  </table>
                </div>
              </div>
            </div>
            <div class="modal-footer">
              <div class="row">
                <div class="col-sm-12">
                  <button id="btn_confirmar_dinamico" class="btn btn-danger btn-sisp"> Confirmar </button>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>

      <div class="modal fade" id="modalPesquisaItens" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
        <div class="modal-dialog modal-xl">
          <div class="modal-content">
            <div class="modal-header">
              <div class="modal-title">
                <h4>Pesquisa Produto</h4>
              </div>
              <div>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                  <span aria-hidden="true">&times;</span>
                </button>
              </div>
            </div>
            <div class="modal-body">
              <div class="row">
                <div class="col-sm-12" style="margin-top:10px;">
                  <label>
                    Lista de Itens
                  </label>
                </div>
                <div class="row col-sm-12" id="divCheckTodosItens">
                  <div class="col-sm-4 icheck-primary d-inline pb-2 ml-2 justify-content-between" style="margin-right: 15px; height:30px; margin-left: 15px !important;">
                    <input class="form-check-input" type="checkbox" id="checkTodosItens" value="option1">
                    <label class="form-check-label" for="checkTodosItens">Selecionar Todos</label>
                  </div>
                  <div class="col-sm-4 icheck-primary d-inline pb-2 ml-2 justify-content-between" style="margin-right: 15px; height:30px; margin-left: 15px !important;">
                    <input class="form-check-input" type="checkbox" id="cbSomenteItensNaoDevolvidosPesquisaProduto">
                    <label class="form-check-label" for="cbSomenteItensNaoDevolvidosPesquisaProduto">Somente itens não devolvidos</label>
                  </div>
                </div>
                <div class="col-sm-12 table-responsive">
                  <table style="width:100%" width="100%" id="tabelaPesquisaItens" class="table table-sm table-select table-hover table-condensed">
                    <thead>
                    </thead>
                    <tbody>
                    </tbody>
                  </table>
                </div>
              </div>
            </div>
            <div class="modal-footer">
              <div class="row">
                <div class="col-sm-12">
                  <button id="btnConfirmarItens" class="btn btn-danger btn-sisp"> Confirmar </button>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>

      <div class="modal fade" id="modalQuantidade" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
        <div class="modal-dialog">
          <div class="modal-content">
            <div class="modal-header">
              <h5 class="modal-title">Alterar Quantidade</h5>
              <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                <span aria-hidden="true">&times;</span></button>
            </div>
            <div class="modal-body">

              <div class="row">
                <div class="col-sm-4">
                  <label for="txtItemQuantidadeAtual" class="col-sm-12">Quantidade Atual: </label>
                  <div class="col-sm-12">
                    <input type="number" class="form-control input-default" id="txtItemQuantidadeAtual" placeholder="Quantidade do Item" disabled>
                  </div>
                </div>
                <div class="col-sm-4">
                  <label for="txtItemQuantidade" class="col-sm-12">Quantidade Nova: </label>
                  <div class="col-sm-12">
                    <input type="number" class="form-control input-default" id="txtItemQuantidade" value="0" placeholder="Quantidade do Item">
                  </div>
                </div>
                <div class="col-sm-4">
                  <label for="txtItemQuantidadeDiferenca" class="col-sm-12">Quantidade Dif: </label>
                  <div class="col-sm-12">
                    <input type="number" class="form-control input-default" id="txtItemQuantidadeDiferenca" placeholder="Quantidade do Item" disabled>
                  </div>
                </div>
                <input type="text" class="form-control input-default d-none" id="txtBarraQuantidadeNova" placeholder="barra">
                <input type="text" class="form-control input-default d-none" id="txtCodigoAlteraQuantidade" placeholder="codigo">
                <input type="text" class="form-control input-default d-none" id="txtIdLinhaItemQuantidade" placeholder="linha">
              </div>

              <div class="col-sm-12">
                <div class="row">
                  <label for="txtItemCodQuantidade" class="col-sm-12">Item: </label>
                  <div class="col-sm-12">
                    <input type="text" class="form-control input-default" id="txtItemCodQuantidade" placeholder="Código" disabled>
                  </div>
                </div>
              </div>

            </div>
            <div class="modal-footer">
              <button type="button" id="btnConfirmarQuantidades" class="btn btn-primary">Confirmar</button>
            </div>
          </div>
        </div>
      </div>

      <div class="modal fade" id="modalNFE" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
        <div class="modal-dialog">
          <div class="modal-content">
            <div class="modal-header">
              <h4 id="modalNFE-titulo" class="modal-title">Faturar Venda</h4>
              <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                <span aria-hidden="true">&times;</span>
              </button>
            </div>
            <div class="modal-body">
              <div class="row">
                <div class="col-12">
                  <label style="margin-bottom: .1rem!important;" data-error="wrong" data-success="right" for="txtClienteNFE">Cliente *</label>
                  <div class="input-group">
                    <input type="text" data-selecionado="false" class="input-default focus form-control" id="txtClienteNFE" name="txtClienteNFE" class="form-control" placeholder="Cliente">
                    <div class="input-group-append">
                      <button class="btn bg-danger" id="btn-ClienteNFE" name="btn-ClienteNFE" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                      <button class="btn bg-danger" id="btn-limpa-ClienteNFE" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                    </div>
                  </div>
                </div>
                <div class="col-12" style="margin-top: 2%">
                  <label style="margin-bottom: .1rem!important;" data-error="wrong" data-success="right" for="txtNaturezaNFE">Natureza</label>
                  <div class="input-group">
                    <input type="text" data-selecionado="false" class="input-default focus form-control" id="txtNaturezaNFE" name="txtNaturezaNFE" class="form-control" placeholder="Natureza">
                    <div class="input-group-append">
                      <button class="btn bg-danger" id="btn-NaturezaNFE" name="btn-NaturezaNFE" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                      <button class="btn bg-danger" id="btn-limpa-NaturezaNFE" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                    </div>
                  </div>
                </div>
                <div class="col-lg-12" style="margin-top: 2%">
                  <label data-error="wrong" data-success="right" for="txtOperacaoNota">Operação</label>
                  <div class="input-group">
                    <input type="text" class="input-default focus form-control" id="txtOperacaoNota" name="txtOperacaoNota" placeholder="Operação">
                    <div class="input-group-append">
                      <button class="btn bg-danger" id="btnOperacaoNota" name="btnOperacaoNota" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                      <button class="btn bg-danger" id="btnAOperacaoNota" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            <div class="modal-footer">
              <div class="row">
                <div class="col-sm-12">
                  <button type="button" id="btn_confirmar_nfe" class="btn btn-danger"> Confirmar</button>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <div class="modal fade" id="modalParcelas" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
        <div class="modal-dialog modal-xl">
          <div class="modal-content">
            <div class="modal-header">
              <h4 id="modalParcelas-titulo" class="modal-title">Crediário / Cheques</h4>
              <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                <span aria-hidden="true">&times;</span>
              </button>
            </div>
            <div class="modal-body">
              <div class="row">
                <div class="col-sm-8">
                  <input type="text" placeholder="Modo" class="input-default d-none" id="txt_cred_modo" name="txt_cred_modo" readonly>
                </div>
                <div class="col-sm-4">
                  <div class="group-default">
                    <label for="txt_cred_valor_total">Valor Total: </label>
                    <div class="relative flex">
                      <input type="text" placeholder="Valor Total" class="input-default" id="txt_cred_valor_total" name="txt_cred_valor_total" readonly>
                      <button id="btn_dividir_valor" class="btn btn-primary btn-sisp"> Dividir</button>
                    </div>
                  </div>
                </div>
                <div class="col-sm-12 table-responsive">
                  <table style="width:100%" width="100%" id="tabelaParcelas" class="table table-sm">
                    <thead>
                    </thead>
                  </table>
                </div>
              </div>
            </div>
            <div class="modal-footer">
              <div class="row">
                <div class="col-sm-12">
                  <button id="btn_confirmar_cred" class="btn btn-danger btn-sisp"> Confirmar </button>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>

      <div class="modal fade" id="modalDescontoTotal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
        <div class="modal-dialog">
          <div class="modal-content">
            <div class="modal-header">
              <h4 id="modalParcelas-titulo" class="modal-title">Desconto nos Itens</h4>
              <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                <span aria-hidden="true">&times;</span>
              </button>
            </div>
            <div class="modal-body">
              <div class="row">
                <div class="col-6">
                  <div id="infoPercDesconto">
                    <label data-error="wrong" data-success="right" for="txtDesconto">Desconto %</label>
                    <div class="input-group">
                      <input type="number" data-selecionado="false" class="input-default focus form-control" min="0" max="100" id="txtDesconto" name="txtDesconto" class="form-control" placeholder="Percentual Desconto">
                    </div>
                  </div>
                </div>
                <div class="col-6 d-none">
                  <div id="infoValorDesconto">
                    <label data-error="wrong" data-success="right" for="txtValDesconto">Desconto R$</label>
                    <div class="input-group">
                      <input type="number" data-selecionado="false" class="input-default focus form-control" id="txtValDesconto" name="txtValDesconto" class="form-control" placeholder="Valor Desconto">
                    </div>
                  </div>
                </div>
                <div class="col-6 d-none">
                  <div id="infoPrecoItem">
                    <label data-error="wrong" data-success="right" for="txtPrecoItem">Preço do Item</label>
                    <div class="input-group">
                      <input type="number" data-selecionado="false" class="input-default focus form-control" id="txtPrecoItem" name="txtPrecoItem" class="form-control" placeholder="Preço Item">
                    </div>
                  </div>
                </div>
                <div class="col-6">
                  <div id="infoValorTotal">
                    <label data-error="wrong" data-success="right" for="txtValorTotal">Valor Total</label>
                    <div class="input-group">
                      <input type="number" data-selecionado="false" class="input-default focus form-control" id="txtValorTotal" name="txtValorTotal" class="form-control" placeholder="Valor Pago" disabled>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            <div class="modal-footer">
              <div class="row">
                <div class="col-12">
                  <button class="btn btn-primary" id="btnAplicaDesconto">Aplicar Desconto</button>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>

      <div class="modal fade" id="modalPrecos" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
        <div class="modal-dialog modal-lg">
          <div class="modal-content">
            <div class="modal-header">
              <h4 id="modalPrecos-titulo" class="modal-title">Pesquisa de Preço</h4>
              <label style="margin-top: 15px;" class="container escondeRadio">Produto 
                <input type="radio" checked="checked" id="radioProdutoPreco" name="tipoFat">
                <span class="checkmark"></span>
              </label>
              <label style="margin-top: 15px; margin-left: -2.5%" class="container escondeRadio">Material 
                <input type="radio" id="radioMaterialPreco" name="tipoFat">
                <span class="checkmark"></span>
              </label>
              <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                <span aria-hidden="true">&times;</span>
              </button>
            </div>
            <div class="modal-body">
              <div class="row">
                <div class="col-sm-6">
                  <label style="margin-bottom: .1rem!important;" data-error="wrong" data-success="right" for="txtBarra">Código de Barras</label>
                  <div class="input-group">
                    <input type="text" autofocus="true" class="input-default form-control pula" id="txtBarra" name="txtBarra" placeholder="Código de barras">
                  </div>
                </div>
                <div class="col-sm-6">
                  <label style="margin-bottom: .1rem!important;" data-error="wrong" data-success="right" for="txtCodigoProd">Código</label>
                  <div class="input-group">
                    <input type="text" autofocus="true" class="input-default form-control pula" id="txtCodigoProd" name="txtCodigoProd" placeholder="Código">
                  </div>
                </div>
                <div class="col-sm-12 row" style="margin-top: 6%; margin-left: 1.3%">
                  <div class="info-box mb-3 row" style="background-color: var(--blue-color)!important">
                    <span class="info-box-icon"><i class="fas fa-file-alt text-white"></i></span>
                    <div class="info-box-content ">
                      <span class="info-box-text text-white" style="font-size:15px">Item</span>
                      <span id="txtDescProduto" class="info-box-number text-white" style="font-size:15px">Descrição do
                        Item</span>
                    </div>
                    <span class="info-box-icon"><i class="fas fa-dollar-sign text-white"></i></span>
                    <div class="info-box-content ">
                      <span class="info-box-text text-white" style="font-size:15px">PREÇO DO ITEM</span>
                      <span id="txtPrecoProduto" class="info-box-number text-white" style="font-size:20px">0,00</span>
                    </div>
                    <span class="info-box-icon"><i class="fas fa-sort-amount-up-alt text-white"></i></span>
                    <div class="info-box-content " style="margin-top: 0.3%;">
                      <span class="info-box-text text-white" style="font-size:15px">QUANTIDADE</span>
                      <b style="margin-top: 2.3%;"><span id="txtQtdeProduto" class="info-box-number1 text-white" style="font-size:20px; margin-top: 2%;">0</span></b>
                    </div>
                  </div>
                </div>
                <div id="tabelaEstPrec" class="row d-none" style="margin-left: 2%; margin-right: 2%; margin-bottom: 2%">
                  <h5 style="margin-left: 2%">Info. Estoque e Preço</h5>
                  <div class="col-12 table-responsive">
                    <table id="tabelaEstoquePreco" class="table table-sm table-select table-hover display" width="100%">
                      <thead></thead>
                      <tbody></tbody>
                    </table>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>

      <div class="modal fade" id="modalDuplicatasEmAberto" data-backdrop="static" tabindex="-1" role="dialog">
        <div class="modal-dialog modal-lg">
          <div class="modal-content">
            <div class="modal-header">
              <h4 id="modalPrecos-titulo" class="modal-title">Duplicatas em Aberto</h4>
            </div>
            <div class="modal-body">
              <div class="card">
                <div class="card-body">
                  <div class="col-12 d-flex align-items-center justify-content-end">
                    <p>
                    <h5>
                      Valor Antecipação:&puncsp;
                      <h3><b><span id="txtValorAntecipacaoAberta" style="color:#079822"></span></b></h3>
                    </h5>
                    </p>
                  </div>
                  <div class="row">
                    <div class="col-12">
                      <div id="divTabelaDuplicatasEmAberto" class="row" style="margin-left: 2%; margin-right: 2%; margin-bottom: 2%">
                        <h5 style="margin-left: 2%">Duplicatas em Aberto</h5>
                        <div class="col-12 table-responsive">
                          <table id="tabelaDuplicatasEmAberto" class="table table-sm table-select table-hover display" width="100%">
                            <thead>
                            </thead>
                            <tbody></tbody>
                          </table>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            <div class="modal-footer">
              <button type="button" class="btn btn-secondary btn-lg" id="btnLiberarDuplicatas">Finalizar</button>
            </div>
          </div>
        </div>
      </div>
      <div class="modal fade" id="modalItemPreco" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
        <div class="modal-dialog">
          <div class="modal-content">
            <div class="modal-header">
              <h5 class="modal-title">Alterar Preço</h5>
              <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                <span aria-hidden="true">&times;</span></button>
            </div>
            <div class="modal-body">

              <div class="row">
                <div class="col-sm-6">
                  <label for="txtItemPrecoAtual" class="col-sm-12">Preço Atual: </label>
                  <div class="col-sm-12">
                    <input type="number" class="form-control input-default" id="txtItemPrecoAtual" placeholder="Preço Atual" disabled>
                  </div>
                </div>
                <div class="col-sm-6">
                  <label for="txtItemPrecoNovo" class="col-sm-12">Preço Novo: </label>
                  <div class="col-sm-12">
                    <input type="number" class="form-control input-default" id="txtItemPrecoNovo" value="0" placeholder="Preço Novo">
                  </div>
                </div>
                <input type="text" class="form-control input-default d-none" id="txtIdLinhaItemPreco" placeholder="linha">
              </div>
            </div>
            <div class="modal-footer">
              <button type="button" id="btnConfirmarItemPreco" class="btn btn-primary">Confirmar</button>
            </div>
          </div>
        </div>
      </div>

      <div id="modalMotivo" class="modal" tabindex="-1" role="dialog">
        <div class="modal-dialog" role="document">
          <div class="modal-content" id="modalBody">
            <div class="modal-header">
              <h4 class="modal-title">Motivo Devolução</h4>
              <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                <span aria-hidden="true">&times;</span>
              </button>
            </div>
            <div class="modal-body">
              <div class="row">
                <div class="col-12">
                  <label data-error="wrong" data-success="right" for="txtMotivoModal">Motivo</label>
                  <div class="input-group">
                    <input type="text" data-selecionado="false" class="input-default focus form-control" id="txtMotivoModal" class="form-control" placeholder="Motivo">
                    <div class="input-group-append">
                      <button class="btn bg-danger" id="btnMotivoModal" data-button="absolute" type="button"><i class="m-0 p-0 fas fa-search"></i></button>
                      <button class="btn bg-danger" id="btnLimpaMotivoModal" type="button"><i class="m-0 p-0 fas fa-trash"></i></button>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            <div class="modal-footer">
              <div class="row">
                <button class="btn btn-danger btn-sisp" id="btnConfirmarMotivoModal">Confirmar</button>
              </div>
            </div>
          </div>
        </div>
      </div>

    </div>
  </div>

  <footer class="footer">
    <div class="row text-center">
      <div class="col-12 mb-5">
        <div class="btn-group flex-wrap btn-group-justified btn-group-lg" role="group" aria-label="Basic example">
          <button type="button" id="btnCancelar" class="botoesMenu btn btn-secondary">Cancelar</button>
          <button type="button" id="btnInfo" class="botoesMenu btn btn-secondary">Informações (F5)</button>
          <button type="button" id="btnVenda" class="botoesMenu btn btn-secondary">Itens (F6)</button>
          <button type="button" id="btnFinalizar" class="botoesMenu divFinalizar btn btn-secondary ultimoBotao">Finalizar (F8)</button>
          <button type="button" id="btnNFE" class="botoesMenu divNFE btn btn-secondary d-none">NF-e</button>
        </div>
      </div>
    </div>
  </footer>

  <script src="<?php echo BASE_URI; ?>/plugins/jquery/jquery.min.js?versao=3.2512.9.1"></script>
  <script src="<?php echo BASE_URI; ?>/dist/js/sisplan.js?versao=3.2512.9.1"></script>

  <?php
  include_once('../../menu_fiscal.php');
  include_once('../../modais.php');
  include_once('../../modals/modal_estatisticas_entidade.html');
  include_once('modais/modal_cliente.php');
  ?>

  <script>
    ipInterno = '<?php echo IP_INTERNO; ?>';
    ipExterno = '<?php echo IP_EXTERNO; ?>';
    basicAuth = '<?php echo BASIC_AUTH; ?>';
  </script>

  <script type="text/javascript" src="<?php echo BASE_URI; ?>/utils/funcoes.js?versao=3.2512.9.1"></script>
  <script src="https://unpkg.com/phosphor-icons"></script>

  <script type="text/javascript" src="<?php echo BASE_URI; ?>/dist/js/jquery.dataTables.js?versao=3.2512.9.1"></script>
  <script type="text/javascript" src="<?php echo BASE_URI; ?>/dist/js/dataTables.bootstrap4.min.js?versao=3.2512.9.1">
  </script>
  <script src="<?php echo BASE_URI; ?>/dist/js/valida_cpf_cnpj.js?versao=3.2512.9.1"></script>
  <script type="text/javascript" src="<?php echo BASE_URI; ?>/dist/js/loadingoverlay.min.js?versao=3.2512.9.1"></script>
  <!-- jQuery UI 1.11.4 -->
  <script src="<?php echo BASE_URI; ?>/plugins/jquery-ui/jquery-ui.min.js?versao=3.2512.9.1"></script>
  <!-- Resolve conflict in jQuery UI tooltip with Bootstrap tooltip -->
  <script>
    $.widget.bridge('uibutton', $.ui.button)
  </script>
  <!-- Bootstrap 4 -->
  <script src="<?php echo BASE_URI; ?>/plugins/bootstrap/js/bootstrap.bundle.min.js?versao=3.2512.9.1"></script>
  <!-- AdminLTE App -->
  <script src="<?php echo BASE_URI; ?>/dist/js/adminlte.min.js?versao=3.2512.9.1"></script>
  <script src="<?php echo BASE_URI; ?>/dist/js/adminltemenu.js?versao=3.2512.9.1"></script>

  <script src="<?php echo BASE_URI; ?>/dist/js/dataTables.keyTable.js?versao=3.2512.9.1"></script>
  <script src="<?php echo BASE_URI; ?>/dist/js/sisplan.js?versao=3.2512.9.1"></script>
  <!-- SweetAlert2 -->
  <script src="<?php echo BASE_URI; ?>/plugins/sweetalert2/sweetalert2.min.js?versao=3.2512.9.1"></script>
  <script src="<?php echo BASE_URI; ?>/plugins/toastr/toastr.min.js?versao=3.2512.9.1"></script>
  <!-- jquery-validation -->
  <script src="<?php echo BASE_URI; ?>/plugins/jquery-validation/jquery.validate.min.js?versao=3.2512.9.1"></script>
  <script src="<?php echo BASE_URI; ?>/plugins/jquery-validation/additional-methods.min.js?versao=3.2512.9.1"></script>
  <script type="text/javascript" src="<?php echo BASE_URI; ?>/dist/js/sum().js?versao=3.2512.9.1"></script>
  <script src="<?php echo BASE_URI; ?>/dist/js/requisicoes.js?versao=3.2512.9.1"></script>
  <script src="<?php echo BASE_URI; ?>/utils/cookies.js?versao=3.2512.9.1"></script>
  <script src="<?php echo BASE_URI; ?>/dist/js/jquery.maskMoney.min.js?versao=3.2512.9.1"></script>
  <script src="<?php echo BASE_URI; ?>/dist/js/driver.min.js?versao=3.2512.9.1"></script>
  <script src="<?php echo BASE_URI; ?>/dist/js/jquery.mask.min.js?versao=3.2512.9.1"></script>
  <script src="<?php echo BASE_URI; ?>/plugins/owl/owl.carousel.min.js?versao=3.2512.9.1"></script>
  <script src="<?php echo BASE_URI; ?>/dist/js/jquery.inputmask.js?versao=3.2512.9.1"></script>
  <script type="text/javascript" src="<?php echo BASE_URI; ?>/dist/js/datadog-logs-v4.js?versao=3.2512.9.1"></script>
  <script src="<?php echo BASE_URI; ?>/pages/loja/js/rotinas.js?versao=3.2512.9.1"></script>
  <script type="text/javascript" src="<?php echo BASE_URI; ?>/config.js?versao=3.2512.9.1"></script>
  <script src="<?php echo BASE_URI; ?>/modals/modal_estatisticas_entidade.js"></script>
  <script src="<?php echo BASE_URI; ?>/plugins/select2/js/select2.full.min.js?versao=3.2512.9.1"></script>

  <script>
    //inicio tour
    let bConferido = false;
    $(document).ready(async function() {
      let enviarLogs = true;
      let fechaF10 = false;
      let fechaF8 = false;
      let usaNFE = false;
      let epcVenda = true;
      let depositoPadrao = '';
      let parametrosVenda = await BuscaParametrosVenda();
      const bUtilizaCashback = parametrosVenda[72] == '1';
      const bUsaIntegraçãoITAG = parametrosVenda[60] == 1 || parametrosVenda[60] == 2;
      const integracaoEPC = parametrosVenda[60];
      bUsaIntegraçãoITAG ? $('.divRFID').removeClass('d-none') : $('.divRFID').addClass('d-none');
      var parametrosSistema = await BuscaParametrosSistema('S');
      let quantidadeCasasDecimaisParametro = parametrosSistema[1] ?? 0;
      const quantidadeCasasDecimaisCampo = (+quantidadeCasasDecimaisParametro) + 2;
      const bUtilizaVendedorPorItem = false; //parametrosVenda[39] == '1';
      let diasDevolucao = 0
      const obrigaVenda = parametrosVenda[13] == '1';
      const vendaJaLiberada = []
      await carregaValoresPadroes();
      await insereJavaScriptTraducoes();

      if (!parent.document.querySelector('body').classList.contains('iframe-mode-fullscreen')) {
        parent.$('#abrirTelaCheia').trigger('click');
      }

      if (bUtilizaVendedorPorItem) {
        $('#divVendedorItemDevolucao').removeClass('d-none');
      }

      if (parametrosVenda[55] == 1) {
        $('#btnFinalizar').prop('disabled', true);
      }

      try {
        enviarLogs = ENVIAR_LOGS;
      } catch (error) {
        enviarLogs = true;
      }

      if (enviarLogs) {
        window.DD_LOGS &&
          DD_LOGS.init({
            clientToken: 'pub22c993c7a1e62229227b490bbdc2613f',
            forwardErrorsToLogs: true,
            sampleRate: 100,
            beforeSend: (log) => {
              if (log.http && log.http.status_code === 0) {
                return false;
              }
              log.usuario = {
                usuario: getCookie('usuario') ?? '',
                empresa: sessionStorage.getItem('g_nome_empresa_logada') ?? '',
                ipExterno: '<?php echo IP_EXTERNO; ?>',
                versao: VERSAO,
              }
            },
          })
      }
      $('#rodape').addClass('d-none');
      if (getCookie('usuario') == "") {
        window.location.href = "<?php echo BASE_URI; ?>/login";
      }
      $('#txt_usuario_logado').text(getCookie('usuario'));
      if ((sessionStorage.getItem('g_caixa_logado') != null) && (sessionStorage.getItem('g_caixa_logado') != '')) {
        var sCaixa = sessionStorage.getItem('g_caixa_logado').substring(1, sessionStorage.getItem('g_caixa_logado')
          .indexOf("]"));
        $('#txt_caixa_logado').text(sCaixa);
      } else {
        toastr.warning(
          'Caixa/Vendedor não informado!',
          'Atenção', {
            toastClass: 'alert',
            iconClasses: {
              error: 'alert-error',
              info: 'alert-info',
              success: 'alert-success',
              warning: 'alert-warning'
            },
            positionClass: "toast-top-center",
            progressBar: true,
            timeOut: 5000,
            fadeOut: 1000,
            onHidden: function() {
              // if (parent.document.querySelector('body').classList.contains('iframe-mode-fullscreen')) {
              //   window.parent.$('#abrirTelaCheia').trigger('click');
              // }
              if (!$('body').hasClass('sidebar-mini layout-fixed vsc-initialized iframe-mode-fullscreen')) {
                parent.$('#abrirTelaCheia').trigger('click');
              }
              parent.fechaAbaVendaDevolucao('Devolução', numero_venda);
              window.location.href = '<?php echo BASE_URI; ?>/loja'; //venda/' + venda_gerada;
            }
          }
        ).css({
          "margin-top": "20%",
          "width": "500px",
          "max-width": "500px"
        });
      }
      $('#txtQuantid')
        .on("focus", function() {
          let that = $(this);
          setTimeout(function() {
            that.select();
          }, 1)
        }).on('keydown', function(e) {
          if ((e.key == 'Tab') || (e.key == 'Enter')) {
            e.preventDefault();
            $('#txtCodigo').focus();
            $('#txtCodigo').click();
          }
        });

      $('.owl-carousel').owlCarousel({
        loop: true,
        margin: 10,
        responsiveClass: true,
        stagePadding: 30,
        smartSpeed: 450,
        responsive: {
          0: {
            items: 1,
            nav: true
          },
          400: {
            items: 3,
            nav: false
          },
          600: {
            items: 3,
            nav: false
          },
          1000: {
            items: 3,
            nav: true,
            loop: false
          }
        }
      });


      const temAcesso = await temAcessoTela('VENDA_DEVOLUCAO');
      if (!temAcesso.resultado) {
        toastrAcesso(temAcesso, '<?php echo BASE_URI; ?>');
        return;
      }

      const bCampoQtdeVisivel = parametrosVenda[21] == 1;
      const campoQtdeVisivel2 = parametrosVenda[21] == 2;
      const campoQualidadeVisivel = parametrosVenda[41] == 1;
      const bNFEAutomatico = parametrosVenda[20];
      var utilizaGuia = parametrosVenda[12];

      if (bCampoQtdeVisivel || campoQtdeVisivel2) {
        $('#divQuantid').removeClass('d-none');
        $('#txtQuantid').removeClass('d-none');
        if (campoQualidadeVisivel) {
          $('#divQualidade').removeClass('d-none');
          $('#divBarra').removeClass('col-sm-12').addClass('col-sm-6');
          // $('#divBarra').removeClass('col-11').addClass('col-12');
        } else {
          $('#divBarra').removeClass('col-sm-12').addClass('col-sm-9');
          // $('#divBarra').removeClass('col-11').addClass('col-12');
        }
      } else {
        if (!$('#divQuantid').hasClass('d-none')) {
          $('#divQuantid').addClass('d-none');
          $('#txtQuantid').addClass('d-none');
        }
        if (campoQualidadeVisivel) {
          $('#divQualidade').removeClass('d-none');
          $('#divBarra').removeClass('col-sm-12').addClass('col-sm-9');
          // $('#divBarra').removeClass('col-11').addClass('col-12');
        }
      }

      // var bCampoQtdeVisivel = parametrosVenda[21] == 1;
      // if (bCampoQtdeVisivel) {
      //   $('#divQuantid').removeClass('d-none');
      //   $('#divBarra').removeClass('col-sm-11').addClass('col-sm-8');
      // } else {
      //   if (!$('#divQuantid').hasClass('d-none')) {
      //     $('#divQuantid').addClass('d-none');
      //   }
      //   $('#divBarra').removeClass('col-sm-8').addClass('col-sm-11');
      // }

      if (utilizaGuia != "0") {
        $('#GuiaInfoTour').removeClass('d-none');
        $('#txtGuia').removeClass('d-none');
      }

      controlaECF();

      async function RotinaCliqueVenda() {
        fs_venda = $('#fieldset_venda');
        fs_pagamento = $('#fieldset_pagamento');
        fs_info = $('#fieldset_info');
        $('#btnVenda').prop('disabled', true);
        $('#btnInfo').prop('disabled', false);
        $('#btnPagamento').prop('disabled', false);

        $("#progressbar li").eq($("fieldset").index(fs_venda)).addClass("active");
        fs_venda.show();
        fs_info.animate({
          opacity: 0
        }, {
          step: function(now) {
            opacity = 1 - now;
            fs_pagamento.css({
              'display': 'none',
              'position': 'relative'
            });

            fs_info.css({
              'display': 'none',
              'position': 'relative'
            });

            fs_venda.css({
              'opacity': opacity
            });
          },
          duration: 100
        });
        const utilizaBarraLog = parametrosVenda[46] != '0';
        if (!utilizaBarraLog) {
          $("#txtVenda").focus();
          $('#modal-dinamico').modal('show');
        } else {
          $('#txtCodigo').focus();
        }
        $('#tabelaItens').DataTable().columns.adjust().draw(false);
      }

      $('.somAtivo').on('click', function() {
        $(this).addClass('d-none');
        localStorage.setItem("@devolucao.somAtivo", false);
        $('.somInativo').removeClass('d-none');
      });

      $('.somInativo').on('click', function() {
        $(this).addClass('d-none');
        localStorage.setItem("@devolucao.somAtivo", true);
        $('.somAtivo').removeClass('d-none');
      });

      const somAtivo = localStorage.getItem('@devolucao.somAtivo') ?? 'false';
      if (somAtivo == 'true') {
        $($('.somInativo')[0]).trigger('click');
      }

      $('#btnSelecionarEmpresas').on('click', async function() {
        const possuiEmpDevolucao = (await buscaValor('EMPRESA', 'EMP_DEVOLUCAO', 'EMP_PAT', getCookie('empresa'))).EMP_DEVOLUCAO;
        if (possuiEmpDevolucao) {
          buscaEmpresaDevolucao(possuiEmpDevolucao)
        } else {
          await carregaEmpresasDisponiveis(true, true);
        }
      });

      async function buscaEmpresaDevolucao(empsDevolucao, mostraModal = true) {
        try {
          $('#cbTodasAsEmpresas').off();
          $('#cbTodasAsEmpresas').on('click', function() {
            $('.empresa_selecionada').toArray().map(input => {
              $(`#${input.id}`).prop('checked', $('#cbTodasAsEmpresas').prop('checked'));
            });
          });

          if ($('.empresa_selecionada').length > 0) {
            if (mostraModal) {
              $('#modal-empresas').modal('show');
            }
            return;
          }

          const dadosSelect = {
            orderBy: ['EMP_PAT'],
            tabela: `EMPRESA`,
            camposSelect: ['EMP_ID', "REPLACE(EMP_PAT, '_', '') EMPRESA", 'EMP_NOME'],
            where: [`EMP_PAT IN (${empsDevolucao})`],
          };

          const retornoSelect = await retornaJsonPesquisaPadrao(JSON.stringify(dadosSelect));
          if (!retornoSelect) {
            return;
          }
          if (retornoSelect && retornoSelect.length > 0) {
            if (mostraModal) {
              $('#modal-empresas').modal('show');
            }
            $('#modal-empresas-body').html('');

            for (let index = 0; index < retornoSelect.length; index++) {
              const empresa = retornoSelect[index];
              $('#modal-empresas-body').append(
                `<div class="form-check icheck-primary" style ="margin-left: 0px !important">
                        <input id="cbEmpresa-${empresa.EMP_ID}" data-emp-id="${empresa.EMP_ID}" class="form-check-input empresa_selecionada" type="checkbox" ${getCookie('emp_id') == empresa.EMP_ID ? 'checked' : ''}> 
                        <label for="cbEmpresa-${empresa.EMP_ID}">${`${empresa.EMPRESA} - ${empresa.EMP_NOME}`}</label>
                     </div>`
              );
            }
          }
        } finally {

        }
      }

      function RotinaCliqueInfo() {
        $('#btnVenda').prop('disabled', false);
        $('#btnInfo').prop('disabled', true);
        $('#btnPagamento').prop('disabled', false);

        fs_venda = $('#fieldset_venda');
        fs_pagamento = $('#fieldset_pagamento');
        fs_info = $('#fieldset_info');

        $("#progressbar li").eq($("fieldset").index(fs_info)).addClass("active");
        fs_info.show();
        fs_pagamento.animate({
          opacity: 0
        }, {
          step: function(now) {
            opacity = 1 - now;
            fs_venda.css({
              'display': 'none',
              'position': 'relative'
            });

            fs_pagamento.css({
              'display': 'none',
              'position': 'relative'
            });

            fs_info.css({
              'opacity': opacity
            });
          },
          duration: 100
        });
      }

      if (bNFEAutomatico != 0) {
        $('#btnNFE').removeClass('d-none');
        $('.divNFE').removeClass('d-none');
        $('.divFinalizar').removeClass('ultimoBotao');
      }

      async function RotinaNFE() {
        try {
          if (parametrosVenda[53] != '') {
            $('#txtOperacaoNota').val(parametrosVenda[53]);
          }
          insereValor('#txtClienteNFE', $('#txtCliente').val());
          $('#modalNFE').modal('show');
        } finally {
          $('#btnNFE').prop('disabled', false);
        }
      }

      $('#btnNFE').on('click', async function() {
        await RotinaNFE();
      });

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

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


      $('#tutorial').on('click', function() {
        $('#geral-tab').trigger('click');
        $(document).ready(async function() {
          const driver = new Driver({
            doneBtnText: 'Sair',
            closeBtnText: 'Fechar',
            nextBtnText: 'Próximo',
            prevBtnText: 'Anterior',
            allowClose: false,
            onHighlightStarted: (Element) => {
              if ((Element.node.id == 'btnInfo') || (Element.node.id == 'pesquisaDevolucao')) {
                if ($('#fieldset_info').css('display') == 'none') {
                  RotinaCliqueInfo();
                }
              } else
              if ((Element.node.id == 'btnVenda') || (Element.node.id == 'addProdutoTour')) {
                if ($('#fieldset_venda').css('display') == 'none') {
                  RotinaCliqueVenda();
                }
              } else
              if (Element.node.id == 'btn-sair') {
                if (!$('.navbar-toggler').hasClass('collapsed')) {
                  $('.navbar-toggler').trigger('click');
                }
              }
            }
          });

          driver.defineSteps([{
              element: '#btnCancelar',
              popover: {
                title: 'Botão Cancelar',
                description: 'Aqui você pode cancelar uma devolução caso o cliente tenha desistido.',
                position: 'top'
              }
            },
            {
              element: '#btnInfo',
              popover: {
                title: 'Botão Informações',
                description: '<b>Passo 1</b>: Aqui você escolhe algumas informações, como cliente, tabela de preço e depósito.',
                position: 'top'
              }
            },
            {
              element: '#pesquisaDevolucao',
              popover: {
                title: 'Informações',
                description: 'Aqui você preenche os dados iniciais referente a sua venda.',
                position: 'bottom'
              }
            },
            {
              element: '#btnVenda',
              popover: {
                title: 'Botão Venda',
                description: '<b>Passo 2</b>: Esse botão habilitará a aba de Venda, onde você adicionará os produtos que estão sendo devolvidos.',
                position: 'top'
              }
            },
            {
              element: '#cadastroDevolverProduto',
              popover: {
                title: 'Adicionar Produtos',
                description: 'Aqui você adiciona os produtos que estão sendo devolvidos, tendo a opção de bipar por código de barras ou selecioná-los manualmente através da pesquisa.',
                position: 'bottom'
              }
            },
            {
              element: '#listaProdutoDevo',
              popover: {
                title: 'Lista de Itens',
                description: 'Aqui você consegue visualizar os produtos devolvidos já adicionados na sua venda, tendo algumas opções disponíveis no botão <b>Opções</b>.',
                position: 'bottom'
              }
            },
            {
              element: '#btnFinalizar',
              popover: {
                title: 'Botão Finalizar',
                description: '<b>Passo 3</b>: Esse botão irá finalizar a sua venda de devolução.<br><b>OBS</b>: Ao finalizar a devolução, será gerado um crédito (antecipação) para seu cliente, onde você pode abater em uma próxima venda.',
                position: 'top'
              }
            },
            {
              element: '#btn-sair',
              popover: {
                title: 'Botão Sair',
                description: 'Clicando nesse botão você sairá da tela, sendo direcionado a tela principal do módulo loja.<br><b>OBS</b>: Caso não tiver salvo os dados da venda, você estará desistindo da venda, não sendo mais possível recuperar tais informações.',
                position: 'bottom'
              }
            }
          ]);

          // inicior tuor
          driver.start();
          const activeElement = driver.getHighlightedElement();
        });
      });
      //final tour

      var queryString = window.location.href;
      var parametros = queryString.split('/');
      var numero_venda = parametros[parametros.length - 1];
      var tabelaItens = $('#tabelaItens').DataTable({
        paging: false,
        filter: false,
        info: false,
        order: false,
        destroy: true,
        scrollX: '250px',
        scrollY: '290px',
        "columnDefs": [{
            "targets": [0, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25],
            "visible": false
          },
          {
            "targets": [1],
            "width": '280px'
          },
          {
            render(data, type, row) {
              const valorFormatado = parseFloat(data).toLocaleString('pt-BR', {
                maximumFractionDigits: quantidadeCasasDecimaisCampo,
                minimumFractionDigits: quantidadeCasasDecimaisCampo
              });

              if (bUtilizaCashback) {
                try {
                  const cashBack = row[23];
                  icone = `<i class="fas fa-info-circle" title="Preço original ${(data + cashBack).toFixed(2)} menos valor do cashback ${cashBack.toFixed(2)} gerou o preço líquido ${data.toFixed(2)}"></i>`;

                  return `${valorFormatado} ${icone}`;
                } catch (error) {
                  return valorFormatado;
                }
              } else {
                return valorFormatado;
              }
            },
            targets: 3,
          },
          {
            "targets": [2],
            "className": 'pr-4 text-right'
          },
          {
            "render": function(data) {
              return parseFloat(data).toLocaleString('pt-BR', {
                maximumFractionDigits: quantidadeCasasDecimaisCampo,
                minimumFractionDigits: quantidadeCasasDecimaisCampo
              });
            },
            "targets": [4],
            "className": 'pr-4 text-right'
          },
          {
            "render": function(data) {
              return parseFloat(data).toLocaleString('pt-BR', {
                maximumFractionDigits: 2,
                minimumFractionDigits: 2
              });
            },
            "targets": [7],
            "className": 'pr-4 text-right'
          },
          // {
          //   "render": function(data) {
          //     return parseFloat(data).toLocaleString('pt-BR', {
          //       maximumFractionDigits: quantidadeCasasDecimaisCampo,
          //       minimumFractionDigits: quantidadeCasasDecimaisCampo
          //     });
          //   },
          //   "targets": [3]
          // },
        ],

      });

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

      var tabelaParcelasGeradas = $('#tabelaParcelasGeradas').DataTable({
        paging: false,
        filter: false,
        info: false,
        order: false,
        destroy: true,
        autowidth: true,
      });

      var tabelaCondicoes = $('#tabelaCondicoesDePagamento').DataTable({
        paging: false,
        filter: false,
        info: false,
        order: false,
        destroy: true,
        scrollX: true,
        "scrollY": "200px",
        "columnDefs": [{
          "targets": [6, 7, 8],
          "visible": false
        }],
      });

      async function carregaVendaNaoSalva(sNomeMaquina) {
        var response;
        var myHeaders = new Headers();
        myHeaders.append('pragma', 'no-cache');
        myHeaders.append('cache-control', 'no-cache');
        try {
          response = await fetch(`<?php echo BASE_URI; ?>/${sNomeMaquina}.txt`, {
            headers: myHeaders,
            method: 'GET',
            body: null,
          }, );
        } catch (error) {
          console.error(error);
          return;
        }
        return response;
      }

      if (sessionStorage.getItem('g_caixa_logado') == null) {
        return;
      } else if ((numero_venda != 'create') && (numero_venda != 'create#')) {
        await carregaDadosVenda();
        await telaInicial();
      } else {
        try {
          const hostname = `JsonVenda-${sessionStorage.getItem('g_idAba')}-${getCookie('idMaquina')}-D`;
          response = await carregaVendaNaoSalva(hostname);
        } catch (error) {}

        if (response.status == 200) {
          await carregaDadosVenda();
          await telaInicial();
          $('#btn-codigo').on('click', function() {
            $('#modal-dinamico').modal('show');
            $('#txtProdutoCodigo').val('');
            $('#txtProdutoDescricao').val('');
          });
        } else {
          const depositoParam = parametrosVenda[1];
          const depositoVendedorCaixa = sessionStorage.getItem('g_deposito_vendedor_caixa');
          if (!!depositoPadrao) {
            $('#txtDeposito').val(depositoPadrao);
          } else if ((depositoVendedorCaixa != '') && (depositoVendedorCaixa !== null)) {
            $('#txtDeposito').val(depositoVendedorCaixa);
          } else {
            $('#txtDeposito').val(depositoParam);
          }
          $('#txtDeposito').attr('data-selecionado', true);
          const tabelaParam = parametrosVenda[2];
          $('#txtTabela').val(tabelaParam);
          $('#txtTabela').attr('data-selecionado', true);
          const vendedor = sessionStorage.getItem('g_vendedor_logado');
          $('#txtVendedor').val(vendedor);
          $('#txtVendedor').attr('data-selecionado', true);
          if ($('#txtCliente').val() != '') {
            const sCNPJ = await RetornaCNPJ(pegaChave('#txtCliente'));
            $('#txtCNPJ').val('[' + sCNPJ + '] - ' + sCNPJ);
          }
          await telaInicial();
        }
      }

      $('#txtCliente').on('change', async function() {
        await RotinaSaidaCliente();
      })

      async function RotinaSaidaCliente() {
        try {
          const codigo = pegaChave('#txtCliente');
          const descricao = pegaDescricao('#txtCliente');
          const cnpj = pegaChave('#txtCNPJ');
          const descCnpj = pegaDescricao('#txtCNPJ');
          await buscaGuiaCliente(codigo, utilizaGuia);
          if (!await verificaCliente(codigo)) {
            return;
          };
          if ((pegaDescricao('#txtCliente').substring(0, 16).toUpperCase() == 'CONSUMIDOR FINAL') || (pegaDescricao('#txtCNPJ') == '000.000.000')) {
            await senhaSupervisor('Deseja realmente devolver venda com consumidor final?', () => {
              insereValor('#txtCliente', codigo, descricao)
              insereValor('#txtCNPJ', cnpj, descCnpj)
            }, '', false, undefined, undefined, undefined, false, 'DEVOLUCAO');
            $('#txtCliente').val('');
            $('#txtCNPJ').val('');
            return;
          }
        } catch (error) {

        }
      };


      async function verificaCliente(codcli) {
        if (codcli == '') {
          return;
        }

        try {
          let response = await requisicao('GET', '/sisplan/funcoes/v1/pesquisa?',
            `JSON={ "tabela":"ENTIDADE", "camposSelect":["ativo", "bloqueio"],"where": ["codcli = '${codcli}'"]}`,
            null);

          if (!response) {
            return;
          }

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

          if (jsonEntidade['RESULT'][0][0].ATIVO == 'N') {
            msgAlerta('Cliente inativo, impossível continuar.');
            $('#txtCliente').val('');
            $('#txtCNPJ').val('');

          } else if (jsonEntidade['RESULT'][0][0].BLOQUEIO == 'S') {

            msgAlerta('Cliente bloqueado, deseja desbloquear?', () => {
                senhaSupervisor('Desbloquear cliente',
                  async () => {
                      await alterarBloqueioCliente(codcli, false, "DEVOLUCAO");
                      $('#txtCliente').focus();
                    },
                    '',
                    false,
                    () => {
                      $('#txtCliente').val('')
                      $('#txtCNPJ').val('')
                    },
                    () => {
                      $('#txtCliente').val('')
                      $('#txtCNPJ').val('')
                    },
                    () => {
                      $('#txtCliente').val('')
                      $('#txtCNPJ').val('')
                    },
                    false,
                    'DEVOLUCAO')
              }, () => {
                $('#txtCliente').val('')
                $('#txtCNPJ').val('')
              }, undefined,
              () => {
                $('#txtCliente').val('')
                $('#txtCNPJ').val('')
              });
            return false;
          }
          return true;
        } catch (error) {
          console.error(error);
        }
      };

      $('#txtCNPJ').on('change', async function() {
        let validaCNPJ = formata_cpf_cnpj($("#txtCNPJ").val());
        if (validaCNPJ) {
          $("#txtCNPJ").val(validaCNPJ);
          var _url = `/Sisplan/Funcoes/v1/pesquisa?`;
          var _params = `JSON={ "tabela":"entidade", "camposSelect":["codcli","NOME"], "where": ["CNPJ = '${ $("#txtCNPJ").val()}'"]}`;

          try {
            var response = await requisicao('GET', _url, _params, null);

            if (!response) {
              return;
            }

            var jsonStr = await response.json();
            if (response.status != 200) {
              msgErro(jsonStr['RESULT'][0].mensagem)
              return;
            }
            if (jsonStr['RESULT'][0].length > 0) {
              insereValor("#txtCliente", jsonStr['RESULT'][0][0].CODCLI, jsonStr['RESULT'][0][0].NOME);
            }
            $('#txtCliente').trigger('blur');
          } catch (error) {
            console.error(error);
          }
        }
      });

      $('#tabelaItens tbody').on('click', 'td>div>div>div a.btnQuantidade', async function() {
        event.preventDefault();
        const id = this.closest('tr').rowIndex - 1;
        const arrDados = $("#tabelaItens").DataTable().row(id).data();
        // if (arrDados[14] != '0') {
        //   msgAlerta('Não é possível fazer alteração de quantidade/preço em produto com uma venda vinculada.');
        //   return;
        // }
        await criaTelaQuantidade(id, true);
      });

      async function carregaDadosVenda(devolucao = false) {
        try {
          try {
            var response;
            const utilizaBarraLog = parametrosVenda[46] != '0';
            $.LoadingOverlay("show");
            try {
              const hostname = `JsonVenda-${sessionStorage.getItem('g_idAba')}-${getCookie('idMaquina')}-D`;
              response = await carregaVendaNaoSalva(hostname);
            } catch (error) {

            }

            if (response.status != 200) {
              response = await requisicao('GET', '/Sisplan/Vendas/v1/Venda?', `codvenda=${numero_venda}`, null);
            }

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

            //preenche aba informações...
            var vendaJson = jsonStr;
            if (vendaJson.fechada == true) {
              parent.fechaAbaVendaDevolucao('Devolução', numero_venda);
              if (!$('body').hasClass('sidebar-mini layout-fixed vsc-initialized iframe-mode-fullscreen')) {
                parent.$('#abrirTelaCheia').trigger('click');
              }
              window.location.href = '<?php echo BASE_URI; ?>/loja';
            }
            var scodCli = jsonStr.codCli;
            await PreencheNomeECNPJ(scodCli);
            var sTabela = jsonStr.tabela;
            if (sTabela != "") {
              await PreencheDescTabela(sTabela);
            }
            try {
              var sDeposito = jsonStr.itens[0].deposito;
              await PreencheDescDeposito(sDeposito);
            } catch {
              var depositoParam = parametrosVenda[1];
              $('#txtDeposito').val(depositoParam);
              $('#txtDeposito').attr('data-selecionado', true);
            }
            var sVendedor = jsonStr.codRep;
            await PreencheDescVendedor(sVendedor);
            var iLancamento = jsonStr.lancamento;
            $('#txtLancamento').val(iLancamento);

            //preenche aba venda
            await carregaDadosItens(vendaJson.itens, 'D');
            if ((utilizaBarraLog) && (vendaJson.listaBarraLog)) {
              vendaJson.listaBarraLog.forEach(async barra => {
                await adicionaBarraBipada(barra);
              });
            }
            //atualiza totais
            atualizaTotalVenda();
            atualizaSaldoAPagar();
            atualizaTotaisPagto();
          } catch (error) {
            console.error(error);
            msgErro('Não foi possível buscar os dados da venda: ' + error)
          }
        } finally {
          $.LoadingOverlay("hide");
        }

      };
      $('#btn_confirmar_dinamico').on('click', async function() {
        $('#btnMenosOuMais>i.fa-minus').removeClass('fa-minus').addClass('fa-plus');
        async function buscaQualidade(codigo) {
          try {
            const json = await retornaJsonPesquisaPadrao(`{"tabela":"TABQUL", "camposSelect":[ "CODIGO", "DESCRICAO" ], "where": ["CODIGO = '${codigo}'"] }`);
            if (json) {
              return json;
            }
          } catch (error) {
            console.error(error);
          }
        }
        const parametro = parametrosVenda[17];

        var selecionados = $('.selecionado');

        if (await solicitaSenhaDiasVenda(selecionados)) {
          $("#txtCodigo").unbind("blur");
          for (let i = 0; i < selecionados.length; i++) {
            const id = selecionados[i].id.substr(5, selecionados[i].id.length);
            const data = await $('#tabela-dinamica').DataTable().row(id).data();
            const qualidade = await buscaQualidade(data.QUALIDADE);
            insereValor('#txtQualidade', qualidade[0].CODIGO, qualidade[0].DESCRICAO);
            $('#txtQuantid').val(data.QUANTIDADE);
            $('#txtIdItem').val(data.ID_ESTOQUE);
            $('#txtEmpresaItem').val(data.EMP_ID)
            if (data.BARRA != '') {
              $('#txtCodigo').val($('#txtCodigo').val() + data.BARRA)
            } else {
              if ((data.LOTE != '') && (data.LOTE != '000000') && (data.LOTE)) {
                $('#txtCodigo').val($('#txtCodigo').val() + data.LOTE);
              } else {
                $('#txtCodigo').val(data.LOTE ? data.LOTE : '000000');
              }
            }
            insereValor('#txtVenda', data.VENDA, data.CLIENTE);
            //data.CODREP != undefined ? $('#txtVendedorItemDevolucao').val(data.CODREP) : '';
            await saidaCodigo(false, id, "tabela-dinamica");
            $('#txtEmpresaItem').val('');
            $('#txtCodigo').val('');
            $('#txtQuantid').val('');
            $('#txtIdItem').val('');
          }

          await atualizaTotalVenda();
          $('#check_todos').prop('checked', false);
          $('#divCheckTodos').addClass('d-none');
          $('#modal-dinamico').modal('hide');
          $('#txtCodigo').blur(async function() {
            await saidaCodigo();
          });
          if ($.fn.DataTable.isDataTable('#tabela-dinamica')) {
            $('#tabela-dinamica').DataTable().clear().draw(false);
          }
        }

      });

      $('#txtBarra').blur(async function(e) {
        e.preventDefault();
        if ($('#txtBarra').val() != '') {
          await buscaPreco(true);
          $('#txtBarra').focus();
        }
      });

      $('#txtCodigoProd').change(async function() {
        await buscaPreco(false);
      });

      async function pesquisaProduto() {
        try {
          let sbarra = $('#txtBarraDinamica').val();
          const ebarralog = await retornaBarraLogLida($('#txtBarraDinamica').val()) == "barra_log";
          let barrasKit = ''

          if (ebarralog) {
            sbarra = await extraiBarra28(sbarra, 'N');
          } else if (sbarra != '') {
            if (sbarra?.substr(0, 1) === '9') {
              const itensKit = await buscarItensKit(sbarra, pegaChave('#txtDeposito'), 0)
              barrasKit = itensKit.map((item) => `'${item.barra}'`).join(',')
            }
            if (!barrasKit) {
              const barra = (await buscaValor('PA_ITEN', 'BARRA', 'BARRA', `${sbarra}' OR PA_ITEN.BARRA28 = '${sbarra}' OR PA_ITEN.BARRACLI = '${sbarra}`))?.BARRA;
              sbarra = barra != '' ? barra : sbarra;
            }
          }
          let params = '';
          let cor = '';
          let tam = '';
          const empId = $('.empresa_selecionada:checked').toArray().length > 0 ? $('.empresa_selecionada:checked').toArray().map(input => input.id.substring(input.id.indexOf('-') + 1, input.id.length)) : [getCookie('emp_id')];;
          const consideraDescontoPagamentoNoPrecoDaVendaDevolucao = parametrosVenda[63] == '1';
          const precoVendaRef = consideraDescontoPagamentoNoPrecoDaVendaDevolucao ? 'CASE WHEN ((ITVENDA.VALOR_DESC > 0) OR (ITVENDA.DESC_ITEM > 0)) THEN (ITVENDA.TOTAL_LIQ/ITVENDA.QUANTIDADE) ELSE ITVENDA.PRECO_LIQ END PRECO' :
            'ITVENDA.PRECO_LIQ PRECO';
          const codigo = await formataListas($('#txtProdutoDinamico').val().toString());
          let item = codigo != '' ? ` AND ITVENDA.CODIGO IN (${codigo})` : '';
          const cliente = pegaChave('#txtClienteDinamico') != '' ? ` AND VENDA.CODCLI = '${pegaChave('#txtClienteDinamico')}'` : '';
          let barra = ''
          if (barrasKit) {
            barra = ` AND ITVENDA.BARRA IN (${barrasKit})`
          } else {
            barra = sbarra != '' ? ` AND ITVENDA.BARRA = '${sbarra}'` : '';
          }
          const DataDe = $('#txtDataDe').val() != '1200-01-01' ? ` AND VENDA.DATA >= '${$('#txtDataDe').val()}'` : '';
          const DataAte = $('#txtDataAte').val() != '2500-12-01' ? ` AND VENDA.DATA <= '${$('#txtDataAte').val()}'` : '';
          const naoTrazerVendaPendente = ` AND VENDA.CANCELADA = 0 AND VENDA.FECHADA = 1 AND VENDA.DEVOLUCAO = 0`;
          // const venda = pegaChave('#txtVendaModal') != '' ? ` AND VENDA.CODVEN = '${pegaChave('#txtVendaModal')}'` : '';
          let venda = '';
          const listaVendas = await formataListas($('#txtVendaModal').val().toString());
          if (listaVendas != '') {
            venda = ` AND VENDA.CODVEN IN (${listaVendas})`
          }

          const url = '/sisplan/funcoes/v1/pesquisa?';
          if ($('#radioMostrarGrade').is(':checked')) {
            if (await formataListas($('#txtProdutoDinamico').val().toString()) != '') {
              let depositoEmpresa = await verificaDepositosEmpresaLogada(getCookie('empresa'));
              depositoEmpresa = depositoEmpresa != '' ? ` AND PA_ITEN.DEPOSITO IN (${depositoEmpresa})` : '';
              cor = $("#txtCorModal").val() != "" ? ` AND PA_ITEN.COR = '${pegaChave("#txtCorModal")}'` : "";
              tam = $('#txtTamModal').val() != '' ? ` AND PA_ITEN.TAM = '${pegaChave('#txtTamModal')}'` : '';
              params = `JSON={"tabela":"PA_ITEN", "camposSelect":["PA_ITEN.CODIGO", "PRODUTO.DESCRICAO", "PA_ITEN.COR", "CADCOR.DESCRICAO DESC_COR", "PA_ITEN.TAM", "PA_ITEN.LOTE", "CASE WHEN PA_ITEN.BARRA <> '' THEN PA_ITEN.BARRA WHEN PA_ITEN.BARRA28 <> '' THEN PA_ITEN.BARRA28 ELSE PA_ITEN.BARRACLI END AS BARRA", "PA_ITEN.QUANTIDADE ESTOQUE", "PA_ITEN.TIPO QUALIDADE", "PA_ITEN.DEPOSITO", "DEPOSITO.DESCRICAO AS DESC_DEPOSITO", "PA_ITEN.ID AS ID_ESTOQUE", "PRODUTO.UNI_VENDA"],"leftjoin": [{"tabela" : "PRODUTO", "condicao" : "PRODUTO.CODIGO = PA_ITEN.CODIGO"},{"tabela" : "CADCOR", "condicao" : "CADCOR.COR = PA_ITEN.COR"},{"tabela" : "DEPOSITO", "condicao" : "DEPOSITO.CODIGO = PA_ITEN.DEPOSITO"}],"where": ["1=1 AND PA_ITEN.CODIGO IN (${codigo}) ${cor}${tam}${depositoEmpresa}"], "orderby": ["CADCOR.DESCRICAO"]}`;
            } else {
              msgAlerta('Para montar por grade tem que informar um produto!');
              return;
            }
          } else {
            cor = $("#txtCorModal").val() != "" ? ` AND ITVENDA.COR = '${pegaChave("#txtCorModal")}'` : "";
            tam = $("#txtTamModal").val() != "" ? ` AND ITVENDA.TAM = '${pegaChave("#txtTamModal")}'` : "";
            const colunaQtde = $('#cbSomenteItensNaoDevolvidos').prop('checked') ? `ITVENDA.QUANTIDADE - COALESCE((SELECT SUM(QUANTIDADE) FROM [ITVENDA] ITVENDA_DEV WHERE ITVENDA_DEV.CODVENORIG = ITVENDA.CODVEN ` +
              `AND ITVENDA_DEV.CODIGO = ITVENDA.CODIGO ` +
              `AND ITVENDA_DEV.COR = ITVENDA.COR ` +
              `AND ITVENDA_DEV.TAM = ITVENDA.TAM ` +
              `AND NOT EXISTS (SELECT CODVEN FROM [VENDA] VENDA WHERE VENDA.CODVEN = ITVENDA_DEV.CODVEN AND ITVENDA_DEV.EMP_ID = VENDA.EMP_ID and VENDA.CANCELADA = 1)), 0) QUANTIDADE ` :
              'ITVENDA.QUANTIDADE';
            const colunaQtdeWhere = $('#cbSomenteItensNaoDevolvidos').prop('checked') ? ` AND (ITVENDA.QUANTIDADE - COALESCE((SELECT SUM(QUANTIDADE) FROM [ITVENDA] ITVENDA_DEV WHERE ITVENDA_DEV.CODVENORIG = ITVENDA.CODVEN ` +
              `AND ITVENDA_DEV.CODIGO = ITVENDA.CODIGO ` +
              `AND ITVENDA_DEV.COR = ITVENDA.COR ` +
              `AND ITVENDA_DEV.TAM = ITVENDA.TAM ` +
              `AND NOT EXISTS (SELECT CODVEN FROM [VENDA] VENDA WHERE VENDA.CODVEN = ITVENDA_DEV.CODVEN AND ITVENDA_DEV.EMP_ID = VENDA.EMP_ID and VENDA.CANCELADA = 1)), 0) > 0) ` :
              '';
            params = `JSON={` +
              `"tabela":"ITVENDA",` +
              `"camposSelect":[` +
              `"ITVENDA.CODVEN VENDA",` +
              `"VENDA.CODCLI ||' - '|| ENTIDADE.NOME CLIENTE", ` +
              `"VENDA.DATA", ` +
              `"ITVENDA.CODIGO||' - '||PRODUTO.DESCRICAO||' - '||CADCOR.DESCRICAO ||' - '||ITVENDA.TAM PRODUTO", ` +
              `"ITVENDA.BARRA", ` +
              `"ITVENDA.QUALIDADE", ` +
              `"${colunaQtde}", ` +
              `${'"'+precoVendaRef+'"'}, ` +
              `"ITVENDA.DEPOSITO",` +
              `"DEPOSITO.DESCRICAO DESC_DEPOSITO",` +
              `"ITVENDA.ID_ESTOQUE", ` +
              `"ITVENDA.CODREP",` +
              `"PRODUTO.UNI_VENDA",` +
              `"ITVENDA.EMP_ID",` +
              `"ITVENDA.CODIGO",` +
              `"ITVENDA.COR",` +
              `"ITVENDA.TAM"` +
              `],` +
              `"leftjoin": [` +
              `{"tabela" : "VENDA", "condicao" : "ITVENDA.CODVEN = VENDA.CODVEN"},` +
              `{"tabela" : "ENTIDADE", "condicao" : "VENDA.CODCLI = ENTIDADE.CODCLI"},` +
              `{"tabela" : "PRODUTO", "condicao" : "ITVENDA.CODIGO = PRODUTO.CODIGO"},` +
              `{"tabela" : "CADCOR", "condicao" : "CADCOR.COR = ITVENDA.COR"},` +
              `{"tabela" : "DEPOSITO", "condicao" : "DEPOSITO.CODIGO = ITVENDA.DEPOSITO"}` +
              `],` +
              `"where": [` +
              `"1=1 ` +
              `${naoTrazerVendaPendente} ` +
              `${cliente} ` +
              `${item} ` +
              `${barra} ` +
              `${DataDe} ` +
              `${DataAte} ` +
              `${venda} ` +
              `${cor}` +
              `${tam}` +
              `${colunaQtdeWhere}` +
              `AND ITVENDA.EMP_ID IN (${empId})"` +
              `], ` +
              `"orderby": ["VENDA.DATA DESC"]` +
              `}`;
          }
          const response = await requisicao('GET', url, params, '', 500000);

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

          return jsonStr;

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

      async function pesquisaMaterial() {
        try {
          let params = '';
          const empId = $('.empresa_selecionada:checked').toArray().length > 0 ? $('.empresa_selecionada:checked').toArray().map(input => input.id.substring(input.id.indexOf('-') + 1, input.id.length)) : [getCookie('emp_id')];;
          let codigo = pegaChave('#txtMaterialDinamico');
          const item = pegaChave('#txtMaterialDinamico') != '' ? ` AND ITVENDA.CODIGO = '${pegaChave('#txtMaterialDinamico')}'` : '';
          const cliente = pegaChave('#txtClienteDinamico') != '' ? ` AND VENDA.CODCLI = '${pegaChave('#txtClienteDinamico')}'` : '';
          let barra = $('#txtBarraDinamica').val() != '' ? ` AND ITVENDA.LOTE = '${$('#txtBarraDinamica').val()}'` : '';
          const DataDe = $('#txtDataDe').val() != '1200-01-01' ? ` AND VENDA.DATA >= '${$('#txtDataDe').val()}'` : '';
          const DataAte = $('#txtDataAte').val() != '2500-12-01' ? ` AND VENDA.DATA <= '${$('#txtDataAte').val()}'` : '';
          const naoTrazerVendaPendente = ` AND VENDA.CANCELADA = 0 AND VENDA.FECHADA = 1 AND VENDA.DEVOLUCAO = 0`;
          // const venda = pegaChave('#txtVendaModal') != '' ? ` AND VENDA.CODVEN = '${pegaChave('#txtVendaModal')}'` : '';
          let venda = '';
          const listaVendas = await formataListas($('#txtVendaModal').val().toString());
          if (listaVendas != '') {
            const venda = ` AND VENDA.CODVEN IN (${listaVendas})`
          }

          const consideraDescontoPagamentoNoPrecoDaVendaDevolucao = parametrosVenda[63] == '1';
          const precoVendaRef = consideraDescontoPagamentoNoPrecoDaVendaDevolucao ? 'CASE WHEN ITVENDA.VALOR_DESC > 0 THEN (ITVENDA.TOTAL_LIQ/ITVENDA.QUANTIDADE) ELSE ITVENDA.PRECO_LIQ END PRECO' :
            'ITVENDA.PRECO_LIQ PRECO';
          const url = '/sisplan/funcoes/v1/pesquisa?';
          if ($('#radioMostrarGrade').is(':checked')) {
            if ($('#txtMaterialDinamico').val() != '') {
              const cor = $("#txtCorModal").val() != "" ? ` AND MAT_ITEN.COR = '${pegaChave("#txtCorModal")}'` : "";
              params = `JSON={"tabela":"MAT_ITEN", "camposSelect":["MAT_ITEN.CODIGO", "MATERIAL.DESCRICAO", "MAT_ITEN.COR", "CADCOR.DESCRICAO DESC_COR","MAT_ITEN.QTDE ESTOQUE", "MAT_ITEN.QUALIDADE", "MAT_ITEN.LOTE", "MAT_ITEN.BARRA", "MAT_ITEN.QUALIDADE", "MAT_ITEN.ID AS ID_ESTOQUE", "MATERIAL.UNIDADE"],"leftjoin": [{"tabela" : "MATERIAL", "condicao" : "MATERIAL.CODIGO = MAT_ITEN.CODIGO"},{"tabela" : "CADCOR", "condicao" : "CADCOR.COR = MAT_ITEN.COR"}],"where": ["1=1 AND MAT_ITEN.CODIGO = '${codigo}'${cor} "], "orderby": ["CADCOR.DESCRICAO"]}`;
            } else {
              msgAlerta('Para montar por grade tem que informar um material!');
              return;
            }
          } else {
            const cor = $("#txtCorModal").val() != "" ? ` AND ITVENDA.COR = '${pegaChave("#txtCorModal")}'` : "";
            params = `JSON={` +
              `"tabela": "ITVENDA",` +
              `"camposSelect": [ "ITVENDA.CODVEN VENDA",` +
              `"VENDA.CODCLI ||' - '|| ENTIDADE.NOME CLIENTE",` +
              `"VENDA.DATA",` +
              `"ITVENDA.CODIGO||' - '||MATERIAL.DESCRICAO||' - '||CADCOR.DESCRICAO ||' - '||ITVENDA.TAM MATERIAL",` +
              `"ITVENDA.BARRA",` +
              `"MAT_ITEN.LOTE",` +
              `"ITVENDA.QUALIDADE",` +
              `"ITVENDA.QUANTIDADE",` +
              `${'"'+precoVendaRef+'"'},` +
              `"ITVENDA.ID_ESTOQUE",` +
              `"ITVENDA.CODREP",` +
              `"MATERIAL.UNIDADE",` +
              `"ITVENDA.CODIGO",` +
              `"ITVENDA.COR",` +
              `"ITVENDA.TAM"],` +
              `"leftjoin": [{ "tabela": "VENDA", "condicao": "ITVENDA.CODVEN = VENDA.CODVEN" },` +
              `{ "tabela": "ENTIDADE", "condicao": "VENDA.CODCLI = ENTIDADE.CODCLI" },` +
              `{ "tabela": "MATERIAL", "condicao": "ITVENDA.CODIGO = MATERIAL.CODIGO" },` +
              `{ "tabela": "CADCOR", "condicao": "CADCOR.COR = ITVENDA.COR" } ],` +
              `"innerJoin": [{ "tabela": "MAT_ITEN", "condicao": "MAT_ITEN.CODIGO = ITVENDA.CODIGO AND MAT_ITEN.COR = ITVENDA.COR AND MAT_ITEN.LOTE = ITVENDA.LOTE AND MAT_ITEN.DEPOSITO = ITVENDA.DEPOSITO AND MAT_ITEN.QUALIDADE = ITVENDA.QUALIDADE" }],` +
              `"where": [ "1=1 ${naoTrazerVendaPendente} ${cliente} ${item} ${barra} ${DataDe} ${DataAte} ${venda} ${cor} AND ITVENDA.EMP_ID IN (${empId}) "],` +
              `"orderby": ["VENDA.DATA DESC"] }`;
          }

          let response = await requisicao('GET', url, params, '', 500000);

          if (!response) {
            return;
          }

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

          return jsonStr;

        } catch (error) {
          console.error(error);
        }
      }
      $('#btn-consulta-dinamica').on('click', async function() {
        try {
          const paramPrioridadeProdutoMaterial = parametrosVenda[17];
          const bPesquisaProduto = $('#radioProduto').is(':checked');
          const bMostraGrade = $('#radioMostrarGrade').is(':checked');
          $.LoadingOverlay("show");
          try {
            let jsonStr;
            let dataSet = [];
            let dataSetCols = [];
            let colunaDecimais = [];
            if (bPesquisaProduto) {
              jsonStr = await pesquisaProduto();
              if (!$('#radioMostrarGrade').is(':checked')) {
                colunaDecimais = [8];
              }
            } else {
              jsonStr = await pesquisaMaterial();
              if (!$('#radioMostrarGrade').is(':checked')) {
                colunaDecimais = [9];
              }
            }
            if (jsonStr != undefined) {
              if (!$.isEmptyObject(jsonStr.RESULT[0][0])) {
                dataSet = jsonStr;

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

                dataSetCols[0].render = function(data, type, row, meta) {
                  return `<div class="icheck-primary d-inline">
                <input type="checkbox" id="check${meta.row}" class="campoSel">
                <label for="check${meta.row}"></label>
              </div>`
                }

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

                if ($.fn.DataTable.isDataTable('#tabela-dinamica')) {
                  $('#tabela-dinamica').DataTable().destroy();
                  $('#tabela-dinamica').empty();
                };

                tabelaDinamica = $('#tabela-dinamica').DataTable({
                  destroy: true,
                  select: true,
                  keys: true,
                  info: false,
                  searching: false,
                  lengthChange: false,
                  scrollCollapse: true,
                  order: false,
                  autoWidth: true,
                  paging: false,
                  "columns": dataSetCols,
                  "data": dataSet.RESULT[0],
                  "columnDefs": [{
                      "render": function(data) {
                        return parseFloat(data).toLocaleString("pt-BR", {
                          maximumFractionDigits: quantidadeCasasDecimaisCampo,
                          minimumFractionDigits: quantidadeCasasDecimaisCampo
                        })
                      },
                      "targets": colunaDecimais,
                    },
                    {
                      targets: !bMostraGrade ? bPesquisaProduto ? [11, 12, 14, 15, 16, 17] : [13, 14, 15] : [],
                      visible: false
                    }
                  ]
                });

                $('#divCheckTodos').removeClass('d-none');

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

              } else {
                msgErro('Não existe venda com esse item!');
                return;
              }
            }
          } catch (error) {
            console.error(error);
            msgErro('Erro ao buscar dados.');
          }

          $('#check_todos').on('change', function() {
            $('.campoSel').prop('checked', $('#check_todos').prop('checked'));
            if ($('#check_todos').prop('checked')) {
              $('.campoSel').addClass('selecionado');

            } else {
              $('.campoSel').removeClass('selecionado');

            }
          });

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

      $('#txtBarraDinamica').on('blur', async function() {
        if ($(this).val() != '') {
          $('#btn-consulta-dinamica').trigger('click');
          $(this).val('');
          $(this).focus();
        }
      });

      $("#btn_confirmar_cred").on('click', function() {
        var bEmAlteracao = $('#txt_cred_modo').val() == 'alteracao';
        var nr_parcelas = pegaChave('#txtNrParcelas', nr_parcelas);
        var codmoeda = pegaChave("#txtMoeda", codmoeda);
        var descmoeda = pegaDescricao("#txtMoeda", descmoeda);
        var codcondpagto = pegaChave("#txtCondicaoDePagamento", codcondpagto);
        var desccondpagto = pegaDescricao("#txtCondicaoDePagamento", desccondpagto);
        var valor = parseFloat($("#txt_cred_valor_total").val());
        var valor_pago = parseFloat($("#txt_cred_valor_total").val());
        var saldo_a_pagar = parseFloat(($("#txtsaldo_a_pagar").html().replace('.', '')).replace(
          ',', '.'));

        if (codmoeda == '1') //se for cheque
        {
          var possuiBanco = true;
          var possuiAgencia = true;
          var possuiConta = true;
          var possuiNumero = true;
          for (let i = 0; i < $('.campoBanco').length; i++) {
            possuiBanco = (($($('.campoBanco')[i]).val() != 'undefined') && ($($('.campoBanco')[i]).val() !=
              ''));
            possuiAgencia = (($($('.campoAgencia')[i]).val() != 'undefined') && ($($('.campoAgencia')[i])
              .val() != ''));
            possuiConta = (($($('.campoConta')[i]).val() != 'undefined') && ($($('.campoConta')[i]).val() !=
              ''));
            possuiNumero = (($($('.campoNumero')[i]).val() != 'undefined') && ($($('.campoNumero')[i])
              .val() != ''));
          }

          if (possuiBanco == false) {
            msgAlerta('Necessário informar o campo Banco, verifique');
            return;
          }
          if (possuiAgencia == false) {
            msgAlerta('Necessário informar o campo Agência, verifique');
            return;
          }
          if (possuiConta == false) {
            msgAlerta('Necessário informar o campo Conta, verifique');
            return;
          }
          if (possuiNumero == false) {
            msgAlerta('Necessário informar o campo Número, verifique');
            return;
          }
        }
        if ((!bEmAlteracao) && (valor_pago > saldo_a_pagar)) {
          valor = saldo_a_pagar;
        }

        var valorParcelas = 0;
        for (let i = 0; i < $('.campoValor').length; i++) {
          valorParcelas = parseFloat(valorParcelas.toFixed(2)) + parseFloat(parseFloat($($('.campoValor')[i])
            .val()).toFixed(2));
        }
        if (Math.round(valor) == Math.round(valorParcelas)) {
          if (bEmAlteracao) {
            var ordemCondicaoPagto = $('#tabelaCondicoesDePagamento tr.selected')[0].rowIndex - 1;
            var dadosAtuais = $('#tabelaCondicoesDePagamento').DataTable().row(ordemCondicaoPagto).data();
            //apaga da tabela de parcelas e cria novamente...
            tabelaParcelasGeradas
              .rows(function(idx, data, node) {
                return data[0] === ordemCondicaoPagto;
              })
              .remove()
              .draw(false);

            CriaRegistrosTabelaParcelas();
          } else {
            tabelaCondicoes.row.add([
              tabelaCondicoes.rows().count(),
              codmoeda + ' - ' + descmoeda,
              codcondpagto + ' - ' + desccondpagto,
              valor,
              valor_pago,
              retornaBotaoOpcoesCondicao(codmoeda),
              codmoeda,
              codcondpagto,
              nr_parcelas
            ]).draw(false);

            CriaRegistrosTabelaParcelas();

            $("#txtMoeda").val('');
            $("#txtCondicaoDePagamento").val('');
            $("#txtValorParcela").val('');
            $("#txtNrParcelas").val('');
            $("#btn-moeda").focus();
          }

          atualizaSaldoAPagar();
          atualizaTotaisPagto();
          $('#modalParcelas').modal("hide");
        } else {
          msgAlerta('Valor das parcelas diferente do total, verifique');
          $('#modalParcelas').modal("show");
        }
      });

      $('#btn_dividir_valor').on('click', function() {
        var valor = parseFloat(($('#txt_cred_valor_total').val() / $('.campoValor').length).toFixed(2));
        for (let i = 0; i < $('.campoValor').length; i++) {
          $($('.campoValor')[i]).removeClass('alterado')
          $($('.campoValor')[i]).val(valor);
        }

      });

      $('#tabelaParcelas tbody').on('change', 'tr', function(e) {
        var rowArray = tabelaParcelas.row(this).data();

        if (rowArray) {
          rowArray['VALOR'] = rowArray['VALOR'].toFixed(2);
        }
      });


      //validação do passo 1 nos campos
      $.validator.setDefaults({
        submitHandler: function() {

        }
      });

      $('#msform').validate({
        debug: false,
        rules: {
          txtCliente: {
            required: true
          },
          txtVendedor: {
            required: true
          },
          txtDeposito: {
            required: true
          },
          txtTabela: {
            required: true
          }
        },
        messages: {
          txtCliente: {
            required: "Informe um cliente válido."
          },
          txtVendedor: {
            required: "Informe um vendedor válido."
          },
          txtDeposito: {
            required: "Informe um depósito válido."
          },
          txtTabela: {
            required: "Informe uma tabela de preço válida."
          }
        },
        errorElement: 'span',
        errorPlacement: function(error, element) {
          error.addClass('invalid-feedback');
          element.closest('.input-group').append(error);
        },
        highlight: function(element, errorClass, validClass) {
          $(element).addClass('is-invalid');
        },
        unhighlight: function(element, errorClass, validClass) {
          $(element).removeClass('is-invalid');
        }
      });

      $('#btnInfo').on('click', function() {
        if ($('#tabelaCondicoesDePagamento').DataTable().rows().count() > 0) {
          msgAlerta('Venda já possui pagamento informado, impossível continuar.');
          return;
        }

        if ($('#tabelaItens').DataTable().rows().count() > 0) {
          $('#txtTabela').prop('disabled', true);
          $('#btn-tabela').prop('disabled', true);
        } else {
          $('#txtTabela').prop('disabled', false);
          $('#btn-tabela').prop('disabled', false);
        }
        RotinaCliqueInfo();
      });

      $('#btnVenda').on('click', function() {
        $('#tabelaItens').css({
          'width': '100%'
        });
        if ($('#tabelaCondicoesDePagamento').DataTable().rows().count() > 0) {
          msgAlerta('Venda já possui pagamento informado, impossível continuar.');
          return;
        }
        // if ((utilizaGuia != '2') && (!$('#GuiaInfoTour').hasClass('d-none')) && ($('#txtGuia').val() == '')) {
        //   msgAlerta('Necessário informar um guia para continuar.');
        //   $('#btnInfo').trigger('click');
        //   return;
        // }
        if (($('#fieldset_info').css('display') == 'none') && (($('#txtCliente').val() == '') || ($(
            '#txtDeposito').val() == '') || ($('#txtTabela').val() == '') || ($('#txtVendedor').val() ==
            ''))) {
          msgAlerta('Necessário informar os campos Cliente, Deposito, Vendedor e Tabela de Preço.');
          $('#btnInfo').trigger('click');
        } else
        if (($("#msform").validate().element("#txtCliente")) &&
          ($("#msform").validate().element("#txtTabela")) &&
          ($("#msform").validate().element("#txtVendedor")) &&
          ($("#msform").validate().element("#txtDeposito"))) {
          if ((!["2", "4"].includes(utilizaGuia)) && !$('#GuiaInfoTour').hasClass('d-none')) {
            if ($("#msform").validate().element("#txtGuia")) {
              RotinaCliqueVenda();
            }
          } else {
            RotinaCliqueVenda();
          }
        }
      });

      async function deletaVendaNaoSalva(sNomeMaquina) {
        var response;
        try {
          response = await fetch(`<?php echo BASE_URI; ?>/deletar_arquivo.php?nomedoarquivo=${sNomeMaquina}`, {
            method: 'GET',
            body: null,
          }, );
        } catch (error) {
          console.error(error);
          return;
        }
        return response;
      }

      async function MensagemFinalizacaoERedirect(venda_gerada, bGerarAntecipacao = true, bNotafiscal = false) {
        const parametroImprimirRomaneio = parametrosVenda[34];
        if (!parametroImprimirRomaneio || parametroImprimirRomaneio == '0') {
          await imprimirRomaneio(venda_gerada, "<?php echo BASE_URI; ?>");
        } else if (parametroImprimirRomaneio == '2') {
          msgAlerta('Deseja imprimir a venda?', async () => {
            await imprimirRomaneio(venda_gerada, "<?php echo BASE_URI; ?>");
          })
        }
        const hostname = `JsonVenda-${sessionStorage.getItem('g_idAba')}-${getCookie('idMaquina')}-D`;
        await deletaVendaNaoSalva(hostname + '.txt');
        const vendaDevolvida = pegaChave('#txtVenda');
        if (bGerarAntecipacao) {
          setCookie('codven_devolucao', venda_gerada);
          setCookie('cliente_devolucao', $('#txtCliente').val());
        }
        await verificaVendaFinalizadaEEnviaWhatsApp(BASE_URI, venda_gerada, "DEVOLUCAO");
        toastr.success(
          `Devolução da venda: ${vendaDevolvida} efetuada 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: async function() {
              if (!bNotafiscal) {
                parent.abrirEmNovaAbaIFrame('Venda', '<?php echo BASE_URI; ?>/venda/create');
                window.location.href = `<?php echo BASE_URI; ?>/devolucao/create`;
              }
            }
          }
        ).css({
          "width": "500px",
          "max-width": "500px"
        });
      }

      async function RotinaFinalizarDevolucao(total, bDebitouDuplicatas = false, arrayReceber = [], bGerarAntecipacaoCliente = true) {
        try {
          const paramAntecipacao = bGerarAntecipacaoCliente == false ? `&SEMANTECIPACAO=S` : '';

          if (total <= 0) {
            msgAlerta('Venda sem nenhum item, impossível finalizar.');
            return;
          }
          let venda = {};
          const paramDescontarDuplicatasAtrasadas = parametrosVenda[33];
          if ((paramDescontarDuplicatasAtrasadas == '1') &&
            ($('#tabelaDuplicatasEmAberto').DataTable().rows().count() > 0)) {
            venda.DebitaDuplicatas = true;
            venda.ReceberAbertos = arrayReceber;
          }

          if ((numero_venda == 'create') || (numero_venda == 'create#')) {
            numero_venda = await RetornaProximo('VENDA', 'VENDA', 'CODVEN', 0);
          }

          venda = await montaJsonVenda(venda, numero_venda, 'D');
          venda.valor = total;

          if (pegaValor('#txtVenda') != '') {
            venda.Valor_Frete = (await buscaValor('VENDA', 'VALOR_FRETE', 'CODVEN', pegaChave('#txtVenda'))).VALOR_FRETE;
          }

          salvarBackupVenda(venda);

          const response = await requisicao(venda.codVen != null ? 'PUT' : 'POST', '/Sisplan/Vendas/V1/Venda?', `FECHAF10=${fechaF10}${paramAntecipacao}`, `JSON=${encodeURIComponent(JSON.stringify(venda))}`);

          if (!response) {
            return;
          }

          const jsonStr = await response.json();
          if (response.status != 200) {
            msgErro(jsonStr.mensagem);
            return;
          }
          var venda_gerada = jsonStr.codVenda;

          if (bUsaIntegraçãoITAG) {
            await verificaGravarRFID();
          }

          if (fechaF10) {
            await rotinaGeraLog('TVENDALOJA', jsonStr.codVenda, `Usado F10 para gravar a devolução ${jsonStr.codVenda}`, 'Inclusão');
          } else if (fechaF8) {
            await rotinaGeraLog('TVENDALOJA', jsonStr.codVenda, `Usado F8 para gravar a devolução ${jsonStr.codVenda}`, 'Inclusão');
          } else if (usaNFE) {
            await rotinaGeraLog('TVENDALOJA', jsonStr.codVenda, `Usado NFe para gravar a devolução ${jsonStr.codVenda}`, 'Inclusão');
          }

          return venda_gerada
        } catch (error) {
          console.error(error);
          msgErro('Erro ao gravar a devolução.');
        }
      }

      $('#btn_confirmar_nfe').on('click', async function() {
        $('#btn_confirmar_nfe').prop('disabled', true);
        usaNFE = true;
        try {
          $.LoadingOverlay("show");

          const natureza = pegaChave('#txtNaturezaNFE');
          const cliente = pegaChave('#txtClienteNFE');
          const operacao = pegaChave('#txtOperacaoNota');
          const validacao = (cliente != '') && ((natureza != '') || (operacao != ''));
          const opcaoGerarAntecipacao = parametrosVenda[58] ?? '1';
          const perguntaAoUsuarioOqueDesejaFazer = opcaoGerarAntecipacao == 2;

          if (validacao) {
            const rotina = async (bGeraAntecipacao = true) => {
              const total = $('#tabelaItens').DataTable().column(7, {}).data().sum();
              const numeroVenda = await RotinaFinalizarDevolucao(total, false, [], bGeraAntecipacao);
              const faturarVenda = await RotinaFaturarVenda(numeroVenda, natureza, cliente, operacao);
              if (faturarVenda.regraAplicada && (faturarVenda.fatura != '')) {
                const transmiteNota = await rotinaTransmiteNota(faturarVenda.fatura, faturarVenda.serie);
                if (transmiteNota[0]) {
                  await imprimirNfe(faturarVenda.fatura, faturarVenda.serie);
                } else {
                  msgAlerta(`${transmiteNota[1]}\nRedirecionando a tela de impressão de nota.`, null, null, () => {
                    parent.abrirEmNovaAbaIFrame('Impressão NFe', `<?php echo BASE_URI; ?>/nfeimpressao`);
                  });
                }
                await MensagemFinalizacaoERedirect(numeroVenda, bGeraAntecipacao);
              } else {
                await MensagemFinalizacaoERedirect(numeroVenda, bGeraAntecipacao, true);
                const nota = {
                  NATUREZA: $('#txtNaturezaNFE').val(),
                  CLIENTE: $('#txtClienteNFE').val(),
                  CODVEN: numeroVenda,
                  OPERACAO: $('#txtOperacaoNota').val()
                };
                parent.abrirEmNovaAbaIFrame('Faturamento Geral', `<?php echo BASE_URI; ?>/faturamento/`, btoa(JSON.stringify(nota)));
                window.location.href = `<?php echo BASE_URI; ?>/devolucao/create`;
              }
            }

            if (perguntaAoUsuarioOqueDesejaFazer) {
              msgAlerta('Deseja gerar uma antecipação de crédito para o cliente ?', async () => {
                $.LoadingOverlay("show");
                await rotina(); //execução da rotina
              }, async () => {
                $.LoadingOverlay("show");
                await rotina(false); //execução da rotina
              })
            } else {
              $.LoadingOverlay("show");
              await rotina(['1', '3', '4', '5'].includes(opcaoGerarAntecipacao));
            }
          } else {
            msgAlerta('Favor preencher os campos obrigatórios (*) para continuar.');
          }

        } finally {
          $.LoadingOverlay("hide");
          $('#btn_confirmar_nfe').prop('disabled', false);
        }
      });

      $('#btnFinalizar').on('click', async function() {
        fechaF8 = true;
        try {
          $.LoadingOverlay('show');
          const opcaoGerarAntecipacao = parametrosVenda[58] ?? '1';
          const perguntaAoUsuarioOqueDesejaFazer = opcaoGerarAntecipacao == 2;

          //definição da rotina
          const rotina = async (bGeraAntecipacao = true) => {
            const total = $('#tabelaItens').DataTable().column(7, {}).data().sum();
            if (total <= 0) {
              msgAlerta('Venda sem nenhum item, impossível finalizar.');
              return;
            } else {
              const paramDescontarDuplicatasAtrasadas = parametrosVenda[33];
              if (paramDescontarDuplicatasAtrasadas == '1') {
                if (await verificaDuplicatasEmAberto(total)) {
                  $('#modalDuplicatasEmAberto').modal('show');
                  $('#tabelaDuplicatasEmAberto').DataTable().columns.adjust().draw(false);
                  return;
                } else {
                  if ($('#tabelaDuplicatasEmAberto tr').length > 0) {
                    $('#tabelaDuplicatasEmAberto').DataTable().rows().remove().draw(false);
                  }
                  const numeroVenda = await RotinaFinalizarDevolucao(total, false, [], bGeraAntecipacao);
                  await MensagemFinalizacaoERedirect(numeroVenda, bGeraAntecipacao);
                }
                return;
              } else {
                const numeroVenda = await RotinaFinalizarDevolucao(total, false, [], bGeraAntecipacao);
                await MensagemFinalizacaoERedirect(numeroVenda, bGeraAntecipacao);
              }
            }
          }

          if (perguntaAoUsuarioOqueDesejaFazer) {
            msgAlerta('Deseja gerar uma antecipação de crédito para o cliente ?', async () => {
              await rotina(); //execução da rotina
            }, async () => {
              await rotina(false); //execução da rotina
            })
          } else {
            await rotina(['1', '3', '4', '5'].includes(opcaoGerarAntecipacao));
          }

        } finally {
          $.LoadingOverlay("hide");
        }
      });

      function verificaSeAntecipacaoCobreAsDuplicatasSelecionadas() {
        try {
          let valorAntecipacao = parseFloat($('#txtValorAntecipacaoAberta').html());

          for (let i = 0; i < $('.campoCheck.selecionado').length; i++) {
            const indice = $('.campoCheck.selecionado')[i].closest('tr').rowIndex - 2;
            const data = $('#tabelaDuplicatasEmAberto').DataTable().row(indice).data();
            valorAntecipacao = valorAntecipacao - parseFloat(data.SALDO);
          }

          if (valorAntecipacao <= 0) {
            return true;
          } else {
            return false;
          }

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

      async function retornaArrayReceber() {
        let valorDevolucao = parseFloat($('#txtValorAntecipacaoAberta').html());
        let valorDescontado = 0;
        let bSucesso = false;
        let objeto = {};
        const arrayReceber = [];

        for (let i = 0; i < $('.campoCheck.selecionado').length; i++) {
          const indice = $('.campoCheck.selecionado')[i].closest('tr').rowIndex - 2;
          let data = $('#tabelaDuplicatasEmAberto').DataTable().row(indice).data();


          if (!verificaSeAntecipacaoCobreAsDuplicatasSelecionadas()) {
            msgAlerta('Selecione as duplicatas para fechar o valor total da devolução!');
            return;
          }

          valorDescontado = valorDevolucao;
          // verifica se o saldo da duplicata aberta é menor que o valor da devolucao
          if (valorDevolucao <= data.SALDO) {
            valorDescontado = ArredondarValor(valorDevolucao, 2);
            data.SALDO = ArredondarValor(data.SALDO - valorDescontado, 2);
            valorDevolucao = 0;
          } else {
            valorDescontado = ArredondarValor(data.SALDO, 2);
            valorDevolucao = ArredondarValor(valorDevolucao - data.SALDO, 2);
            data.SALDO = 0;
          }

          objeto = {
            CODCLI: pegaChave('#txtCliente'),
            CODREP: pegaChave('#txtVendedor'),
            NUMERO: data.NUMERO,
            SALDO: data.SALDO,
            VALOR_DEV: valorDescontado,
            STATUS: data.STATUS,
            NRCAIXA: pegaChave(sessionStorage.getItem('g_caixa_logado')),
            DT_PAGTO: `${formataData(new Date())}T00:00:00Z`,
            DT_CONT: `${formataData(new Date())}T00:00:00Z`,
          };

          arrayReceber.push(objeto);

          $('#txtValorAntecipacaoAberta').html(valorDevolucao);

        }

        return arrayReceber;

      }

      $('#btnLiberarDuplicatas').on('click', async function() {
        try {
          $.LoadingOverlay('show');
          try {
            const total = $('#tabelaItens').DataTable().column(7, {}).data().sum();
            const arrayReceber = await retornaArrayReceber();
            const valorDevolucao = ArredondarValor($('#txtValorAntecipacaoAberta').html(), 2);

            if (valorDevolucao == 0) {
              const numeroVenda = await RotinaFinalizarDevolucao(total, true, arrayReceber);
              await MensagemFinalizacaoERedirect(numeroVenda);
            }

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

      $("#txtMoeda").on('blur', function() {
        var codmoeda = pegaChave("#txtMoeda", codmoeda);
        if (codmoeda == '0') {
          $("#txtCondicaoDePagamento").prop('disabled', true);
          $("#btn-CondicaoDePagamento").prop('disabled', true);
          $("#txtCondicaoDePagamento").val('[0] - A VISTA')
          $("#txtNrParcelas").val('1');
          $("#txtValorParcela").focus();
        } else {
          $("#txtCondicaoDePagamento").prop('disabled', false);
          $("#btn-CondicaoDePagamento").prop('disabled', false);
        }
      });

      $('#txtValorParcela').on('blur', function() {
        $('#btnAddCondicao').focus();
      });

      $('#btnAddCondicao').on('keypress', function() {
        $('#btnAddCondicao').trigger('click');
      });

      $('#btnAddCondicao').on('click', function() {
        const nr_parcelas = pegaChave('#txtNrParcelas');
        const codmoeda = pegaChave("#txtMoeda");
        const descmoeda = pegaDescricao("#txtMoeda");
        const codcondpagto = pegaChave("#txtCondicaoDePagamento");
        const desccondpagto = pegaDescricao("#txtCondicaoDePagamento");
        const valor_pago = parseFloat($("#txtValorParcela").val());
        const saldo_a_pagar = parseFloat(($("#txtsaldo_a_pagar").html().replace('.', '')).replace(',', '.'));
        let valor = parseFloat($("#txtValorParcela").val());
        const sCNPJ = pegaChave('#txtCNPJ');
        const sNome = pegaDescricao('#txtCliente');

        if (valor_pago > saldo_a_pagar) {
          valor = saldo_a_pagar;
        }

        if ((codmoeda == '') || (descmoeda == '') || (codcondpagto == '') || (desccondpagto == '') || (
            parseFloat($("#txtValorParcela").val()) <= 0)) {
          msgAlerta('Campos obrigatórios [moeda, condição de pagamento e valor] não informados, verifique.');
          return;
        }

        if (saldo_a_pagar == 0) {
          msgAlerta('Não há saldo a pagar, impossível adicionar nova condição de pagamento.');
          return;
        }

        if (codmoeda == '1') {
          MontaTabelaParcelas('cheque', sNome, sCNPJ, nr_parcelas, valor, codcondpagto, 'inclusao', true, '', codmoeda);
          return;
        } else
        if (codmoeda == '4') {
          MontaTabelaParcelas('crediario', sNome, sCNPJ, nr_parcelas, valor, codcondpagto, 'inclusao', true, '', codmoeda);
          return;
        } else {
          MontaTabelaParcelas('cheque', sNome, sCNPJ, nr_parcelas, valor, codcondpagto, 'inclusao', false, '', codmoeda);
          return;
        }

        $("#txtMoeda").val('');
        $("#txtCondicaoDePagamento").val('');
        $("#txtValorParcela").val('');
        $("#txtNrParcelas").val('');
        $("#btn-moeda").focus();
        atualizaSaldoAPagar();
        atualizaTotaisPagto();
      });

      async function salvaDadosDigitados(objeto) {
        try {
          const response = await fetch(`<?php echo BASE_URI; ?>/salvar_arquivo.php?id_aba=${sessionStorage.getItem('g_idAba')}&tipoVenda=D`, {
            method: 'POST',
            body: `${JSON.stringify(objeto)}`,
          }, );
        } catch (error) {
          msgAlerta('Erro ao salvar dados digitados!');
        }
        return response;
      }

      // Eventos com DataTable
      $('#tabelaItens').DataTable().columns.adjust().draw(false);

      $('#tabelaItens tbody').on('click', 'td>div>div>div a.btnExcluir', async function() {
        event.preventDefault();
        let venda = {};
        async function removeItemVenda(object) {
          const itemPosicionado = $('#tabelaItens').DataTable().row($(object).parents('tr')).data();
          // await removeItemListaBarra(itemPosicionado[0], itemPosicionado[10], itemPosicionado[11]) verificar se vai ser bloqueado ou como vamos fazer.
          $('#tabelaItens').DataTable().row($(object).parents('tr'))
            .remove()
            .draw(false);

          venda = await montaJsonVenda(venda, numero_venda, 'D');
          salvaDadosDigitados(venda);
          atualizaTotalVenda();
        }
        var bSenhaSupervisor = parametrosVenda[10];
        if (bSenhaSupervisor == '1') {
          var props = this;
          await senhaSupervisor('Exclusão de item da venda', removeItemVenda, props, false, undefined, undefined, undefined, false, 'DEVOLUCAO');
        } else {
          await removeItemVenda(this);
        }
      });

      $('#tabelaItens tbody').on('click', 'td>div>div>div a.btnAlterarPreco', async function() {
        event.preventDefault();
        await criaTelaAlterarPreco(this.closest('tr').rowIndex - 1);
      });

      $('#tabelaItens tbody').on('click', 'td>div>div>div a.btnMotivo', async function() {
        event.preventDefault();
        const row = $('#tabelaItens').DataTable().row(this.closest('tr'));
        const indexItem = row.index();
        const item = row.data();
        $("#modalMotivo").prop("indexItem", indexItem);
        if (item[25] != "") {
          insereValor("#txtMotivoModal", item[25], {
            tabela: "MENSAGEM",
            campoBusca: "DESCRICAO",
            campoWhere: "CODMEN",
            valorWhere: item[25]
          });
        }
        $("#modalMotivo").modal("show");
      });

      $('#btn-sair').on('click', function() {
        event.preventDefault();
        var possuiItens = $('#tabelaItens').DataTable().rows().count();
        msgAlerta(`${possuiItens ? 'Venda possui itens. ' : ''} Deseja realmente sair ?`, async function() {
          const hostname = `JsonVenda-${sessionStorage.getItem('g_idAba')}-${getCookie('idMaquina')}-D`;
          if ((numero_venda != 'create') && (numero_venda != 'create#')) {
            await deletaRegistro('LOJA', getCookie('usuario'), numero_venda);
          }
          await deletaVendaNaoSalva(hostname + '.txt');
          parent.removerTelaCheia(true);
          if (!$('body').hasClass('sidebar-mini layout-fixed vsc-initialized iframe-mode-fullscreen')) {
            parent.$('#abrirTelaCheia').trigger('click');
          }
          parent.fechaAbaVendaDevolucao('Devolução', numero_venda);
          // window.location.href = '<?php echo BASE_URI; ?>/loja';
        });
      });

      $('#tabelaItens tbody').on('click', 'td>div>div>div a.btnInfoAdc', async function() {
        event.preventDefault();
        await criaTelaInfoAdc(this.closest('tr').rowIndex - 1);
      });

      $('#tabelaItens tbody').on('click', 'td>div>div>div a.btnDesconto', function() {
        event.preventDefault();
        const id = this.closest('tr').rowIndex - 1;
        const arrDados = $("#tabelaItens").DataTable().row(id).data();
        if (arrDados[14] != '0') {
          msgAlerta('Não é possível fazer alteração de quantidade/preço em produto com uma venda vinculada.');
          return;
        }
        criaTelaDesconto(this.closest('tr').rowIndex - 1);
      });

      $('#btnConfirmarItemPreco').on('click', async function() {
        try {
          $.LoadingOverlay('show');
          const id = $('#txtIdLinhaItemPreco').val();
          const itemTabela = $('#tabelaItens').DataTable().row(id).data();
          const precoOld = itemTabela[3];
          const precoNovo = (+quantidadeCasasDecimaisCampo > 2) ? moeda2float(float2moeda($('#txtItemPrecoNovo').val(), quantidadeCasasDecimaisCampo)) : await TruncaDecimais(2, $('#txtItemPrecoNovo').val());

          if (parseFloat(precoNovo) <= 0) {
            msgAlerta('Informe um preço válido para continuar.');
            return;
          }

          // const rotina = async () => {
          await rotinaGeraLog('TVENDALOJA', numero_venda, `Preço Alterado de ${precoOld} para ${precoNovo} no item ${itemTabela[1]}`, 'Inclusão');
          itemTabela[3] = precoNovo; // preço orig
          itemTabela[4] = precoNovo; // novo preço
          itemTabela[5] = 0;
          itemTabela[6] = 0;
          itemTabela[7] = parseFloat(parseFloat(itemTabela[4] * itemTabela[2]).toFixed(2)); // novo total
          $('#tabelaItens').DataTable().row(id).data(itemTabela).draw(false);

          venda = await montaJsonVenda(venda, numero_venda, 'P', false);
          salvaDadosDigitados(venda);
          atualizaSaldoAPagar();
          atualizaTotaisPagto();
          atualizaTotalVenda();
          $('#modalItemPreco').modal('hide');
          // } 
          // await senhaSupervisor(`Preço Alterado de ${precoOld} para ${await TruncaDecimais(2, $('#txtItemPrecoNovo').val())} no item ${itemTabela[1]}`, rotina);  
        } finally {
          $.LoadingOverlay('hide');
        }
      });

      $('#tabelaCondicoesDePagamento tbody').on('click', 'td>div>div>div a.btnExcluir', function() {
        event.preventDefault();
        var ordem = tabelaCondicoes.row($(this).parents('tr')).data()[0];
        tabelaCondicoes.row($(this).parents('tr'))
          .remove()
          .draw(false);
        tabelaParcelasGeradas
          .rows(function(idx, data, node) {
            return data[0] === ordem;
          })
          .remove()
          .draw(false);
        atualizaSaldoAPagar();
        atualizaTotaisPagto();
      });

      $('#tabelaCondicoesDePagamento tbody').on('click', 'td>div>div>div a.btn-alterar-parcelas', function() {
        event.preventDefault();
        //tabelaCondicoes.$('tr.selected').removeClass('selected');
        $(this).closest('tr').addClass('selected');
        const recNo = this.closest('tr').rowIndex - 1;
        const nr_parcelas = $('#tabelaCondicoesDePagamento').DataTable().row(recNo).data()[7];
        const valor_pago = $('#tabelaCondicoesDePagamento').DataTable().row(recNo).data()[3];
        const codcondpagto = $('#tabelaCondicoesDePagamento').DataTable().row(recNo).data()[6];
        if ($('#tabelaCondicoesDePagamento').DataTable().row(recNo).data()[6] == 1) {
          sTipo = 'cheque';
        } else {
          sTipo = 'crediario';
        }
        const ordem = $('#tabelaCondicoesDePagamento').DataTable().row(recNo).data()[0];
        const sCNPJ = pegaChave('#txtCNPJ');
        const sNome = pegaDescricao('#txtCliente');
        MontaTabelaParcelas(sTipo, sNome, sCNPJ, nr_parcelas, valor_pago, codcondpagto, 'alteracao', true, ordem);
      });

      // Pesquisas
      var sSeparador = "' - '";
      let Emp_ID = getCookie('emp_id');
      $('#btn-limpa-cliente').on('click', function() {
        $('#txtCliente').val('');
        $('#txtCNPJ').val('');
      });
      $('#btn-limpa-produto-dinamico').on('click', function() {
        $('#txtProdutoDinamico').empty().trigger('change');
      });
      $('#btn-limpa-Material-dinamico').on('click', function() {
        $('#txtMaterialDinamico').val('');
      });
      $('#btn-limpa-cliente-dinamico').on('click', function() {
        $('#txtClienteDinamico').val('');
      });
      $('#btn-limpa-deposito').on('click', function() {
        $('#txtDeposito').val('');
      });
      $('#btn-limpa-tabela').on('click', function() {
        $('#txtTabela').val('');
      });
      $('#btn-limpa-vendedor').on('click', function() {
        $('#txtVendedor').val('');
      });
      $('#btn-limpa-guia').on('click', function() {
        $('#txtGuia').val('');
      });

      $('#btnLimpaVendaModal').on('click', function() {
        $('#txtVendaModal').empty().trigger('change');
      });

      $("#btnLimpaCorModal").on("click", function() {
        $("#txtCorModal").val("");
      })

      $('#btn-limpa-ClienteNFE').on('click', function() {
        $('#txtClienteNFE').val('');
      });

      $('#btn-limpa-NaturezaNFE').on('click', function() {
        $('#txtNaturezaNFE').val('');
      });

      $("#btnAOperacaoNota").on("click", function() {
        $("#txtOperacaoNota").val("");
      });

      $('#btn-limpa-venda').on('click', function() {
        $('#txtVenda').val('');
        $('#txtVenda').trigger('blur');
      });

      $('#btnLimpaVendedorItemDevolucao').on('click', function() {
        $('#txtVendedorItemDevolucao').val('');
      });

      $('#modalProduto').on('shown.bs.modal', function() {
        $('#txtProdutoCodigo').focus();
      });

      $('#txtProdutoDescricao').on('focusout', function() {
        $('#btnConsultarProduto').focus();
      });

      $('#btnConsultarProduto').on('keypress', function() {
        $('#btnConsultarProduto').trigger('click');
      });

      $('#modal-dinamico').on('shown.bs.modal', async function() {
        const paramPrioridadeProdutoMaterial = parametrosVenda[17];
        if (paramPrioridadeProdutoMaterial == '0') {
          $('#pesquisaProduto').removeClass('d-none');
          $('#pesquisaMaterial').addClass('d-none');
          $('#radioProduto').prop('checked', true);
          $('#radioMaterial').prop('checked', false);
          $('#pesquisaTam').removeClass('d-none');
        } else {
          $('#pesquisaProduto').addClass('d-none');
          $('#pesquisaMaterial').removeClass('d-none');
          $('#radioMaterial').prop('checked', true);
          $('#radioProduto').prop('checked', false);
          $('#pesquisaTam').addClass('d-none');
        }
        $('#txtBarraDinamica').focus();
      });

      $('#radioProduto, #radioMaterial').on('change', async function() {
        if ($('#radioMaterial').is(':checked')) {
          $('#pesquisaProduto').addClass('d-none');
          $('#pesquisaMaterial').removeClass('d-none');
          $('#pesquisaTam').addClass('d-none');
        } else {
          $('#pesquisaProduto').removeClass('d-none');
          $('#pesquisaMaterial').addClass('d-none');
          $('#pesquisaTam').removeClass('d-none');
        }
      });

      $('#btnConsultarProduto').on('click', async function() {
        const paramsPrioridadeProdutoMaterial = parametrosVenda[17];

        let sDeposito = pegaChave('#txtDeposito');
        let sCodigo = $('#txtProdutoCodigo').val();
        let sDescricao = $('#txtProdutoDescricao').val().toUpperCase();
        let _urlProduto = `/sisplan/estoque/v1/pesquisaProduto?`;
        let dataSet = [];
        let dataSetCols = [];
        try {
          try {
            $.LoadingOverlay("show");
            const response = await requisicao('GET', _urlProduto, `deposito=${sDeposito}&codigo=${sCodigo}&descricao=${sDescricao}`, null, 20000);

            if (!response) {
              return;
            }

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

            if (!$.isEmptyObject(jsonStr.RESULT[0][0])) {
              dataSet = jsonStr;
              var keys = Object.keys(dataSet[0]);
              for (var k in keys) {
                dataSetCols.push({
                  'title': keys[k],
                  'data': keys[k]
                });
              }
              tabelaProdutoMaterial = $('#tabelaProdutoMaterial').dataTable({
                paging: true,
                filter: false,
                info: true,
                order: false,
                autoWidth: true,
                destroy: true,
                // "scrollY": "200px",
                "columns": dataSetCols,
                "data": dataSet
              });

              let keytable2 = new $.fn.dataTable.KeyTable(tabelaProdutoMaterial);
              // se precionar enter executa duplo click
              keytable2.event.action(null, null, function(node) {
                $(node).click();
              });
            }
          } catch (error) {
            console.error(error);
            msgErro('Não foi possível buscar os dados do produto.');
          }
        } finally {
          $.LoadingOverlay("hide");
        }

        $('#tabelaProdutoMaterial tbody').on('click', 'tr', function() {
          $('#tabelaProdutoMaterial').DataTable().$('tr.selected').removeClass('selected');
          $(this).addClass('selected');
        });

        // duplo click faz escolher o registro e fechar a pesquisa
        $('#tabelaProdutoMaterial tbody').on('dblclick', 'tr', function() {
          event.preventDefault();
          document.firstElementChild.style.zoom = "reset";
          $('#tabelaProdutoMaterial').DataTable().$('tr.selected').removeClass('selected');
          $(this).addClass('selected');
          $("#btn_confirmar_produto").click();
        });
      });

      // botão selecionar
      $("#btn_confirmar_produto").click(async function() {
        async function buscaQualidade(codigo) {
          try {
            const json = await retornaJsonPesquisaPadrao(`{"tabela":"TABQUL", "camposSelect":[ "CODIGO", "DESCRICAO" ], "where": ["CODIGO = '${codigo}'"] }`);
            if (json) {
              return json;
            }
          } catch (error) {
            console.error(error);
          }
        }
        const parametro = parametrosVenda[17];
        var data = $('#tabelaProdutoMaterial').DataTable().row('.selected').data();
        const qualidade = await buscaQualidade(data.QUALIDADE);
        insereValor('#txtQualidade', qualidade[0].CODIGO, qualidade[0].DESCRICAO);
        parametro == '0' ? $('#txtCodigo').val($('#txtCodigo').val() + data.BARRA) : $('#txtCodigo').val($('#txtCodigo').val() + data.LOTE);
        $("#modalProduto").modal("hide");
      });
      const emp_id = getCookie('emp_id');
      let sWhere = '';
      const parametroVenda65 = await CopiaParametro('VENDA', 65) == '2';
      if (parametroVenda65) {
        sWhere = `ENTIDADE.TIPO_ENTIDADE LIKE '[PERCENTUAL]C[PERCENTUAL]'`;
      }
      const selectTxtCliente = {
        tabela: "ENTIDADE",
        camposSelect: ["CODCLI CHAVE", "NOME ||' - '|| CNPJ DESCRICAO", "CNPJ"],
        where: parametrosVenda[65] == '1' ? [`ENTIDADE.TIPO = '1' AND ENTIDADE.CONS_FINAL = 'Sim'`] : [sWhere]
      }

      const selectBtnCliente = {
        tabela: "ENTIDADE",
        camposSelect: ["CODCLI", "NOME", "FANTASIA", "CNPJ"],
        where: parametrosVenda[65] == '1' ? [`ENTIDADE.TIPO = '1' AND ENTIDADE.CONS_FINAL = 'Sim'`] : [sWhere]
      }

      // tratativa...
      if (selectTxtCliente.where.toString() == '') {
        selectTxtCliente.where = [];
      }

      if (selectBtnCliente.where.toString() == '') {
        selectBtnCliente.where = [];
      }


      if (['1', '2'].includes(parametrosVenda[51])) {
        selectTxtCliente.innerJoin = [{
          tabela: 'EMP_VALOR',
          condicao: `EMP_VALOR.TABELA = 'ENTIDADE' AND EMP_VALOR.VALOR = ENTIDADE.CODCLI AND EMP_VALOR.EMP_ID = ${emp_id}`
        }];

        selectBtnCliente.innerJoin = [{
          tabela: 'EMP_VALOR',
          condicao: `EMP_VALOR.TABELA = 'ENTIDADE' AND EMP_VALOR.VALOR = ENTIDADE.CODCLI AND EMP_VALOR.EMP_ID = ${emp_id}`
        }];
      }

      // AUTOCOMPLETA MODAL CLIENTE => FOI ADICIONADO NESSA PAGE DEVIDO AO IMPORT DA LIB SELECT2 NÃO FUNCIONAR NO MODAL
      $('#txtMoedaModal').pesquisa_variosServerside(1, '{ "tabela":"MOEDA", "camposSelect":[ "CODMOE", "DESCRICAO" ], "where": null}', 'CODMOE', 'DESCRICAO');

      $('#txtTabela').autocompleta(1, `JSON={ "tabela":"regiao", "camposSelect":[ "regiao chave", "descricao"], "where": null}`);
      $('#txtDeposito').autocompleta(1, `JSON={ "tabela":"DEPOSITO", "camposSelect":[ "CODIGO chave", "descricao"], "where": null}`);
      $('#txtVenda').autocompleta(1, 'JSON={ "tabela":"VENDA", "camposSelect":[ "venda.codven chave", "(venda.codcli || ' + sSeparador + ' ||entidade.nome) descricao" ], "leftjoin":[{"tabela" : "entidade", "condicao" : "entidade.codcli = venda.codcli"}], "where": ["VENDA.CANCELADA = 0 AND VENDA.FECHADA = 1 AND VENDA.DEVOLUCAO = 0"]}');

      $('#txtVendaModal').pesquisa_variosServerside(3, '{ "tabela":"VENDA", "camposSelect":[ "CODVEN", "ENTIDADE.NOME"], "leftjoin":[{"tabela" : "entidade", "condicao" : "entidade.codcli = venda.codcli"}], "where": ["VENDA.CANCELADA = 0 AND VENDA.FECHADA = 1 AND VENDA.DEVOLUCAO = 0"]}', 'CODVEN', 'NOME');
      //$('#txtVendaModal').autocompleta(1, 'JSON={ "tabela":"VENDA", "camposSelect":[ "venda.codven chave", "(venda.codcli || ' + sSeparador + ' ||entidade.nome) descricao" ], , }');
      $('#txtCliente').autocompleta(3, `JSON=${JSON.stringify(selectTxtCliente)}`, ['#txtCNPJ'], ['CNPJ'], ['CNPJ']);
      $('#txtClienteDinamico').autocompleta(3, `JSON=${JSON.stringify(selectTxtCliente)}`, [], [], []);
      // $('#txtProdutoDinamico').autocompleta(3, `JSON={ "tabela":"produto", "camposSelect":[ "codigo chave", "descricao"], "where": null}`);
      $('#txtProdutoDinamico').pesquisa_variosServerside(2, '{ "tabela":"PRODUTO", "camposSelect":[ "CODIGO", "DESCRICAO" ], "where": null, "orderBy": ["CODIGO"]}', 'CODIGO', 'DESCRICAO');
      $('#txtMaterialDinamico').autocompleta(1, `JSON={ "tabela":"MATERIAL", "camposSelect":[ "MATERIAL.CODIGO CHAVE", "MATERIAL.DESCRICAO"], "leftjoin":[{"tabela" : "GRUPO_MA", "condicao" : "GRUPO_MA.CODIGO = MATERIAL.GRUPO"}], "where": ["GRUPO_MA.PERMITEVENDA = 'S'"]}`);
      $('#txtQualidade').autocompleta(1, `JSON={ "tabela":"TABQUL", "camposSelect":["CODIGO CHAVE, DESCRICAO"], "where": [] }`, [], [], []);
      $('#txtClienteNFE').autocompleta(3, `JSON={ "tabela":"entidade", "camposSelect":["CODCLI CHAVE, NOME DESCRICAO"], "where": [] }`);
      $('#txtNaturezaNFE').autocompleta(1, `JSON={ "tabela":"natureza", "camposSelect":["NATUREZA CHAVE, DESCRICAO DESCRICAO"], "where": ["ATIVO = 'S' and TP_BASE = '2'"] }`);
      const sWhereOperFiscal = await retornaWhereOperFiscalUsuario(getCookie('cod_usuario'));
      $("#txtOperacaoNota").autocompleta(1, `JSON={ "tabela":"oper_fiscal", "camposSelect":["CODIGO CHAVE, DESCRICAO DESCRICAO"], "where": ${sWhereOperFiscal} }`);
      $('#txtVendedorItemDevolucao').autocompleta(1, `JSON={ "tabela":"REPRESEN", "camposSelect":["CODREP CHAVE, NOME DESCRICAO"], "where": ["ATIVO = 'S'"] }`);
      $('#txtGuia').autocompleta(1, `JSON={ "tabela":"represen", "camposSelect":["CODREP CHAVE, NOME DESCRICAO"], "where": ["ativo = 'S'", "grupo_rep = 'U'"]}`);
      $('#txtCorModal').autocompleta(1, `JSON={ "tabela":"CADCOR", "camposSelect":["COR CHAVE", "DESCRICAO DESCRICAO"], "where": null}`);
      $('#txtTamModal').autocompleta(1, `JSON={ "tabela":"TABTAM", "camposSelect":["TAM CHAVE", "FAIXA DESCRICAO"], "where": null}`);
      $("#txtMotivoModal").autocompleta(1, `JSON={ "tabela":"MENSAGEM", "camposSelect":[ "CODMEN CHAVE", "DESCRICAO DESCRICAO"], "where": ["TIPO = 14"]}`);

      $('#btn-NaturezaNFE').pesquisa('#txtNaturezaNFE', 'NATUREZA', 'DESCRICAO', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"natureza", "camposSelect":[ "natureza", "descricao" ], "where": ["ATIVO = 'S' and TP_BASE = '2'"]}`, 'Pesquisa Natureza', 'natureza');
      $('#btn-ClienteNFE').pesquisa('#txtClienteNFE', 'CODCLI', 'NOME', `/sisplan/funcoes/v1/pesquisa?JSON=${JSON.stringify(selectTxtCliente)}`, 'Pesquisa Cliente', 'entidade');
      $('#btn-Material-dinamico').pesquisa_serverside(['#txtMaterialDinamico'], ['MATERIAL.CODIGO', 'MATERIAL.DESCRICAO'], ['MATERIAL.DESCRICAO', 'MATERIAL.CODIGO'], `{"tabela":"MATERIAL", "camposSelect":[ "MATERIAL.CODIGO", "MATERIAL.DESCRICAO" ], "leftjoin":[{"tabela" : "GRUPO_MA", "condicao" : "GRUPO_MA.CODIGO = MATERIAL.GRUPO"}],  "where": ["GRUPO_MA.PERMITEVENDA = 'S'"]}`, 'Pesquisa de Material');
      $('#btn-produto-dinamico').pesquisa_serversideSel('#txtProdutoDinamico', `{ "tabela":"PRODUTO", "camposSelect":[ "CODIGO", "DESCRICAO"], "where": null, "orderBy": ["CODIGO"]}`, 'Pesquisa de Produto');
      // $('#btn-produto-dinamico').pesquisa_serverside(['#txtProdutoDinamico'], ['CODIGO', 'DESCRICAO'], ['DESCRICAO', 'CODIGO'], '{"tabela":"produto", "camposSelect":[ "CODIGO", "DESCRICAO" ], "where": null}', 'Pesquisa de Produto');
      $('#btn-cliente').pesquisa_serverside(['#txtCliente', '#txtCNPJ'], ['CODCLI', 'CNPJ'], ['NOME', 'CNPJ'], JSON.stringify(selectBtnCliente), 'Pesquisa Cliente', async () => await RotinaSaidaCliente());
      $('#btn-cliente-dinamico').pesquisa_serverside(['#txtClienteDinamico'], ['CODCLI', 'CNPJ'], ['NOME', 'CNPJ'], JSON.stringify(selectBtnCliente), 'Pesquisa Cliente');
      $('#btn-tabela').pesquisa('#txtTabela', 'REGIAO', 'DESCRICAO', '/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"regiao", "camposSelect":[ "regiao", "descricao"], "where": null}', 'Pesquisa Tabela', 'regiao');
      $('#btn-deposito').pesquisa('#txtDeposito', 'CODIGO', 'DESCRICAO', '/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"deposito", "camposSelect":[ "codigo", "descricao"], "where": null}', 'Pesquisa Depósito', 'deposito');
      $("#btnMotivoModal").pesquisa('#txtMotivoModal', 'CODMEN', 'DESCRICAO', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"MENSAGEM", "camposSelect":[ "CODMEN", "DESCRICAO" ], "where": ["TIPO = 14"]}`, 'Pesquisa Motivo', 'MOTIVO');

      const setores = await verificaSetoresUsuarioLogado(getCookie('cod_usuario'));

      async function verificaPermissoesDev(sTela) {
        const sUsuario = getCookie("cod_usuario");
        const sEmp_id = getCookie("emp_id");
        try {
          let response = await requisicao(
            "GET",
            "/Sisplan/Funcoes/v1/pesquisa?",
            `JSON={ "tabela":"PERMISSOES_TELA",
            "camposSelect":["TELA", "ACAO", "PERMISSAO"],
            "where": ["USUARIO = '${sUsuario}' AND EMP_ID = ${sEmp_id} AND TELA = 'DEVOLUCAO' AND ACAO='DESABILITA_SOMENTE_NAO_DEV'"]}`,
            null
          );
          if (!response || response.status != 200) {
            return;
          }
          const jsonStr = await response.json();
          if ((jsonStr.RESULT[0].length >0) && (jsonStr.RESULT[0][0].PERMISSAO == "S")) {
              $('#cbSomenteItensNaoDevolvidos').prop('disabled', true);
          }
        } catch (error) {
          console.error(error);
        }
      }
      verificaPermissoesDev();

      if (setores != '') {
        $('#txtVendedor').autocompleta(1, `JSON={ "tabela":"REPRESEN", "camposSelect":["REPRESEN.CODREP CHAVE, REPRESEN.NOME DESCRICAO"], "leftjoin": [{"tabela": "REPSETORES","condicao": "REPRESEN.CODREP = REPSETORES.CODREP"}], "groupBy": ["REPRESEN.CODREP, REPRESEN.NOME"], "where": ["REPRESEN.ATIVO = 'S'", "REPRESEN.GRUPO_REP != 'U'", "REPSETORES.SETOR IN (${setores})"] }`);
        $('#btn-vendedor').pesquisa('#txtVendedor', 'CODREP', 'NOME', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela": "REPRESEN","camposSelect": ["REPRESEN.CODREP", "REPRESEN.NOME"], "leftjoin": [{"tabela": "REPSETORES","condicao": "REPRESEN.CODREP = REPSETORES.CODREP"}], "groupBy": ["REPRESEN.CODREP, REPRESEN.NOME"], "where": ["REPRESEN.ATIVO = 'S'", "REPRESEN.GRUPO_REP != 'U'", "REPSETORES.SETOR IN (${setores})"]}`, 'Pesquisa Representante', 'REPRESEN');
      } else {
        $('#txtVendedor').autocompleta(1, `JSON={ "tabela":"REPRESEN", "camposSelect":["CODREP CHAVE, NOME DESCRICAO"], "where": ["ATIVO = 'S'", "GRUPO_REP != 'U'"] }`);
        $('#btn-vendedor').pesquisa('#txtVendedor', 'CODREP', 'NOME', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela": "REPRESEN","camposSelect": ["CODREP", "NOME"],"where": ["ATIVO = 'S'", "GRUPO_REP != 'U'"]}`, 'Pesquisa Representante', 'REPRESEN');
      }
      $('#btn-venda').pesquisa('#txtVenda', 'CODVEN', 'CLIENTE', '/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"VENDA", "camposSelect":[ "venda.codven", "(venda.codcli || ' + sSeparador + ' ||entidade.nome) CLIENTE"], "leftjoin":[{"tabela" : "entidade", "condicao" : "entidade.codcli = venda.codcli"}], "where":  ["VENDA.CANCELADA = 0 AND VENDA.FECHADA = 1 AND VENDA.DEVOLUCAO = 0 AND VENDA.EMP_ID =  ' + Emp_ID + '"], "orderby": ["venda.codven desc"]}', 'Pesquisa Venda', 'venda');
      if (parametrosVenda[8] == '1') {
        $('#btnVendaModal').pesquisa_serverside(['#txtVendaModal'], ['VENDA.CODVEN', 'VENDA.CODCLI', 'VENDA.NRCUPOM'], ['VENDA.NRCUPOM', 'VENDA.CODCLI', 'VENDA.CODVEN'], `{"tabela":"VENDA", "camposSelect":[ "VENDA.CODVEN", "VENDA.CODCLI", "VENDA.NRCUPOM"], "leftjoin": [ {"tabela": "ENTIDADE", "condicao": "ENTIDADE.CODCLI = VENDA.CODCLI"}],"where":  ["VENDA.CANCELADA = 0 AND VENDA.FECHADA = 1 AND VENDA.DEVOLUCAO = 0 AND VENDA.EMP_ID = ${Emp_ID} "]}`, 'Pesquisa Venda', );
      } else {
        $('#btnVendaModal').pesquisa_serversideSel('#txtVendaModal', `{ "tabela":"VENDA", "camposSelect":[ "VENDA.CODVEN", "ENTIDADE.NOME"], "leftjoin": [ {"tabela": "ENTIDADE", "condicao": "ENTIDADE.CODCLI = VENDA.CODCLI"}],"where":  ["VENDA.CANCELADA = 0 AND VENDA.FECHADA = 1 AND VENDA.DEVOLUCAO = 0 AND VENDA.EMP_ID = ${Emp_ID} "], "orderby": ["venda.codven desc"]}`, 'Pesquisa de Vendas');
        // $('#btnVendaModal').pesquisa('#txtVendaModal', 'CODVEN', 'CLIENTE', '/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"VENDA", "camposSelect":[ "venda.codven", "(venda.codcli || ' + sSeparador + ' ||entidade.nome) CLIENTE" ], "leftjoin":[{"tabela" : "entidade", "condicao" : "entidade.codcli = venda.codcli"}], "where":  ["VENDA.CANCELADA = 0 AND VENDA.FECHADA = 1 AND VENDA.DEVOLUCAO = 0 AND VENDA.EMP_ID =  ' + Emp_ID + '"], "orderby": ["venda.codven desc"]}', 'Pesquisa Venda', 'venda');
      }
      $('#btnQualidade').pesquisa_array(['#txtQualidade'], ['CODIGO'], ['DESCRICAO'], '/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"TABQUL", "camposSelect":[ "CODIGO", "DESCRICAO" ], "where": null}', 'Pesquisa Qualidade', 'TABQUL');
      $("#btnOperacaoNota").pesquisa("#txtOperacaoNota", "CODIGO", "DESCRICAO", `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"oper_fiscal", "camposSelect":[ "codigo", "descricao" ], "where": ${sWhereOperFiscal}}`, "Pesquisa Operação", "oper_fiscal");
      $('#btnVendedorItemDevolucao').pesquisa('#txtVendedorItemDevolucao', 'CODREP', 'NOME', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela": "REPRESEN","camposSelect": ["CODREP", "NOME"],"where": ["ATIVO = 'S'"]}`, 'Pesquisa Representante', 'REPRESEN');
      $('#btn-guia').pesquisa('#txtGuia', 'CODREP', 'NOME', `/sisplan/funcoes/v1/pesquisa?JSON={"tabela": "represen","camposSelect": ["codrep", "nome"],"where": ["ativo = 'S'", "grupo_rep = 'U'"] }`, 'Pesquisa Representante', 'represen');
      $('#btnCorModal').pesquisa('#txtCorModal', 'COR', 'DESCRICAO', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"CADCOR", "camposSelect":["COR", "DESCRICAO"]}`, 'Consulta Cor', 'CADCOR');
      $('#btnTamModal').pesquisa('#txtTamModal', 'TAM', 'FAIXA', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"TABTAM", "camposSelect":["TAM", "FAIXA"]}`, 'Consulta Tamanho', 'TABTAM');

      $("#btnLimpaTamModal").on("click", function() {
        $("#txtTamModal").val("");
      })

      $("#btnLimpaMotivoModal").on("click", function() {
        $("#txtMotivoModal").val("");
      })

      $('#txtVenda').on('focusout', function() {
        if ($('#txtVenda').val() == '') {
          $('#txtVendedorItemDevolucao').prop('disabled', false);
          $('#btnVendedorItemDevolucao').prop('disabled', false);
          $('#btnLimpaVendedorItemDevolucao').prop('disabeld', false);
        } else {
          $('#txtVendedorItemDevolucao').attr('disabled', true);
          $('#btnVendedorItemDevolucao').prop('disabled', true);
          $('#btnLimpaVendedorItemDevolucao').prop('disabeld', true);
          $('#txtVendedorItemDevolucao').val('');
        }
      });

      $('#cbSomenteItensNaoDevolvidosPesquisaProduto').on('click', function() {
        $('#txtVenda').trigger('blur');
        $('#btn-codigo').trigger('click');
      });

      $('#txtVenda').on('blur', async function() {
        var sDeposito = pegaChave('#txtDeposito', sDeposito);
        var codven = pegaChave('#txtVenda', codven);
        const dataVenda = codven != '' ? (await buscaValorPorNumero('VENDA', 'DATA', 'CODVEN', codven)).DATA : ''
        if (codven != '' && !await solicitaSenhaDiasVenda([codven], false, dataVenda)) {
          $('#txtVenda').val('')
          return
        }

        const consideraDescontoPagamentoNoPrecoDaVendaDevolucao = parametrosVenda[63] == '1';
        const precoVendaRef = consideraDescontoPagamentoNoPrecoDaVendaDevolucao ? 'CASE WHEN ITVENDA.VALOR_DESC > 0 THEN (ITVENDA.TOTAL_LIQ/ITVENDA.QUANTIDADE) ELSE ITVENDA.PRECO_LIQ END PRECO' :
          'ITVENDA.PRECO_LIQ PRECO';
        var sCondicao = $('#txtVenda').val() != '' ? 'itvenda.codven = ' + codven + ' and' : '';
        const colunaQtde = $('#cbSomenteItensNaoDevolvidosPesquisaProduto').prop('checked') ? `ITVENDA.QUANTIDADE - COALESCE((SELECT SUM(QUANTIDADE) FROM [ITVENDA] ITVENDA_DEV WHERE ITVENDA_DEV.CODVENORIG = ITVENDA.CODVEN ` +
          `AND ITVENDA_DEV.CODIGO = ITVENDA.CODIGO ` +
          `AND ITVENDA_DEV.COR = ITVENDA.COR ` +
          `AND ITVENDA_DEV.TAM = ITVENDA.TAM), 0) QUANTIDADE ` :
          'ITVENDA.QUANTIDADE';
        const colunaQtdeWhere = $('#cbSomenteItensNaoDevolvidosPesquisaProduto').prop('checked') ? ` AND ITVENDA.QUANTIDADE - COALESCE((SELECT SUM(QUANTIDADE) FROM [ITVENDA] ITVENDA_DEV WHERE ITVENDA_DEV.CODVENORIG = ITVENDA.CODVEN ` +
          `AND ITVENDA_DEV.CODIGO = ITVENDA.CODIGO ` +
          `AND ITVENDA_DEV.COR = ITVENDA.COR ` +
          `AND ITVENDA_DEV.TAM = ITVENDA.TAM), 0) > 0 ` :
          '';
        const jsonPesquisa = {
          tabela: "itvenda",
          camposSelect: ["itvenda.codigo", "CASE WHEN ITVENDA.TIPO = 'M' THEN MATERIAL.DESCRICAO ELSE PRODUTO.DESCRICAO END DESCRICAO",
            "itvenda.cor", "cadcor.descricao desc_cor", "itvenda.tam", "itvenda.qualidade", "tabqul.descricao desc_qualidade",
            `${colunaQtde}`, "itvenda.barra", `${precoVendaRef}`, "itvenda.codven", "itvenda.id_estoque",
            "ITVENDA.CODREP", "REPRESEN.NOME REPRESENTANTE", "CASE WHEN ITVENDA.TIPO = 'M' THEN MATERIAL.UNIDADE ELSE PRODUTO.UNI_VENDA END UNIDADE"
          ],
          leftjoin: [{
              "tabela": "produto",
              "condicao": "produto.codigo = itvenda.codigo and itvenda.tipo = 'P'"
            },
            {
              "tabela": "material",
              "condicao": "material.codigo = itvenda.codigo and itvenda.tipo = 'M'"
            },
            {
              "tabela": "cadcor",
              "condicao": "cadcor.cor = itvenda.cor"
            },
            {
              "tabela": "tabqul",
              "condicao": "itvenda.qualidade = tabqul.codigo"
            },
            {
              "tabela": "REPRESEN",
              "condicao": "ITVENDA.CODREP = REPRESEN.CODREP"
            },
            {
              "tabela": "TABTAM",
              "condicao": "TABTAM.TAM = ITVENDA.TAM"
            }
          ],
          where: [`${sCondicao} itvenda.deposito = '${sDeposito}' ${colunaQtdeWhere}`],
          groupBy: ["itvenda.codigo", "material.descricao", "produto.descricao", "itvenda.tipo", "itvenda.cor", "cadcor.descricao", "itvenda.tam",
            "itvenda.barra", "itvenda.id_estoque", "itvenda.codven", "ITVENDA.PRECO_LIQ", "ITVENDA.total_liq", "ITVENDA.VALOR_DESC", "ITVENDA.QUALIDADE",
            "TABQUL.DESCRICAO", "ITVENDA.QUANTIDADE", "ITVENDA.CODREP", "REPRESEN.NOME", "MATERIAL.UNIDADE", "PRODUTO.UNI_VENDA"
          ]
        }
        var _urlProduto = `/sisplan/funcoes/v1/pesquisa?JSON=${JSON.stringify(jsonPesquisa)}`;
        $('#btn-codigo').off();
        $('#btn-codigo').unbind('pesquisa');
        $('#btn-codigo').unbind('click');
        if (codven != '') {
          function saidaCampo() {
            $('#txtCodigo').val('0')
            $('#txtCodigo').trigger('blur');
            // levar inserevalor qualidade ...
          }
          //$('#btn-codigo').pesquisa_array(['#txtIdItem', '#txtQualidade', '#txtVendedorItemDevolucao'], ['ID_ESTOQUE', 'QUALIDADE', 'CODREP'], ['ID_ESTOQUE', 'DESC_QUALIDADE', 'REPRESENTANTE'], _urlProduto, 'Pesquisa Produto', 'pa_iten', saidaCampo, 'simples');

          $('#btn-codigo').on('click', async function() {
            $('#modalPesquisaItens').modal('show');
            await montaModalItens(jsonPesquisa);
          });

          // $('#txtCodigo').val('0')
        } else {
          $('#btn-codigo').on('click', function() {
            // $('#modalProduto').modal("show");
            $('#modal-dinamico').modal('show');
            $('#txtProdutoCodigo').val('');
            $('#txtProdutoDescricao').val('');
          });
        }
      });
      $('#txtVenda').trigger('blur');

      $('#tabelaItens').DataTable().columns.adjust().draw(false);

      async function preencheVendaBarraLog(barra) {
        const separador = `' - '`;
        const pesquisa = {
          camposSelect: ["VENDA.CODVEN", `VENDA.CODCLI || ${separador} || ENTIDADE.NOME CLIENTE`, 'VENDA.CANCELADA', 'VENDA.FECHADA', 'VENDA.TROCA', 'VENDA.DEVOLUCAO', 'VENDA.ORCAMENTO'],
          tabela: 'ITVENDA_BARRA',
          leftJoin: [{
              tabela: "VENDA",
              condicao: "VENDA.CODVEN = ITVENDA_BARRA.CODVEN"
            },
            {
              tabela: "ENTIDADE",
              condicao: "ENTIDADE.CODCLI = VENDA.CODCLI"
            }
          ],
          where: [`BARRA_LOG = '${barra}'`],
          groupBy: ['VENDA.CODVEN', 'VENDA.CODCLI', 'ENTIDADE.NOME', 'VENDA.CANCELADA', 'VENDA.FECHADA', 'VENDA.TROCA', 'VENDA.DEVOLUCAO', 'VENDA.ORCAMENTO'],
          orderBy: ['VENDA.CODVEN DESC']
        }
        const jsonStr = await retornaJsonPesquisaPadrao(encodeURIComponent(JSON.stringify(pesquisa)));
        if (jsonStr && jsonStr.length > 0) {
          const bPendente = jsonStr[0].CANCELADA == 0 && jsonStr[0].FECHADA == 0 && jsonStr[0].TROCA == 0 && jsonStr[0].DEVOLUCAO == 0 && jsonStr[0].ORCAMENTO == 0;

          if (bPendente) {
            throw await aguardaMsgAlerta(
              `A barra bipada pertence à venda ${jsonStr[0].CODVEN}, que está com status pendente. Impossível realizar a devolução de uma venda pendente.`,
              () => {
                $('#txtCodigo').val('');
                $('#txtCodigo').focus();
              }
            );
          }

          insereValor('#txtVenda', jsonStr[0].CODVEN, jsonStr[0].CLIENTE);
        }
      }

      async function retornaDadosBarra(codigo, idItem, bEstorno = false) {
        try {
          $.LoadingOverlay("show");
          try {
            let iCodVen = pegaChave('#txtVenda');
            if (iCodVen == '') {
              iCodVen = 0;
            };
            const sTabela = pegaChave("#txtTabela");
            const sDeposito = pegaChave("#txtDeposito");
            const sQualidade = pegaChave("#txtQualidade");
            const estorno = bEstorno ? 'S' : 'N';
            const url = `/Sisplan/Estoque/v1/barra?`;
            let tipoItem = '';

            if ($('#radioMaterial').is(':checked')) {
              tipoItem = 'M'
            } else {
              tipoItem = 'P';
            }

            const params = `barra=${encodeURIComponent(codigo)}&tabpreco=${sTabela}&iditem=${idItem}&qualidade=${sQualidade}&tipo=${tipoItem}&deposito=${sDeposito}&CODVENDA=${iCodVen}&DEVOLUCAO=S&ESTORNO=${estorno}`;

            const response = await requisicao('GET', url, params, null);

            if (!response) {
              SomAlerta('<?php echo BASE_URI; ?>', true);
              return;
            }

            const jsonStr = await response.json();

            if (tipoItem == 'M') {
              if (!await permiteVenda(jsonStr[0].GRUPO)) {
                msgAlerta(`O grupo cadastrado no material ${jsonStr[0].CODIGO} - ${jsonStr[0].DESCRICAO} não permite venda, verifique!`);
                $('#txtCodigo').val('');
                return;
              }
            }

            if (response.status != 200) {
              SomAlerta('<?php echo BASE_URI; ?>', true);
              msgErro(jsonStr.mensagem);
              return;
            }

            return jsonStr;
          } catch (error) {
            SomAlerta('<?php echo BASE_URI; ?>', true);
            msgErro('Erro ao buscar dados da barra!');
            console.error(error);
          }
        } finally {
          $.LoadingOverlay("hide");
        }
      }

      $('#txtCodigo').blur(async function() {
        await saidaCodigo();
      });

      async function saidaCodigo(bAtualizaTotal = true, indexItemSelecionado = -1, idTabelaItens = "") {
        if ($('#txtCodigo').val() == "") {
          return;
        }

        if ($('#txtCodigo').val().substr($('#txtCodigo').val().length - 1) == '*') {
          return;
        }

        const barraBipada = $('#txtCodigo').val()
        if (barraBipada.substr(0, 1) === '9') {
          const deposito = pegaChave('#txtDeposito')
          const venda = pegaChave('#txtVenda') || 0
          const itensKit = await buscarItensKit(barraBipada, deposito, venda)
          if (itensKit && itensKit.length > 0) {
            await biparBarrasKit(itensKit)
            return
          }
        }

        const bPesquisaProduto = $('#radioProduto').is(':checked');
        const bAgrupaItens = parametrosVenda[61] != 0;
        const bObrigaVenda = parametrosVenda[13];
        let sCodigoEPC = $('#txtCodigoEPC').val();
        const utilizaBarraLog = parametrosVenda[46] != '0';
        if ((bObrigaVenda == '1') && ($('#txtVenda').val() == '')) {
          SomAlerta('<?php echo BASE_URI; ?>', true);
          msgErro('Necessário referenciar o número da venda para efetuar a devolução do item.');
          return;
        }

        var codigoProduto = $('#txtCodigo').val();
        $('#txtCodigo').val();

        var bEstorno = false;
        var bJaEstornou = false;
        var emptyStr = "'";

        if (codigoProduto.substring(0, 1) == "-") {
          codigoProduto = codigoProduto.substring(1, codigoProduto.length);
          bEstorno = true;
          // $("#txtQuantid").val(1);
        }

        if ($('#btnMenosOuMais>i.fa-minus').length > 0) {
          bEstorno = true;
        }

        if (codigoProduto.indexOf("*") > 0) {
          $("#txtQuantid").val(codigoProduto.substring(0, codigoProduto.indexOf("*")));
          codigoProduto = codigoProduto.substring(codigoProduto.indexOf("*") + 1, codigoProduto.length);
        }

        if (codigoProduto.length > 50) {
          msgAlerta('Código de barras não pode ter mais de 50 digitos, verifique.');
          SomAlerta('<?php echo BASE_URI; ?>', true);
          return;
        }

        var sCodigo = emptyStr + codigoProduto + emptyStr;
        let sIdItem = $('#txtIdItem').val();
        var sTabela = pegaChave("#txtTabela", sTabela);
        var sDeposito = pegaChave("#txtDeposito", sDeposito);

        var vQtde = formataNumerico($('#txtQuantid').val());
        if (isNaN(vQtde)) {
          vQtde = 1;
        }

        if (vQtde < 0) {
          msgErro('Quantidade deve ser maior que zero');
          SomAlerta('<?php echo BASE_URI; ?>', true);
          return;
        }
        if (utilizaBarraLog) {
          await preencheVendaBarraLog(codigoProduto);
          iCodVen = pegaChave('#txtVenda');
          if (iCodVen == '') {
            iCodVen = 0;
          };
        }

        var jsonStr = await retornaDadosBarra(codigoProduto, sIdItem, bEstorno);

        if (jsonStr?.length > 1 && indexItemSelecionado >= 0 && idTabelaItens != "") {
          const registroSelecionado = $(`#${idTabelaItens}`).DataTable().row(indexItemSelecionado).data();
          jsonStr = bPesquisaProduto ? jsonStr.filter(item => item.CODIGO == registroSelecionado.CODIGO && item.COR == registroSelecionado.COR && item.TAM == registroSelecionado.TAM && item.PRECO == registroSelecionado.PRECO) :
            jsonStr.filter(item => item.CODIGO == registroSelecionado.CODIGO && item.COR == registroSelecionado.COR && item.PRECO == registroSelecionado.PRECO)
        }

        var sCodigoValidacao = jsonStr[0].TIPO != 'M' ? jsonStr[0].CODIGO + ' - ' + jsonStr[0].COR + ' - ' + jsonStr[0].TAM + ' - ' + jsonStr[0].QUALIDADE :
          jsonStr[0].CODIGO + ' - ' + jsonStr[0].COR + ' - ' + jsonStr[0].TAM + ' - ' + jsonStr[0].QUALIDADE + ' - ' + jsonStr[0].LOTE;
        var iCodVen = pegaChave('#txtVenda', iCodVen);
        if (iCodVen == '') {
          iCodVen = 0;
        };

        if (utilizaBarraLog) {
          vQtde = 1;

          if (bEstorno) {
            await estornaBarraBipada(codigoProduto, 'create');
          } else {
            if (await barraJaEstaBipada(codigoProduto)) {
              SomAlerta('<?php echo BASE_URI; ?>', true);
              return;
            } else {
              await adicionaBarraBipada(codigoProduto);
            }
          }
        }

        if (bUsaIntegraçãoITAG) {
          const item = {
            codigo: jsonStr[0].CODIGO,
            cor: jsonStr[0].COR,
            tam: jsonStr[0].TAM,
            barra: sCodigoEPC
          }
          if (bEstorno) {
            await estornaBarraBipadaEPC(sCodigoEPC);
          } else {
            if (await adicionaBarraBipadaEPC(sCodigoEPC)) {
              vQtde = 1;
            }
          }
        }

        try {
          if (!bEstorno) {
            if ((sCodigo != emptyStr + emptyStr) && (sTabela != emptyStr + emptyStr)) {
              try {
                var sProduto = '[' + jsonStr[0].CODIGO + '] - ' + jsonStr[0].DESCRICAO;
                var sCor = '[' + jsonStr[0].COR + '] - ' + jsonStr[0].DESC_COR;
                var sTam = '[' + jsonStr[0].TAM + '] - ' + jsonStr[0].TAM;
                var sPreco = jsonStr[0].PRECO;
                var sPrecoOrig = jsonStr[0].PRECO;
                let venda = {};
                let vendedorItem = '';
                $('#txtQuantid').val(vQtde);

                if (iCodVen != '') {
                  vendedorItem = $('#txtVendedorItemDevolucao').val();
                  if (vendedorItem == '') {
                    vendedorItem = jsonStr[0].CODREP;
                  }
                } else if ($('#txtVendedorItemDevolucao').val() != '' && iCodVen == '') {
                  vendedorItem = pegaChave('#txtVendedorItemDevolucao');
                }

                if (vendedorItem == '' || vendedorItem == undefined) {
                  vendedorItem = pegaChave('#txtVendedor');
                }

                const indexesItem = $('#tabelaItens').DataTable().column(16).data().toArray().map((validacao, index) => validacao == sCodigoValidacao ? index : '').filter(i => i !== "");
                var indexAdicionar = -1;
                for (let i = 0; i < indexesItem.length; i++) {
                  const tabelaItens = $("#tabelaItens").DataTable().row(indexesItem[i]).data();
                  if ((indexesItem[i] >= 0) && (iCodVen == tabelaItens[14]) && (vendedorItem == tabelaItens[20])) {
                    indexAdicionar = indexesItem[i];
                    break;
                  }
                }
                if ((indexAdicionar != -1) && (bAgrupaItens)) {
                  var dataOld = $('#tabelaItens').DataTable().row(indexAdicionar).data();
                  dataOld[2] = dataOld[2] + vQtde;
                  dataOld[7] = parseFloat(dataOld[2] * dataOld[3]).toFixed(2);
                  $('#tabelaItens').DataTable().row(indexAdicionar).data(dataOld);
                  SomAlerta();
                } else {
                  SomAlerta();
                  adicionaItens([
                    jsonStr[0].CODIGO,
                    jsonStr[0].CODIGO + ' - ' + jsonStr[0].DESCRICAO + ' - ' +
                    jsonStr[0].COR + ' - ' + jsonStr[0].DESC_COR + ' - ' +
                    jsonStr[0].TAM,
                    vQtde,
                    sPreco,
                    sPrecoOrig,
                    '0,00', // % DESCONTO
                    jsonStr[0].VALOR_DESC || '0,00', // VALOR DESCONTO
                    parseFloat(sPreco * vQtde).toFixed(2), // TOTAL
                    jsonStr[0].BARRA,
                    jsonStr[0].COR,
                    jsonStr[0].TAM,
                    jsonStr[0].DESC_COR,
                    jsonStr[0].QUALIDADE,
                    jsonStr[0].ID_ESTOQUE,
                    jsonStr[0].CODVENDEV,
                    await retornaBotaoOpcoes(),
                    sCodigoValidacao,
                    false,
                    jsonStr[0].LOTE,
                    jsonStr[0].TIPO,
                    vendedorItem,
                    jsonStr[0].UNIDADE,
                    jsonStr[0].PROMOCAO == 'S',
                    jsonStr[0].CASHBACK_VAL || 0,
                    $('#txtEmpresaItem').val(),
                    "", // MOTIVO
                    jsonStr[0].PRECO_LIQ_ORIG || 0,
                    jsonStr[0].DESC_ITEM_ORIG || 0,
                    jsonStr[0].PRECO_BRUTO_ORIG || 0,
                    jsonStr[0].QUANTIDADE_ORIG || 0
                  ]);
                }

                venda = await montaJsonVenda(venda, numero_venda, 'D');
                await salvaDadosDigitados(venda);
                $('#txtCodigo').val('');
                $('#txtIdItem').val('');
                $('#txtVendedorItemDevolucao').val('');
                // $('#txtVenda').val('');
                $('#txtVenda').focus();
              } catch (error) {
                msgErro('Não foi possível buscar os dados da barra.');
                SomAlerta();
              }

            } else {
              async function estornaItem(vCodigo) {
                SomAlerta();
                $('#tabelaItens').DataTable().rows(function(idx, data, node) {
                  if ((data[16] === vCodigo) && (!bJaEstornou)) {
                    if (data[2] === vQtde) {
                      $('#tabelaItens').DataTable().row(idx)
                        .remove()
                        .draw(false);
                    } else {
                      dataOld = $('#tabelaItens').DataTable().row(idx).data();
                      dataOld[2] = dataOld[2] - vQtde;
                      dataOld[7] = parseFloat(dataOld[2] * dataOld[3]).toFixed(2);
                      if (dataOld[2] <= 0) {
                        $('#tabelaItens').DataTable().row(idx).remove().draw(false);
                      } else {
                        $('#tabelaItens').DataTable().row(idx).data(dataOld);
                      }
                    }
                    bJaEstornou = true;
                  }
                });
                $('#txtCodigo').val('');
                $('#txtIdItem').val('');
                if (bAtualizaTotal) {
                  await atualizaTotalVenda();
                }
              }

              var bSenhaSupervisor = parametrosVenda[10];
              if (bSenhaSupervisor == '1') {
                var vCodigo = codigoProduto;
                await senhaSupervisor('Exclusão de item da venda', estornaItem, sCodigoValidacao, false, undefined, undefined, undefined, false, 'DEVOLUCAO');
              } else {
                await estornaItem(sCodigoValidacao);
              }
            }
          } else {
            async function estornaItem(vCodigo) {
              const indicesRemover = []
              $('#tabelaItens').DataTable().rows().every(function(idx) {
                const data = this.data()
                if ((data[16] === vCodigo) && (!bJaEstornou)) {
                  if (data[2] === vQtde) {
                    indicesRemover.push(idx)
                  } else {
                    dataOld = $('#tabelaItens').DataTable().row(idx).data();
                    dataOld[2] = dataOld[2] - vQtde;
                    dataOld[7] = parseFloat(dataOld[2] * dataOld[3]).toFixed(2);
                    if (dataOld[2] <= 0) {
                      indicesRemover.push(idx)
                    } else {
                      $('#tabelaItens').DataTable().row(idx).data(dataOld);
                    }
                  }
                  bJaEstornou = true;
                }
              });
              indicesRemover.forEach((idx) =>
                $('#tabelaItens').DataTable().row(idx).remove()
              )
              $('#tabelaItens').DataTable().draw(false)

              SomAlerta();
              $('#txtCodigo').val('');
              $('#txtIdItem').val('');
              $('#txtCodigoEPC').val('');

              if ((parametrosVenda[29] == 1) && (pegaChave('#txtRegraPromocao'))) {
                $('#btnRecalcularRegra').trigger('click');
              }
              if (bAtualizaTotal) {
                await atualizaTotalVenda();
              }
            }
            const pedeSenhaSupervisaoExclusaoItem = ((numero_venda != 'create') && (numero_venda != 'create#')); //como não contém o tipo de venda valido apenas se é alteração
            if (pedeSenhaSupervisaoExclusaoItem) {
              var vCodigo = $('#txtCodigo').val();
              await senhaSupervisor('Exclusão de item da venda', estornaItem, sCodigoValidacao, false, undefined, undefined, undefined, false, 'DEVOLUCAO');
            } else {
              await estornaItem(sCodigoValidacao);
            }
          }
          // $('#tabelaItens tbody tr:last-child').trigger('click');
          if ((indexAdicionar >= 0) && (bAgrupaItens)) {
            if (!$(`#tabelaItens tbody tr:eq(${indexAdicionar})`).hasClass('selected')) {
              $(`#tabelaItens tbody tr:eq(${indexAdicionar})`).trigger('click');
            }
          } else {
            if (!$('#tabelaItens tbody tr:last-child').hasClass('selected')) {
              $('#tabelaItens tbody tr:last-child').trigger('click');
            }
          }
          $('#txtQuantid').val(1);
          if (utilizaBarraLog) {
            $('#txtVenda').val('');
          }
          $('#txtCodigo').focus();
        } finally {
          $.LoadingOverlay("hide");
          $('#txtCodigo').val('');
          $('#txtIdItem').val('');
          $("#txtQuantid").val(1);
          if (bAtualizaTotal) {
            await atualizaTotalVenda();
          }
        }
      };

      $('#abreAjuda').on('click', function() {
        criaTelaAjuda();
      });

      $('#btnCancelar').on('click', function() {
        msgAlerta(
          `Ao clicar em Confirmar você irá perder os dados que não foram salvos. Deseja realmente cancelar?`,
          async function() {
            const hostname = `JsonVenda-${sessionStorage.getItem('g_idAba')}-${getCookie('idMaquina')}-D`;
            if ((numero_venda != 'create') && (numero_venda != 'create#')) {
              await deletaRegistro('LOJA', getCookie('usuario'), numero_venda);
            }
            await deletaVendaNaoSalva(hostname + '.txt');
            parent.fechaAbaVendaDevolucao('Devolução', numero_venda);
            if (!$('body').hasClass('sidebar-mini layout-fixed vsc-initialized iframe-mode-fullscreen')) {
              parent.$('#abrirTelaCheia').trigger('click');
            }
            window.location.href = "<?php echo BASE_URI; ?>/devolucao/create";
          });
      });

      $('#abreCadCli').on('click', async function() {
        $('.subatalho').trigger('click');
        $('#modal-cliente').modal('show');
        $('#btnModalNovoCliente').trigger('click');
      });

      $('#abrePreco').on('click', function() {
        $('.subatalho').trigger('click');
        $('#modalPrecos').modal('show');
        $('#txtBarra').focus();
      });

      // eventos combinação de teclas
      $("body").keydown(function(e) {
        var keyCode = e.keyCode || e.which;

        if (keyCode == 112) {
          e.preventDefault();
          criaTelaAjuda();
        } else
        if (keyCode == 113) {
          e.preventDefault();
          $("#btnCancelar").trigger('click');
        } else
        if (keyCode == 116) {
          e.preventDefault();
          $("#btnInfo").trigger('click');
        } else
        if (keyCode == 117) {
          e.preventDefault();
          $("#btnVenda").trigger('click');
        } else
        if (keyCode == 118) {
          e.preventDefault();
          // $("#btnPagamento").trigger('click');
        } else
        if (keyCode == 119) {
          if (parametrosVenda[55] != 1) {
            e.preventDefault();
            $("#btnFinalizar").trigger('click');
          }
        } else
        if ((keyCode == 121)) {
          e.preventDefault();
          fechaF10 = true;
          $("#btnFinalizar").trigger('click');
        } else
        if (keyCode == 123) {
          e.preventDefault();
          // nada acontece... não ver o fonte
        }
      });

      async function buscaFoto(codigo) {
        try {
          var _url = '/Sisplan/Funcoes/v1/FotoItem?';
          var response = await requisicao('GET', _url, 'codigo=' + codigo, null);

          if (!response) {
            return;
          }

          var jsonStr = await response.json();
          if (response.status != 200) {
            $("#infoprodimagem").attr('src', '<?php echo BASE_URI; ?>/dist/img/prod-1.png');
            return
          }

          var sBase64 = jsonStr;
          if ($('#tabelaItens').DataTable().rows().count() == 0) {
            $("#infoprodimagem").attr('src', '<?php echo BASE_URI; ?>/dist/img/prod-1.png');
          } else {
            $("#infoprodimagem").attr('src', 'data:image/png;base64,' + sBase64.mensagem);
          }

        } catch (error) {
          console.error(error);
          $("#infoprodimagem").attr('src', '<?php echo BASE_URI; ?>/dist/img/prod-1.png');
        }
      }

      async function rotinaSaidaVendedor() {
        const Vendedor = pegaChave('#txtVendedor');
        if (Vendedor != '') {
          $('#btn-guia').off();
          if (await ExisteGuiaVendedor(Vendedor)) {
            $('#txtGuia').autocompleta(1, `JSON={ "tabela":"REP_GUIA", "camposSelect":[ "rep_guia.guia chave", "represen.nome descricao" ], "leftjoin":[{"tabela" : "represen", "condicao" : "represen.codrep = rep_guia.guia"}], "where": ["rep_guia.codrep = '${Vendedor}'"]}`);
            $('#btn-guia').pesquisa('#txtGuia', 'CODREP', 'NOME', `/sisplan/funcoes/v1/pesquisa?JSON={"tabela": "rep_guia","camposSelect": ["rep_guia.guia codrep", "represen.nome"],"leftjoin": [{"tabela": "represen","condicao": "represen.codrep = rep_guia.guia"}],"where": ["rep_guia.codrep = '${Vendedor}'"]}`, 'Pesquisa Representante', 'rep_guia');
          } else {
            $('#txtGuia').autocompleta(1, `JSON={ "tabela":"represen", "camposSelect":["CODREP CHAVE, NOME DESCRICAO"], "where": ["ativo = 'S'"] }`);
            $('#btn-guia').pesquisa('#txtGuia', 'CODREP', 'NOME', `/sisplan/funcoes/v1/pesquisa?JSON={"tabela": "represen","camposSelect": ["codrep", "nome"],"where": ["ativo = 'S'"] }`, 'Pesquisa Representante', 'represen');
          }
        }
      }

      $('#txtVendedor').on('blur', async function() {
        rotinaSaidaVendedor();
      });

      $('#tabelaItens tbody').on('click', 'tr', async function() {
        if ($(this).hasClass('selected')) {
          $(this).removeClass('selected');
        } else {
          $('#tabelaItens').DataTable().$('tr.selected').removeClass('selected');
          $(this).addClass('selected');
          if ($('#tabelaItens').DataTable().rows().count() == 0) {
            $("#infoprodimagem").attr('src', '<?php echo BASE_URI; ?>/dist/img/prod-1.png');
            $("#infoprodcor").val('');
            $("#infoprodtam").val('');
            $("#infoprodcodigo").val('');
            $("#infoprodpreco").val('');
            $("#infoprodbarra").val("");
            $("#infoprodunidade").val("");
            $("#infoprodlote").val("");
            $("#infoprodqualidade").val("");
          } else {
            var data = $('#tabelaItens').DataTable().row(this.rowIndex - 1).data();
            var codigo = data[0];
            $("#infoprodcodigo").val(data[1]);
            $("#infoprodpreco").val(data[3]);
            $("#infoprodcor").val(data[9] + ' - ' + data[11]);
            $("#infoprodtam").val(data[10]);
            $("#infoprodbarra").val(data[8]);
            $("#infoprodunidade").val(data[21]);
            $("#infoprodlote").val(data[18]);
            $("#infoprodqualidade").val(`${data[12]} - ${(await buscaValor('TABQUL', 'DESCRICAO', 'CODIGO', data[12])).DESCRICAO ?? ''}`);
            await buscaFoto(codigo);
          }
        }
      });

      var keytable = new $.fn.dataTable.KeyTable($('#tabelaItens').DataTable());
      // se precionar enter executa duplo click
      keytable.event.action(null, null, function(node) {
        $(node).click();
      });
      // posiciona a navegacao via teclas no primeiro registro
      $('#tabelaItens tbody')[0].click();
      $('#tabelaItens').DataTable().$('tr.selected').removeClass('selected');

      document.addEventListener("keydown", function(event) {
        if (event.ctrlKey && event.key == "b") {
          $("#txtCodigo").focus();
        }
        if (event.ctrlKey && event.key == "q") {
          $("#txtQuantid").focus();
        }
      });

      $('.pop').on('click', function() {
        $('.imagepreview').attr('src', $(this).attr('src'));
        $('#imagemodal').modal('show');
      });

      // window.onbeforeunload = confirmExit;

      $('a[data-toggle="tab"]').on('shown.bs.tab', function(e) {
        $.fn.dataTable.tables({
          visible: true,
          api: true
        }).columns.adjust();
      });

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

      async function montaModalItens(objetoPesquisa) {
        let dataSetCols = [];
        try {

          const jsonStr = await retornaJsonPesquisaPadrao(JSON.stringify(objetoPesquisa));

          let keys = Object.keys(jsonStr[0]);
          dataSetCols.push({
            'title': 'SEL',
            'data': 'SEL',
            'width': '5px'
          });

          dataSetCols[0].render = function(data, type, row, meta) {
            return `<div class="icheck-primary d-inline">
                <input type="checkbox" id="check${meta.row}" class="campoSel">
                <label for="check${meta.row}"></label>
              </div>`
          }

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

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

          tabelaPesquisaItens = $('#tabelaPesquisaItens').DataTable({
            destroy: true,
            select: true,
            keys: true,
            info: false,
            searching: false,
            lengthChange: false,
            scrollCollapse: true,
            order: false,
            paging: false,

            "autoWidth": true,
            "columns": dataSetCols,
            "data": jsonStr,
          });

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

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

      }

      $('#checkTodosItens').on('change', function() {
        $('.campoSel').prop('checked', $('#checkTodosItens').prop('checked'));
        if ($('#checkTodosItens').prop('checked')) {
          $('.campoSel').addClass('selecionado');

        } else {
          $('.campoSel').removeClass('selecionado');

        }
      });

      $('#btnConfirmarItens').on('click', async function() {
        var selecionados = $('.selecionado');
        for (let i = 0; i < selecionados.length; i++) {
          const id = selecionados[i].id.substr(5, selecionados[i].id.length);
          const data = $('#tabelaPesquisaItens').DataTable().row(id).data();
          insereValor('#txtQualidade', data.QUALIDADE, data.DESC_QUALIDADE);
          if (data.BARRA != '') {
            // $('#txtCodigo').val($('#txtCodigo').val() + data.QUANTIDADE + '*' + data.BARRA)
            $('#txtCodigo').val($('#txtCodigo').val() + data.BARRA)
          } else {
            if ((data.LOTE != '') && (data.LOTE != '000000') && (data.LOTE)) {
              $('#txtCodigo').val($('#txtCodigo').val() + data.LOTE);
            } else {
              $('#txtIdItem').val(data.ID_ESTOQUE);
              $('#txtCodigo').val(data.LOTE ? data.LOTE : '000000');
            }
          }
          data.CODREP != undefined ? $('#txtVendedorItemDevolucao').val(data.CODREP) : '';

          await saidaCodigo(true, id, "tabelaPesquisaItens");
          $('#txtCodigo').val('');
        }
        $('#checkTodosItens').prop('checked', false);
        $('#modalPesquisaItens').modal('hide');
        $('#tabelaPesquisaItens').DataTable().clear().draw(false);
      });

      $('#btnConfirmarQuantidades').on('click', async function() {
        try {
          $.LoadingOverlay('show');
          try {
            $('#tabelaItens').DataTable().row($('#txtIdLinhaItemQuantidade').val()).remove().draw(false);

            $('#txtQuantid').val($('#txtItemQuantidade').val());
            $('#txtIdItem').val($('#txtBarraQuantidadeNova').val());
            $('#txtCodigo').val('0');
            $('#txtCodigo').trigger('blur');

            let venda = {};
            venda = await montaJsonVenda(venda, numero_venda, 'P', false);
            salvaDadosDigitados(venda);
            atualizaTotalVenda();
            $('#modalQuantidade').modal('hide');

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

      async function retornaCodigosEPC(estorno = false, listaEPC) {
        $.LoadingOverlay("show");
        try {
          const url = '/epc/retorna?';
          const response = await requisicao_ecf('GET', url, `INTEGRACAO=${integracaoEPC}`);

          if ((!response) || (response.status != 200)) {
            msgAlerta('Erro ao retornar codigos da leitura RFID!')
          }
          listaBarrasForamBipadasEPC = JSON.parse(await response.text());

          if (integracaoEPC == '2') {
            listaBarrasForamBipadasEPC = listaBarrasForamBipadasEPC.data.epcs;
          }

          if (listaBarrasForamBipadasEPC.length == 0) {
            msgAlerta('Nenhum código bipado!');
            return;
          }

          if (!estorno) {
            if (await barraJaEstaBipadaEPC()) {
              return;
            }
          }

          if (listaBarrasForamBipadasEPC.length > 0) {
            await retornaProdutosEPC(estorno ? listaEPC : listaBarrasForamBipadasEPC, estorno);
          }

        } catch (error) {
          console.error('Erro ao retornar codigos da leitura RFID', error);
        } finally {
          $.LoadingOverlay("hide");
        }
      }

      async function retornaProdutosEPC(codigos, estorno = false) {

        async function retornaIdEPC(codigos) {
          const codigosWhere = codigos.map((codigo) => "'" + codigo + "'");
          const pesquisaIdEPC = {
            tabela: "EPC",
            camposSelect: [
              "EPC",
              "ID",
              "PERMITE_MOVIMENTACAO",
            ],
            where: [`EPC IN (${codigosWhere.toString()})`],
          };

          const json = await retornaJsonPesquisaPadrao(JSON.stringify(pesquisaIdEPC));


          await verificaSeTodosEPCsExistem(codigos, json);

          return json;
        }

        async function verificaSeTodosEPCsExistem(codigos, retornos) {
          try {
            const codigosRetornados = retornos.map((codigo) => codigo.EPC);
            const codigoNaoExiste = codigos.filter((codigo, i) => !codigosRetornados.includes(codigo));

            if (codigoNaoExiste.length > 0) {
              msgAlerta(`Codigos: ${JSON.stringify(codigoNaoExiste)} não existem ou estão desativado na base de dados, faça a bipagem manual`)
            }

          } catch (error) {
            console.error('Erro verificar codigos RFID', error);
          }
        }

        async function retornaDadosProdutoEPC(dadosEPC) {
          const EPCs = dadosEPC.map((dado) => "'" + dado.EPC + "'");

          const pesquisaDadosProdutosBarraLog = {
            tabela: "BARRA_LOG",
            camposSelect: [
              "BARRA_LOG.CODIGO",
              "BARRA_LOG.COR",
              "BARRA_LOG.TAMANHO",
              "BARRA_LOG.EPC",
              "BARRA_LOG.BARRA BARRA_LOG"
            ],
            where: [`BARRA_LOG.EPC IN (${EPCs.toString()})`],
          };

          const jsonBarras = await retornaJsonPesquisaPadrao(JSON.stringify(pesquisaDadosProdutosBarraLog));

          let jsonEPCs = [];
          if (jsonBarras?.length != EPCs?.length) {
            const epcDesconsiderar = jsonBarras.map(item => item.EPC);
            const ids = dadosEPC.filter(item => !epcDesconsiderar.includes(item.EPC)).map(item => "'" + item.ID + "'");

            const pesquisaDadosProdutosEPC = {
              tabela: "EPC_PRODUTO",
              camposSelect: [
                "EPC_PRODUTO.CODIGO",
                "EPC_PRODUTO.COR",
                "EPC_PRODUTO.TAMANHO",
                "EPC.EPC",
                "EPC.BARRA_LOG"
              ],
              leftjoin: [{
                tabela: "EPC",
                condicao: "EPC_PRODUTO.ID_EPC = EPC.ID"
              }],
              where: [`EPC_PRODUTO.ID_EPC IN (${ids.toString()})`],
            };

            jsonEPCs = await retornaJsonPesquisaPadrao(JSON.stringify(pesquisaDadosProdutosEPC));
          }

          // const ids = dadosEPC.map((dado) => "'" + dado.ID + "'");

          // const pesquisaDadosProdutosEPC = {
          //   tabela: "EPC_PRODUTO",
          //   camposSelect: [
          //     "EPC_PRODUTO.CODIGO",
          //     "EPC_PRODUTO.COR",
          //     "EPC_PRODUTO.TAMANHO",
          //     "EPC.EPC",

          //   ],
          //   leftjoin: [{
          //     tabela: "EPC",
          //     condicao: "EPC_PRODUTO.ID_EPC = EPC.ID"
          //   }],
          //   where: [`EPC_PRODUTO.ID_EPC IN (${ids.toString()})`],
          // };

          // const json = await retornaJsonPesquisaPadrao(JSON.stringify(pesquisaDadosProdutosEPC));

          const json = [...jsonBarras, ...jsonEPCs];

          return json;
        }

        try {
          const dadosEPC = await retornaIdEPC(codigos);
          const naoPermiteMovimentacao = dadosEPC.filter((dadoEPC) => dadoEPC.PERMITE_MOVIMENTACAO != 'S');
          const permiteMovimentacao = dadosEPC.filter((dadoEPC) => dadoEPC.PERMITE_MOVIMENTACAO == 'S');
          if (permiteMovimentacao.length > 0) {
            const produtos = await retornaDadosProdutoEPC(permiteMovimentacao);
            await bipaEPC(produtos, estorno);
          }
          naoPermiteMovimentacao.length > 0 && msgAlerta(`Codigos: ${naoPermiteMovimentacao.map((dado) => `${dado.EPC},`)} não existem ou estão desativados na base de dados, faça a bipagem manual!`);

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


      async function limpaEPCSBipados() {
        try {
          await retornaCodigosEPC(true, listaBarrasBipadasEPC);
          listaBarrasBipadasEPC = [];
          listaBarrasForamBipadasEPC = [];
        } catch (error) {
          console.error('Erro ao limpar a leitura RFID', error);
        }
      }

      async function continuaBiparEPC() {
        if (!listaBarrasForamBipadasEPC.length > 0) {
          return;
        }
        await retornaProdutosEPC(listaBarrasForamBipadasEPC, false)
      }
      async function removeItemListaBarra(sBarra) {
        try {
          listaBarrasBipadas = [...listaBarrasBipadas.filter(barra => barra !== sBarra)];
        } catch (error) {
          console.error(error);
        }
      }

      async function barraJaEstaBipadaEPC(sCodigoEPC) {
        try {
          // aqui ele pega os que foram bipados e compara com os que estão na tabela itens para nao bipar 2x
          const barrasLidas = listaBarrasForamBipadasEPC.filter((barrasBipadas) => listaBarrasBipadasEPC.includes(barrasBipadas));

          if (barrasLidas.length > 0) {
            // aqui ele pega só os que foram bipados e joga pra variavel global
            listaBarrasForamBipadasEPC = listaBarrasForamBipadasEPC.filter((barrasBipadas) => !listaBarrasBipadasEPC.includes(barrasBipadas));
            msgAlerta(`RFID ${barrasLidas} já lido nesta venda, deseja ignora-lo e prosseguir com a leitura dos demais itens?`, continuaBiparEPC, limpaEPCSBipados);
            return true;
          }

          return false;

        } catch (error) {
          console.error('barra_EPC', error);
          msgErro('Erro ao processar barra EPC.');
        }
      }

      async function adicionaBarraBipadaEPC(codigoEPC) {
        try {
          if (codigoEPC != '') {
            listaBarrasBipadasEPC.push(codigoEPC);
            return true;
          }
        } catch (error) {
          console.error(error);
        }
      }

      async function estornaBarraBipadaEPC(sBarra) {
        try {
          listaBarrasBipadasEPC = [...listaBarrasBipadasEPC.filter(item => item.barra !== sBarra)];
        } catch (error) {
          console.error(error);
        }
      }

      async function removeItemListaBarraEPC(sCodigo, sCor, sTam) {
        try {
          listaBarrasBipadasEPC = [...listaBarrasBipadasEPC.filter(item => item.codigo !== sCodigo && item.cor !== sCor && item.tam !== sTam)];
        } catch (error) {
          console.error(error);
        }
      }

      async function bipaEPC(itensEPC, estorno) {

        async function retornaBarrasEPC(itens) {
          const sTabela = pegaChave("#txtTabela");
          const sDeposito = pegaChave("#txtDeposito");
          const iLancamento = $('#txtLancamento').val() != '' ? $('#txtLancamento').val() : 0;
          const sQualidade = pegaChave('#txtQualidade');
          const url = `/Sisplan/Estoque/v1/barra?`;
          const arrayBarras = [];
          await Promise.all(itens.map(async (item) => {

            const dadosBarraEPC = {
              tabela: "PA_ITEN",
              camposSelect: [
                "BARRA",
                "BARRACLI",
                "BARRA28",
                "ID",
                `'${item.EPC}' EPC`,
                `'${item.BARRA_LOG}' BARRA_LOG`
              ],
              where: [`CODIGO = '${item.CODIGO}' AND COR = '${item.COR}' AND TAM = '${item.TAMANHO}' AND DEPOSITO = '${sDeposito}' `],
            };

            const json = await retornaJsonPesquisaPadrao(encodeURIComponent(JSON.stringify(dadosBarraEPC)));
            if ((json) && (json.length > 0)) {
              if (json[0].BARRA != '') {
                arrayBarras.push({
                  BARRA: json[0].BARRA,
                  IDITEM: json[0].ID,
                  EPC: json[0].EPC,
                  BARRA_LOG: json[0].BARRA_LOG
                });
              } else if (json[0].BARRACLI != '') {
                arrayBarras.push({
                  BARRA: json[0].BARRACLI,
                  IDITEM: json[0].ID,
                  EPC: json[0].EPC,
                  BARRA_LOG: json[0].BARRA_LOG
                });
              } else if (json[0].BARRA28 != '') {
                arrayBarras.push({
                  BARRA: json[0].BARRA28,
                  IDITEM: json[0].ID,
                  EPC: json[0].EPC,
                  BARRA_LOG: json[0].BARRA_LOG
                });
              } else {
                arrayBarras.push({
                  BARRA: '',
                  IDITEM: json[0].ID,
                  EPC: json[0].EPC,
                  BARRA_LOG: json[0].BARRA_LOG
                });
              }
            } else {
              msgAlerta(`Não existe barra para esse RFID: ${item.EPC}`);
            }
          }));

          return arrayBarras
        }

        try {
          const barrasEPC = await retornaBarrasEPC(itensEPC);
          $('#btnMenosOuMais>i.fa-minus').removeClass('fa-minus').addClass('fa-plus');
          if (epcVenda) {
            barrasEPC.forEach(async (barra) => {
              // while ($('#txtCodigoEPC').val() != '') {
              //   await sleep(1000)
              // }
              const codigo = !!barra.BARRA_LOG ? barra.BARRA_LOG : barra.BARRA

              $('#txtQuantid').val(barra.QUANTIDADE);
              $('#txtCodigo').val(estorno ? `-${codigo}` : codigo);
              $('#txtIdItem').val(barra.IDITEM);
              $('#txtCodigoEPC').val(barra.EPC);
              await saidaCodigo();
              await sleep(1000);
            });
          } else {
            // barrasEPC.forEach(async (barra) => {
            //   $("#txtBarraConferencia").val(barra.BARRA); não terá rotina de conferencia
            //   $("#txtBarraConferencia").trigger("blur");
            // });
          }
        } catch (error) {
          console.error(error);
        }
      }

      $('#btn-iniciar-epc').on('click', async function() {
        try {
          $('#btn-iniciar-epc').prop('disabled', true);
          $('#btn-parar-epc').prop('disabled', false);
          // $('#btnIniciarEPCConferencia').prop('disabled', true);
          // $('#btnPararEPCConferencia').prop('disabled', true);
          epcVenda = true;
          await iniciarEPC();
        } catch (error) {
          console.error(error)
        }
      })

      $('#btn-parar-epc').on('click', async function() {
        try {
          $('#btn-iniciar-epc').prop('disabled', false);
          $('#btn-parar-epc').prop('disabled', true);
          // $('#btnIniciarEPCConferencia').prop('disabled', false);
          // $('#btnPararEPCConferencia').prop('disabled', false);
          await pararEPC();
        } catch (error) {
          console.error(error)
        }
      })

      async function iniciarEPC() {
        $.LoadingOverlay("show");
        try {
          const url = '/epc/inicia?';
          const response = await requisicao_ecf('POST', url, `INTEGRACAO=${integracaoEPC}`);

          if ((!response) || (response.status != 200)) {
            msgAlerta('Erro ao iniciar a leitura RFID!');
          }

        } catch (error) {
          console.error('Erro ao iniciar a leitura RFID', error);
        } finally {
          $.LoadingOverlay("hide");
        }
      }

      async function pararEPC() {
        $.LoadingOverlay("show");
        try {
          const url = '/epc/para?';
          const response = await requisicao_ecf('PUT', url, `INTEGRACAO=${integracaoEPC}`);

          if ((!response) || (response.status != 200)) {
            msgAlerta('Erro ao parar a leitura RFID!');
          }

          await retornaCodigosEPC();

        } catch (error) {
          console.error('Erro ao parar a leitura RFID', error);
        } finally {
          $.LoadingOverlay("hide");
        }
      }

      async function limpaEPC() {
        try {
          const url = '/epc/limpa?';
          const response = await requisicao_ecf('DELETE', url, `INTEGRACAO=${integracaoEPC}`);

          if ((!response) || (response.status != 200)) {
            msgAlerta('Erro ao limpar a leitura RFID!')
          }

        } catch (error) {
          console.error('Erro ao limpar a leitura RFID', error);
        }
      }

      async function verificaGravarRFID() {
        try {
          const url = '/sisplan/epc/v1?';
          const response = await requisicao('PUT', url, '', ``, );

          if (!response) {
            return;
          }

          if (response.status != 200) {
            return;
          }

        } catch (error) {
          console.error(error);
        }
      }
      document.body.style.zoom = `${!Math.trunc(localStorage.getItem('zoom')) ? '100%' : Math.trunc(localStorage.getItem('zoom'))}%`;

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

        await Promise.all(jsonStr.map(async (item) => {
          switch (item.CAMPO) {
            case "CLIENTE_PADRAO":
              if (item.VALOR != "") {
                const nomeCliente = await buscaValor("ENTIDADE", "NOME", "CODCLI", item.VALOR);
                insereValor('#txtCliente', item.VALOR, nomeCliente.NOME);
              }
              break;
            case "CONS_VENDA_DEV":
              if (item.VALOR == "S") {
                $('#cbSomenteItensNaoDevolvidosPesquisaProduto').prop('checked', true);
                $('#cbSomenteItensNaoDevolvidos').prop('checked', true);
              }
              break;
            case "DEPOSITO":
              if (!!item.VALOR) {
                const descricao = await buscaValor("DEPOSITO", "DESCRICAO", "CODIGO", item.VALOR);
                depositoPadrao = `[${item.VALOR}] - ${descricao.DESCRICAO}`;
              }
              break;
            case "DIAS_DEVOLUCAO":
              if (!!item.VALOR) {
                diasDevolucao = isNaN(parseInt(item.VALOR)) ? 0 : parseInt(item.VALOR);
              }
              break;
          }
        }));

      }

      async function solicitaSenhaDiasVenda(selecionados, vemDoModal = true, dataVenda = '') {
        $.LoadingOverlay('show')
        try {
          if (obrigaVenda && diasDevolucao > 0) {
            const vendasSolicitaSenha = []
            if (vemDoModal) {
              for (let i = 0; i < selecionados.length; i++) {
                const id = selecionados[i].id.substr(5)
                const data = await $('#tabela-dinamica').DataTable().row(id).data()
                if (diferencaDeDias(data.DATA) > diasDevolucao && !vendaJaLiberada.includes(data.VENDA.toString()) && !vendasSolicitaSenha.includes(data.VENDA.toString())) {
                  vendasSolicitaSenha.push(data.VENDA.toString())
                }
              }
            } else {
              if (diferencaDeDias(dataVenda) > diasDevolucao && !vendaJaLiberada.includes(selecionados[0])) {
                vendasSolicitaSenha.push(selecionados[0])
              }
            }

            if (vendasSolicitaSenha.length > 0) {
              const maisDeUmaVenda = vendasSolicitaSenha.length > 1
              const msg = `${maisDeUmaVenda ? 'As vendas' : 'A venda'} ${vendasSolicitaSenha.toString()} ${maisDeUmaVenda ? 'ultrapassaram' : 'ultrapassou'} ${diasDevolucao} dia(s), que é o prazo permitido para devolução.`

              const retorno = await new Promise((resolve) => {
                senhaSupervisor(
                  msg,
                  () => resolve(true),
                  '',
                  false,
                  () => resolve(false),
                  () => resolve(false),
                  () => resolve(false),
                  false,
                  'DEVOLUCAO'
                )
              })

              if (retorno) {
                vendaJaLiberada.push(...vendasSolicitaSenha)
              }

              return retorno
            } else {
              return true
            }
          } else {
            return true
          }
        } catch (error) {
          console.error(error)
          msgAlerta(error.message)
          return false
        } finally {
          $.LoadingOverlay('hide')
        }
      }

      async function buscarItensKit(numero, deposito, venda) {
        try {
          const response = await requisicao('GET', `/sisplan/vendas/v1/itenskit?`, `&NUMERO=${numero}&DEPOSITO=${deposito}&VENDA=${venda}`, '', 3600000)
          const json = await response.json()

          if (json) {
            const {
              resultado,
              mensagem
            } = json
            if (mensagem?.codigo !== 200) {
              throw mensagem?.mensagem
            }

            return resultado?.itens ?? []
          }
        } catch (error) {
          console.error(error)
          return []
        }
      }

      async function biparBarrasKit(itens) {
        for (const item of itens) {
          $('#txtQuantid').val(item.qtde)
          $('#txtCodigo').val(item.barra)
          $('#txtIdItem').val(item.id)

          await saidaCodigo()
        }
      }
    });

    $('#btnMenosOuMais').on('click', function() {
      const estaComoEstorno = $('#btnMenosOuMais>i.fa-minus').length > 0;
      $('#labelBarras').html(estaComoEstorno ? 'Barra' : 'Barra Estorno');
      $('#txtCodigo').attr('placeholder', estaComoEstorno ? 'Barra' : 'Barra Estorno');
      $('#txtCodigo').focus();
      $('#btnMenosOuMais').attr('data-estorno', !estaComoEstorno);
      if (estaComoEstorno) {
        $('#btnMenosOuMais>i.fa-minus').removeClass('fa-minus').addClass('fa-plus');
      } else {
        $('#btnMenosOuMais>i.fa-plus').removeClass('fa-plus').addClass('fa-minus');
      }
    });

    $(window).on('load', function() {
      $('#menuVenda').addClass('d-block');
    });

    $("#btnConfirmarMotivoModal").on("click", function() {
      const indexItem = $("#modalMotivo").prop("indexItem");
      const item = $("#tabelaItens").DataTable().data().toArray()[indexItem];
      const motivo = pegaChave("#txtMotivoModal");
      item[25] = motivo;
      $("#modalMotivo").modal("hide");
    })
  </script>

</body>

</html>