/**
  * 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;
 }
 /**
  * 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;
     }
 }