// " . $sql_ini . "
// ) unido, (SELECT @rownum:=0) R
// WHERE 1=1
// ";
$sql = "\nSELECT * FROM (\n" . $sql_ini . "\n) unido01\nWHERE 1=1\n";
$requestData = $_REQUEST;
$query = mysqli_query($conn, $sql) or die("01");
$totalData = mysqli_num_rows($query);
$totalFiltered = $totalData;
// when there is no search parameter then total number rows = total number filtered rows.
$sql_filter = '';
if (!empty($requestData['columns'][0]['search']['value'])) {
    $sql_filter .= ' AND nombre LIKE "%' . Utilidades::sanear_complete_string($requestData['columns'][0]['search']['value']) . '%"';
}
if (!empty($requestData['columns'][1]['search']['value'])) {
    $sql_filter .= ' AND campania LIKE "%' . Utilidades::sanear_complete_string($requestData['columns'][1]['search']['value']) . '%"';
}
if (!empty($requestData['columns'][2]['search']['value'])) {
    $sql_filter .= ' AND vigente = "' . (int) $requestData['columns'][2]['search']['value'] . '"';
}
// 3 (acciones)
$sql .= $sql_filter;
$sql_donde = '';
$pagina = '';
if (!empty($requestData['search']['value']) && trim($requestData['search']['value']) != '') {
    // esto es para recuperar la pagina (es muy importante)
    $dd = 'tem_usuario_grupo_' . rand(0, 200);
    $sql_donde = 'CREATE TEMPORARY TABLE ' . $dd . ' ' . $sql;
    $sql_donde .= " ORDER BY " . (intval($requestData['order'][0]['column']) + 1);
    $query = mysqli_query($conn, $sql_donde) or die("01.5");
    $sql_donde = '
    $CAMPANIA = $campanias[0];
}
if (!empty($requestData['columns'][1]['search']['value'])) {
    $sql_filter .= ' AND estado_real_id =  "' . Utilidades::sanear_complete_string($requestData['columns'][1]['search']['value']) . '"';
}
if (!empty($requestData['columns'][2]['search']['value'])) {
    $sql_filter .= ' AND asesor_venta LIKE "%' . Utilidades::sanear_complete_string($requestData['columns'][2]['search']['value']) . '%"';
}
if (!empty($requestData['columns'][3]['search']['value'])) {
    $sql_filter .= ' AND fecha_creacion LIKE "%' . Utilidades::sanear_complete_string($requestData['columns'][3]['search']['value']) . '%"';
}
if (!empty($requestData['columns'][4]['search']['value'])) {
    $sql_filter .= ' AND producto LIKE "%' . Utilidades::sanear_complete_string($requestData['columns'][4]['search']['value']) . '%"';
}
if (!empty($requestData['columns'][5]['search']['value'])) {
    $sql_filter .= ' AND cliente_nombre LIKE "%' . Utilidades::sanear_complete_string($requestData['columns'][5]['search']['value']) . '%"';
}
$sql .= $sql_filter;
$sql_donde = '';
$pagina = '';
if (!empty($requestData['search']['value']) && trim($requestData['search']['value']) != '') {
    // esto es para recuperar la pagina (es muy importante)
    $sql_donde .= 'SELECT * FROM (' . $sql;
    $sql_donde .= ' ORDER BY ' . (intval($requestData['order'][0]['column']) + 1) . ' ' . $requestData['order'][0]['dir'];
    $sql_donde .= ') unido2 WHERE venta_id=' . intval($requestData['search']['value']);
    $query = mysqli_query($conn, $sql_donde) or die("01.5");
    $cnt = mysqli_num_rows($query);
    if ($cnt > 0) {
        while ($row = mysqli_fetch_array($query)) {
            $pagina = $row['row_num'];
        }
}
if (!empty($requestData['columns'][++$col]['search']['value'])) {
    $tmp = Utilidades::sanear_complete_string($requestData['columns'][$col]['search']['value']);
    $sql_filter .= ' AND (departamento LIKE "%' . $tmp . '%" 
                     OR provincia LIKE "%' . $tmp . '%" 
                     OR distrito LIKE "%' . $tmp . '%"
                     OR direccion LIKE "%' . $tmp . '%"
                     )';
}
++$col;
// referencia
if ($perfiles == 'Motorizado') {
    $sql_filter .= ' AND estado_real_id NOT IN (22, 23)';
}
if (!empty($requestData['columns'][++$col]['search']['value'])) {
    $sql_filter .= ' AND estado_real_id LIKE "%' . Utilidades::sanear_complete_string($requestData['columns'][$col]['search']['value']) . '%"';
}
++$col;
// responsalbles: falta!!!
++$col;
// comprobante: falta!!!
$sql .= $sql_filter;
$query = mysqli_query($conn, $sql) or die("02");
$totalFiltered = mysqli_num_rows($query);
// when there is a search parameter then we have to modify total number filtered rows as per search result.
$sql .= " ORDER BY " . (intval($requestData['order'][0]['column']) + 1) . " " . $requestData['order'][0]['dir'] . " LIMIT " . $requestData['start'] . " ," . $requestData['length'] . " ";
// print $sql;
/* $requestData['order'][0]['column'] contains colmun index, $requestData['order'][0]['dir'] contains order such as asc/desc  */
$query = mysqli_query($conn, $sql) or die("03");
// esto es para decir cuando no se puede $editar
$data = array();
    $sql_filter .= ' AND agendado_fecha LIKE "%' . Utilidades::sanear_complete_string($requestData['columns'][$i]['search']['value']) . '%"';
}
if (!empty($requestData['columns'][++$i]['search']['value'])) {
    $sql_filter .= ' AND asesor_venta LIKE "%' . Utilidades::sanear_complete_string($requestData['columns'][$i]['search']['value']) . '%"';
}
if (!empty($requestData['columns'][++$i]['search']['value'])) {
    $sql_filter .= ' AND supervisor LIKE "%' . Utilidades::sanear_complete_string($requestData['columns'][$i]['search']['value']) . '%"';
}
if (!empty($requestData['columns'][++$i]['search']['value'])) {
    $sql_filter .= ' AND coordinador LIKE "%' . Utilidades::sanear_complete_string($requestData['columns'][$i]['search']['value']) . '%"';
}
if (!empty($requestData['columns'][++$i]['search']['value'])) {
    $sql_filter .= ' AND producto_inicial2 LIKE "%' . Utilidades::sanear_complete_string($requestData['columns'][$i]['search']['value']) . '%"';
}
if (!empty($requestData['columns'][++$i]['search']['value'])) {
    $sql_filter .= ' AND cliente_tipo_inicial2 LIKE "%' . Utilidades::sanear_complete_string($requestData['columns'][$i]['search']['value']) . '%"';
}
$bool_str = array('0' => 'Si', '1' => 'No');
if (!empty($requestData['columns'][++$i]['search']['value'])) {
    $bool = $requestData['columns'][$i]['search']['value'];
    if ($bool == 'si' || $bool == 's') {
        $sql_filter .= ' AND info_status  = "0"';
    } elseif ($bool == 'no' || $bool == 'n') {
        $sql_filter .= ' AND info_status  = "1"';
    }
}
$sql .= $sql_filter;
$sql_donde = '';
$pagina = '';
if (!empty($requestData['search']['value']) && trim($requestData['search']['value']) != '') {
    // esto es para recuperar la pagina (es muy importante)
$totalData = mysqli_num_rows($query);
$totalFiltered = $totalData;
// when there is no search parameter then total number rows = total number filtered rows.
$sql_filter = '';
if (!empty($requestData['columns'][0]['search']['value']) && $requestData['columns'][0]['search']['value'] != '-1') {
    $sql_filter .= ' AND EXISTS (SELECT id FROM usu_usuario_lineal ul WHERE ul.lineal_id = "' . $requestData['columns'][0]['search']['value'] . '"
                               AND ul.usuario_id=unido01.id)';
}
if (!empty($requestData['columns'][1]['search']['value'])) {
    $sql_filter .= ' AND nombre LIKE "%' . Utilidades::sanear_complete_string($requestData['columns'][1]['search']['value']) . '%"';
}
if (!empty($requestData['columns'][2]['search']['value'])) {
    $sql_filter .= ' AND login  LIKE "%' . Utilidades::sanear_complete_string($requestData['columns'][2]['search']['value']) . '%"';
}
if (!empty($requestData['columns'][3]['search']['value'])) {
    $sql_filter .= ' AND perfil_id = "' . Utilidades::sanear_complete_string($requestData['columns'][3]['search']['value']) . '"';
}
if (!empty($requestData['columns'][4]['search']['value'])) {
    $sql_filter .= ' AND vigente = "' . (int) $requestData['columns'][4]['search']['value'] . '"';
}
// 5 (acciones)
$sql .= $sql_filter;
$sql_donde = '';
$pagina = '';
if (!empty($requestData['search']['value']) && trim($requestData['search']['value']) != '') {
    // esto es para recuperar la pagina (es muy importante)
    $dd = 'tem_usuario_usuario_' . rand(0, 200);
    $sql_donde = 'CREATE TEMPORARY TABLE ' . $dd . ' ' . $sql;
    $sql_donde .= " ORDER BY " . (intval($requestData['order'][0]['column']) + 1);
    $query = mysqli_query($conn, $sql_donde) or die("01.5");
    // print $sql_donde;
 function sqlCampo($dato, $campo, $tipo)
 {
     $ou = '';
     $perfiles = explode(', ', trim($campo['perfiles']));
     $permisos = explode(', ', trim($campo['permisos']));
     $permiso = $permisos[array_search($_SESSION['perfiles_id'], $perfiles)];
     if ($campo['nombre'] == 'estado' || $campo['nombre'] == 'cliente_tipo' || $campo['nombre'] == 'producto') {
         $permiso = 'w';
     }
     if ($permiso == 'w') {
         if ($campo['diccionario'] == '1') {
             if ($dato['id'] == '0' && '' != trim($dato['value'])) {
                 $table = $campo['nombre'];
                 if ($campo['diccionario_nombre'] != '') {
                     $table = $campo['diccionario_nombre'];
                 }
                 $this->q->fields = array('id' => '');
                 $this->q->sql = 'SELECT id FROM venta_' . $table . ' WHERE nombre="' . Utilidades::sanear_complete_string($dato['value']) . '"';
                 // echo $this->q->sql;
                 $this->q->data = NULL;
                 $data = $this->q->exe();
                 if (is_array($data)) {
                     $dato = $data[0]['id'];
                 } else {
                     $dep_campo = '';
                     $dep_value = '';
                     if ($dato['dependencia'] != '') {
                         $dep_campo = ', ' . $dato['dependencia'];
                         $dep_value = ', ' . $dato['dependencia_value'];
                     }
                     $this->q->fields = array();
                     $this->q->sql = 'INSERT INTO venta_' . $table . ' (nombre' . $dep_campo . ') VALUES ("' . utf8_decode($dato['value']) . '"' . $dep_value . ')';
                     $this->q->data = NULL;
                     $this->q->exe();
                     // capturando
                     $this->q->fields = array('id' => '');
                     $this->q->sql = 'SELECT id FROM venta_' . $table . ' WHERE nombre="' . $dato['value'] . '"';
                     $this->q->data = NULL;
                     $data = $this->q->exe();
                     $dato = $data[0]['id'];
                 }
             } elseif ($dato['id'] == '0' && '' == trim($dato['value'])) {
                 $dato = '0';
             } else {
                 $dato = $dato['id'];
             }
         }
         if ($tipo == 'insert') {
             $ou['campos'] = $campo['nombre'];
             $ou['valores'] = '"' . utf8_decode($dato) . '"';
         } elseif ($tipo == 'update') {
             $ou['sql'] = $campo['nombre'] . '="' . utf8_decode($dato) . '"';
         }
         $ou['dato'] = utf8_decode($dato);
     }
     return $ou;
 }
<?php

include "../../../../../lib/mysql/dbconnector.php";
include "../../../../../lib/mysql/conexion01.php";
include "../../../../../lib/mysql/utilidades.php";
include "../../../../../lib/html/tabla.php";
include "../../../modelo/ModeloVenta.php";
$venta = new ModeloVenta();
// -------------------------------------------------------- INPUT
$in['termino'] = Utilidades::clear_input(Utilidades::sanear_complete_string($_REQUEST['term']));
$in['campo'] = Utilidades::clear_input_id($_REQUEST['campo']);
$in['dependencia'] = Utilidades::clear_input($_REQUEST['dependencia']);
$in['dependencia_value'] = Utilidades::clear_input($_REQUEST['dependencia_value']);
$in['diccionario'] = Utilidades::clear_input($_REQUEST['diccionario']);
// print_r($in);
// --------------------------------------------------------- DATA
$ou = $venta->getAutoComplete($in);
// --------------------------------------------------------- TEST
$json = array();
if (is_array($ou)) {
    foreach ($ou as $row) {
        $tmp = array();
        $tmp['value'] = utf8_encode($row['termino']);
        $tmp['label'] = utf8_encode($row['termino']);
        $tmp['id'] = $row['id'];
        $json[] = $tmp;
    }
}
echo json_encode($json);