Пример #1
0
 /**
  * @param object $oContribuinte
  * @param array  $aDadosComuns
  * @param array  $aDadosApuracaoMensal
  */
 public function __construct($oContribuinte, array $aDadosComuns, array $aDadosApuracaoMensal)
 {
     $this->oContribuinte = Administrativo_Model_UsuarioContribuinte::getByAttribute('id', $oContribuinte->getContribuintes());
     $this->carregaIdentificador($aDadosComuns[0], $aDadosApuracaoMensal[0]);
     $this->carregarDadosContas($aDadosComuns);
     $this->carregarDadosReceitas($aDadosApuracaoMensal);
 }
 /**
  * Metodo inicial quando o usuairo for contribuinte
  */
 public function contribuinteAction()
 {
     // Oculta breadcrumbs
     $this->view->oculta_breadcrumbs = TRUE;
     // Matar sessão quando acessado via menu
     if ($this->_getParam('alterar')) {
         $oSessao = new Zend_Session_Namespace('nfse');
         $oSessao->contribuinte = NULL;
         $this->view->contribuinte = NULL;
         $this->_session->id = NULL;
     }
     if (!isset($this->_session->iUsuarioEscolhido) && $this->usuarioLogado->getPerfil()->getId() == 5) {
         $this->_redirector->gotoSimple('listar-cadastros', 'usuario-acesso', 'fiscal');
     }
     // Verifica se a lista de contribuinte e diferente da lista vinculada ao usuario
     if ($this->view->user->getTipo() == Administrativo_Model_TipoUsuario::$CONTADOR) {
         $aContribuintes = Administrativo_Model_Empresa::getByCnpj(trim($this->view->user->getCnpj()));
         // atualiza a lista de contribuintes
         $this->view->user->atualizaListaContribuintes($aContribuintes);
     } else {
         $oContribuinte = $this->view->user->getUsuariosContribuintes();
         $oContribuinte = $oContribuinte[0];
         if ($oContribuinte->getIm()) {
             $aContribuintesInscricao = new Contribuinte_Model_Contribuinte();
             $aContribuintes[] = $aContribuintesInscricao->getDadosContribuinteEcidade($oContribuinte->getIm());
         } else {
             if ($oContribuinte->getCnpjCpf()) {
                 $oContribuinteEventual = new Contribuinte_Model_ContribuinteEventual();
                 $aContribuintes[] = $oContribuinteEventual->getByCpfCnpjWebService($oContribuinte->getCnpjCpf());
             }
         }
     }
     // atualiza o tipo de emissao e permissoes dos contribuintes
     Administrativo_Model_UsuarioContribuinte::atualizaTipoEmissao($aContribuintes);
     $aContribuintes = $this->view->user->getContribuintes();
     $this->view->contribuintes = $aContribuintes;
     //carrega informativo do fiscal
     $oInformativo = Administrativo_Model_Informativo::getByAttribute('id', 1);
     //Verifica se retorna algo da coluna informativo
     if (!empty($oInformativo)) {
         $this->view->descricao = $oInformativo->getDescricao();
     }
     if (count($this->view->contribuintes) == 1 && $this->_session->id == NULL) {
         $aContribuintes = each($this->view->contribuintes);
         $oContribuinte = $aContribuintes['value'];
         self::setContribuinte($oContribuinte);
         $this->_redirector->gotoSimple('contribuinte', 'index', 'contribuinte');
     }
     // Reseta permissões
     new DBSeller_Acl_Setup(TRUE);
 }
 /**
  * Processa o arquivo Webservice
  */
 public function consultaDados($oParametros)
 {
     try {
         $sNomeTempArquivo = TEMP_PATH . "/ConsultarSituacaoLoteRps-" . time() . ".xml";
         /* gravo o xml enviado */
         $fp = fopen($sNomeTempArquivo, "w");
         fwrite($fp, $oParametros);
         fclose($fp);
         /* carrega o arquivo em memoria para manipulação */
         $oXml = simplexml_load_file($sNomeTempArquivo);
         $oRetorno = new StdClass();
         $oRetorno->iNumeroLote = '';
         $oRetorno->iSituacao = 1;
         $oParametrosArquivo = $oXml->ConsultarSituacaoLoteRpsEnvio;
         if (!$this->validarRequisicao($oParametrosArquivo)) {
             return $this->processaRetornoWebService($oRetorno);
         }
         /**
          * Busca usuário contribuinte pelo cnpj_cpf
          */
         $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getByAttribute('cnpj_cpf', $oParametrosArquivo->Prestador->Cnpj);
         if (empty($oUsuarioContribuinte)) {
             $this->adicionarInconsistencia('E45');
             return $this->processaRetornoWebService($oRetorno);
         }
         $oProtocolo = Administrativo_Model_Protocolo::getByAttribute('protocolo', $oParametrosArquivo->Protocolo);
         if (!$oProtocolo) {
             // situação de não recebido
             $oRetorno->iNumeroLote = $oParametrosArquivo->Protocolo;
             $oRetorno->iSituacao = 1;
             return $this->processaRetornoWebService($oRetorno);
         }
         $oProtocoloImportacao = Contribuinte_Model_ProtocoloImportacao::getByAttribute('protocolo', $oProtocolo->getId());
         if (!$oProtocoloImportacao->getImportacao()) {
             // situação de recebido mas processado com erro
             $oRetorno->iNumeroLote = $oProtocoloImportacao->getNumeroLote();
             $oRetorno->iSituacao = 3;
             return $this->processaRetornoWebService($oRetorno);
         }
         // situação de recebido e processado com sucesso
         $oRetorno->iNumeroLote = $oProtocoloImportacao->getNumeroLote();
         $oRetorno->iSituacao = 4;
         return $this->processaRetornoWebService($oRetorno);
     } catch (Exception $oErro) {
         return $oErro->getMessage();
     }
 }
 /**
  * Tela para o relatório evolutivo da arrecadação mês a mês por declarante por regime de competência
  */
 public function consultaAction()
 {
     $oForm = new Fiscal_Form_RelatorioWebservice();
     $this->view->form = $oForm;
     $this->view->headScript()->offsetSetFile(50, $this->view->baseUrl('/fiscal/js/relatorios/script-compartilhado.js'));
     if ($this->getRequest()->isPost()) {
         $aRetornoJson = array();
         try {
             $aParametros = $this->getRequest()->getParams();
             $iIdAcao = $aParametros['ambiente'];
             if ($aParametros['ambiente'] == 51) {
                 $sAmbiente = 'Homologação';
             } else {
                 if ($aParametros['ambiente'] == 52) {
                     $sAmbiente = 'Produção';
                 }
             }
             $aContribuinte = Administrativo_Model_UsuarioContribuinte::getContribuinteByAcao($iIdAcao);
             if (count($aContribuinte) == 0) {
                 throw new Exception('Nenhum registro encontrado!');
             }
             $oPdf = new Fiscal_Model_RelatorioWebservice();
             $sNomeArquivo = 'contribuinte_webs_' . date('YmsdHis') . '.pdf';
             $sCaminhoArquivo = TEMP_PATH . '/' . $sNomeArquivo;
             $oPdf->Open($sCaminhoArquivo);
             $oPdf->setAmbiente($sAmbiente);
             $oPdf->gerarPdf($aContribuinte, $sAmbiente);
             $oPdf->Output();
             $aRetornoJson = array('status' => TRUE, 'url' => $this->view->baseUrl("/fiscal/relatorio-webservice/download/arquivo/{$sNomeArquivo}"), 'success' => $this->translate->_('Relatório gerado com sucesso.'));
         } catch (Exception $oErro) {
             $aRetornoJson['status'] = FALSE;
             $aRetornoJson['error'][] = $this->translate->_($oErro->getMessage());
         }
         echo $this->getHelper('json')->sendJson($aRetornoJson);
     }
 }
 /**
  * Prepara os dados para o cancelamento da nota
  * @param string $sParametroArquivo
  */
 public function preparaDados($sParametroArquivo)
 {
     $this->oDadosXML = $this->validaXML($sParametroArquivo);
     /**
      * Verifica se existe inconsistencias
      */
     if (count($this->aInconsistencias) == 0) {
         $sCnpj = (string) $this->oDadosXML->IdentificacaoNfse->Cnpj;
         $sNumero = (string) $this->oDadosXML->IdentificacaoNfse->Numero;
         $iInscricaoMunicipal = (string) $this->oDadosXML->IdentificacaoNfse->InscricaoMunicipal;
         $iNumero = (int) substr($sNumero, 4, 11);
         $aAtributosContriobuinte = array("cnpj_cpf" => $sCnpj, "im" => $iInscricaoMunicipal);
         $sAmbiente = Zend_Controller_Front::getInstance()->getRequest()->getActionName();
         if (DBSeller_Plugin_Auth::checkPermissionWebservice($sCnpj, "webservice/{$sAmbiente}/recepcionar-lote-rps")) {
             $aContribuinte = Administrativo_Model_UsuarioContribuinte::getByAttributes($aAtributosContriobuinte);
             foreach ($aContribuinte as $oContribuinte) {
                 $this->oContribuinte = $oContribuinte;
             }
             /**
              * Verifica se existe contribuinte com o CNPJ e Inscrição Municipal informado
              */
             if (empty($this->oContribuinte)) {
                 $this->adicionarInconsistencia('E44');
                 $this->adicionarInconsistencia('E50');
             } else {
                 $iIdContribuinte = $this->oContribuinte->getId();
                 $aAtributosNota = array("id_contribuinte" => $iIdContribuinte, "nota" => $iNumero);
                 /**
                  * Retornar a entidade do array de notas
                  */
                 $aNotas = Contribuinte_Model_Nota::getByAttributes($aAtributosNota);
                 foreach ($aNotas as $oNota) {
                     $this->oNota = $oNota;
                 }
                 /**
                  * Verifica se existe nota
                  */
                 if (empty($this->oNota)) {
                     $this->adicionarInconsistencia('E78');
                 } else {
                     $bNotaCancelada = $this->oNota->getCancelada();
                     /**
                      * Verifica se a nota já está cancelada
                      */
                     if ($bNotaCancelada) {
                         $this->adicionarInconsistencia('E79');
                     }
                 }
             }
         } else {
             $this->adicionarInconsistencia('E157');
             $this->adicionarInconsistencia('Usuário sem permissão!');
         }
     }
 }
 /**
  * Retorna a lista de id's dos usuarios contribuintes vinculados a mesmo
  * @return array
  */
 public function getContribuintes()
 {
     if (count($this->aUsuariosContribuintes) == 0) {
         $aCamposPesquisa = array('cnpj_cpf' => $this->getCgcCpf());
         $aUsuariosContribuintes = Administrativo_Model_UsuarioContribuinte::getByAttributes($aCamposPesquisa);
         foreach ($aUsuariosContribuintes as $oUsuarioContribuinte) {
             $this->aUsuariosContribuintes[] = $oUsuarioContribuinte->getId();
         }
     }
     return $this->aUsuariosContribuintes;
 }
Пример #7
0
 /**
  * @param integer $iIdContribuinte
  */
 public static function consultaGuiasDesif($iIdContribuinte)
 {
     try {
         $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getByAttribute('id', $iIdContribuinte);
         $em = parent::getEm();
         $sDql = 'SELECT g FROM Contribuinte\\Guia g INNER JOIN  Contribuinte\\DesifContaGuia d WITH g.id = d.guia';
         $sDql .= ' WHERE g.id_contribuinte = :c AND g.tipo_documento_origem = :t';
         $oQuery = $em->createQuery($sDql)->setParameters(array('t' => self::$DOCUMENTO_ORIGEM_NFSE, 'c' => $oUsuarioContribuinte->getEntity()));
         $aResultado = $oQuery->getResult();
         $aGuias = array();
         if ($aResultado != NULL) {
             foreach ($aResultado as $q) {
                 $aGuias[] = new self($q);
             }
         }
         return $aGuias;
     } catch (Excpetion $oErro) {
         throw $oErro;
     }
 }
 /**
  * Prepara os dados da guia a ser gerada
  *
  * @param  Administrativo_Model_UsuarioContribuinte $oContribuinte
  * @param  int                                      $iAnoCompetencia
  * @param  int                                      $iMesCompetencia
  * @param  array                                    $aNotas
  * @param  int                                      $iIdGuia
  * @return object                                   $oGuiaGerar
  */
 public static function montaDadosGuia(Administrativo_Model_UsuarioContribuinte $oContribuinte, $iAnoCompetencia, $iMesCompetencia, $aNotas, $sDataPagamento, $iIdGuia)
 {
     $sData = DBSeller_Helper_Date_Date::invertDate($sDataPagamento);
     $oData = new DateTime($sData);
     $oGuiaGerar = new StdClass();
     $oGuiaGerar->inscricao_municipal = $oContribuinte->getIm();
     $oGuiaGerar->cpf_cnpj = $oContribuinte->getCnpjCpf();
     $oGuiaGerar->numcgm = $oContribuinte->getCgm();
     $oGuiaGerar->mes_competencia = $iMesCompetencia;
     $oGuiaGerar->ano_competencia = $iAnoCompetencia;
     $oGuiaGerar->codigo_guia = $iIdGuia;
     $aListaNotas = array();
     foreach ($aNotas as $oDocumentoNota) {
         $oNota = new stdClass();
         $oNota->numero_nota_fiscal = $oDocumentoNota->getNotaNumero();
         $oNota->codigo_documento = $oDocumentoNota->getId();
         $oNota->data_nota_fiscal = $oDocumentoNota->getNotaData()->format('Y-m-d');
         $oNota->serie_nota_fiscal = $oDocumentoNota->getNotaSerie();
         $oNota->valor_base_calculo = $oDocumentoNota->getServicoBaseCalculo();
         $oNota->valor_deducao = $oDocumentoNota->getServicoValorDeducao();
         $oNota->valor_imposto_retido = $oDocumentoNota->getServicoValorImposto();
         $oNota->valor_servico_prestado = $oDocumentoNota->getServicoValorPagar();
         $oNota->aliquota = $oDocumentoNota->getServicoAliquota();
         $oNota->data_pagamento = $oData->format('Y-m-d');
         $oNota->retido = $oDocumentoNota->getServicoImpostoRetido();
         $oNota->situacao = $oDocumentoNota->getSituacaoDocumento() == 'N' ? '0' : '1';
         $oNota->status = 1;
         $oNota->servico_prestado = urlencode($oDocumentoNota->getDescricaoServico());
         // Serviços prestados
         if ($oDocumentoNota->getOperacao() == self::SERVICO_PRESTADO) {
             $oNota->cnpj_prestador = $oDocumentoNota->getPrestadorCpfCnpj();
             $oNota->inscricao_prestador = $oDocumentoNota->getPrestadorInscricaoMunicipal();
             $oNota->nome = urlencode($oDocumentoNota->getPrestadorRazaoSocial());
             $oNota->operacao = 2;
         } else {
             $oNota->cnpj_prestador = $oDocumentoNota->getTomadorCpfCnpj();
             $oNota->inscricao_prestador = $oDocumentoNota->getTomadorInscricaoMunicipal();
             $oNota->nome = $oDocumentoNota->getTomadorRazaoSocial();
             $oNota->operacao = 1;
         }
         // Limita para o tamanho do campo no ecidade
         if (strlen($oNota->nome) > 60) {
             $oNota->nome = substr($oNota->nome, 57) . '...';
         }
         // Adiciona a nota na lista
         $aListaNotas[] = $oNota;
     }
     $oGuiaGerar->notas = $aListaNotas;
     return $oGuiaGerar;
 }
 /**
  * Realiza a execução da pesquisa dos dados conforme arquivo de requisicao
  *
  * @param $sArquivo
  * @return string
  */
 public function processar($sArquivo)
 {
     if (empty($sArquivo)) {
         $this->adicionarInconsistencia('E160');
     }
     $sNomeTempArquivo = TEMP_PATH . "/ConsultarLoteRps-" . time() . ".xml";
     /* gravo o xml enviado */
     $fp = fopen($sNomeTempArquivo, "w");
     fwrite($fp, $sArquivo);
     fclose($fp);
     $this->oRequisicao = simplexml_load_string($sArquivo);
     if (empty($this->oRequisicao)) {
         $this->adicionarInconsistencia('E160');
     }
     if (!$this->validarRequisicao()) {
         return $this->escreverRetorno();
     }
     $sCnpj = $this->oRequisicao->Prestador->Cnpj;
     $sNumeroProtocolo = $this->oRequisicao->Protocolo;
     $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getByAttribute('cnpj_cpf', $sCnpj);
     if (empty($oUsuarioContribuinte)) {
         $this->adicionarInconsistencia('E45');
     }
     $oProtocolo = Administrativo_Model_Protocolo::getByAttribute('protocolo', $sNumeroProtocolo);
     if (empty($oProtocolo)) {
         $this->adicionarInconsistencia('E86');
         return $this->escreverRetorno();
     }
     $oProtocoloImportacao = Contribuinte_Model_ProtocoloImportacao::getByAttribute('protocolo', $oProtocolo->getId());
     if (!$oProtocoloImportacao->getImportacao()) {
         $this->adicionarInconsistencia('E86');
         return $this->escreverRetorno();
     }
     $this->aNotas = $oProtocoloImportacao->getNotasImportadas();
     return $this->escreverRetorno();
 }
Пример #10
0
 /**
  * Informacoes da Dms filtrando por inscricao municipal, competencia e operacao.
  *
  * @param string|null $sCpfCnpj  CPF/CNPJ do Contribuinte
  * @param integer     $iMes      Mês da competência
  * @param integer     $iAno      Ano da competência
  * @param string      $sOperacao Tipo da Operacao Contribuinte_Model_Dms::SAIDA|Contribuinte_Model_Dms::ENTRADA
  * @return array
  * @throws Exception
  */
 public static function getCompetenciaByCpfCnpj($sCpfCnpj = NULL, $iMes, $iAno, $sOperacao = self::SAIDA)
 {
     if ($sCpfCnpj == NULL) {
         throw new Exception('Parametro Cnpj/Cpf é obrigatório.');
     }
     $aUsuariosContribuintes = Administrativo_Model_UsuarioContribuinte::getByAttribute('cnpj_cpf', $sCpfCnpj);
     if (!is_array($aUsuariosContribuintes)) {
         $aUsuariosContribuintes = array($aUsuariosContribuintes);
     }
     $aContribuintes = array();
     foreach ($aUsuariosContribuintes as $oContribuinte) {
         $aContribuintes[] = $oContribuinte->getId();
     }
     $sCampoPesquisa = array('id_contribuinte' => $aContribuintes, 'ano_comp' => $iAno, 'mes_comp' => $iMes, 'operacao' => $sOperacao);
     $sCamposOrdem = array('id' => 'DESC');
     return self::getByAttributes($sCampoPesquisa, $sCamposOrdem);
 }
 /**
  * Acition para para carregar o form de emissão de contas
  */
 public function emitirContasAction()
 {
     $oContribuinte = $this->_session->contribuinte;
     $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getByAttribute('id', $oContribuinte->getIdUsuarioContribuinte());
     $aImportacaoDesif = Contribuinte_Model_ImportacaoDesif::getByAttribute('contribuinte', $oUsuarioContribuinte->getEntity());
     if (!empty($aImportacaoDesif)) {
         if (is_array($aImportacaoDesif)) {
             foreach ($aImportacaoDesif as $oImportacaoDesif) {
                 $aComp = array();
                 $aComp[] = substr($oImportacaoDesif->getCompetenciaInicial(), 0, 4);
                 $aComp[] = substr($oImportacaoDesif->getCompetenciaInicial(), 4);
                 $aCompetencias[$oImportacaoDesif->getId()] = implode("/", $aComp);
             }
         } else {
             $aComp = array();
             $aComp[] = substr($aImportacaoDesif->getCompetenciaInicial(), 0, 4);
             $aComp[] = substr($aImportacaoDesif->getCompetenciaInicial(), 4);
             $aCompetencias[$aImportacaoDesif->getId()] = implode("/", $aComp);
         }
         $oForm = new Contribuinte_Form_EmitirContasDesif($aCompetencias);
         $this->view->oForm = $oForm;
     }
 }
 /**
  * Geração do relatório de empresas omissas
  */
 public function empresasOmissasGerarAction()
 {
     parent::noLayout();
     $aValidacaoFormulario = self::validarFormulario(Fiscal_Form_Relatorio2::TIPO6);
     if (is_array($aValidacaoFormulario)) {
         exit($this->getHelper('json')->sendJson($aValidacaoFormulario));
     }
     try {
         // Parâmetros do formulário
         $sOrdenacaoCampo = $this->getRequest()->getParam('ordenacao');
         $sOrdenacaoDirecao = $this->getRequest()->getParam('ordem');
         $sCompetenciaInicial = $this->getRequest()->getParam('data_competencia_inicial');
         $sCompetenciaFinal = $this->getRequest()->getParam('data_competencia_final');
         // Separa os meses e anos
         $iCompetenciaInicialMes = intval(substr($sCompetenciaInicial, 0, 2));
         $iCompetenciaFinalMes = intval(substr($sCompetenciaFinal, 0, 2));
         $iCompetenciaInicialAno = intval(substr($sCompetenciaInicial, -4));
         $iCompetenciaFinalAno = intval(substr($sCompetenciaFinal, -4));
         $sNomeArquivo = 'relatorio_empresas_omissas_' . date('YmdHis') . '.pdf';
         $aDescricaoFiltros = array('inscricao_municipal' => 'Inscrição Municipal', 'nome' => 'Nome', 'asc' => 'Crescente', 'desc' => 'Decrescente');
         $oPdf = new Fiscal_Model_Relatoriopdfmodelo1('L');
         $oPdf->Open(APPLICATION_PATH . "/../public/tmp/{$sNomeArquivo}");
         $oPdf->setLinhaFiltro('Relatório de Empresas Omissas');
         $oPdf->setLinhaFiltro('');
         $oPdf->setLinhaFiltro("FILTRO: Competência de {$sCompetenciaInicial} até {$sCompetenciaFinal}");
         $oPdf->setLinhaFiltro("ORDEM: {$aDescricaoFiltros[$sOrdenacaoCampo]} ({$aDescricaoFiltros[$sOrdenacaoDirecao]})");
         $oPdf->carregaDados();
         $aUsuarioContribuintes = Administrativo_Model_UsuarioContribuinte::getPrestadores();
         $aInscricoesMunicipaisContribuintes = array();
         // Verifica se existem usuários contribuinte cadastrados
         if (count($aUsuarioContribuintes) == 0) {
             throw new Exception($this->translate->_('Não existem contribuintes cadastrados no sistema.'));
         }
         $aDeclaracaoIsentoValidos = array();
         for ($iAno = 0; $iAno <= $iCompetenciaFinalAno - $iCompetenciaInicialAno; $iAno++) {
             $iAnoLoop = intval($iCompetenciaInicialAno) + $iAno;
             // Varre os meses
             for ($iMesLoop = 1; $iMesLoop <= 12; $iMesLoop++) {
                 // Ignora os meses anteriores e seguintes aos meses inicial e final
                 if ($iAnoLoop == $iCompetenciaInicialAno && $iMesLoop < $iCompetenciaInicialMes || $iAnoLoop == $iCompetenciaFinalAno && $iMesLoop > $iCompetenciaFinalMes) {
                     continue;
                 }
                 // Varre a lista de usuários contribuintes, verificando quem tem movimentações
                 foreach ($aUsuarioContribuintes as $oContribuinte) {
                     // Verifica se tem movimentação
                     $sSql = "SELECT 1 AS existe_movimento\n                     FROM   view_nota_mais_dms\n                      WHERE (dms_operacao     = 's' OR dms_operacao IS NULL)   AND\n                            prestador_cnpjcpf = '{$oContribuinte->getCnpjCpf()}' AND\n                            documento_competencia_ano = {$iAnoLoop} AND\n                            documento_competencia_mes = {$iMesLoop}";
                     $oStatement = $this->oConexao->prepare($sSql);
                     $oStatement->execute();
                     // Adiciona na lista somente os contribuinte sem movimentação no sistema
                     if ($oStatement->rowCount() == 0) {
                         // Informações complementares do contribuinte
                         $oDadosContribuinteComplemento = Administrativo_Model_UsuarioContribuinteComplemento::getById($oContribuinte->getCnpjCpf());
                         // Variaveis do contribuinte
                         $iInscricaoMunicipal = $oContribuinte->getIm();
                         $sRazaoSocial = $oDadosContribuinteComplemento->getRazaoSocial();
                         $sEndereco = $oDadosContribuinteComplemento->getEnderecoDescricao();
                         if (strlen(trim($iInscricaoMunicipal)) > 0) {
                             // Dados dos contribuintes
                             $aDeclaracaoIsentoValidos[$iAnoLoop][$iMesLoop][$iInscricaoMunicipal] = array('inscricao_municipal' => $iInscricaoMunicipal, 'nome' => DBSeller_Helper_String_Format::wordsCap($sRazaoSocial), 'endereco' => DBSeller_Helper_String_Format::wordsCap($sEndereco), 'telefone' => $oDadosContribuinteComplemento->getContatoTelefone(), 'competencia_ano' => $iAnoLoop, 'competencia_mes' => $iMesLoop);
                         }
                         // Lista para consulta no webservice
                         $aInscricoesMunicipaisContribuintes[$iInscricaoMunicipal] = $iInscricaoMunicipal;
                     }
                 }
             }
         }
         // Mosta a lista de inscrições do contribuintes para verificação no webservice (separados por vírgula)
         $sInscricoesMunicipaisContribuintes = implode("','", $aInscricoesMunicipaisContribuintes);
         // Retorna apenas os contribuintes com declaração de insento
         $aDeclaracaoIsento = Contribuinte_Model_Competencia::getDeclaracaoSemMovimentoPorContribuintes($sInscricoesMunicipaisContribuintes);
         // Limpa as inscricoes com declaração de isenção
         foreach ($aDeclaracaoIsento as $oDeclaracaoIsento) {
             unset($aDeclaracaoIsentoValidos[$oDeclaracaoIsento->ano][$oDeclaracaoIsento->mes][$oDeclaracaoIsento->inscricao_municipal]);
             // Limpa dados do mes, caso não possua registros
             if (isset($aDeclaracaoIsentoValidos[$oDeclaracaoIsento->ano][$oDeclaracaoIsento->mes]) && count($aDeclaracaoIsentoValidos[$oDeclaracaoIsento->ano][$oDeclaracaoIsento->mes]) == 0) {
                 unset($aDeclaracaoIsentoValidos[$oDeclaracaoIsento->ano][$oDeclaracaoIsento->mes]);
             }
             // Limpa dados do ano, caso não possua registros
             if (isset($aDeclaracaoIsentoValidos[$oDeclaracaoIsento->ano]) && count($aDeclaracaoIsentoValidos[$oDeclaracaoIsento->ano]) == 0) {
                 unset($aDeclaracaoIsentoValidos[$oDeclaracaoIsento->ano]);
             }
         }
         if (count($aDeclaracaoIsentoValidos) == 0) {
             $sMensagemErro = 'Nenhuma informação foi encontrada neste período para geração do relatório.';
             throw new Exception($this->translate->_($sMensagemErro));
         }
         // Varre os anos
         for ($iAno = 0; $iAno <= $iCompetenciaFinalAno - $iCompetenciaInicialAno; $iAno++) {
             $iAnoLoop = intval($iCompetenciaInicialAno) + $iAno;
             // Varre os meses
             for ($iMesLoop = 1; $iMesLoop <= 12; $iMesLoop++) {
                 // Ignora os meses anteriores e seguintes aos meses inicial e final
                 if ($iAnoLoop == $iCompetenciaInicialAno && $iMesLoop < $iCompetenciaInicialMes || $iAnoLoop == $iCompetenciaFinalAno && $iMesLoop > $iCompetenciaFinalMes) {
                     continue;
                 }
                 // Ordena o array pelo índice informado
                 if (isset($aDeclaracaoIsentoValidos[$iAnoLoop][$iMesLoop])) {
                     // Formata para mês por extenso
                     $sMesExtenso = DBSeller_Helper_Date_Date::mesExtenso($iMesLoop);
                     $oPdf->SetFont('Arial', 'B', 8);
                     $oPdf->Cell(20, 5, utf8_decode('Competência:'));
                     $oPdf->SetFont('Arial', NULL, 8);
                     $oPdf->Cell(0, 5, utf8_decode("{$sMesExtenso}/{$iAnoLoop}"));
                     $oPdf->Ln(5);
                     $oPdf->SetFont('Arial', 'B', 8);
                     $oPdf->Cell(28, 5, utf8_decode('Inscrição Municipal'), 1);
                     $oPdf->Cell(100, 5, utf8_decode('Nome'), 1);
                     $oPdf->Cell(117, 5, utf8_decode('Endereço'), 1);
                     $oPdf->Cell(32, 5, utf8_decode('Telefone'), 1);
                     $oPdf->Ln(5);
                     $aDeclaracaoIsentoOrdenado = DBSeller_Helper_Array_Abstract::ordenarPorIndice($aDeclaracaoIsentoValidos[$iAnoLoop][$iMesLoop], $sOrdenacaoCampo, $sOrdenacaoDirecao, TRUE);
                     $oPdf->SetFont('Arial', NULL, 8);
                     foreach ($aDeclaracaoIsentoOrdenado as $oDeclaracaoIsentoOrdenado) {
                         $oPdf->Cell(28, 5, utf8_decode($oDeclaracaoIsentoOrdenado['inscricao_municipal']), 1);
                         $oPdf->Cell(100, 5, utf8_decode($oDeclaracaoIsentoOrdenado['nome']), 1);
                         $oPdf->Cell(117, 5, utf8_decode($oDeclaracaoIsentoOrdenado['endereco']), 1);
                         $oPdf->Cell(32, 5, utf8_decode($oDeclaracaoIsentoOrdenado['telefone']), 1);
                         $oPdf->Ln(5);
                     }
                     $oPdf->Ln(5);
                     $oPdf->proximaPagina(10);
                 }
             }
         }
         $oPdf->Output();
         $aRetornoJson['status'] = TRUE;
         $aRetornoJson['url'] = $this->view->baseUrl("tmp/{$sNomeArquivo}");
         $aRetornoJson['success'] = $this->translate->_('Arquivo importado com sucesso.');
     } catch (Exception $oErro) {
         $aRetornoJson['status'] = FALSE;
         $aRetornoJson['error'][] = $oErro->getMessage();
     }
     echo $this->getHelper('json')->sendJson($aRetornoJson);
 }
 /**
  * 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);
 }
 /**
  * Metodo Responsável por atualizar a lista de contribuintes
  *
  * @param array $contribuintes_novos
  */
 public function atualizaListaContribuintes($contribuintes_novos)
 {
     $contribuintes_velhos = Administrativo_Model_UsuarioContribuinte::getByAttribute('usuario', $this->getId());
     $novos_im = array();
     $velhos_im = array();
     // monta array de inscricoes novas. recebidas pelo webservice
     foreach ($contribuintes_novos as $c) {
         $novos_im[$c->attr('inscricao')] = $c;
     }
     if (!empty($contribuintes_velhos)) {
         // monta array de inscricoes velhas. recebidas do banco de dados
         if (is_array($contribuintes_velhos)) {
             foreach ($contribuintes_velhos as $c) {
                 $velhos_im[$c->getIm()] = $c;
             }
         } else {
             $velhos_im[$contribuintes_velhos->getIm()] = $contribuintes_velhos;
         }
     }
     // diferença entre as novas e velhas são as inscricoes que precisam ser adicionadas
     $adicionar = array_diff_key($novos_im, $velhos_im);
     // diferença entre as velhas e as novas sao as incricões que precisam ser removidas
     $remover = array_diff_key($velhos_im, $novos_im);
     // Reabilita vinculos existentes
     foreach ($novos_im as $oNovoContribuinte) {
         if (isset($velhos_im[$oNovoContribuinte->attr('inscricao')])) {
             $oUsuarioContribuinteExistente = $velhos_im[$oNovoContribuinte->attr('inscricao')];
             $oUsuarioContribuinteExistente->setHabilitado(TRUE);
             $oUsuarioContribuinteExistente->persist();
         }
     }
     // Cria novos vinculos
     foreach ($adicionar as $oNovoContribuinte) {
         $oUsuarioContribuinte = new Administrativo_Model_UsuarioContribuinte();
         $oUsuarioContribuinte->setUsuario($this->entity);
         $oUsuarioContribuinte->setIm($oNovoContribuinte->attr('inscricao'));
         $oUsuarioContribuinte->setCnpjCpf($oNovoContribuinte->attr('cnpj'));
         $oUsuarioContribuinte->setHabilitado(true);
         $this->addUsuarioContribuinte($oUsuarioContribuinte);
         $oUsuarioContribuinte->persist();
     }
     // Desabilita o usuario contribuinte
     foreach ($remover as $oUsuarioRemover) {
         $oUsuarioRemover->setHabilitado(FALSE);
         $oUsuarioRemover->persist();
     }
 }
 /**
  * Método para confirmação do usuário eventual [json]
  *
  * @throws Exception
  * @return void
  */
 public function confirmarAction()
 {
     $oFiltro = new Zend_Filter_Digits();
     $aDados = $this->getRequest()->getParams();
     $sCpfCnpj = DBSeller_Helper_Number_Format::unmaskCPF_CNPJ($aDados['cnpjcpf']);
     // Popula o formulario
     $oForm = new Default_Form_LiberacaoCadastro();
     $oForm->populate($aDados);
     // Valida o formulario
     if ($oForm->isValid($aDados)) {
         if ($aDados['hash'] == NULL || $sCpfCnpj == NULL) {
             throw new Exception($this->translate->_('Campo(s) obrigatório(s) não informado(s).'));
         }
         $oDoctrine = Zend_Registry::get('em');
         $oDoctrine->getConnection()->beginTransaction();
         try {
             $oCadastroPessoa = Contribuinte_Model_CadastroPessoa::getByAttribute('hash', $aDados['hash']);
             if ($oCadastroPessoa == NULL) {
                 $sMensagemErro = 'Dados informados não encontrados. Favor entrar em contato com o suporte da prefeitura.';
                 throw new Exception($this->translate->_($sMensagemErro));
             }
             $iTipoLiberacaoUsuarioBloqueado = Contribuinte_Model_CadastroPessoa::TIPO_LIBERACAO_USUARIO_BLOQUEADO;
             if ($oCadastroPessoa->getTipoLiberacao() == $iTipoLiberacaoUsuarioBloqueado) {
                 $sMensagemErro = 'Cadastro foi recusado. Favor entrar em contato com o setor de fiscalização.';
                 throw new Exception($this->translate->_($sMensagemErro));
             }
             if ($sCpfCnpj != $oCadastroPessoa->getCpfcnpj()) {
                 throw new Exception($this->translate->_('CNPJ/CPF informado não é o mesmo informado no cadastro.'));
             }
             $oUsuarioCadastrado = Administrativo_Model_Usuario::getByAttribute('email', $oCadastroPessoa->getEmail());
             if ($oUsuarioCadastrado instanceof Administrativo_Model_Usuario) {
                 $sLink = '<a href="' . $this->view->serverUrl('/auth/login/esqueci-minha-senha/') . '">Clique Aqui</a>';
                 $sMensagemErro = "Já encontramos um cadastro com este email.<br>Caso tenha esquecido sua senha. {$sLink}";
                 throw new Exception($this->translate->_($sMensagemErro));
             }
             $oCgm = Contribuinte_Model_Cgm::getDadosCgm($sCpfCnpj);
             if ($oCadastroPessoa->getTipoLiberacao() == Contribuinte_Model_CadastroPessoa::TIPO_LIBERACAO_USUARIO && $oCgm == NULL) {
                 $sErro = $this->translate->_('Parametros estão inválidos (CGM não existe), ');
                 $sErro .= $this->translate->_('favor entrar em contato com o setor de fiscalização.');
                 throw new Exception($sErro);
             }
             if ($oCadastroPessoa->getTipoLiberacao() == Contribuinte_Model_CadastroPessoa::TIPO_LIBERACAO_USUARIO_CGM && $oCgm == NULL) {
                 $oNovoCgm = new Contribuinte_Model_Cgm();
                 if (strlen($oCadastroPessoa->getCpfCnpj()) >= 14) {
                     $oNovoCgm->setJuridico(TRUE);
                     $oNovoCgm->setCNPJ($oCadastroPessoa->getCpfCnpj());
                 } else {
                     $oNovoCgm->setJuridico(FALSE);
                     $oNovoCgm->setCPF($oCadastroPessoa->getCpfCnpj());
                 }
                 $sDescricaoMunicipio = Default_Model_Cadendermunicipio::getById($oCadastroPessoa->getCidade())->getNome();
                 $oNovoCgm->setNome($oCadastroPessoa->getNome());
                 $oNovoCgm->setEmail($oCadastroPessoa->getEmail());
                 $oNovoCgm->setCodigoIbgeCidade($oCadastroPessoa->getCidade());
                 $oNovoCgm->setDescricaoMunicipio($sDescricaoMunicipio);
                 $oNovoCgm->setEstado($oCadastroPessoa->getEstado());
                 $oNovoCgm->setTelefone($oFiltro->filter($oCadastroPessoa->getTelefone()));
                 $oNovoCgm->setCep($oFiltro->filter($oCadastroPessoa->getCep()));
                 $oNovoCgm->setEnderecoEcidade(FALSE);
                 if ($oCadastroPessoa->getCodBairro()) {
                     $oNovoCgm->setEnderecoEcidade(TRUE);
                 }
                 $oNovoCgm->setCodigoBairro($oCadastroPessoa->getCodBairro());
                 $oNovoCgm->setCodigoLogradouro($oCadastroPessoa->getCodEndereco());
                 $oNovoCgm->setDescricaoBairro($oCadastroPessoa->getBairro());
                 $oNovoCgm->setDescricaoLogradouro($oCadastroPessoa->getEndereco());
                 $oNovoCgm->setNumeroLogradouro($oCadastroPessoa->getNumero());
                 $oNovoCgm->setComplemento($oCadastroPessoa->getComplemento());
                 $oCodigoCgm = $oNovoCgm->persist();
                 $iCodigoCgm = $oCodigoCgm->codigo_cgm;
             } else {
                 $iCodigoCgm = $oCgm->getCodigoCgm();
             }
             $aArraTipoLiberacao = array(Contribuinte_Model_CadastroPessoa::TIPO_LIBERACAO_USUARIO_CGM, Contribuinte_Model_CadastroPessoa::TIPO_LIBERACAO_USUARIO);
             if (in_array($oCadastroPessoa->getTipoLiberacao(), $aArraTipoLiberacao)) {
                 // Usuário do sistema
                 $oUsuarioSistema = new Administrativo_Model_Usuario();
                 $oUsuarioSistema->setNome($oCadastroPessoa->getNome());
                 $oUsuarioSistema->setTelefone($oFiltro->filter($oCadastroPessoa->getTelefone()));
                 $oUsuarioSistema->setLogin($oCadastroPessoa->getCpfCnpj());
                 $oUsuarioSistema->setSenha($aDados['senha']);
                 $oUsuarioSistema->setEmail($oCadastroPessoa->getEmail());
                 $oUsuarioSistema->setHabilitado(TRUE);
                 $oUsuarioSistema->setAdministrativo(FALSE);
                 $oUsuarioSistema->setTipo(Administrativo_Model_TipoUsuario::$CONTRIBUINTE);
                 $oUsuarioSistema->setCgm($iCodigoCgm);
                 $oUsuarioSistema->setCnpj($oCadastroPessoa->getCpfCnpj());
                 $oUsuarioSistema->setPerfil($oCadastroPessoa->getPerfil()->getEntity());
                 $oUsuarioSistema->adicionaAcoes($oCadastroPessoa->getPerfil()->getAcoes());
                 $oUsuarioSistema->persist();
                 // Criamos o usuario eventual;
                 $oUsuarioEventual = new Administrativo_Model_UsuarioContribuinte();
                 $oUsuarioEventual->setCGM($iCodigoCgm);
                 $oUsuarioEventual->setHabilitado(TRUE);
                 $oUsuarioEventual->setTipoContribuinte(2);
                 $oUsuarioEventual->setCnpjCpf($oCadastroPessoa->getCpfCnpj());
                 $oUsuarioEventual->setUsuario($oUsuarioSistema->getEntity());
                 $oUsuarioEventual->copiaPerfilAcoes($oCadastroPessoa->getPerfil());
                 $oUsuarioEventual->persist();
                 // Cadastro de Pessoa
                 $oCadastroPessoa->setHash(NULL);
                 $oCadastroPessoa->persist();
             }
             $oDoctrine->getConnection()->commit();
             $aRetornoJson['status'] = TRUE;
             $aRetornoJson['success'] = $this->translate->_('Cadastro efetuado com sucesso.');
             $aRetornoJson['url'] = $this->view->serverUrl();
         } catch (Exception $oErro) {
             $oDoctrine->getConnection()->rollback();
             if (isset($oCodigoCgm) && isset($oCodigoCgm->codigo_cgm) && Contribuinte_Model_Cgm::removerCgm($oCodigoCgm->codigo_cgm)) {
                 $oLog = Zend_Registry::get('logger');
                 $oLog->log("Erro ao excluir o CGM: {$oCodigoCgm->codigo_cgm}", Zend_Log::INFO, ' ');
             }
             $aRetornoJson['status'] = FALSE;
             $aRetornoJson['error'][] = $oErro->getMessage();
         }
     } else {
         $aRetornoJson['status'] = FALSE;
         $aRetornoJson['fields'] = array_keys($oForm->getMessages());
         $aRetornoJson['error'][] = $this->translate->_('Preencha os dados corretamente.');
     }
     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;
 }
Пример #17
0
 /**
  * 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 instancia do contribuinte atraves do Cnpj/cpf
  *
  * @param string $sCpfCnpj
  * @return bool|Contribuinte_Model_ContribuinteEventual|object
  * @throws Exception
  */
 public static function getByCpfCnpj($sCpfCnpj)
 {
     $oContribuinte = Administrativo_Model_UsuarioContribuinte::getByAttribute('cnpj_cpf', $sCpfCnpj);
     // Se retornar mais de um contribuinte pega o primeiro da lista
     if (is_array($oContribuinte)) {
         $oContribuinte = reset($oContribuinte);
     }
     if ($oContribuinte->getUsuario()->getCnpj() == '') {
         throw new Exception('Contribuinte eventual não possui CPF / CNPJ.');
     }
     $oCgm = self::getByCpfCnpjWebService($sCpfCnpj);
     if (!empty($oCgm)) {
         $oContribuinteEventual = Contribuinte_Model_ContribuinteEventual::preencherInstanciaContribuinte($oCgm);
         $oContribuinteEventual->setIdUsuarioContribuinte($oContribuinte->getId());
         return $oContribuinteEventual;
     }
     return FALSE;
 }
 /**
  * Prepara os dados para processar o arquivo do webservice
  *
  * @param string $sArquivo
  * @return bool
  * @throws Exception
  */
 public function preparaDados($sArquivo)
 {
     try {
         // Foi comentado o if de verificação pois estava ocorrendo um problema na emissão e retornava um arquivo em branco.
         // Somente em ambiente de desenvolvimento
         //if (APPLICATION_ENV == 'development') {
         $oDomDocument = new DOMDocument();
         $oDomDocument->loadXml($sArquivo);
         $oData = new Zend_Date();
         $this->sNomeArquivo = "/RecepcionarLote-{$oData->getTimestamp()}.xml";
         $this->sCaminhoArquivo = TEMP_PATH;
         /**
          * Verifica se o caminho do arquivo não existe recria a pasta
          */
         if (!file_exists($this->sCaminhoArquivo)) {
             mkdir($this->sCaminhoArquivo, 0777);
         }
         /**
          * Escreve os dados no arquivo
          */
         $this->sCaminhoNomeArquivo = $this->sCaminhoArquivo . $this->sNomeArquivo;
         $aArquivo = fopen($this->sCaminhoNomeArquivo, 'w');
         fputs($aArquivo, print_r($sArquivo, TRUE));
         fclose($aArquivo);
         //}
         $oValidacao = new DBSeller_Helper_Xml_AssinaturaDigital($sArquivo);
         /**
          * Validação digital do arquivo
          */
         if (!$oValidacao->validar()) {
             throw new Exception($oValidacao->getLastError());
         }
         $oUsuario = Administrativo_Model_Usuario::getByAttribute('cnpj', $oValidacao->getCnpj());
         if (!is_object($oUsuario)) {
             throw new Exception('Usuário contribuinte não existe!', 157);
         }
         /**
          * Busca usuário contribuinte através do usuário cadastrado
          */
         $aUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getByAttributes(array('usuario' => $oUsuario->getId(), 'cnpj_cpf' => $oUsuario->getCnpj()));
         if (!is_object($aUsuarioContribuinte[0])) {
             throw new Exception('Usuário contribuinte não encontrado!', 160);
         }
         /**
          * Seta os dados do contribuinte
          */
         $this->oDadosUsuario = $oUsuario;
         $this->oContribuinte->sCpfCnpj = $aUsuarioContribuinte[0]->getCnpjCpf();
         $this->oContribuinte->iCodigoUsuario = $oUsuario->getId();
         $this->oContribuinte->iIdUsuarioContribuinte = $aUsuarioContribuinte[0]->getId();
         /**
          * Atualiza os dados do contribuinte na sessão
          */
         $oSessao = new Zend_Session_Namespace('nfse');
         $oSessao->contribuinte = Contribuinte_Model_Contribuinte::getById($this->oContribuinte->iIdUsuarioContribuinte);
         return TRUE;
     } catch (Exception $oErro) {
         throw new Exception($oErro->getMessage(), $oErro->getCode());
     }
 }
 public static function atualizaTipoEmissao($aContribuintesAtualizar)
 {
     if (!is_array($aContribuintesAtualizar) && count($aContribuintesAtualizar) <= 0) {
         throw new Exception('Problemas ao atualizar tipo de emissão dos contribuintes!');
     }
     foreach ($aContribuintesAtualizar as $aUsuarioContribuinteAtualizar) {
         $aUsuarioContribuinte = NULL;
         $iTipoEmissaoWeb = NULL;
         $iWebServiceUsuarioTipoEmissao = NULL;
         if ($aUsuarioContribuinteAtualizar == NULL) {
             throw new Exception('Problemas ao atualizar tipo de emissão dos contribuintes!');
         }
         if (in_array('attr', get_class_methods($aUsuarioContribuinteAtualizar))) {
             $iTipoEmissaoWeb = $aUsuarioContribuinteAtualizar->attr('tipo_emissao');
             $iWebServiceUsuarioTipoEmissao = !empty($iTipoEmissaoWeb) ? $iTipoEmissaoWeb : 9;
             $aUsuarioContribuintes = Administrativo_Model_UsuarioContribuinte::getByAttribute('cnpj_cpf', $aUsuarioContribuinteAtualizar->attr('cnpj'));
             $iCgm = $aUsuarioContribuinteAtualizar->attr('cgm');
         } else {
             // quando o usuario é tomador que não tem inscrição os dados vem de outro metodo webservice
             if (empty($aUsuarioContribuinteAtualizar->cgccpf) || empty($aUsuarioContribuinteAtualizar->tipo_emissao)) {
                 $aUsuarioContribuinteAtualizar->cgccpf = $aUsuarioContribuinteAtualizar->iCnpj;
                 $aUsuarioContribuinteAtualizar->tipo_emissao = 9;
                 //tipo emissao tomador
                 $aUsuarioContribuinteAtualizar->numero_cgm = $aUsuarioContribuinteAtualizar->iCodigoCgm;
             }
             $iTipoEmissaoWeb = $aUsuarioContribuinteAtualizar->tipo_emissao;
             $iWebServiceUsuarioTipoEmissao = !empty($iTipoEmissaoWeb) ? $iTipoEmissaoWeb : 9;
             $aUsuarioContribuintes = Administrativo_Model_UsuarioContribuinte::getByAttribute('cnpj_cpf', $aUsuarioContribuinteAtualizar->cgccpf);
             $iCgm = $aUsuarioContribuinteAtualizar->numero_cgm;
         }
         if (!is_array($aUsuarioContribuintes)) {
             $aUsuarioContribuintes = array($aUsuarioContribuintes);
         }
         foreach ($aUsuarioContribuintes as $oContribuinte) {
             if (!$oContribuinte instanceof Administrativo_Model_UsuarioContribuinte) {
                 continue;
             }
             if ($iTipoEmissaoWeb == $oContribuinte->getTipoEmissao()) {
                 continue;
             }
             $aTiposEmissao = array(Contribuinte_Model_ContribuinteAbstract::TIPO_EMISSAO_DMS, Contribuinte_Model_ContribuinteAbstract::TIPO_EMISSAO_NOTA);
             $iTipoContribuinte = Administrativo_Model_UsuarioContribuinte::CONTRIBUINTE_MUNICIPAL;
             $iCgmAtualizar = NULL;
             if (!in_array($iWebServiceUsuarioTipoEmissao, $aTiposEmissao)) {
                 $iTipoContribuinte = Administrativo_Model_UsuarioContribuinte::CONTRIBUINTE_EVENTUAL;
                 $iCgmAtualizar = $iCgm;
             }
             $aDados = array('usuario' => $oContribuinte->getUsuario(), 'contribuinte' => $oContribuinte->getIm(), 'cnpj_cpf' => $oContribuinte->getCnpjCpf(), 'tipo_emissao' => $iWebServiceUsuarioTipoEmissao, 'tipo_contribuinte' => $iTipoContribuinte, 'cgm' => $iCgmAtualizar);
             $oContribuinte->persist($aDados);
             $oContribuinte->limparAcoes(TRUE);
             $oTipoEmissaoPerfil = $oContribuinte->getPerfilTipoEmissao($iWebServiceUsuarioTipoEmissao);
             $oPerfil = Administrativo_Model_Perfil::getById($oTipoEmissaoPerfil->iCodigoPerfil);
             $oContribuinte->adicionaAcoes($oPerfil->getAcoes());
         }
     }
 }