public static function movimenta($idsolicitacao, $secretariadestino, $despacho, $arquivo)
 {
     if (empty($secretariadestino)) {
         return "O campo secretaria de destino deve ser preenchido";
     }
     if (empty($despacho)) {
         return "O campo despacho deve ser preenchido";
     }
     //verifica se existe alguma movimentacao
     $sql = "select count(*) as tot from lda_movimentacao where idsolicitacao = {$idsolicitacao}";
     $row = mysql_fetch_array(execQuery($sql));
     //se existir movimentação
     if ($row["tot"] > 0) {
         //nao permite movimentar se a ultima movimentação não tiver sido dado o recebimento
         $sql = "select count(*) from lda_movimentacao \n                        where idmovimentacao = (select max(idmovimentacao) from lda_movimentacao where idsolicitacao = {$idsolicitacao})\n                              and datarecebimento is null";
         $row = mysql_fetch_array(execQuery($sql));
         //se ultima movimentação nao tiver sido recebida
         if ($row["tot"] > 0) {
             return "Não é possível movimentar solicitação que ainda não foi recebida!";
         }
     }
     //recupera o status da demanda
     $sql = "select situacao from lda_solicitacao where idsolicitacao = {$idsolicitacao}";
     $row = mysql_fetch_array(execQuery($sql));
     $status = $row["situacao"];
     $con = db_open_trans();
     $all_query_ok = true;
     $sql = "INSERT INTO lda_movimentacao \n                        (\n                         idsolicitacao,\n                         idsecretariaorigem,\n                         idsecretariadestino,\n                         dataenvio,\n                         idusuarioenvio,\n                         despacho\n                        ) VALUES (\n                         {$idsolicitacao},\n                         " . getSession("idsecretaria") . ",\n                         {$secretariadestino},\n                         NOW(),\n                         " . getSession("uid") . ",\n                         '" . str_replace("'", "\\'", $despacho) . "'\n                        )\n                    ";
     if (!$con->query($sql)) {
         $con->rollback();
         return "Erro na movimentação da solicitação.";
     } else {
         //se houver arquivo faz upload
         if (!empty($arquivo["tmp_name"])) {
             $idmovimentacao = $con->insert_id;
             $dir = getDiretorio("lda") . "/";
             $ext = getExtensaoArquivo($arquivo['name']);
             $fullArquivo = "lda_" . $idsolicitacao . "_mov_" . $idmovimentacao . "." . $ext;
             if (!@move_uploaded_file($arquivo["tmp_name"], $dir . $fullArquivo)) {
                 $erro = "Ocorreu um erro ao efetuar o upload do arquivo " . $dir . $fullArquivo . "; nome:" . $arquivo["tmp_name"];
                 $all_query_ok = false;
                 break;
             } else {
                 $sql = "update lda_movimentacao set arquivo = '{$fullArquivo}' where idmovimentacao = {$idmovimentacao}";
                 if (!$con->query($sql)) {
                     $erro = "Ocorreu um erro ao efetuar atualizar nome do arquivo";
                     $all_query_ok = false;
                     break;
                 }
             }
         }
         //se o status da demanda for "aberto" altera para "em tramitação"
         if ($status == "A") {
             $sql = "update lda_solicitacao set situacao = 'T' where idsolicitacao={$idsolicitacao}";
             if (!$con->query($sql)) {
                 $con->rollback();
                 return "Ocorreu um erro ao atualizar a situação da solicitação";
             }
         }
         $con->commit();
         //envia email de aviso de nova solicitação ao SIC de destino
         Solicitacao::enviaEmailSic($secretariadestino, "M");
     }
     return "";
 }