/**
  * Retorna vetor de contribuintes.
  *
  * @tutorial Com os seguintes campos:
  *   tipo,
  *   cgccpf,
  *   nome,
  *   nome_fanta,
  *   identidade,
  *   inscr_est,
  *   tipo_lograd,
  *   lograd,
  *   issruas.q02_numero,
  *   complemento,
  *   bairro,
  *   cod_ibge,
  *   munic,
  *   uf,
  *   cod_pais,
  *   pais,
  *   cep,
  *   telefone,
  *   fax,
  *   celular,
  *   email,
  *   inscricao,
  *   data_inscricao,
  *   tipo_classificacao,
  *   optante_simples,
  *   sub_tributario,
  *   exigibilidade,
  *   regime,
  *   incentivo_fiscal
  * @return Administrativo_Model_Contribuinte[]
  */
 public function getContribuintes()
 {
     $aUsuariosContribuintes = $this->getUsuariosContribuintes();
     $aContribuintes = array();
     foreach ($aUsuariosContribuintes as $oUsuarioContribuinte) {
         $oUsuarioRetorno = Administrativo_Model_UsuarioContribuinte::getContribuinte($oUsuarioContribuinte->getId());
         $aContribuintes[$oUsuarioContribuinte->getId()] = $oUsuarioRetorno;
     }
     return $aContribuintes;
 }
 /**
  * Tela para configurar as permissões
  */
 public function permissaoAction()
 {
     parent::noTemplate();
     $usuario_cont_id = $this->getRequest()->getParam('id');
     $usuario_cont = Administrativo_Model_UsuarioContribuinte::getById($usuario_cont_id);
     $usuario = $usuario_cont->getUsuario();
     // Gera um vetor com todas as acoes permitidas a esse usuario
     $acoes = $usuario_cont == NULL ? array() : $usuario_cont->getAcoes();
     $permissoes = array();
     foreach ($acoes as $a) {
         $permissoes[] = $a->getId();
     }
     $this->view->contribuinte = Administrativo_Model_UsuarioContribuinte::getContribuinte($usuario_cont->getId());
     $this->view->usuario_contribuinte = $usuario_cont->getId();
     $this->view->usuario = $usuario;
     $this->view->modulos = Administrativo_Model_Modulo::getByAttribute('modulo', array('Contribuinte', 'WebService'));
     if (count($this->view->modulos) == 1) {
         $this->view->modulos = array($this->view->modulos);
     }
     $this->view->permissoes = $permissoes;
     $this->view->permissoesAdm = array();
 }
 /**
  * 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();
     }
 }