/**
  * Retorna uma instancia de Contribuinte Eventual atravez do codigo do contribuinte.
  *
  * @param integer $iCodigoContribuinte
  * @return Contribuinte_Model_ContribuinteEventual|null|object
  * @throws Exception
  */
 public static function getById($iCodigoContribuinte)
 {
     $oContribuinte = Administrativo_Model_UsuarioContribuinte::getById($iCodigoContribuinte);
     if ($oContribuinte->getCGM() == '') {
         throw new Exception('Contribuinte eventual não possui CGM.');
     }
     $aParametros = array('cgm' => $oContribuinte->getCGM());
     $oCgm = WebService_Model_Ecidade::processar('pesquisaCgmByCgm', $aParametros);
     if (!empty($oCgm)) {
         $oContribuinteEventual = Contribuinte_Model_ContribuinteEventual::preencherInstanciaContribuinte($oCgm);
         $oContribuinteEventual->setIdUsuarioContribuinte($oContribuinte->getId());
         return $oContribuinteEventual;
     }
     return NULL;
 }
 /**
  * Busca permissões do usuário
  */
 public function getPermissaoAction()
 {
     $iIdUsuarioContribuinte = $this->_getParam('usuario_contribuinte');
     $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getById($iIdUsuarioContribuinte);
     $aRetornoJson = array();
     if ($oUsuarioContribuinte) {
         $aAcoes = $oUsuarioContribuinte->getAcoes();
         foreach ($aAcoes as $oAcao) {
             $aRetornoJson[] = $oAcao->getId();
         }
     } else {
         $iIdUsuario = $this->_getParam('usuario');
         $oUsuario = Administrativo_Model_Usuario::getById($iIdUsuario);
         foreach ($oUsuario->getAcoes() as $oAcao) {
             $aRetornoJson[] = $oAcao->getId();
         }
     }
     echo $this->getHelper('json')->sendJson($aRetornoJson);
 }
 /**
  * Retorna uma instancia de Contribuinte atravéz do código do contribuinte.
  *
  * @param $iCodigoContribuinte
  * @return Contribuinte_Model_Contribuinte|null|object
  */
 public static function getById($iCodigoContribuinte)
 {
     $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getById($iCodigoContribuinte);
     $oContribuinteWebService = self::getDadosContribuinteEcidade($oUsuarioContribuinte->getIm());
     if (empty($oContribuinteWebService)) {
         return NULL;
     }
     $oContribuinte = self::preencherInstanciaContribuinte($oContribuinteWebService);
     $oContribuinte->setIdUsuarioContribuinte($iCodigoContribuinte);
     return $oContribuinte;
 }
 /**
  * Recursos / Previlegios
  */
 protected function _setupResourcesPrivilegesUserAuth()
 {
     $aDadosLogin = Zend_Auth::getInstance()->getIdentity();
     $oUsuario = Administrativo_Model_Usuario::getByAttribute('login', $aDadosLogin["login"]);
     $oContribuinte = new Zend_Session_Namespace('nfse');
     if (!isset($oContribuinte->contribuinte)) {
         $aUsuarioAcoes = $oUsuario->getAcoes();
         if (is_array($aUsuarioAcoes) && count($aUsuarioAcoes) > 0) {
             foreach ($aUsuarioAcoes as $oUsuarioAcao) {
                 $sControle = $oUsuarioAcao->getControle()->getIdentidade();
                 $sModulo = $oUsuarioAcao->getControle()->getModulo()->getIdentidade();
                 $oResource = new Zend_Acl_Resource("{$sModulo}:{$sControle}");
                 if (!$this->_acl->has($oResource->getResourceId())) {
                     $this->_acl->addResource($oResource);
                 }
                 $oAcoesExtra = explode(',', trim($oUsuarioAcao->getSubAcoes()));
                 $aAcoesExtra = array_merge($oAcoesExtra, array($oUsuarioAcao->getAcaoAcl()));
                 foreach ($aAcoesExtra as $sAcao) {
                     if (empty($sAcao)) {
                         continue;
                     }
                     $this->_acl->allow('Usuario', $oResource->getResourceId(), $sAcao);
                 }
             }
         }
     }
     if (!empty($oContribuinte->contribuinte)) {
         $iCodigoUsuarioContribuinte = $oContribuinte->contribuinte->getIdUsuarioContribuinte();
         $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getById($iCodigoUsuarioContribuinte);
         foreach ($oUsuarioContribuinte->getUsuarioContribuinteAcoes() as $oPermissoes) {
             $oAcoesExtra = explode(',', trim($oPermissoes->getAcao()->getSubAcoes()));
             $aAcoesExtra = array_merge($oAcoesExtra, array($oPermissoes->getAcao()->getAcaoAcl()));
             $sModulo = $oPermissoes->getAcao()->getControle()->getModulo()->getIdentidade();
             $sControle = $oPermissoes->getAcao()->getControle()->getIdentidade();
             $oResource = new Zend_Acl_Resource("{$sModulo}:{$sControle}");
             if (!$this->_acl->has($oResource->getResourceId())) {
                 $this->_acl->addResource($oResource);
             }
             foreach ($aAcoesExtra as $sAcao) {
                 if (empty($sAcao)) {
                     continue;
                 }
                 $this->_acl->allow('Usuario', $oResource->getResourceId(), $sAcao);
             }
         }
     }
 }
 /**
  * Retorna a Instância do contribuinte
  * @return Contribuinte_Model_ContribuinteAbstract
  */
 public static function getContribuinte($iCodigoContribuinte)
 {
     $oContribuinte = Administrativo_Model_UsuarioContribuinte::getById($iCodigoContribuinte);
     $iCodigoUsuario = $oContribuinte->getId();
     $oUsuarioRetorno = NULL;
     switch ($oContribuinte->getTipoContribuinte()) {
         case Administrativo_Model_UsuarioContribuinte::CONTRIBUINTE_EVENTUAL:
             $oUsuarioRetorno = Contribuinte_Model_ContribuinteEventual::getById($iCodigoUsuario);
             break;
         case Administrativo_Model_UsuarioContribuinte::CONTRIBUINTE_MUNICIPAL:
             $oUsuarioRetorno = Contribuinte_Model_Contribuinte::getById($iCodigoUsuario);
             break;
     }
     return $oUsuarioRetorno;
 }
 /**
  * Metodo responsavel por criar as guias dms do prestador
  *
  * @param Contribuinte_Model_Dms $oDms
  * @param                        $sDataPagamento
  * @return StdClass
  */
 public static function gerarGuiaDmsPrestador(Contribuinte_Model_Dms $oDms, $sDataPagamento)
 {
     try {
         $oDoctrine = Zend_Registry::get('em');
         $oDoctrine->getConnection()->beginTransaction();
         $aNotas = array();
         foreach ($oDms->getDmsNotas() as $oDadosNota) {
             $oNota = new Contribuinte_Model_DmsNota($oDadosNota);
             // Ignora notas prestadas e retidas pelo tomador
             if ($oDms->getOperacao() == 's' && $oNota->getServicoImpostoRetido() == TRUE) {
                 continue;
             }
             // Ignora notas tomadas e retidas pelo tomador
             if ($oDms->getOperacao() == 'e' && $oNota->getServicoImpostoRetido() == FALSE) {
                 continue;
             }
             // Ignora notas anuladas, extraviadas ou canceladas
             if ($oNota->getStatus() == 5 || in_array($oNota->getSituacaoDocumento(), array('E', 'C'))) {
                 continue;
             }
             // Ignora notas isentas
             if ($oNota->getEmiteGuia() == FALSE) {
                 continue;
             }
             // Ignora notas com aliquota ou servico zerados
             if (floatval($oNota->getServicoAliquota()) <= 0) {
                 continue;
             } else {
                 if (floatval($oNota->getServicoValorImposto()) <= 0) {
                     continue;
                 }
             }
             $aNotas[$oNota->getId()] = $oNota;
         }
         $iMesCompetencia = $oDms->getMesCompetencia();
         $iAnoCompetencia = $oDms->getAnoCompetencia();
         $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getById($oDms->getIdContribuinte());
         $oContribuinte = Administrativo_Model_UsuarioContribuinte::getContribuinte($oDms->getIdContribuinte());
         // Salva guia antes de ser gerada no e-cidade
         $oGuia = new Contribuinte_Model_Guia();
         $sDataPagamentoGuia = DBSeller_Helper_Date_Date::invertDate($sDataPagamento);
         $oGuia->gerarGuiaDmsPrestador($oContribuinte, new DateTime($sDataPagamentoGuia), $iMesCompetencia, $iAnoCompetencia);
         // Envia Guia para o e-cidade
         $oGuiaGerar = self::montaDadosGuia($oUsuarioContribuinte, $iAnoCompetencia, $iMesCompetencia, $aNotas, $sDataPagamento, $oGuia->getId());
         $oGuiaGerada = self::gerarGuia($oGuiaGerar, $sDataPagamento, self::TIPO_DEBITO_RETIDO);
         $oDms->setCodigoPlanilha($oGuiaGerada->codigo_planilha);
         $oDms->setStatus('emitida');
         $aDadosNotas = $oGuiaGerar->notas;
         $aDadosNotas += $oGuiaGerada->notas;
         foreach ($aDadosNotas as $oNotaProcessada) {
             $oNota = $aNotas[$oNotaProcessada->codigo_documento];
             $oNota->setCodigoNotaPlanilha($oNotaProcessada->codigo_nota_planilha);
             $oNota->setNumpre($oGuiaGerada->debito_planilha);
         }
         $oDms->persist();
         $oGuia->complementaGuiaDmsPrestador($oGuiaGerada->debito, $oDms);
         $oGuiaGerada->arquivo_guia = self::salvarPdf($oGuiaGerada->debito->dados_boleto->arquivo_guia, 'guia_substituto');
         $oDoctrine->getConnection()->commit();
         return $oGuiaGerada;
     } catch (Exception $oError) {
         $oDoctrine->getConnection()->rollback();
         return $oError->getMessage();
     }
 }