class ScoLicitacaoON extends BaseBusiness {

	public List<ItemLicitacaoQuadroAprovacaoVO> pesquisarPacsQuadroAprovacao(Set<Integer> ids, Boolean assinatura) {
		List<ItemLicitacaoQuadroAprovacaoVO> itens = new ArrayList<ItemLicitacaoQuadroAprovacaoVO>();
		String[][] params = assinatura ? getAssinaturas() : null;
		
		// Itens sem proposta.
		List<ItemLicitacaoQuadroAprovacaoVO> itensSemProposta = getScoItemLicitacaoQuadroAprovacaoDAO()
				.pesquisarItensSemProposta(ids, assinatura);

		for (ItemLicitacaoQuadroAprovacaoVO item : itensSemProposta) {
			setAssinaturas(item, params);
			item.setSemProposta(true);

			if (item.getMotivoCancelamento() != null) {
				item.setMotivo(item.getMotivoCancelamento().getDescricao());
			}
		}

		itens.addAll(itensSemProposta);

		// Itens com proposta.
		List<ItemLicitacaoQuadroAprovacaoVO> itensComProposta = getScoItemLicitacaoQuadroAprovacaoDAO()
				.pesquisarItensComProposta(ids, assinatura);

		for (ItemLicitacaoQuadroAprovacaoVO item : itensComProposta) {
			setAssinaturas(item, params);

			if (item.getMotivoCancelamento() == null) {
				if (Boolean.FALSE.equals(item.getExcluido())) {
					item.setPendente(true);

					if (item.getSituacaoJulgamento() != null) {
						item.setMotivo(item.getSituacaoJulgamento()
								.getDescricao());
					}
				}
			} else {
				item.setMotivo(item.getMotivoCancelamento().getDescricao());
			}
		}

		itens.addAll(itensComProposta);

		// Itens com proposta escolhida.
		List<ItemLicitacaoQuadroAprovacaoVO> itensComPropostaEscolhida = getScoItemLicitacaoQuadroAprovacaoDAO()
				.pesquisarItensComPropostaEscolhida(ids, assinatura);

		for (ItemLicitacaoQuadroAprovacaoVO item : itensComPropostaEscolhida) {
			setAssinaturas(item, params);

			Long countParcelas = getScoParcelasPagamentoDAO()
					.contarParcelasPagamentoProposta(item.getCondicao());
			item.setParcelas(countParcelas != null ? countParcelas.shortValue() : Short.valueOf("0"));
		}

		itens.addAll(itensComPropostaEscolhida);

		Collections.sort(itens,
				new Comparator<ItemLicitacaoQuadroAprovacaoVO>() {
					@Override
					public int compare(ItemLicitacaoQuadroAprovacaoVO o1,
							ItemLicitacaoQuadroAprovacaoVO o2) {
						int comp = o1.getNumeroPac().compareTo(
								o2.getNumeroPac());

						if (comp == 0) {
							return o1.getNumeroItem().compareTo(
									o2.getNumeroItem());
						} else {
							return comp;
						}
					}
				});

		return itens;
	}

}