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