/** * Execucao do cancelamento de NFSE via ajax */ public function cancelarPostAction() { $aDados = $this->getRequest()->getParams(); $oForm = new Contribuinte_Form_NotaCancelar(); $oForm->populate($aDados); if (!$oForm->isValid($aDados)) { $aRetornoJson['status'] = FALSE; $aRetornoJson['fields'] = array_keys($oForm->getMessages()); $aRetornoJson['error'][] = 'Preencha os dados corretamente.'; } else { try { $oContribuinte = $this->_session->contribuinte; $oPrefeitura = Administrativo_Model_Prefeitura::getDadosPrefeituraBase(); $aLoginUsuario = Zend_Auth::getInstance()->getIdentity(); $oUsuario = Administrativo_Model_Usuario::getByAttribute('login', $aLoginUsuario['login']); $oDataCancelamento = new DateTime(); $oNota = Contribuinte_Model_Nota::getById($aDados['id']); if ($oNota->podeCancelar($oContribuinte)) { //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; } } if ($oPrefeitura->getSolicitaCancelamento()) { $oSolicitacaoCancelamento = new Contribuinte_Model_SolicitacaoCancelamento(); $oSolicitacaoCancelamento->solicitar($oNota->getEntity(), $aDados, $oUsuario->getEntity()); $sJustificativa = $oSolicitacaoCancelamento->getJustificativa(); $sRetornoEmail = $this->enviarEmailCancelamento($oNota, $aDados, $aEmailBCC, TRUE, $sJustificativa); $sMensagemRetorno = "Cancelamento solicitado com sucesso!"; } else { $oCancelamentoNota = new Contribuinte_Model_CancelamentoNota(); $oCancelamentoNota->setUsuarioCancelamento($oUsuario); $oCancelamentoNota->setNotaCancelada($oNota); $oCancelamentoNota->setJustificativa($aDados['cancelamento_justificativa']); $oCancelamentoNota->setMotivoCancelmento($aDados['cancelamento_motivo']); $oCancelamentoNota->setDataHora($oDataCancelamento); $oCancelamentoNota->salvar(); $sRetornoEmail = $this->enviarEmailCancelamento($oNota, $aDados, $aEmailBCC, FALSE); $sMensagemRetorno = "Cancelamento efetuado com sucesso!"; } $sMensagemRetorno = is_null($sRetornoEmail) ? $sMensagemRetorno : $sRetornoEmail; $aRetornoJson['status'] = TRUE; $aRetornoJson['success'] = $sMensagemRetorno; } else { throw new Exception("Esta nota não pode mais ser cancelada!"); } } catch (Exception $oErro) { $aRetornoJson['status'] = FALSE; $aRetornoJson['error'][] = $oErro->getMessage(); } } echo $this->getHelper('json')->sendJson($aRetornoJson); }
/** * Action que autoriza e efetua o cancelamento solicitado pelo contribuinte */ public function confirmarAction() { parent::noLayout(); try { $aDados = $this->getRequest()->getParams(); $aLoginUsuario = Zend_Auth::getInstance()->getIdentity(); $oUsuario = Administrativo_Model_Usuario::getByAttribute('login', $aLoginUsuario['login']); $oSolicitacao = Contribuinte_Model_SolicitacaoCancelamento::getById($aDados['id']); $oNota = Contribuinte_Model_Nota::getById($oSolicitacao->getNota()->getId()); $oDataCancelamento = new DateTime(); $oCancelamentoNota = new Contribuinte_Model_CancelamentoNota(); $oCancelamentoNota->setUsuarioCancelamento($oUsuario); $oCancelamentoNota->setNotaCancelada($oNota); $oCancelamentoNota->setJustificativa($oSolicitacao->getJustificativa()); $oCancelamentoNota->setMotivoCancelmento($oSolicitacao->getMotivo()); $oCancelamentoNota->setDataHora($oDataCancelamento); $oCancelamentoNota->salvar(); $sRetornoEmail = $this->enviarEmailCancelamento($oNota, $oSolicitacao); $sMensagemRetorno = "Cancelamento efetuado com sucesso!"; $sMensagemRetorno = is_null($sRetornoEmail) ? $sMensagemRetorno : $sRetornoEmail; $oSolicitacao->destroy(); $aRetornoJson['status'] = TRUE; $aRetornoJson['success'] = $sMensagemRetorno; } catch (Exception $oError) { $aRetornoJson['status'] = FALSE; $aRetornoJson['error'][] = $oError->getMessage(); } echo $this->getHelper('json')->sendJson($aRetornoJson); }
/** * Cancela a nota * @return string */ public function processar() { try { /** * Cancela uma nota caso não tiver inconsistencias no processo */ if (count($this->aInconsistencias) == 0) { $oDataCancelamento = new DateTime(); $iCodigoCancelamento = (int) $this->oDadosXML->CodigoCancelamento; /** * Verifica justificativa do cancelamento */ switch ($iCodigoCancelamento) { case Contribuinte_Model_CancelamentoNota::CANCELAMENTO_ERRO_EMISSAO: $sJustificativa = "Cancelado via WebService. Motivo: Erro na emissão."; break; case Contribuinte_Model_CancelamentoNota::CANCELAMENTO_NOTA_DUPLICADA: $sJustificativa = "Cancelado via WebService. Motivo: Duplicidade da nota."; break; case Contribuinte_Model_CancelamentoNota::CANCELAMENTO_SERVICO_NAO_PRESTADO: $sJustificativa = "Cancelado via WebService. Motivo: Serviço não prestado."; break; default: $sJustificativa = "Cancelado via WebService. Motivo: Outros."; $iCodigoCancelamento = 9; break; } $oCancelamentoNota = new Contribuinte_Model_CancelamentoNota(); $oCancelamentoNota->setUsuarioCancelamento($this->oContribuinte->getUsuario()); $oCancelamentoNota->setNotaCancelada($this->oNota); $oCancelamentoNota->setJustificativa($sJustificativa); $oCancelamentoNota->setMotivoCancelmento($iCodigoCancelamento); $oCancelamentoNota->setDataHora($oDataCancelamento); $oCancelamentoNota->salvar(); } } catch (Exception $e) { $this->adicionarInconsistencia('E160'); } return $this->retornoWebservice(); }