/**
  * Método que retorna as quantidades de notas pendentes do contribuinte
  *
  * @params integer $iInscricaoMunicipal
  * @params integer $iTipoNota
  * @params string $sGrupoNota
  * @return integer $iQuantidadeNotasEmissao
  */
 public static function getQuantidadeNotasPendentes($iInscricaoMunicipal, $iTipoNota = NULL, $sGrupoNota = NULL)
 {
     $iQuantidadeNotas = Contribuinte_Model_Nota::getNotasEmitidas($iInscricaoMunicipal, 7);
     $iQuantidadeNotasLiberadas = Administrativo_Model_Aidof::getQuantidadesNotasEmissao($iInscricaoMunicipal, $iTipoNota, $sGrupoNota);
     $iQuantidadeNotasEmissao = $iQuantidadeNotasLiberadas - $iQuantidadeNotas;
     $iQuantidadeNotasEmissao = $iQuantidadeNotasEmissao > 0 ? $iQuantidadeNotasEmissao : 0;
     return $iQuantidadeNotasEmissao;
 }
 /**
  * Popula o combo tipo_documento com dados do e-Cidade
  *
  * @param integer|null $iTipoDocumento
  * @return $this
  */
 public function setTipoDocumento($iTipoDocumento = NULL)
 {
     $iInscricaoMunicipal = $this->oContribuinte->getInscricaoMunicipal();
     $aTiposDocumentos = array();
     $aTiposDocumentosLiberados = Administrativo_Model_RequisicaoAidof::getRequisicoesAidof($iInscricaoMunicipal);
     // Lista tipos de documentos liberados
     if (count($aTiposDocumentosLiberados) > 0) {
         foreach ($aTiposDocumentosLiberados as $oTiposDocumentos) {
             $iCodigoNota = $oTiposDocumentos->codigo_nota;
             $oAidof = new Administrativo_Model_Aidof();
             $iNotasEmissao = $oAidof->getQuantidadesNotasEmissao($iInscricaoMunicipal, $iCodigoNota);
             if (empty($iTipoDocumento) && $iNotasEmissao <= 0) {
                 continue;
             }
             $sDescricaoNota = DBSeller_Helper_String_Format::wordsCap($oTiposDocumentos->descricao_nota);
             $aTiposDocumentos[$oTiposDocumentos->codigo_nota] = $sDescricaoNota;
         }
     }
     $this->getElement('tipo_documento')->addMultiOptions($aTiposDocumentos)->setValue($iTipoDocumento);
     return $this;
 }
 /**
  * Verifica se ja existe uma nota com o numero e se tem AIDOF [Json]
  *
  * @return boolean
  */
 public function emissaoManualSaidaVerificarDocumentoAction()
 {
     parent::noLayout();
     try {
         // Parâmetros request
         $iTipoDocumento = $this->getRequest()->getParam('tipo_documento', NULL);
         $sNumeroNota = $this->getRequest()->getParam('s_nota', NULL);
         $iIdDmsNota = $this->getRequest()->getParam('id', NULL);
         if ($iTipoDocumento) {
             // Verifica a quantidade de Aidof disponivel para o tipo de documento
             $oAidof = new Administrativo_Model_Aidof();
             $iQtdeAidofEmissao = $oAidof->getQuantidadesNotasEmissao($this->oContribuinte->getInscricaoMunicipal(), $iTipoDocumento);
             // Verifica Requisicoes de AIDOF
             if (!$iIdDmsNota && $iQtdeAidofEmissao <= 0) {
                 $sUrlRequisicao = $this->view->serverUrl('/contribuinte/dms/requisicao');
                 $aRetornoJson['status'] = FALSE;
                 $aRetornoJson['error'][] = 'O limite para emissão de notas foi atingido para este tipo de documento, ';
                 $aRetornoJson['error'][] = "<a href='" . $sUrlRequisicao . "'>clique aqui</a> ";
                 $aRetornoJson['error'][] = 'para emitir uma nova requisição.';
                 echo $this->getHelper('json')->sendJson($aRetornoJson);
                 return FALSE;
             }
             // Valida numeracao repetida
             if ($sNumeroNota) {
                 $lNotaEmitida = Contribuinte_Model_DmsNota::checarNotaEmitida($this->oContribuinte, $iTipoDocumento, $sNumeroNota, $iIdDmsNota);
                 if ($lNotaEmitida) {
                     $sMensagemErro = $this->translate->_('Já existe um documento com o número %s.');
                     $aRetornoJson['status'] = FALSE;
                     $aRetornoJson['error'][] = sprintf($sMensagemErro, $sNumeroNota);
                     echo $this->getHelper('json')->sendJson($aRetornoJson);
                     return FALSE;
                 }
                 if (!$oAidof->verificarNumeracaoValidaParaEmissaoDocumento($this->oContribuinte->getInscricaoMunicipal(), $sNumeroNota, $iTipoDocumento)) {
                     $sMensagemErro = 'O número do documento está fora do intervalo permitido nas requisições.';
                     $aRetornoJson['status'] = FALSE;
                     $aRetornoJson['error'][] = $this->translate->_($sMensagemErro);
                     echo $this->getHelper('json')->sendJson($aRetornoJson);
                     return FALSE;
                 }
             }
         }
         return TRUE;
     } catch (Exception $e) {
         $aRetorno['erro'] = TRUE;
         $aRetorno['mensagem'] = $e->getMessage();
         echo $this->getHelper('json')->sendJson($aRetorno);
         return FALSE;
     }
 }