Relatório por vendedor

Bom dia Pessoal, estou com um problema e ficaria se pudessem me ajudar.

Quero criar um relatório que será exportado do suitecrm, que mostre o log de acesso de cada vendedor que tenho cadastrado no sistema. Basicamente o relatório deve conter quem acessou o sistema num período x e quantas vezes acessou.
Há alguma forma de fazer isso? Alguma coisa pra auditoria no sistema?

A minha versão do suitecrm é a 7.10.7

Obrigado.

Não tem essa funcionalidade, mas há um plugins que trata disso, acho que se chama “User actions” ou algo assim.

Mas também pode fazer isso com uma costumização simples em PHP, tem logic hooks para capturar o momento do login e logout, basta escrever para um ficheiro (ou BD) nesses momentos.

Há algumas threads nestes forums sobre isto (em inglês)…

Resolvi, realizei as customizações necessárias. Obrigado.

Óptimo!

Quer partilhar? Seria útil para outros… obrigado!

A minha versão do CRM é 7.10.7.

Bem, fiz apenas a parte de registrar os logs, ou seja, não fiz a interface de acesso a esses dados registrados, pois ainda não tive tempo. Quando é necessário emitir os dados de log eu simplesmente executo no banco de dados uma consulta que já deixei pronta e salvo a consulta em um arquivo do Excel, um CSV.

Primeiro eu comecei criando uma tabela com o nome “user_logs”, para poder armazenar os dados de log. Nessa tabela eu coloquei como atributo: id, user_id e data_registro.
Em seguida encontrei um método que busca a senha do usuário quando o mesmo faz o seu login.
O nome do método é findUserPassword e se encontra no seguinte endereço: \modules\Users\User.php

O método modificado se encontra assim:

 public static function findUserPassword($name, $password, $where = '', $checkPasswordMD5 = true)
    {
        if (!$name) {
            $GLOBALS['log']->fatal('Invalid Argument: Username is not set');
            return false;
        }
        $db = DBManagerFactory::getInstance();
        $before = $name;
        $name = $db->quote($name);
        if ($before && !$name) {
            $GLOBALS['log']->fatal('DB Quote error: return value is removed, check the Database connection.');
            return false;
        }
        $query = "SELECT * from users where user_name='$name'";
        if (!empty($where)) {
            $query .= " AND $where";
        }
        $result = $db->limitQuery($query, 0, 1, false);
        if (!empty($result)) {
            $row = $db->fetchByAssoc($result);
            if (!$checkPasswordMD5 || self::checkPasswordMD5($password, $row['user_hash'])) {
				
				//registrar log
				$result = $db->query("INSERT INTO User_logs (user_id) VALUES('".$row['id']."')");
				
                return $row;
            }
        }
        return false;
    }

Com isso, toda vez que alguém faz login, um registro é cadastrado na tabela user_log.

Espero ajudar. Qualquer dúvida estou a disposição. Assim que implementar a interface de acesso a esses dados eu compartilho aqui no fórum.

Ok, obrigado, isto já é útil.

Penso que a solução ideal seria integrar com o registo já existente no SuiteCRM, que é chamado “Tracker” (veja tabela no banco de dados com esse nome, e classes de PHP que a referem).

Assim já não seria necessário criar interface novo. Mas dá um pouco mais de trabalho a perceber como está feito o “tracker” genérico e adaptar a este uso…