function registraUsuario($record_p)
 {
     require_once "registraevento.php";
     $fp = fopen('/tmp/matest.log', 'a');
     fwrite($fp, "BEGIN ==> registrando Usuario\n");
     fwrite($fp, print_r($record_p, TRUE));
     fwrite($fp, "END ==> registrando Usuario\n");
     fclose($fp);
     $rutusuario = isset($record_p['rutusuario']) ? trim($record_p['rutusuario']) : NULL;
     $rutempresa = isset($record_p['rutempresa']) ? trim($record_p['rutempresa']) : NULL;
     $email = isset($record_p['email']) ? trim($record_p['email']) : NULL;
     $password = isset($record_p['password']) ? trim($record_p['password']) : NULL;
     $idmodulo = isset($record_p['idmodulo']) ? trim($record_p['idmodulo']) : NULL;
     $idmovil = isset($record_p['imei']) ? trim($record_p['imei']) : NULL;
     $rutusuario = str_replace('.', '', $rutusuario);
     $rutusuario = str_replace('-', '', $rutusuario);
     $rutempresa = str_replace('.', '', $rutempresa);
     $rutempresa = str_replace('-', '', $rutempresa);
     $rutusuario = strtoupper($rutusuario);
     $rutempresa = strtoupper($rutempresa);
     $ultimoregistro_r = getUltimoRegistroByModulo($idmodulo);
     $tsUltimoRegistro = strtotime($ultimoregistro_r['fechahora']);
     $TMAX_REGISTRO = 0;
     if ($idmodulo == NULL) {
         $response = "KO.IDMODULO";
         $description = 'Modulo No Valido';
     } else {
         if ($idmovil == NULL) {
             $response = "KO.IDMOVIL";
             $description = 'IMEI No Valido';
         } else {
             if (validaRut($rutusuario) == NULL) {
                 $response = "KO.RUTUSUARIO";
                 $description = 'Rut Usuario no valido';
             } else {
                 if (validaRut($rutempresa) == NULL) {
                     $response = "KO.RUTEMPRESA";
                     $description = 'Rut Empresa no valido';
                 } else {
                     if (validaMail($email) == false) {
                         $response = "KO.EMAIL";
                         $description = 'Correo Electrónico incorrecto';
                     } else {
                         if (($organizacion_r = getRegistroOrganizacion($rutempresa)) == NULL) {
                             $response = "KO.EMPNOTFOUND";
                             $description = 'Empresa no encontrada';
                         } else {
                             if (($usuario_r = getRegistroUsuarioByRut($organizacion_r['idcliente'], $rutusuario)) == NULL) {
                                 $response = "KO.USRNOTFOUND ";
                                 $description = 'Usuario [' . $rutusuario . '] no encontrado en cliente ' . $organizacion_r['idcliente'];
                             } else {
                                 if ($usuario_r['idorganizacion'] != $organizacion_r['rut']) {
                                     $response = "KO.USRNOTEMPRESA";
                                     $description = 'Usuario [' . $usuario_r['rut'] . '] de [' . $usuario_r['idorganizacion'] . '] no encontrado en empresa [' . $organizacion_r['rut'] . ']';
                                 } else {
                                     if (!($usuario_r['email'] == $email || $usuario_r['email2'] == $email)) {
                                         $response = "KO.EMAILNOREGISTRADO";
                                         $description = 'Email No Registrado';
                                     } else {
                                         if (($password_r = getRegistroUsuarioByPassword($organizacion_r['idcliente'], $usuario_r['idusuario'])) == NULL) {
                                             $response = "KO.PWDNOTFOUND";
                                             $description = 'Usuario o contraseña no registrada';
                                         } else {
                                             if ($password_r['apassword'] !== $password) {
                                                 $response = "KO.PWDWRONG";
                                                 $description = 'Contraseña Incorrecta';
                                             } else {
                                                 if (time() - $tsUltimoRegistro < $TMAX_REGISTRO * 60) {
                                                     $deltaT = (time() - $tsUltimoRegistro) / 60;
                                                     $deltaT = round($deltaT, 0);
                                                     $response = "KO.USRALRREGISTERED";
                                                     $description = 'Usuario ya registrado hace menos de ' . $TMAX_REGISTRO . ' minutos|';
                                                     $description .= "para dispositivo [{$idmodulo}]|";
                                                     $description .= 'Espere ' . ($TMAX_REGISTRO - $deltaT) . ' minutos';
                                                 } else {
                                                     $response = "OK";
                                                     $description = 'Usuario Registrado|';
                                                     $description .= 'Nombre: ' . $usuario_r['apellidos'] . ',' . $usuario_r['nombres'] . '|';
                                                     $description .= 'Rut Empresa Usuario: ' . $usuario_r['idorganizacion'] . '|';
                                                     $description .= '================== EMPRESA ==================|';
                                                     $description .= 'Rut Empresa: ' . $organizacion_r['rut'] . "|";
                                                     $description .= 'Razon Social: ' . $organizacion_r['razonsocial'] . "|";
                                                     $description .= 'Nombre Fantasia: ' . $organizacion_r['nombrefantasia'] . "|";
                                                     $description .= 'Dirección: ' . $organizacion_r['direccion'] . "|";
                                                     $description .= 'Telefono: ' . $organizacion_r['telefono'] . "|";
                                                     $description .= 'Email Empresa: ' . $organizacion_r['email'];
                                                     $myparam['idmodulo'] = $idmodulo;
                                                     $myparam['idcliente'] = $organizacion_r['idcliente'];
                                                     $myparam['fechahora'] = strftime('%Y-%m-%d %H:%M:%S', time());
                                                     $myparam['rutusuario'] = $usuario_r['rut'];
                                                     $myparam['rutorganizacion'] = $organizacion_r['rut'];
                                                     $myparam['email'] = $usuario_r['email'];
                                                     if (actualizaModulo($myparam) != 0) {
                                                         $response = "KO.ACTMODULO";
                                                         $description = $myparam['msg'];
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     //~ $description = 'En desarrollo ('.strftime('%Y-%m-%d %H:%M:%S',time()).')' ;
     $xml = '<?xml version="1.0"?>';
     $xml .= '<result>';
     $xml .= '<response>' . $response . '</response>';
     $xml .= '<description>' . $description . '</description>';
     $xml .= '</result>';
     return $xml;
 }
function registraEventoMarca(&$record_p)
{
    $retval = 0;
    $record_p['ticket'] = 'NO TICKET DISPONIBLE';
    $idacceso = NULL;
    $xmldata = $record_p['xmldata'];
    $xml = simplexml_load_string($xmldata);
    $fo = fopen("/tmp/registramarca.log", "a+");
    fputs($fo, "==================================================================\n");
    foreach ($xml as $key => $valor) {
        $data = "KEY {$key} VALOR {$valor}\n";
        fputs($fo, $data);
        $record[$key] = $valor;
    }
    fclose($fo);
    if (!isset($record['idevento'])) {
        return -2;
    }
    switch ($record['idevento']) {
        case 'A':
            $record['idevento'] = 'REPORT.ACCESO';
            $record['idestado'] = $record['idio'] == 'E' ? 'ENTRADA' : 'SALIDA';
            break;
        case 'I':
            $record['idevento'] = 'INICIO.VIAJE';
            break;
        case 'T':
            $record['idevento'] = 'TERMINO.VIAJE';
            break;
        case 'S':
            $record['idevento'] = 'REPORT.ESTADO';
            break;
        case 'P':
            $record['idevento'] = 'REPORT.POSICION';
            break;
        default:
            break;
    }
    $idacceso = isset($record['idacceso']) ? $record['idacceso'] : NULL;
    $record['idmodulo'] = isset($record['idmodulo']) ? $record['idmodulo'] : $idacceso;
    $record['idmovil'] = isset($record['idmovil']) ? $record['idmovil'] : $idacceso;
    $record['app_tipo'] = isset($record_p['app_tipo']) ? $record_p['app_tipo'] : NULL;
    $record['app_version'] = isset($record_p['app_version']) ? $record_p['app_version'] : NULL;
    //~ $fo = fopen("/tmp/registramarca.log","a+");
    //~ $data = "IDACCESO $idacceso\n";
    //~ fputs($fo,$data);
    //~ fclose($fo);
    if ($idacceso == NULL) {
        return 1;
    }
    if ($record['app_tipo'] == 'mamovil') {
        $dummy = getRegistroOrganizacion($record['idempresa']);
        if ($dummy == NULL) {
            return 6;
        }
    } else {
        $dummy = getRegistroByModulo($idacceso);
        if ($dummy == NULL) {
            return 2;
        }
    }
    $idcliente = $dummy['idcliente'];
    if ($idcliente == NULL) {
        return 3;
    }
    $record['tablename'] = $idcliente . '_db.stk_registroeventos';
    $retcode = registraAcceso($record);
    if (!($retcode == 0 || $retcode == 1)) {
        return 4;
    }
    #  $data = "SQL: $sqlString\n";
    #  fputs($fo,$data);
    #KEY idusuario  VALOR 109774022
    #KEY fechahora  VALOR 2015-06-30 17:21:23
    #KEY idfinger  VALOR -1
    #KEY idgroup  VALOR 0
    #KEY idevento  VALOR A
    #KEY idusuariosesion  VALOR NA
    #KEY idacceso  VALOR 00D069495C8E
    #KEY idio  VALOR S
    #KEY idtipoevento  VALOR RUT.MANUAL
    #KEY idresultado  VALOR OK
    #KEY score  VALOR 0
    #KEY fix  VALOR 65538
    #KEY tsgps  VALOR 0.000000
    #KEY latitud  VALOR -33.028978
    #KEY longitud  VALOR -71.580785
    #KEY altura  VALOR 100.000000
    #KEY rumbo  VALOR 0.000000
    #KEY velocidad  VALOR 0.000000
    #KEY flagenviado  VALOR 0
    //~ $record_p ['ticket'] = 'NO TICKET DISPONIBLE';
    $rutusuario = isset($record['idusuario']) ? trim($record['idusuario']) : NULL;
    $password = isset($record['password']) ? trim($record['password']) : NULL;
    $usuario_r = getRegistroUsuarioByRut($idcliente, $rutusuario);
    $empresa_r = getRegistroOrganizacion($usuario_r['idorganizacion']);
    if ($password != NULL) {
        $password_r = getRegistroUsuarioByPassword($idcliente, $usuario_r['idusuario']);
        if ($password_r['apassword'] !== $password) {
            $record_p['ticket'] = "Contraseña incorrecta ({$idcliente},{$rutusuario}) ";
            return 5;
        }
    }
    global $tzoffset_g;
    if ($tzoffset_g == NULL) {
        $tzoffset_g = -3;
    }
    $nombre = $usuario_r['nombres'] . ' ' . $usuario_r['apellidos'];
    $email = $usuario_r['email'];
    $fechahora = strftime('%d-%m-%Y %H:%M:%S', strtotime($record['fechahora']) + $tzoffset_g * 3600);
    $fechahoragps = strftime('%d-%m-%Y %H:%M:%S', strtotime($record['fechahoragps']) + $tzoffset_g * 3600);
    $record_p['ticket'] = '---------- CONTROL ASISTENCIA ----------|';
    $record_p['ticket'] .= '*** TRABAJADOR ***|';
    $record_p['ticket'] .= $nombre . '|';
    $record_p['ticket'] .= 'RUT: ' . $usuario_r['rut'] . '|';
    $record_p['ticket'] .= 'EMail: ' . $email . '|';
    $record_p['ticket'] .= 'Hora: ' . $fechahoragps . '|';
    $record_p['ticket'] .= 'Hora Telefono: ' . $fechahora . '|';
    $record_p['ticket'] .= '*** EMPLEADOR ***|';
    $record_p['ticket'] .= $empresa_r['razonsocial'] . '|';
    $record_p['ticket'] .= 'RUT: ' . $empresa_r['rut'] . '|';
    $record_p['ticket'] .= 'DIRECCION: ' . $empresa_r['direccion'] . '|';
    $record_p['ticket'] .= '*** DATOS ADICIONALES ***|';
    $record_p['ticket'] .= 'TRANSACCION: ' . $record['idtransaccion'] . '|';
    $record_p['ticket'] .= 'EVENTO: ' . $record['idtipoevento'] . '|';
    $record_p['ticket'] .= 'MODULO: ' . $record['idmodulo'] . '|';
    $record_p['ticket'] .= 'POSICION: (' . $record['latitud'] . ',' . $record['longitud'] . ')';
    $usuarios_r[] = array("idusuario" => $usuario_r['rut'], "to" => "to", "name" => $nombre, "email" => $email);
    $subject = "[MIASISTENCIA] Marca asistencia {$fechahora}";
    $mailBody = str_replace('|', '<br />', $record_p['ticket']);
    enviaMail($usuarios_r, $subject, $mailBody);
    return $retval;
}