/** * Verifica se deve emitir a guia considerando: * 1 - as características do contribuinte no alvará * 2 - tributação dentro ou fora do municipio * * * @param stdClass $oParametro * $oParametro->inscricao_municipal * $oParametro->data * @throws Exception * @return boolean * * @tutorial: Abaixo constam as regras para emissão de guia * * Regime(4)/Exigibilidade(5) |Exigível(23)|Não Incide(24)|Isento(25)|Export.(26)|Imune(27)|Susp.Judic(28)|Susp.Adm(29) * ------------------------------------------------------------------------------------------------------------------ * (--)Optante Simples |Não |Não |Não |Não |Não |Não |Não * (14)Normal |Sim |Não |Não |sim |Não |Não |Não * (15)Cooperativa |Sim |Não |Não |sim |Não |Não |Não * (16)EPP |Sim |Não |Não |sim |Não |Não |Não * (17)Estimativa |Sim |Não |Não |sim |Não |Não |Não * (18)Fixado |Não |Não |Não |Não |Não |Não |Não * (19)ME municipal |Sim |Não |Não |sim |Não |Não |Não * (20)MEI |Não |Não |Não |Não |Não |Não |Não * (21)ME |Sim |Não |Não |sim |Não |Não |Não * (22)Sociedade profissional |Não |Não |Não |Não |Não |Não |Não */ public static function checarEmissaoGuia($oParametro = NULL) { $oValidaData = new Zend_Validate_Date(); if (!is_object($oParametro)) { throw new Exception('O parâmetro informado deve ser um objeto.'); } else { if (!isset($oParametro->data) || !isset($oParametro->inscricao_municipal)) { throw new Exception('Verifique os parâmetros informados.'); } else { if (!$oValidaData->isValid($oParametro->data)) { throw new Exception('Parâmetro "data" inválido.'); } } } // Busca os dados do contribuinte da sessão $oContribuinte = Contribuinte_Model_Contribuinte::getByInscricaoMunicipal($oParametro->inscricao_municipal); if (!is_object($oContribuinte)) { throw new Exception('Nenhum contribuinte foi encontrado.'); } // Optante pelo simples no período pesquisado, não emite guia $oDataSimples = new DateTime(DBSeller_Helper_Date_Date::invertDate($oParametro->data)); if ($oContribuinte->isOptanteSimples($oDataSimples)) { return FALSE; } // Verifica se deve emitir a guia conforme as regras de emissão $iRegimeTributario = $oContribuinte->getRegimeTributario(); $iExigibilidade = $oContribuinte->getExigibilidade(); switch ("{$iRegimeTributario}-{$iExigibilidade}") { case '14-23': case '14-26': case '15-23': case '15-26': case '16-23': case '16-26': case '17-23': case '17-26': case '19-23': case '19-26': case '21-23': case '21-26': return TRUE; break; default: return FALSE; } return FALSE; }
/** * 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; }
/** * Gera o Livro Fiscal */ public function livroFiscalGerarAction() { parent::noLayout(); $aDados = $this->getRequest()->getPost(); $oForm = new Contribuinte_Form_LivroFiscal(); // Verifica se os parâmetros do formulário são válidos if ($oForm->isValid($aDados)) { // Parâmetros do formulário $iInscricaoMunicipal = $this->getRequest()->getParam('inscricao_municipal', NULL); $sCompetenciaInicial = $this->getRequest()->getParam('data_competencia_inicial', NULL); $sCompetenciaFinal = $this->getRequest()->getParam('data_competencia_final', NULL); $oValidaCompetencia = new DBSeller_Validator_Competencia(); $oValidaCompetencia->setCompetenciaInicial($sCompetenciaInicial); $oValidaCompetencia->setCompetenciaFinal($sCompetenciaFinal); // Valida a competência inicial e final if (!$oValidaCompetencia->isValid($sCompetenciaInicial)) { $aMensagensErro = $oValidaCompetencia->getMessages(); $aIndicesErro = array_keys($aMensagensErro); $aRetornoJson['status'] = FALSE; $aRetornoJson['fields'] = array('data_competencia_inicial', 'data_competencia_final'); foreach ($aIndicesErro as $sIndiceErro) { if (array_key_exists($sIndiceErro, $aMensagensErro)) { $aRetornoJson['error'][] = $this->translate->_($aMensagensErro[$sIndiceErro]); } } echo $this->getHelper('json')->sendJson($aRetornoJson); } // Dados do contribuinte $oContribuinte = Contribuinte_Model_Contribuinte::getByInscricaoMunicipal($iInscricaoMunicipal); // Gera o pdf do livro fiscal $sNomeArquivo = self::livroFiscalGerarDocumento($oContribuinte); if ($sNomeArquivo) { $sUrlLivroFiscal = "/contribuinte/relatorio/livro-fiscal-download/arquivo/{$sNomeArquivo}"; $aRetornoJson['status'] = TRUE; $aRetornoJson['url'] = $this->view->baseUrl($sUrlLivroFiscal); $aRetornoJson['success'] = $this->translate->_('Arquivo importado com sucesso.'); } else { $aRetornoJson['status'] = FALSE; $aRetornoJson['error'][] = $this->translate->_('Ocorreu um erro ao gerar o livro fiscal.'); } echo $this->getHelper('json')->sendJson($aRetornoJson); } else { $aCamposComErro = array_keys($oForm->getMessages()); $sMensagemErro = 'Preencha os dados corretamente.'; if (count($aCamposComErro) > 1) { $sMensagemErro = 'Preencha os dados corretamente.'; } else { if (in_array('data_competencia_final', $aCamposComErro)) { $sMensagemErro = 'Informe a Competência Final corretamente.'; } else { if (in_array('data_competencia_inicial', $aCamposComErro)) { $sMensagemErro = 'Informe a Competência Inicial corretamente.'; } } } $aRetornoJson['status'] = FALSE; $aRetornoJson['fields'] = array_keys($oForm->getMessages()); $aRetornoJson['error'][] = $this->translate->_($sMensagemErro); echo $this->getHelper('json')->sendJson($aRetornoJson); } }
/** * Salva os dados complementares do usuário contribuinte * * @param int $iInscricaoMunicipal * @return bool */ private function salvarDadosComplementaresUsuarioContribuinte($iInscricaoMunicipal) { try { $oContribuinte = Contribuinte_Model_Contribuinte::getByInscricaoMunicipal($iInscricaoMunicipal); $oContribuinteComplemento = Administrativo_Model_UsuarioContribuinteComplemento::getById($oContribuinte->getCgcCpf()); $oContribuinteComplemento->setInscricaoMunicipal($oContribuinte->getInscricaoMunicipal()); $oContribuinteComplemento->setInscricaoEstadual($oContribuinte->getInscricaoEstadual()); $oContribuinteComplemento->setCnpjcpf($oContribuinte->getCgcCpf()); $oContribuinteComplemento->setRazaoSocial($oContribuinte->getRazaoSocial() ?: $oContribuinte->getNome()); $oContribuinteComplemento->setNomeFantasia($oContribuinte->getNomeFantasia()); $oContribuinteComplemento->setEnderecoPaisCodigo(); $oContribuinteComplemento->setEnderecoUf($oContribuinte->getEstado()); $oContribuinteComplemento->setEnderecoMunicipioCodigo($oContribuinte->getCodigoIbgeMunicipio()); $oContribuinteComplemento->setEnderecoDescricao($oContribuinte->getDescricaoLogradouro()); $oContribuinteComplemento->setEnderecoBairro($oContribuinte->getLogradouroBairro()); $oContribuinteComplemento->setEnderecoNumero($oContribuinte->getLogradouroNumero()); $oContribuinteComplemento->setEnderecoComplemento($oContribuinte->getLogradouroComplemento()); $oContribuinteComplemento->setEnderecoCep($oContribuinte->getCep()); $oContribuinteComplemento->setContatoEmail($oContribuinte->getEmail()); $oContribuinteComplemento->setContatoTelefone($oContribuinte->getTelefone()); $oContribuinteComplemento->persist(); return TRUE; } catch (Exception $oErro) { return FALSE; } }
/** * 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; }
/** * Acao Salvar DMS Entrada * * @return mixed bool|json */ public function emissaoManualEntradaSalvarAction() { // Dados Request $aDados = $this->getRequest()->getParams(); // Formulario $oForm = new Contribuinte_Form_DmsEntrada(); $oForm->populate($aDados); // Valida o formulario if ($oForm->isValid($aDados)) { // Verifica se ja existe uma nota com o numero e se tem AIDOF self::emissaoManualEntradaVerificarDocumentoAction(); // Valida se a data da nota esta no mes corrente $oValidaDataNota = new DBSeller_Validator_DateCurrentMonth(); $oValidaDataNota->setMes($aDados['mes_comp']); $oValidaDataNota->setAno($aDados['ano_comp']); if (!$oValidaDataNota->isValid($aDados['s_nota_data'])) { $aErros = $oValidaDataNota->getMessages(); $aRetornoJson['status'] = FALSE; $aRetornoJson['error'][] = $aErros[$oValidaDataNota::COMPETENCIA_INVALIDA]; echo $this->getHelper('json')->sendJson($aRetornoJson); exit; } // Aplica filtro de mascaras $aDados['s_cpf_cnpj'] = $oForm->getElement('s_cpf_cnpj')->getValue(); // SALVAR DADOS DA DMS (INI) if (isset($aDados['id_dms']) && !empty($aDados['id_dms'])) { $oDms = Contribuinte_Model_Dms::getById($aDados['id_dms']); } else { $oDms = new Contribuinte_Model_Dms(); $oDms->setAnoCompetencia($aDados['ano_comp']); $oDms->setMesCompetencia($aDados['mes_comp']); $oDms->setOperacao('e'); } if (!is_object($oDms)) { $aRetornoJson['status'] = FALSE; $aRetornoJson['error'][] = $this->translate->_('Código DMS não encontrado.'); echo $this->getHelper('json')->sendJson($aRetornoJson); exit; } $oDms->setDataOperacao(new DateTime()); $oDms->setStatus('aberto'); $oDms->setIdContribuinte($this->oContribuinte->getIdUsuarioContribuinte()); $oDms->setIdUsuario($this->usuarioLogado->getId()); // SALVAR DADOS DA DMS (FIM) // SALVAR DADOS DA NOTA (INI) if (isset($aDados['id']) && !empty($aDados['id'])) { $oDmsNota = Contribuinte_Model_DmsNota::getById($aDados['id']); } else { $oDmsNota = new Contribuinte_Model_DmsNota(); } if (!is_object($oDmsNota)) { $aRetornoJson['status'] = FALSE; $aRetornoJson['error'][] = $this->translate->_('Código Dms Nota não encontrado.'); echo $this->getHelper('json')->sendJson($aRetornoJson); exit; } // Dados Nota $oGrupoDocumento = Contribuinte_model_nota::getTipoNota($aDados['tipo_documento']); $oDataNota = new DateTime(str_replace('/', '-', $aDados['s_nota_data'])); $oDataNota->format('Y-m-d'); $oDmsNota->setNotaNumero($aDados['s_nota']); $oDmsNota->setNotaSerie($aDados['s_nota_serie']); $oDmsNota->setNotaData($oDataNota); $oDmsNota->setGrupoDocumento($oGrupoDocumento->codigo_grupo); $oDmsNota->setTipoDocumento($aDados['tipo_documento']); $oDmsNota->setSituacaoDocumento($aDados['situacao_documento']); $oDmsNota->setNaturezaOperacao($aDados['natureza_operacao']); $oDmsNota->setEmiteGuia(TRUE); $oDmsNota->setServicoImpostoRetido($aDados['s_imposto_retido'] == 1); // Se a natureza da operação for 2 (fora da prefeitura), NÃO emite guia if ($aDados['natureza_operacao'] == 2) { $oDmsNota->setEmiteGuia(FALSE); } // Dados Servico $oDataServico = new DateTime(str_replace('/', '-', $aDados['s_data'])); $oDataServico->format('Y-m-d'); // Formata dados $sServicoValorPagar = DBSeller_Helper_Number_Format::toDataBase($aDados['s_valor_bruto']); $sServicoValorDeducao = DBSeller_Helper_Number_Format::toDataBase($aDados['s_valor_deducao']); $sServicoValorCondicionado = DBSeller_Helper_Number_Format::toDataBase($aDados['s_vl_condicionado']); $sServicoDescontoIncondicionado = DBSeller_Helper_Number_Format::toDataBase($aDados['s_vl_desc_incondicionado']); $sServicoAliquota = str_replace(',', '.', $aDados['s_aliquota']); $sServicoBaseCalculo = DBSeller_Helper_Number_Format::toDataBase($aDados['s_base_calculo']); $sServicoValorImposto = DBSeller_Helper_Number_Format::toDataBase($aDados['s_valor_imposto']); $sServicoValorLiquido = DBSeller_Helper_Number_Format::toDataBase($aDados['s_valor_pagar']); // Seta os dados do Documento de DMS $oDmsNota->setNumpre(0); $oDmsNota->setServicoData($oDataServico); $oDmsNota->setServicoImpostoRetido($aDados['s_imposto_retido']); $oDmsNota->setServicoValorPagar($sServicoValorPagar); $oDmsNota->setServicoValorDeducao($sServicoValorDeducao); $oDmsNota->setServicoValorCondicionado($sServicoValorCondicionado); $oDmsNota->setServicoDescontoIncondicionado($sServicoDescontoIncondicionado); $oDmsNota->setServicoAliquota($sServicoAliquota); $oDmsNota->setServicoBaseCalculo($sServicoBaseCalculo); $oDmsNota->setServicoValorImposto($sServicoValorImposto); $oDmsNota->setServicoValorLiquido($sServicoValorLiquido); $oDmsNota->setDescricaoServico($aDados['s_observacao']); $oDmsNota->setServicoCodigoObra($aDados['s_codigo_obra']); $oDmsNota->setServicoArt($aDados['s_art']); $oDmsNota->setServicoInformacoesComplementares($aDados['s_informacoes_complementares']); if ($this->oContribuinte->getInscricaoMunicipal()) { $oDadosTomador = Contribuinte_Model_Contribuinte::getByInscricaoMunicipal($this->oContribuinte->getInscricaoMunicipal()); } else { $oDadosTomador = Contribuinte_Model_ContribuinteEventual::getByCpfCnpj($this->oContribuinte->getCgcCpf()); } $oDmsNota->setTomadorCpfCnpj($oDadosTomador->getCgcCpf()); $oDmsNota->setTomadorInscricaoMunicipal($oDadosTomador->getInscricaoMunicipal()); $oDmsNota->setTomadorInscricaoEstadual($oDadosTomador->getInscricaoEstadual()); $oDmsNota->setTomadorRazaoSocial($oDadosTomador->getNome()); $oDmsNota->setTomadorNomeFantasia($oDadosTomador->getNomeFantasia()); $oDmsNota->setTomadorEnderecoRua($oDadosTomador->getDescricaoLogradouro()); $oDmsNota->setTomadorEnderecoNumero($oDadosTomador->getLogradouroNumero()); $oDmsNota->setTomadorEnderecoComplemento($oDadosTomador->getLogradouroComplemento()); $oDmsNota->setTomadorEnderecoBairro($oDadosTomador->getLogradouroBairro()); $oDmsNota->setTomadorEnderecoCodigoMunicipio($oDadosTomador->getCodigoIbgeMunicipio()); $oDmsNota->setTomadorEnderecoEstado($oDadosTomador->getEstado()); $oDmsNota->setTomadorEnderecoCodigoPais($oDadosTomador->getCodigoPais()); $oDmsNota->setTomadorEnderecoCEP($oDadosTomador->getCep()); $oDmsNota->setTomadorTelefone($oDadosTomador->getTelefone()); $oDmsNota->setTomadorEmail($oDadosTomador->getEmail()); // Dados Tomador $oDadosPrestador = Contribuinte_Model_Empresa::getByCgcCpf($aDados['s_cpf_cnpj']); if (empty($oDadosPrestador->eCidade)) { // Se não for cadastrado no eCidade, salva prestador no NFSE if (empty($oDadosPrestador->eNota) && !empty($aDados['s_cpf_cnpj'])) { $aDadosPrestador['t_cnpjcpf'] = $aDados['s_cpf_cnpj']; $aDadosPrestador['t_razao_social'] = $aDados['s_razao_social']; $oDadosPrestadorNota = new Contribuinte_Model_EmpresaBase(); $oDadosPrestadorNota->persist($aDadosPrestador); } $oDmsNota->setPrestadorCpfCnpj($aDados['s_cpf_cnpj']); $oDmsNota->setPrestadorRazaoSocial($aDados['s_razao_social']); } else { $oDadosPrestadorEcidade = $oDadosPrestador->eCidade[0]; $oDmsNota->setPrestadorCpfCnpj($aDados['s_cpf_cnpj']); $oDmsNota->setPrestadorNomeFantasia($oDadosPrestadorEcidade->attr('nome_fanta')); $oDmsNota->setPrestadorRazaoSocial($oDadosPrestadorEcidade->attr('nome')); $oDmsNota->setPrestadorInscricaoMunicipal($oDadosPrestadorEcidade->attr('inscricao')); $oDmsNota->setPrestadorInscricaoEstadual($oDadosPrestadorEcidade->attr('inscr_est')); $oDmsNota->setPrestadorEnderecoRua($oDadosPrestadorEcidade->attr('endereco')); $oDmsNota->setPrestadorEnderecoNumero($oDadosPrestadorEcidade->attr('numero')); $oDmsNota->setPrestadorEnderecoComplemento($oDadosPrestadorEcidade->attr('complemento')); $oDmsNota->setPrestadorEnderecoBairro($oDadosPrestadorEcidade->attr('bairro')); $oDmsNota->setPrestadorEnderecoCodigoMunicipio($oDadosPrestadorEcidade->attr('cod_ibge')); $oDmsNota->setPrestadorEnderecoEstado($oDadosPrestadorEcidade->attr('uf')); $oDmsNota->setPrestadorEnderecoCodigoPais($oDadosPrestadorEcidade->attr('cod_pais')); $oDmsNota->setPrestadorEnderecoCEP($oDadosPrestadorEcidade->attr('cep')); $oDmsNota->setPrestadorTelefone($oDadosPrestadorEcidade->attr('telefone')); $oDmsNota->setPrestadorEmail($oDadosPrestadorEcidade->attr('email')); } $oDmsNota->setIdUsuario($this->usuarioLogado->getId()); $oDmsNota->setIdContribuinte($this->oContribuinte->getIdUsuarioContribuinte()); $oDmsNota->setDms($oDms->getEntity()); // Adiciona o documento ao DMS $oDms->addDmsNotas($oDmsNota->getEntity()); // Salva o DMS e o documento $iCodigoDms = $oDms->persist(); // Configura a mensagem de retorno $aRetornoJson['status'] = TRUE; $aRetornoJson['success'] = $this->translate->_('Documento lançado com sucesso!'); $aRetornoJson['id_dms'] = $iCodigoDms; // Quando for alteração, configura a mensagem de alteração if (isset($aDados['id']) && $aDados['id']) { $sUrlDmsAlterado = "/contribuinte/dms/emissao-manual-entrada/id_dms/{$iCodigoDms}"; $aRetornoJson['success'] = $this->translate->_('Documento alterado com sucesso!'); $aRetornoJson['url'] = $this->view->baseUrl($sUrlDmsAlterado); } } else { $aRetornoJson['status'] = FALSE; $aRetornoJson['fields'] = array_keys($oForm->getMessages()); $aRetornoJson['error'][] = $this->translate->_('Preencha os dados corretamente.'); } 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; } }