/**
  *
  * @param \Core_Dto_Search $dto
  * @return boolean
  */
 public function inMyDashboard(\Core_Dto_Search $dto)
 {
     $entityTramite = $this->find($dto->getSqArtefato());
     if ($entityTramite && !$entityTramite->getSqPessoaRecebimento()) {
         return false;
     }
     $isSqPessoa = $entityTramite && $entityTramite->getSqPessoaRecebimento() && $entityTramite->getSqPessoaRecebimento()->getSqPessoa() == $dto->getSqPessoa();
     $isSqPessoaDestino = $entityTramite && $entityTramite->getSqPessoaDestino() && $entityTramite->getSqPessoaDestino()->getSqPessoa() == $dto->getSqPessoaDestino();
     $isCanceladoOuDevolvido = $entityTramite && in_array($entityTramite->getSqStatusTramite()->getSqStatusTramite(), array(\Core_Configuration::getSgdoceStatusTramiteCancelado(), \Core_Configuration::getSgdoceStatusTramiteDevolvido()));
     if ($entityTramite && (!$isSqPessoa || !$isSqPessoaDestino && !$isCanceladoOuDevolvido)) {
         return false;
     }
     return true;
 }
 public function isReturned()
 {
     return $this->getSqStatusTramite()->getSqStatusTramite() == \Core_Configuration::getSgdoceStatusTramiteDevolvido();
 }
 /**
  *
  * @param integer $sqArtefato
  * @param integer $sqPessoaDestino opcional só é passado quando artefato é sigiloso
  * @param integer $sqPessoaDestinoInterno opcional só é passado quando artefato é sigiloso
  * @return \Sgdoce\Model\Entity\TramiteArtefato
  * @throws Exception
  */
 public function goBack($sqArtefato, $sqPessoaDestino = NULL, $sqPessoaDestinoInterno = NULL)
 {
     $objUltTramiteArtefato = $this->getLastTramite($sqArtefato);
     if (!$objUltTramiteArtefato instanceof \Sgdoce\Model\Entity\VwUltimoTramiteArtefato) {
         throw new Exception(\Core_Registry::getMessage()->translate('MN163'));
     }
     $sqPessoa = $sqPessoaDestinoInterno ?: \Core_Integration_Sica_User::getPersonId();
     $sqUnidadeOrg = $sqPessoaDestino ?: \Core_Integration_Sica_User::getUserUnit();
     // RECEBE ARTEFATO.
     $entArtefato = $this->getEntityManager()->getPartialReference('app:Artefato', $objUltTramiteArtefato->getSqArtefato());
     $entStatusTramite = $this->getEntityManager()->getPartialReference('app:StatusTramite', \Core_Configuration::getSgdoceStatusTramiteDevolvido());
     $entPessoa = $this->getEntityManager()->getPartialReference('app:VwPessoa', $sqPessoa);
     $entPessoaDestino = $this->getEntityManager()->getPartialReference('app:VwPessoa', $sqUnidadeOrg);
     $entUnidadeOrg = $this->getEntityManager()->getPartialReference('app:VwUnidadeOrg', \Core_Integration_Sica_User::getUserUnit());
     $newTramiteArtefato = $this->_newEntity('app:TramiteArtefato');
     $artefatoDto = \Core_Dto::factoryFromData(array('sqArtefato' => $sqArtefato), 'search');
     $nextNuTramite = $this->getNextTramiteNumber($artefatoDto);
     $newTramiteArtefato->setSqArtefato($entArtefato);
     $newTramiteArtefato->setSqPessoaTramite($entPessoa);
     $newTramiteArtefato->setSqUnidadeOrgTramite($entUnidadeOrg);
     $newTramiteArtefato->setSqPessoaDestino($entPessoaDestino);
     $newTramiteArtefato->setSqPessoaDestinoInterno($entPessoa);
     $newTramiteArtefato->setSqPessoaRecebimento($entPessoa);
     $newTramiteArtefato->setSqStatusTramite($entStatusTramite);
     $newTramiteArtefato->setNuTramite($nextNuTramite);
     $newTramiteArtefato->setDtTramite(new \Zend_Date(\Zend_Date::now()));
     $newTramiteArtefato->setDtDevolucao(new \Zend_Date(\Zend_Date::now()));
     $newTramiteArtefato->setInImpresso(true);
     $this->getEntityManager()->persist($newTramiteArtefato);
     $this->getEntityManager()->flush($newTramiteArtefato);
     return $newTramiteArtefato;
 }