/**
  * Retorna o objeto relativo a compentência do contribuinte
  *
  * @param Contribuinte_Model_ContribuinteAbstract $oContribuinte
  * @return Contribuinte_Model_Competencia[]
  */
 public static function getByContribuinte(Contribuinte_Model_ContribuinteAbstract $oContribuinte)
 {
     $oEntityManager = self::getEm();
     $sSql = 'SELECT DISTINCT
                           nota.ano_comp, nota.mes_comp,
                           SUM(nota.s_vl_iss) as s_vl_iss , SUM(nota.s_vl_servicos) as s_vl_servicos
                      FROM Contribuinte\\Nota nota
                     WHERE nota.id_contribuinte    in(:id_contribuinte) AND
                           nota.cancelada          = false AND
                           nota.s_vl_iss           > 0 AND
                           nota.s_dados_iss_retido = 1 AND
                           nota.emite_guia         = true AND
                           nota.importada          = false
                  GROUP BY nota.ano_comp, nota.mes_comp
                  ORDER BY nota.ano_comp DESC,
                           nota.mes_comp DESC';
     $oQuery = $oEntityManager->createQuery($sSql);
     $oQuery->setParameter('id_contribuinte', $oContribuinte->getContribuintes());
     $aResultados = $oQuery->getResult();
     $aRetorno = array();
     foreach ($aResultados as $aCompetencia) {
         $oCompetencia = new self($aCompetencia['ano_comp'], $aCompetencia['mes_comp'], $oContribuinte);
         $oCompetencia->setTotalIss($aCompetencia['s_vl_iss']);
         $oCompetencia->setTotalServico($aCompetencia['s_vl_servicos']);
         $lExisteGuia = Contribuinte_Model_Guia::existeGuia($oContribuinte, $aCompetencia['mes_comp'], $aCompetencia['ano_comp'], 10);
         $oCompetencia->setExisteGuia($lExisteGuia);
         $aRetorno[] = $oCompetencia;
     }
     return $aRetorno;
 }
Пример #2
0
 /**
  * Retorna se existe guia para aquela nota
  *
  * @param Contribuinte_Model_ContribuinteAbstract $oContribuinte
  * @param integer                                 $iMesCompetencia
  * @param integer                                 $iAnoCompetencia
  * @param integer|null                            $iDocumentoOrigem
  * @return bool
  * @throws Zend_Exception
  */
 public static function existeGuia(Contribuinte_Model_ContribuinteAbstract $oContribuinte, $iMesCompetencia, $iAnoCompetencia, $iDocumentoOrigem = NULL)
 {
     if (empty($oContribuinte)) {
         throw new Zend_Exception('Informe um contribuinte válido');
     }
     if (!$iMesCompetencia) {
         throw new Zend_Exception('Informe o mês de competência');
     }
     if (!$iAnoCompetencia) {
         throw new Zend_Exception('Informe o ano de competência');
     }
     $oEntityManager = self::getEm();
     $oRepositorio = $oEntityManager->getRepository(self::$entityName);
     $aParametros = array('id_contribuinte' => $oContribuinte->getContribuintes(), 'mes_comp' => $iMesCompetencia, 'ano_comp' => $iAnoCompetencia);
     if (!empty($iDocumentoOrigem)) {
         $aParametros['tipo_documento_origem'] = $iDocumentoOrigem;
     }
     $aResultado = $oRepositorio->findOneBy($aParametros);
     return !empty($aResultado);
 }
Пример #3
0
 /**
  * Retorna as notas por id do contribuinte e competência
  *
  * @param integer                                 $iAnoCompetencia
  * @param integer                                 $iMesCompetencia
  * @param Contribuinte_Model_ContribuinteAbstract $oContribuinte
  * @return Contribuinte_Model_Nota[]
  */
 public static function getNotasRetidasNaCompetenciaDoContribuinte($iAnoCompetencia, $iMesCompetencia, Contribuinte_Model_ContribuinteAbstract $oContribuinte)
 {
     $oEntityManager = parent::getEm();
     $sSql = 'SELECT e FROM Contribuinte\\Nota e
                     WHERE e.ano_comp           = :ano
                       AND e.mes_comp           = :mes
                       AND e.id_contribuinte    in(:id_contribuinte)
                       AND e.cancelada          = false
                       AND e.s_dados_iss_retido = ' . self::PRESTADOR_RETEM_ISS . '
                       AND e.s_vl_iss           > 0
                       AND e.emite_guia         = true';
     $oQuery = $oEntityManager->createQuery($sSql);
     $oQuery->setParameters(array('mes' => $iMesCompetencia, 'ano' => $iAnoCompetencia, 'id_contribuinte' => $oContribuinte->getContribuintes()));
     $aResultado = $oQuery->getResult();
     $aRetorno = array();
     if (is_array($aResultado)) {
         foreach ($aResultado as $oResultado) {
             $aRetorno[] = new self($oResultado);
         }
     }
     return $aRetorno;
 }
 /**
  * Verifica se exista nota emitida com o numero e serie informados
  *
  * @param  Contribuinte_Model_ContribuinteAbstract $oContribuinte
  * @param  string                                  $sTipoDocumentoDescricao
  * @param  string                                  $sNumeroDocumento
  * @param  string                                  $sSerieDocumento
  * @param  integer                                 $iIdDocumento
  * @return boolean
  *           [TRUE : Existe Nota Emitida]
  */
 public static function checarNotaEmitidaPrestadorEventual(Contribuinte_Model_ContribuinteAbstract $oContribuinte, $sTipoDocumentoDescricao, $sNumeroDocumento, $sSerieDocumento = NULL, $iIdDocumento = NULL)
 {
     if (empty($oContribuinte)) {
         throw new Exception('Informe um contribuinte válido para checar a emissão');
     }
     if (!$sTipoDocumentoDescricao) {
         throw new Exception('Informe o Tipo de Nota para checar a emissão');
     }
     if (!$sNumeroDocumento) {
         throw new Exception('Informe o Número da Nota para checar a emissão');
     }
     $oEntityManager = parent::getEm();
     $oQuery = $oEntityManager->createQueryBuilder();
     $oQuery->select('1');
     $oQuery->from('Contribuinte\\DmsNota', 'n');
     $oQuery->leftJoin('Contribuinte\\Dms', 'd', \Doctrine\ORM\Query\Expr\Join::WITH, 'n.id_dms = d.id');
     $oQuery->where('n.id_contribuinte             in (:id_contribuinte)');
     $oQuery->andWhere('n.nota                     = :nota');
     $oQuery->andWhere('n.tipo_documento_descricao = :tipo_documento_descricao');
     $oQuery->andWhere('d.operacao                 = :operacao');
     $oQuery->setParameter('id_contribuinte', $oContribuinte->getContribuintes());
     $oQuery->setParameter('nota', $sNumeroDocumento);
     $oQuery->setParameter('tipo_documento_descricao', $sTipoDocumentoDescricao);
     $oQuery->setParameter('operacao', 's');
     $oQuery->setMaxResults(1);
     if ($sSerieDocumento) {
         $oQuery->andWhere('n.serie = TRIM(:serie)');
         $oQuery->setParameter('serie', $sSerieDocumento);
     }
     // Verifica se existem outros documentos somente na alteração
     if ($iIdDocumento) {
         $oQuery->andWhere('n.id <> :id_nota');
         $oQuery->setParameter('id_nota', $iIdDocumento);
     }
     $aResultado = $oQuery->getQuery()->getResult();
     if (is_array($aResultado) && count($aResultado) > 0) {
         return TRUE;
     }
     return FALSE;
 }
Пример #5
0
 /**
  * Retorna Notas do Dms filtrando por id do Dms
  *
  * @param Contribuinte_Model_ContribuinteAbstract $oContribuinte Instância do contribuinte
  * @param integer                                 $iAno          Ano da competência
  * @param integer                                 $iMes          Mês da competência
  * @param string                                  $sOperacao     Tipo de operação
  * @return Contribuinte_Model_Dms[] Coleção de contribuinte
  */
 public static function getDMSSemGuiaNaCompetencia(Contribuinte_Model_ContribuinteAbstract $oContribuinte, $iAno, $iMes, $sOperacao = self::SAIDA)
 {
     $sDql = 'SELECT e FROM Contribuinte\\Dms e
                WHERE e.id_contribuinte in(:id_contribuinte) AND
                      e.operacao         = :operacao         AND
                      e.ano_comp         = :ano              AND
                      e.mes_comp         = :mes              AND
                      e.codigo_planilha  IS NULL             AND
                     (e.status           = \'fechado\' OR e.status = \'emitida\')';
     $oEntidade = self::getEm();
     $sQuery = $oEntidade->createQuery($sDql);
     $oResult = $sQuery->setParameters(array('id_contribuinte' => $oContribuinte->getContribuintes(), 'mes' => $iMes, 'ano' => $iAno, 'operacao' => $sOperacao))->getResult();
     if (count($oResult) > 0) {
         foreach ($oResult as $oRetorno) {
             $aRetorno[] = new self($oRetorno);
         }
     }
     return isset($aRetorno) ? $aRetorno : array();
 }