/** * * @param \Core_Dto_Search $search * @return array */ public function getUltimoLotePessoaUnidadeOrg(\Core_Dto_Search $search) { $query = $this->_em->createQueryBuilder(); $query->select('le.sqLoteEtiqueta', 'le.nuInicial', 'le.nuFinal', 'le.nuInicialNupSiorg', 'le.nuFinalNupSiorg', 'uo.noUnidadeOrg', 'edl.nuQuantidadeDisponivel', 'te.noTipoEtiqueta')->from('app:LoteEtiqueta', 'le')->innerJoin('le.sqUnidadeOrg', 'uo')->innerJoin('le.sqTipoEtiqueta', 'te')->innerJoin('le.sqEtiquetaDisponivelLote', 'edl')->andWhere($query->expr()->eq('le.nuAno', ':nuAno'))->andWhere($query->expr()->isNotNull('le.dtCriacao'))->orderBy('le.sqLoteEtiqueta', 'DESC')->setParameter('nuAno', $search->getNuAno())->setMaxResults(1); //limit $searchApi = $search->getApi(); if ($search->getSqUnidadeOrg()) { if ($search->getSqUnidadeOrg() instanceof \Sgdoce\Model\Entity\VwUnidadeOrg) { $sqUnidadeOrg = $search->getSqUnidadeOrg()->getSqUnidadeOrg(); } else { $sqUnidadeOrg = $search->getSqUnidadeOrg(); } $query->andWhere($query->expr()->eq('le.sqUnidadeOrg', ':sqUnidadeOrg'))->setParameter('sqUnidadeOrg', $sqUnidadeOrg); } if ($search->getSqTipoEtiqueta()) { if ($search->getSqTipoEtiqueta() instanceof \Sgdoce\Model\Entity\TipoEtiqueta) { $sqTipoEtiqueta = $search->getSqTipoEtiqueta()->getSqTipoEtiqueta(); } else { $sqTipoEtiqueta = $search->getSqTipoEtiqueta(); } $query->andWhere($query->expr()->eq('le.sqTipoEtiqueta', ':sqTipoEtiqueta'))->setParameter('sqTipoEtiqueta', $sqTipoEtiqueta); } if (isset($searchApi['inLoteComNupSiorg'])) { $inLoteComNup = $search->getInLoteComNupSiorg(); if ($inLoteComNup) { $query->andWhere('le.inLoteComNupSiorg = TRUE'); } else { $query->andWhere('le.inLoteComNupSiorg = FALSE'); } } return $query->getQuery()->execute(); }