/** * Processa os dados do formulário de importação de RPS [json] * * @return void */ public function rpsProcessarAction() { parent::noLayout(); $oForm = new Contribuinte_Form_ImportacaoArquivo(); $oForm->renderizaCamposRPS(); // Adiciona a validação do arquivo junto ao restante das mensagens de erro do form $aDados = array_merge($this->getRequest()->getPost(), array('isUploaded' => $oForm->arquivo->isUploaded())); // Valida o formulario e processa a importação if ($this->getRequest()->isPost() && $oForm->arquivo->isUploaded()) { $oArquivoUpload = new Zend_File_Transfer_Adapter_Http(); try { $oArquivoUpload->setDestination(APPLICATION_PATH . '/../public/tmp/'); // Confirma o upload e processa o arquivo if ($oArquivoUpload->receive()) { $oImportacaoModelo1 = new Contribuinte_Model_ImportacaoArquivoRpsModelo1(); $oImportacaoModelo1->setArquivoCarregado($oArquivoUpload->getFileName()); $oArquivoCarregado = $oImportacaoModelo1->carregar(); if ($oArquivoCarregado != NULL && $oImportacaoModelo1->validaArquivoCarregado()) { // Valida as regras de negócio e processa a importação $oImportacaoProcessamento = new Contribuinte_Model_ImportacaoArquivoProcessamento(); $oImportacaoProcessamento->setCodigoUsuarioLogado($this->usuarioLogado->getId()); $oImportacaoProcessamento->setArquivoCarregado($oArquivoCarregado); // Processa a importação $oImportacao = $oImportacaoProcessamento->processarImportacaoRps(); if ($oImportacao->getId()) { $sUrlRecibo = "/contribuinte/importacao-arquivo/rps-recibo/id/{$oImportacao->getId()}"; $aRetornoJson['status'] = TRUE; $aRetornoJson['url'] = $this->view->baseUrl($sUrlRecibo); $aRetornoJson['success'] = $this->translate->_('Arquivo importado com sucesso.'); } else { throw new Exception($this->translate->_('Ocorreu um erro ao importar o arquivo.')); } } else { throw new Exception($oImportacaoModelo1->processaErroSistema()); } } } catch (DBSeller_Exception_ImportacaoXmlException $oErro) { $aRetornoJson['status'] = FALSE; $aRetornoJson['error'] = array_merge(array('<b>' . $this->translate->_('Ocorreu um erro ao importar o arquivo:') . '</b><br>'), $oErro->getErrors()); } catch (Exception $oErro) { $aRetornoJson['status'] = FALSE; $aRetornoJson['error'][] = $oErro->getMessage(); } if (is_file($oArquivoUpload->getFileName())) { unlink($oArquivoUpload->getFileName()); } } else { $aRetornoJson['status'] = FALSE; $aRetornoJson['fields'] = array_keys($oForm->getMessages()); $aRetornoJson['error'][] = $this->translate->_('Preencha os dados corretamente.'); } echo $this->getHelper('json')->sendJson($aRetornoJson); }
/** * Processa o arquivo Webservice * * @return string * @throws Exception */ public function processamentoArquivo() { try { /** * Verifica o nome do arquivo */ if (!$this->sNomeArquivo) { $this->oModeloImportacao->setMensagemErro('E160'); } /** * Verifica se existe algum registro de usuário */ if (!is_object($this->oDadosUsuario)) { throw new Exception('Usuario não encontrado!', 157); } /** * Verifica se o usuário está autenticado */ if (!$this->autenticaUsuario($this->oDadosUsuario->getLogin())) { $this->oModeloImportacao->setMensagemErro('E157', 'Usuario: ' . $this->oDadosUsuario->getLogin()); } $this->oModeloImportacao->setArquivoCarregado($this->sCaminhoNomeArquivo); $oArquivoCarregado = $this->oModeloImportacao->carregar(); /** * Verifica se o modelo está válido e processa o arquivo de importação */ if ($oArquivoCarregado && !$this->oModeloImportacao->getErro() && $this->oModeloImportacao->validaArquivoCarregado()) { /** * Valida as regras de negócio e processa a importação */ $oImportacaoProcessamento = new Contribuinte_Model_ImportacaoArquivoProcessamento(); $oImportacaoProcessamento->setCodigoUsuarioLogado($this->oDadosUsuario->getId()); $oImportacaoProcessamento->setArquivoCarregado($oArquivoCarregado); /** * Processa a importação */ $oDadosImportacao = $oImportacaoProcessamento->processarImportacaoRps(); return $this->oModeloImportacao->processaSucessoWebService($oDadosImportacao); } else { return $this->oModeloImportacao->processaErroWebService($oArquivoCarregado->lote->numero); } } catch (Exception $oErro) { throw new Exception($oErro->getMessage(), $oErro->getCode()); } }