/**
  * 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);
 }
 /**
  * Metodo para renderizar o formulario de cadastro/alteracao dos parametros do contribuinte.
  *
  * Retorna para a view a instancia do formulario Contribuinte_Form_ParametrosContribuinte
  */
 public function contribuinteAction()
 {
     $oForm = new Contribuinte_Form_ParametrosContribuinte();
     $oParametroContribuinte = $this->buscaParametroContribuinte($this->view->contribuinte->getIdUsuarioContribuinte());
     $aDados = $this->getRequest()->getPost();
     if ($this->getRequest()->isPost() && $oForm->isValid($aDados)) {
         try {
             $oDoctrine = Zend_Registry::get('em');
             $oDoctrine->getConnection()->beginTransaction();
             $oParametroContribuinte->setAvisofimEmissaoNota($aDados["avisofim_emissao_nota"]);
             $oParametroContribuinte->setCofins(DBSeller_Helper_Number_Format::toDataBase($aDados["cofins"]));
             $oParametroContribuinte->setCsll(DBSeller_Helper_Number_Format::toDataBase($aDados["csll"]));
             $oParametroContribuinte->setIdContribuinte($this->view->contribuinte->getIdUsuarioContribuinte());
             $oParametroContribuinte->setInss(DBSeller_Helper_Number_Format::toDataBase($aDados["inss"]));
             $oParametroContribuinte->setIr(DBSeller_Helper_Number_Format::toDataBase($aDados["ir"]));
             $oParametroContribuinte->setMaxDeducao(DBSeller_Helper_Number_Format::toDataBase($aDados["max_deducao"]));
             $oParametroContribuinte->setPis(DBSeller_Helper_Number_Format::toDataBase($aDados["pis"]));
             $oParametroContribuinte->setValorIssFixo(DBSeller_Helper_Number_Format::toDataBase($aDados["valor_iss_fixo"]));
             $oParametroContribuinte->salvar();
             $oDoctrine->getConnection()->commit();
             $this->view->messages[] = array('success' => 'Parâmetros modificados com sucesso.');
             $oArquivoUpload = new Zend_File_Transfer();
             $oArquivoUpload->receive();
             $iInscricaoMunicipal = $this->view->contribuinte->getInscricaoMunicipal();
             Administrativo_Model_Empresa::setLogoByIm($iInscricaoMunicipal, $oArquivoUpload->getFileInfo());
         } catch (Exception $oErro) {
             $oDoctrine->getConnection()->rollback();
             $this->view->messages[] = array('error' => $oErro->getMessage());
         }
     }
     $oDados->im = $this->view->contribuinte->getInscricaoMunicipal();
     $oDados->nome_contribuinte = $this->view->contribuinte->getNome();
     $oDados->avisofim_emissao_nota = $oParametroContribuinte->getAvisofimEmissaoNota();
     $oDados->cofins = $oParametroContribuinte->getCofins();
     $oDados->csll = $oParametroContribuinte->getCsll();
     $oDados->inss = $oParametroContribuinte->getInss();
     $oDados->ir = $oParametroContribuinte->getIr();
     $oDados->max_deducao = $oParametroContribuinte->getMaxDeducao();
     $oDados->pis = $oParametroContribuinte->getPis();
     $oDados->valor_iss_fixo = $oParametroContribuinte->getValorIssFixo();
     $oForm->preenche($oDados);
     $this->view->sLogoPrestador = Administrativo_Model_Empresa::getLogoByIm($oDados->im);
     $this->view->form = $oForm;
 }
 /**
  * Retorna os dados para a emissão da nfse
  *
  * @param string $sCodigoVerificacao
  * @param object $oNota
  * @param object $oPrefeitura
  * @return array
  */
 public static function getDadosEmissao($sCodigoVerificacao, $oNota, $oPrefeitura)
 {
     /**
      * Verifica se os dados foram enviados pela verificar de autenticidade sem nescessidade de estar logado ao sistema
      */
     if ($oNota->getId_contribuinte()) {
         $oPrestador = Contribuinte_Model_Contribuinte::getById($oNota->getId_contribuinte());
     } else {
         $oPrestador = Contribuinte_Model_Contribuinte::getByInscricaoMunicipal($oNota->getP_im());
     }
     $oBaseUrlHelper = new Zend_View_Helper_BaseUrl();
     $oServerUrlHelper = new Zend_View_Helper_ServerUrl();
     // Calcula e divide a quantidade de páginas conforme os dados descritos no campo de 'Descrição do Serviço'
     $iTamanhoTotalTexto = strlen($oNota->getS_dados_discriminacao());
     $iQndPaginas = $iTamanhoTotalTexto > 800 ? 2 : 1;
     $aDados = array();
     // Quebra os modelos de nota em páginas conforme os dados descritos no campo de 'Descrição do Serviço'
     for ($iIndex = 1; $iIndex <= $iQndPaginas; $iIndex++) {
         // Dados de manipulação do cabeçalho
         $oDadosCabecalho = new StdClass();
         $oDadosCabecalho->sBrasao = $oBaseUrlHelper->baseUrl('/global/img/brasao.jpg');
         $oDadosCabecalho->oDadosPrefeitura = $oPrefeitura;
         if (getenv('APPLICATION_ENV') != 'production') {
             $oDadosCabecalho->sUrlTarja = $oBaseUrlHelper->baseUrl('/administrativo/img/nfse/tarja_sem_valor.png');
         } else {
             if ($oNota->getIdNotaSubstituta()) {
                 $oDadosCabecalho->sUrlTarja = $oBaseUrlHelper->baseUrl('/administrativo/img/nfse/tarja_substituida.gif');
             } else {
                 if ($oNota->getCancelada()) {
                     $oDadosCabecalho->sUrlTarja = $oBaseUrlHelper->baseUrl('/administrativo/img/nfse/tarja_cancelada.gif');
                 }
             }
         }
         // Gera o QRCode apenas para os modelos que exibem o mesmo
         if (in_array($oPrefeitura->getModeloImpressaoNfse(), array(2, 3))) {
             $aVerificacao = array('module' => 'auth', 'controller' => 'nfse', 'action' => 'autenticar-post', 'prestador_cnpjcpf' => $oNota->getP_cnpjcpf(), 'codigo_verificacao' => $sCodigoVerificacao);
             $sUrlVerificada = DBSeller_Helper_Url_Encrypt::encrypt(array('module' => 'default', 'controller' => 'index', 'action' => 'autentica', 'url' => $aVerificacao));
             //"codigo_verificacao/{$sCodigoVerificacao}/prestador_cnpjcpf/{$oNota->getP_cnpjcpf()}"));
             $sQRCodeImagem = DBSeller_Helper_QRCode_QRCode::getQrCodeNfse($sUrlVerificada, $sCodigoVerificacao);
             $oDadosCabecalho->sQRCode = $oBaseUrlHelper->baseUrl("/tmp/{$sQRCodeImagem}");
         }
         // Dados de manipulação do prestador
         $oDadosPrestador = new StdClass();
         $oDadosPrestador->oPrestador = $oPrestador;
         $sLogoPrestador = Administrativo_Model_Empresa::getLogoByIm($oNota->getP_im());
         $oDadosPrestador->sLogoPrestador = $oBaseUrlHelper->baseUrl("/tmp/{$sLogoPrestador}");
         // Dados de manipulação do serviço
         $oDadosServico = new StdClass();
         $oDadosServico->oDadosNota = $oNota;
         // Verifica se não é a primeira página que será impressa e quebra as demais 'Descrição do Serviço'
         $iInicioCaracterPagina = 0;
         $iQndCaracterPagina = 800;
         if ($iIndex == 2) {
             $iInicioCaracterPagina = 800;
             $iQndCaracterPagina = $iTamanhoTotalTexto;
         }
         $sDiscriminacaoServico = substr($oNota->getS_dados_discriminacao(), $iInicioCaracterPagina, $iQndCaracterPagina);
         $oDadosServico->sDiscriminacaoServico = $sDiscriminacaoServico;
         // Dados de manipulação da nota subtstituida
         $iIdNotaSubstituida = $oNota->getIdNotaSubstituida();
         if ($iIdNotaSubstituida) {
             $oDadosServico->oDadosNotaSubstituida = Contribuinte_Model_Nota::getById($iIdNotaSubstituida);
         }
         $oRegistro = new StdClass();
         $oRegistro->iPagina = $iIndex;
         $oRegistro->oDadosCabecalho = $oDadosCabecalho;
         $oRegistro->oDadosPrestador = $oDadosPrestador;
         $oRegistro->oDadosServico = $oDadosServico;
         $aDados[] = $oRegistro;
     }
     return $aDados;
 }
 /**
  * metodo responsável por gerar as permissoes do usuario
  *
  * @return Administrativo_Model_UsuarioContribuinte
  */
 protected function definePermissoes()
 {
     if ($this->getId() == null) {
         // verifica se o tipo de usuário é Contador e e se for vincula as empresas enviadas pelo e-cidade
         if ($this->getTipo() == Administrativo_Model_TipoUsuario::$CONTADOR) {
             $empresas = Administrativo_Model_Empresa::getByCnpj($this->getCnpj());
             // vincula ações de contribuintes
             $this->vinculaEmpresas($empresas);
         }
         // verifica se o usuário é do tipo Contribuinte para vincular a empresa
         if ($this->getTipo() == Administrativo_Model_TipoUsuario::$CONTRIBUINTE) {
             $oEmpresa = Contribuinte_Model_Contribuinte::getByCpfCnpj($this->getCnpj());
             if (!empty($oEmpresa)) {
                 $uc = new Administrativo_Model_UsuarioContribuinte();
                 $uc->setIm($oEmpresa->getInscricaoMunicipal());
                 $uc->setUsuario($this->entity);
                 $uc->setHabilitado(true);
                 $this->addUsuarioContribuinte($uc);
             }
         }
         // vincula ações administrativas
         $acoes = $this->getPerfil()->getAcoes();
         $acoes_adm = array();
         foreach ($acoes as $a) {
             if (strtolower($a->getControle()->getModulo()->getNome()) == 'administrativo' || $a->getId() == 37) {
                 $acoes_adm[] = $a;
             }
         }
         $this->adicionaAcoes($acoes_adm);
     }
     return $this;
 }