/**
  * Método que retorna a quantidade de Notas Emitidas
  *
  * @param  integer $iInscricaoMunicipal
  * @param  integer $iTipoNota
  * @param  string  $sGrupoNota
  * @throws Exception
  * @return integer
  */
 public function getQuantidadesNotasEmissao($iInscricaoMunicipal, $iTipoNota = NULL, $sGrupoNota = NULL)
 {
     if (!$iInscricaoMunicipal) {
         throw new Zend_Exception('Informe uma Inscrição Municipal.');
     }
     if (!$iTipoNota && !$sGrupoNota) {
         throw new Zend_Exception('Informe o Tipo de Nota ou Grupo de Nota.');
     }
     if ($iTipoNota) {
         $oWebService = new WebService_Model_Ecidade();
         $aFiltro = array('inscricao_municipal' => $iInscricaoMunicipal, 'tipo_nota' => $iTipoNota);
         $aCampos = array('quantidade_notas_liberadas');
         $aRetorno = $oWebService::consultar('getQuantidadeNotasLiberadas', array($aFiltro, $aCampos));
     } else {
         $oWebService = new WebService_Model_Ecidade();
         $aFiltro = array('inscricao_municipal' => $iInscricaoMunicipal, 'grupo_nota' => $sGrupoNota);
         $aCampos = array('quantidade_notas_liberadas');
         $aRetorno = $oWebService::consultar('getQuantidadeAidofsLiberadasPorGrupoDocumento', array($aFiltro, $aCampos));
     }
     if (is_array($aRetorno)) {
         $iQuantidadeNotasEmitidas = Contribuinte_Model_DmsNota::getQuantidadeNotasEmitidas($iInscricaoMunicipal, $iTipoNota);
         return $aRetorno[0]->quantidade_notas_liberadas - $iQuantidadeNotasEmitidas;
     }
     DBSeller_Plugin_Notificacao::addAviso('Aidof01', "Não houve retorno do WebService do E-Cidade!");
     return 0;
 }
 /**
  * Exclui Nota da DMS [Json]
  */
 public function emissaoManualListaNotasExcluirAction()
 {
     $aRetornoJson['status'] = FALSE;
     $iIdDmsNota = $this->getRequest()->getParam('id_dms_nota', NULL);
     if (!$iIdDmsNota) {
         $aRetornoJson['error'] = $this->translate->_('Identificador inválido!');
     } else {
         try {
             $oDmsNota = Contribuinte_Model_DmsNota::getById($iIdDmsNota);
             $oDmsNota->destroy();
             $aRetornoJson['status'] = TRUE;
             $aRetornoJson['success'] = $this->translate->_('Documento excluído com sucesso!');
         } catch (Exception $oErro) {
             $aRetornoJson['error'] = sprintf($this->translate->_('Erro ao excluir o documento: %s'), $oErro->getMessage());
         }
     }
     echo $this->getHelper('json')->sendJson($aRetornoJson);
 }
 /**
  * Metodo responsavel por criar as guias dms do prestador
  *
  * @param Contribuinte_Model_Dms $oDms
  * @param                        $sDataPagamento
  * @return StdClass
  */
 public static function gerarGuiaDmsPrestador(Contribuinte_Model_Dms $oDms, $sDataPagamento)
 {
     try {
         $oDoctrine = Zend_Registry::get('em');
         $oDoctrine->getConnection()->beginTransaction();
         $aNotas = array();
         foreach ($oDms->getDmsNotas() as $oDadosNota) {
             $oNota = new Contribuinte_Model_DmsNota($oDadosNota);
             // Ignora notas prestadas e retidas pelo tomador
             if ($oDms->getOperacao() == 's' && $oNota->getServicoImpostoRetido() == TRUE) {
                 continue;
             }
             // Ignora notas tomadas e retidas pelo tomador
             if ($oDms->getOperacao() == 'e' && $oNota->getServicoImpostoRetido() == FALSE) {
                 continue;
             }
             // Ignora notas anuladas, extraviadas ou canceladas
             if ($oNota->getStatus() == 5 || in_array($oNota->getSituacaoDocumento(), array('E', 'C'))) {
                 continue;
             }
             // Ignora notas isentas
             if ($oNota->getEmiteGuia() == FALSE) {
                 continue;
             }
             // Ignora notas com aliquota ou servico zerados
             if (floatval($oNota->getServicoAliquota()) <= 0) {
                 continue;
             } else {
                 if (floatval($oNota->getServicoValorImposto()) <= 0) {
                     continue;
                 }
             }
             $aNotas[$oNota->getId()] = $oNota;
         }
         $iMesCompetencia = $oDms->getMesCompetencia();
         $iAnoCompetencia = $oDms->getAnoCompetencia();
         $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getById($oDms->getIdContribuinte());
         $oContribuinte = Administrativo_Model_UsuarioContribuinte::getContribuinte($oDms->getIdContribuinte());
         // Salva guia antes de ser gerada no e-cidade
         $oGuia = new Contribuinte_Model_Guia();
         $sDataPagamentoGuia = DBSeller_Helper_Date_Date::invertDate($sDataPagamento);
         $oGuia->gerarGuiaDmsPrestador($oContribuinte, new DateTime($sDataPagamentoGuia), $iMesCompetencia, $iAnoCompetencia);
         // Envia Guia para o e-cidade
         $oGuiaGerar = self::montaDadosGuia($oUsuarioContribuinte, $iAnoCompetencia, $iMesCompetencia, $aNotas, $sDataPagamento, $oGuia->getId());
         $oGuiaGerada = self::gerarGuia($oGuiaGerar, $sDataPagamento, self::TIPO_DEBITO_RETIDO);
         $oDms->setCodigoPlanilha($oGuiaGerada->codigo_planilha);
         $oDms->setStatus('emitida');
         $aDadosNotas = $oGuiaGerar->notas;
         $aDadosNotas += $oGuiaGerada->notas;
         foreach ($aDadosNotas as $oNotaProcessada) {
             $oNota = $aNotas[$oNotaProcessada->codigo_documento];
             $oNota->setCodigoNotaPlanilha($oNotaProcessada->codigo_nota_planilha);
             $oNota->setNumpre($oGuiaGerada->debito_planilha);
         }
         $oDms->persist();
         $oGuia->complementaGuiaDmsPrestador($oGuiaGerada->debito, $oDms);
         $oGuiaGerada->arquivo_guia = self::salvarPdf($oGuiaGerada->debito->dados_boleto->arquivo_guia, 'guia_substituto');
         $oDoctrine->getConnection()->commit();
         return $oGuiaGerada;
     } catch (Exception $oError) {
         $oDoctrine->getConnection()->rollback();
         return $oError->getMessage();
     }
 }