/**
  * Método abstrato para validar o formulário em ambos os relatórios
  *
  * @param string $sTipoRelatorio
  * @return array|boolean
  */
 protected function validarFormulario($sTipoRelatorio = Fiscal_Form_Relatorio4::TIPO9)
 {
     $aDados = $this->getRequest()->getPost();
     $aRetornoErros = array();
     $oForm = new Fiscal_Form_Relatorio4();
     $oForm->render(NULL, $sTipoRelatorio);
     // Verifica se os parâmetros do formulário são válidos
     if ($oForm->isValid($aDados)) {
         // Parâmetros do formulário
         $sCompetencia = $this->getRequest()->getParam('data_competencia_inicial', NULL);
         $oValidaCompetencia = new DBSeller_Validator_Competencia();
         $oValidaCompetencia->setCompetenciaInicial($sCompetencia);
         $oValidaCompetencia->setCompetenciaFinal($sCompetencia);
         // Valida a competência inicial e final
         if (!$oValidaCompetencia->isValid($sCompetencia)) {
             $aRetornoErros['status'] = FALSE;
             $aRetornoErros['fields'] = array('data_competencia_inicial');
             $aMensagensErro = $oValidaCompetencia->getMessages();
             $aIndicesErro = array_keys($aMensagensErro);
             foreach ($aIndicesErro as $sIndiceErro) {
                 if (array_key_exists($sIndiceErro, $aMensagensErro)) {
                     $aRetornoErros['error'][] = $this->translate->_($aMensagensErro[$sIndiceErro]);
                 }
             }
             return $aRetornoErros;
         }
         return TRUE;
     } else {
         $aCamposComErro = array_keys($oForm->getMessages());
         $sMensagemErro = $this->translate->_('Preencha os dados corretamente.');
         if (count($aCamposComErro) > 1) {
             $sMensagemErro = $this->translate->_('Preencha os dados corretamente.');
         } else {
             if (in_array('data_competencia', $aCamposComErro)) {
                 $sMensagemErro = $this->translate->_('Informe a Competência corretamente.');
             }
         }
         $aRetornoErros['status'] = FALSE;
         $aRetornoErros['fields'] = array_keys($oForm->getMessages());
         $aRetornoErros['error'][] = $this->translate->_($sMensagemErro);
     }
     return $aRetornoErros;
 }
 /**
  * Método abstrato para validar o formulário em ambos os relatórios
  *
  * @return array|boolean
  */
 protected function validarFormulario()
 {
     $aDados = $this->getRequest()->getPost();
     $aRetornoErros = array();
     $oForm = new Fiscal_Form_Relatorio6();
     $oForm->render();
     // Verifica se os parâmetros do formulário são válidos
     if ($oForm->isValid($aDados)) {
         // Parâmetros do formulário
         $sCompetenciaInicial = $oForm->getValue('data_competencia_inicial');
         $sCompetenciaFinal = $oForm->getValue('data_competencia_final');
         $sPrestadorCnpj = $oForm->getValue('prestador_cnpj');
         // Valida se é cadastrado e se é prestador de servico
         $oPrestador = Contribuinte_Model_Contribuinte::getByCpfCnpj($sPrestadorCnpj);
         if (!$oPrestador instanceof Contribuinte_Model_Contribuinte) {
             $sMensagemErro = $this->translate->_('Contribuinte não cadastrado no sistema.');
             $aRetornoErros['status'] = FALSE;
             $aRetornoErros['fields'] = array('prestador_cnpj');
             $aRetornoErros['error'][] = $this->translate->_($sMensagemErro);
             return $aRetornoErros;
         } else {
             if (!Contribuinte_Model_Servico::getByIm($oPrestador->getInscricaoMunicipal())) {
                 $sMensagemErro = $this->translate->_('O contribuinte não é prestador de serviços.');
                 $aRetornoErros['status'] = FALSE;
                 $aRetornoErros['fields'] = array('prestador_cnpj');
                 $aRetornoErros['error'][] = $this->translate->_($sMensagemErro);
                 return $aRetornoErros;
             }
         }
         // Objeto para validação das competências inicial e final
         $oValidaCompetencia = new DBSeller_Validator_Competencia();
         $oValidaCompetencia->setCompetenciaInicial($sCompetenciaInicial);
         $oValidaCompetencia->setCompetenciaFinal($sCompetenciaFinal);
         // Valida a competência inicial e final
         if (!$oValidaCompetencia->isValid($sCompetenciaInicial)) {
             $aRetornoErros['status'] = FALSE;
             $aRetornoErros['fields'] = array('data_competencia_inicial', 'data_competencia_final');
             $aMensagensErro = $oValidaCompetencia->getMessages();
             $aIndicesErro = array_keys($aMensagensErro);
             foreach ($aIndicesErro as $sIndiceErro) {
                 if (array_key_exists($sIndiceErro, $aMensagensErro)) {
                     $aRetornoErros['error'][] = $this->translate->_($aMensagensErro[$sIndiceErro]);
                 }
             }
             return $aRetornoErros;
         }
         return TRUE;
     } else {
         $aCamposComErro = array_keys($oForm->getMessages());
         $sMensagemErro = $this->translate->_('Preencha os dados corretamente.');
         if (count($aCamposComErro) > 1) {
             $sMensagemErro = $this->translate->_('Preencha os dados corretamente.');
         } else {
             if (in_array('data_competencia_final', $aCamposComErro)) {
                 $sMensagemErro = $this->translate->_('Informe a Competência Final corretamente.');
             } else {
                 if (in_array('data_competencia_inicial', $aCamposComErro)) {
                     $sMensagemErro = $this->translate->_('Informe a Competência Inicial corretamente.');
                 }
             }
         }
         $aRetornoErros['status'] = FALSE;
         $aRetornoErros['fields'] = array_keys($oForm->getMessages());
         $aRetornoErros['error'][] = $this->translate->_($sMensagemErro);
     }
     return $aRetornoErros;
 }