/** * Envia um email com os dados para Recuperacao/alteração da senha do usuário * @param Administrativo_Model_Usuario $oUsuario instancia do usuario */ public static function enviarEmailSenha(Administrativo_Model_Usuario $oUsuario) { $sHash = $oUsuario->criarHash(); $oView = new Zend_View(); $oView->setScriptPath(APPLICATION_PATH . '/modules/auth/views/scripts/login/'); $oView->sUrlRecuperarSenha = $oView->serverUrl("/auth/login/recuperar-senha/hash/{$sHash}"); $oView->nome = $oUsuario->getEntity()->getNome(); $sTextoEmail = $oView->render('email-recuperacao-senha.phtml'); $oTranslate = Zend_Registry::get('Zend_Translate'); DBSeller_Helper_Mail_Mail::send($oUsuario->getEmail(), $oTranslate->_('ECidadeOnline2 - Recuperação de Senha'), $sTextoEmail); }
/** * Método responsável pelo envio de email no cancelamento ou na solicitação do mesmo * * @param $oNota * @param $oSolicitacao * @param $sJustificativaFiscal * @return null|string */ public function enviarEmailRejeicao($oNota, $oSolicitacao, $sJustificativaFiscal) { //Retorna os usuarios do tipo fiscal $aUsuariosFiscal = Administrativo_Model_Usuario::getByAttribute('tipo', Administrativo_Model_Usuario::USUARIO_TIPO_FISCAL); //Remove o usuário admin do array if ($aUsuariosFiscal[0]->getAdministrativo()) { unset($aUsuariosFiscal[0]); } $aEmailBCC = array(); //Pega os emails cadastrados dos usuarios fiscais foreach ($aUsuariosFiscal as $oUsuarioFiscal) { $sEmail = $oUsuarioFiscal->getEmail(); if (!is_null($sEmail) && $sEmail != '') { $aEmailBCC[] = $sEmail; } } $oValidadorEmail = new Zend_Validate_EmailAddress(); $emailTO = $oNota->getT_email(); $sMensagemRetorno = NULL; $sEmailTomador = $oSolicitacao->getEmailTomador(); if ($oValidadorEmail->isValid($emailTO) || !empty($sEmailTomador) && $oValidadorEmail->isValid($sEmailTomador) || count($aEmailBCC) > 0) { $iInscricaoMunicipal = $oNota->getP_im(); $oContribuinte = Contribuinte_Model_Contribuinte::getByInscricaoMunicipal($iInscricaoMunicipal); $this->view->nota = $oNota; $this->view->justificativa_fiscal = $sJustificativaFiscal; $this->view->tomadorNome = $oNota->getT_razao_social(); $this->view->prestadorNome = $oContribuinte->getNome(); $this->view->prestadorCnpj = DBSeller_Helper_Number_Format::maskCPF_CNPJ($oContribuinte->getCgcCpf()); $this->view->nfseNumero = $oNota->getNota(); $this->view->nfseUrl = $oNota->getUrlVerificacaoNota(); $this->mensagem = $this->view->render('nota/email-rejeicao-cancelamento.phtml'); // Verifica se foi mudado o e-mail do Tomador para enviar uma cópia oculta do cancelamento if (!empty($sEmailTomador) && $sEmailTomador != $oNota->getT_email() && $oValidadorEmail->isValid($sEmailTomador)) { $emailTO = $sEmailTomador; if ($oValidadorEmail->isValid($oNota->getT_email())) { $aEmailBCC[] = $oNota->getT_email(); } $sMensagemRetorno = "Cancelamento rejeitado com sucesso.<br>Email foi enviado para {$emailTO}"; } // Caso não haja email cadastrado na nota e nem email informado no cancelamento, // ou se for uma solicitação de cancelamento, o primeiro email de fiscal é colocado // como destinatário principal para que seja possível o envio if (is_null($emailTO) || empty($emailTO)) { $emailTO = $aEmailBCC[0]; unset($aEmailBCC[0]); $sMensagemRetorno = "Cancelamento efetuado com sucesso.<br>Email foi enviado para {$emailTO}"; } // Envia Email DBSeller_Helper_Mail_Mail::send($emailTO, "Nota Fiscal Eletrônica nº {$oNota->getNota()}", $this->mensagem, 'utf-8', $aEmailBCC); } return $sMensagemRetorno; }
/** * Realiza a recusa do cadastro da pessoa * * @throws Exception * @return void */ public function recusarCadastroSalvarAction() { parent::noLayout(); $aDados = $this->getRequest()->getParams(); $aRetornoJson = NULL; $oForm = new Fiscal_Form_CadastroPessoaRecusa(); $oForm->populate($aDados); // Valida o formulario e gera a requisicao if ($oForm->isValid($aDados)) { try { $this->oDoctrine->getConnection()->beginTransaction(); $oCadastroPessoa = new Contribuinte_Model_CadastroPessoa($aDados['id']); $this->validarLiberacaoUsuario($oCadastroPessoa); if ($oCadastroPessoa->bloquearCadastro($aDados['justificativa'])) { $this->view->setScriptPath(APPLICATION_PATH . '/modules/default/views/scripts/cadastro-eventual/'); $this->view->sTextoRecusa = $aDados['justificativa']; $sTextoEmail = $this->view->render('email-aviso-recusa-cadastro.phtml'); $lEmail = DBSeller_Helper_Mail_Mail::send($oCadastroPessoa->getEmail(), $this->translate->_('ECidadeOnline2 - Retorno de Solicitação de Cadastro'), $sTextoEmail); if (!$lEmail) { throw new Exception($this->translate->_('Email não enviado. Favor Contate Suporte Prefeitura.')); } $aRetornoJson['status'] = TRUE; $aRetornoJson['reload'] = TRUE; $aRetornoJson['success'] = $this->translate->_('A Recusa do cadastro foi efetuada. Um email com a justificativa foi enviado ao contribuinte.'); } $this->oDoctrine->getConnection()->commit(); } catch (Exception $eErro) { $this->oDoctrine->getConnection()->rollback(); $aRetornoJson['status'] = FALSE; $aRetornoJson['error'][] = $eErro->getMessage(); } } else { $aRetornoJson['status'] = FALSE; $aRetornoJson['fields'] = array_keys($oForm->getMessages()); $aRetornoJson['error'][] = 'Preencha os dados corretamente.'; } echo $this->getHelper('json')->sendJson($aRetornoJson); }
/** * Método para persistir os dados do cadastro eventual [Json] * * @return void */ public function salvarAction() { $aDados = $this->getAllParams(); $oForm = new Administrativo_Form_CadastroPessoa(); // Carrega a lista de cidade e seta os selecionados if (!empty($aDados['estado']) && !empty($aDados['cidade'])) { $oForm->carregarCidades($aDados['estado'], $aDados['cidade']); } // Se informado o bairro pelo combo, retira a validação do campo texto if (isset($aDados['cod_bairro']) && !empty($aDados['cod_bairro'])) { $oForm->getElement('bairro')->setRequired(FALSE); $oForm->carregarBairros($aDados['cidade']); } // Se informado o bairro pelo campo texto, retira a validação do combo if (isset($aDados['bairro']) && !empty($aDados['bairro'])) { $oForm->getElement('cod_bairro')->setRequired(FALSE); } // Se informado o bairro pelo combo, retira a validação do campo texto if (isset($aDados['cod_endereco']) && !empty($aDados['cod_endereco'])) { $oForm->getElement('endereco')->setRequired(FALSE); $oForm->carregarEnderecos($aDados['cod_endereco']); } // Se informado o bairro pelo campo texto, retira a validação do combo if (isset($aDados['endereco']) && !empty($aDados['endereco'])) { $oForm->getElement('cod_endereco')->setRequired(FALSE); } if ($aDados['id_perfil'] == 6) { $oForm->getElement('cnpjcpf')->removeDecorator('DBSeller_Validator_CpfCnpj'); $oForm->getElement('cnpjcpf')->addValidator(new DBSeller_Validator_Cnpj()); } else { $oForm->getElement('cnpjcpf')->addValidator(new DBSeller_Validator_CpfCnpj()); } // Popula o formulario $oForm->populate($aDados); // Valida o formulario if ($oForm->isValid($aDados)) { // Recupera os parametros, limpando as máscaras com filters do form $aDados = $oForm->getValues(); // Recupera as configurações do doctrine e inicia a transação $oDoctrine = Zend_Registry::get('em'); $oDoctrine->getConnection()->beginTransaction(); try { $aUsuarioEmail = Administrativo_Model_Usuario::getByAttribute('email', $aDados['email']); if (count($aUsuarioEmail) > 0) { $sUrl = '<a href="' . $this->view->serverUrl('/auth/login/esqueci-minha-senha/') . '">Clique Aqui</a>'; $sMensagemErro = 'Já encontramos um cadastro com este email.<br>'; $sMensagemErro .= "Caso tenha esquecido sua senha. {$sUrl}"; throw new Exception($this->translate->_($sMensagemErro)); } $aUsuarioSistema = Administrativo_Model_Usuario::getByAttribute('login', $aDados['cnpjcpf']); if (count($aUsuarioSistema) > 0) { $sMensagemErro = 'Já encontramos um cadastro com essas informações.<br>'; $sMensagemErro .= 'Entre em contato com a prefeitura para maiores informações.'; throw new Exception($this->translate->_($sMensagemErro)); } $sHash = NULL; $oParametosPrefeitura = Administrativo_Model_Prefeitura::getDadosPrefeituraBase(); if (!$oParametosPrefeitura->getVerificaAutocadastro()) { $sHash = hash('whirlpool', $aDados['cnpjcpf'] . time() . $aDados['email']); $aDados['tipo_liberacao'] = Contribuinte_Model_CadastroPessoa::TIPO_LIBERACAO_USUARIO_CGM; } $aDados['hash'] = $sHash; $oCadastro = new Contribuinte_Model_CadastroPessoa(); $oCadastro->setDadosEventual($aDados); $oCadastro->persist(); if ($oParametosPrefeitura->getVerificaAutocadastro()) { $sTextoEmail = $this->view->render('cadastro-eventual/email-aviso-fiscal.phtml'); $aUsuariosFiscais = Administrativo_Model_Usuario::getByAttribute('perfil', 5); // Cria um array, mesmo quando for somente um objeto if (is_object($aUsuariosFiscais)) { $aUsuariosFiscais = array($aUsuariosFiscais); } if (is_array($aUsuariosFiscais)) { foreach ($aUsuariosFiscais as $oUsuarioFiscal) { // Envia email apenas para os fiscais habilitados if ($oUsuarioFiscal->getHabilitado()) { DBSeller_Helper_Mail_Mail::send($oUsuarioFiscal->getEmail(), $this->translate->_('ECidadeOnline2 - Solicitação de Contribuinte Eventual'), $sTextoEmail); } } } // Envio do email para o contribuinte, avisando da espera do envio do email $sTextoEmail = $this->view->render('cadastro-eventual/email-aviso-espera-liberacao-contribuinte.phtml'); DBSeller_Helper_Mail_Mail::send($aDados['email'], $this->translate->_('ECidadeOnline2 - Solicitação de Cadastro'), $sTextoEmail); } else { //link base do sistema + caminho para geração de senha $this->view->sLinkSenha = $this->view->serverUrl("/default/cadastro-eventual/verificacao/hash/{$sHash}"); $sTextoEmail = $this->view->render('cadastro-eventual/email-aviso-contribuinte.phtml'); $lEmail = DBSeller_Helper_Mail_Mail::send($aDados['email'], $this->translate->_('ECidadeOnline2 - Confirmação de Cadastro'), $sTextoEmail); if (!$lEmail) { throw new Exception($this->translate->_('Email não enviado. Favor contate o suporte da prefeitura.')); } } $sMensagemErro = 'Cadastro efetuado com sucesso.<br>'; $sMensagemErro .= 'Siga as instruções enviadas para o seu email para continuar o cadastro.'; $aRetornoJson['status'] = TRUE; $aRetornoJson['url'] = $this->view->serverUrl(); $aRetornoJson['success'] = $this->translate->_($sMensagemErro); $oDoctrine->getConnection()->commit(); } catch (Exception $oErro) { $oDoctrine->getConnection()->rollback(); $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.'); } // Retorna um json com mensagens de erro ou sucesso echo $this->getHelper('json')->sendJson($aRetornoJson); }
/** * Método responsável pelo envio de email no cancelamento ou na solicitação do mesmo * @param Contribuinte_Model_Nota $oNota * @param array $aDados * @param array $aEmailBCC * @param boolean $lSolicitacao * @param string $sJustificativa * @return string|null * @throws Exception */ private function enviarEmailCancelamento($oNota, $aDados, $aEmailBCC, $lSolicitacao = FALSE, $sJustificativa = null) { try { $oValidadorEmail = new Zend_Validate_EmailAddress(); $emailTO = $oNota->getT_email(); $sMensagemRetorno = NULL; if ($oValidadorEmail->isValid($emailTO) || !empty($aDados['email']) && $oValidadorEmail->isValid($aDados['email']) || count($aEmailBCC) > 0) { $iInscricaoMunicipal = $oNota->getP_im(); $oContribuinte = Contribuinte_Model_Contribuinte::getByInscricaoMunicipal($iInscricaoMunicipal); $this->view->justificativa = $sJustificativa; $this->view->solicitacao = $lSolicitacao; $this->view->nota = $oNota; $this->view->tomadorNome = $oNota->getT_razao_social(); $this->view->prestadorNome = $oContribuinte->getNome(); $this->view->prestadorCnpj = DBSeller_Helper_Number_Format::maskCPF_CNPJ($oContribuinte->getCgcCpf()); $this->view->nfseNumero = $oNota->getNota(); $this->view->nfseUrl = $oNota->getUrlVerificacaoNota(); $this->mensagem = $this->view->render('nota/email-emissao.phtml'); $aArquivoPdfNfse = $this->getNotaImpressao($oNota->getCod_verificacao(), TRUE, TRUE); // Verifica se foi mudado o e-mail do Tomador para enviar uma cópia oculta do cancelamento if (!empty($aDados['email']) && $aDados['email'] != $oNota->getT_email() && $oValidadorEmail->isValid($aDados['email'])) { $emailTO = $aDados['email']; if ($oValidadorEmail->isValid($oNota->getT_email())) { $aEmailBCC[] = $oNota->getT_email(); } $sMensagemRetorno = "Cancelamento efetuado com sucesso.<br>Email foi enviado para {$emailTO}"; } /*Caso não haja email cadastrado na nota e nem email informado no cancelamento, ou se for uma solicitação de cancelamento, o primeiro email de fiscal é colocado como destinatário principal para que seja possível o envio*/ if (is_null($emailTO) || empty($emailTO) || $lSolicitacao) { $emailTO = $aEmailBCC[0]; unset($aEmailBCC[0]); if ($lSolicitacao) { $sMensagemRetorno = "Cancelamento solicitado com sucesso.<br>Email foi enviado para {$emailTO}"; } } // Envia Email DBSeller_Helper_Mail_Mail::sendAttachment($emailTO, "Nota Fiscal Eletrônica nº {$oNota->getNota()}", $this->mensagem, $aArquivoPdfNfse, $aEmailBCC); // Apaga o arquivo temporario gerado para envio do email unlink($aArquivoPdfNfse['location']); return $sMensagemRetorno; } } catch (Exception $oError) { throw $oError; } }
/** * Executa o envio do protocolo por email via ajax */ public function enviarEmailAction() { $aParametros = $this->getRequest()->getParams(); $oForm = new Administrativo_Form_ProtocoloEnvioEmail(); $oForm->populate($aParametros); /** * Parametros de retorno do AJAX */ $aRetornoJson = array('success' => FALSE, 'message' => NULL); if (!$oForm->isValid($aParametros)) { $aRetornoJson['fields'] = array_keys($oForm->getMessages()); $aRetornoJson['error'][] = 'Preencha os dados corretamente.'; } else { try { // Consulta os dados do protocolo $oProtocolo = Administrativo_Model_Protocolo::getByAttribute('id', $aParametros['id']); $aDadosProtocolo = $oProtocolo->toArray(); // Gera o PDF com as informações do protocolo $aArquivoPDF = $this->gerarPDF($aDadosProtocolo); // Passa o objeto Protocolo para a view protocolo/email-emissao.phtml $this->view->oDadosProtocolo = $oProtocolo; // Renderiza a visão do corpo do email $sMensagemEmail = $this->view->render('protocolo/email-emissao.phtml'); // Envia o protocolo por email $lEmail = DBSeller_Helper_Mail_Mail::sendAttachment($aParametros['email'], "Protocolo nº {$oProtocolo->getProtocolo()}", $sMensagemEmail, $aArquivoPDF); /** * Verifica se o e-mail foi enviado com sucesso */ if ($lEmail) { $aRetornoJson['success'] = TRUE; $aRetornoJson['message'] = 'Email enviado com sucesso'; } else { throw new Exception('Erro ao enviar o email'); } } catch (Exception $oErro) { $aRetornoJson['error'][] = $oErro->getMessage(); } } echo $this->getHelper('json')->sendJson($aRetornoJson); }