class GerarXmlEnvioContratoON extends BaseBusiness {

	@SuppressWarnings({ "PMD.ExcessiveMethodLength", "PMD.NPathComplexity" })
	protected void addItensOrigemAutomaticaMenor(ScoContrato contrato, Cnet cnet) {

		Integer cont2 = 0;
		
		for (ScoAfContrato afContratos : contrato.getScoAfContratos()) {		

			for (ScoItemAutorizacaoForn itensAutorizacaoForn : afContratos.getScoAutorizacoesForn().getItensAutorizacaoForn()) {

				for (ScoFaseSolicitacao faseSolicitacao : itensAutorizacaoForn.getScoFaseSolicitacao()) {

					Item item = new ObjectFactory().createCnetItensItem();

					boolean tagMarca = false;

					ScoLicitacao scoLicitacao = getPacFacade().obterLicitacao(contrato.getLicitacao().getNumero());

					if (faseSolicitacao.getItemAutorizacaoForn().getItemPropostaFornecedor() != null
							&& faseSolicitacao.getItemAutorizacaoForn().getItemPropostaFornecedor().getValorUnitario() != null) {
						BigDecimal vlUnitario = faseSolicitacao.getItemAutorizacaoForn().getItemPropostaFornecedor().getValorUnitario();

						if (vlUnitario.equals(BigDecimal.ZERO)) {
							item = null;
							continue;
						}
					}

					cont2 += 1;
					item.setNumeroItem(cont2);

					if (faseSolicitacao.getSolicitacaoDeCompra() != null && faseSolicitacao.getSolicitacaoDeCompra().getMaterial() != null
							&& faseSolicitacao.getSolicitacaoDeCompra().getMaterial().getCodigo() != null) {

						ScoMaterialSicon scoMaterialSicon = this.getCadastrosBasicosSiconFacade().pesquisarMaterialSicon(null,
								faseSolicitacao.getSolicitacaoDeCompra().getMaterial(), null, null);

						if (scoMaterialSicon != null) {
							item.setCodigoMatServ(new ObjectFactory().createCnetItensItemCodigoMatServ(scoMaterialSicon.getCodigoSicon().toString()));
						}

						item.setIndicadorMatServ(new ObjectFactory().createCnetItensItemIndicadorMatServ("M"));

						tagMarca = true;
						this.setAquisicaoMaterial(true);
					}

					if (faseSolicitacao.getSolicitacaoDeCompra() != null && faseSolicitacao.getSolicitacaoDeCompra().getMaterial() != null
							&& faseSolicitacao.getSolicitacaoDeCompra().getMaterial().getNome() != null) {
						item.setDescricao(new ObjectFactory().createCnetItensItemDescricao(faseSolicitacao.getSolicitacaoDeCompra().getMaterial()
								.getNome()));
					}

					if (faseSolicitacao.getSolicitacaoServico() != null && faseSolicitacao.getSolicitacaoServico().getServico() != null
							&& faseSolicitacao.getSolicitacaoServico().getServico().getCodigo() != null) {

						List<ScoServicoSicon> listScoServicoSicon = this.getCadastrosBasicosSiconFacade().obterPorCodigoServico(
								faseSolicitacao.getSolicitacaoServico().getServico());

						if (listScoServicoSicon.size() > 0) {
							item.setCodigoMatServ(new ObjectFactory().createCnetItensItemCodigoMatServ(listScoServicoSicon.get(0).getCodigoSicon()
									.toString()));
						}

						item.setIndicadorMatServ(new ObjectFactory().createCnetItensItemIndicadorMatServ("S"));

						tagMarca = false;
						this.setAquisicaoServico(true);
					}

					if (faseSolicitacao.getSolicitacaoServico() != null && faseSolicitacao.getSolicitacaoServico().getServico() != null
							&& faseSolicitacao.getSolicitacaoServico().getServico().getNome() != null) {
						item.setDescricao(new ObjectFactory().createCnetItensItemDescricao(faseSolicitacao.getSolicitacaoServico().getServico().getNome()));
					}

					if (faseSolicitacao.getItemAutorizacaoForn().getItemPropostaFornecedor() != null
							&& faseSolicitacao.getItemAutorizacaoForn().getItemPropostaFornecedor().getMarcaComercial() != null
							&& faseSolicitacao.getItemAutorizacaoForn().getItemPropostaFornecedor().getMarcaComercial().getDescricao() != null) {

						// Prencher Tag Marca somente para item de Material
						// Para ítens de serviço Tag Marca fica em branco
						if (tagMarca) {
							item.setMarca(new ObjectFactory().createCnetItensItemMarca(faseSolicitacao.getItemAutorizacaoForn()
									.getItemPropostaFornecedor().getMarcaComercial().getDescricao().toString()));
						} else {
							item.setMarca(new ObjectFactory().createCnetItensItemMarca(""));
						}

					}

					if (faseSolicitacao.getItemAutorizacaoForn() != null && faseSolicitacao.getItemAutorizacaoForn().getQtdeSolicitada() != null) {
						item.setQuantidade(new ObjectFactory().createCnetItensItemQuantidade(faseSolicitacao.getItemAutorizacaoForn()
								.getItemPropostaFornecedor().getQuantidade().toString()));
					}

					if (faseSolicitacao.getItemAutorizacaoForn() != null && faseSolicitacao.getItemAutorizacaoForn().getUmdCodigoForn() != null) {
						String unidade = faseSolicitacao.getItemAutorizacaoForn().getUmdCodigoForn().toString();

						if (unidade.length() > 20) {
							unidade = unidade.substring(0, 20);
						}

						item.setUnidade(new ObjectFactory().createCnetItensItemUnidade(unidade));
					} else {
						if (itensAutorizacaoForn.getItemPropostaFornecedor() != null
								&& itensAutorizacaoForn.getItemPropostaFornecedor().getUnidadeMedida() != null) {
							String unidade = itensAutorizacaoForn.getItemPropostaFornecedor().getUnidadeMedida().getDescricao();

							if (unidade.length() > 20) {
								unidade = unidade.substring(0, 20);
							}

							item.setUnidade(new ObjectFactory().createCnetItensItemUnidade(unidade));
						}
					}

					if (faseSolicitacao.getItemAutorizacaoForn().getItemPropostaFornecedor() != null
							&& faseSolicitacao.getItemAutorizacaoForn().getItemPropostaFornecedor().getValorUnitario() != null) {
						BigDecimal vlUnitario = faseSolicitacao.getItemAutorizacaoForn().getItemPropostaFornecedor().getValorUnitario();

						BigDecimal quantidade = new BigDecimal(faseSolicitacao.getItemAutorizacaoForn().getItemPropostaFornecedor().getQuantidade());
						BigDecimal freqEntrega = new BigDecimal(scoLicitacao.getFrequenciaEntrega() != null ? scoLicitacao.getFrequenciaEntrega() : 1);
						BigDecimal vlTotal = vlUnitario.multiply(quantidade).multiply(freqEntrega);

						String valorFormatado = AghuNumberFormat.formatarValor(vlTotal, _00);
						valorFormatado = removePontoVirgula(valorFormatado);

						item.setValorTotal(new ObjectFactory().createCnetItensItemValorTotal(valorFormatado));

					}

					if (item != null) {
						cnet.getItens().getItem().add(item);
					}

				}

			}

		}
	}

}