/** * 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; } }
/** * Método responsável pelo envio de email no cancelamento ou na solicitação do mesmo * @param Contribuinte_Model_Nota $oNota * @param Contribuinte_Model_SolicitacaoCancelamento $oSolicitacao * @return string|null */ public function enviarEmailCancelamento($oNota, $oSolicitacao) { //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->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($sEmailTomador) && $sEmailTomador != $oNota->getT_email() && $oValidadorEmail->isValid($sEmailTomador)) { $emailTO = $sEmailTomador; 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)) { $emailTO = $aEmailBCC[0]; unset($aEmailBCC[0]); $sMensagemRetorno = "Cancelamento efetuado 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; }
/** * 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); }