package br.com.centralit.citcorpore.ajaxForms; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import br.com.centralit.citajax.html.AjaxFormAction; import br.com.centralit.citajax.html.DocumentHTML; import br.com.centralit.citajax.html.HTMLForm; import br.com.centralit.citajax.html.HTMLSelect; import br.com.centralit.citajax.html.HTMLTable; import br.com.centralit.citcorpore.bean.ColetaPrecoDTO; import br.com.centralit.citcorpore.bean.CotacaoDTO; import br.com.centralit.citcorpore.bean.FornecedorDTO; import br.com.centralit.citcorpore.bean.ItemPedidoCompraDTO; import br.com.centralit.citcorpore.bean.PedidoCompraDTO; import br.com.centralit.citcorpore.bean.UploadDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.negocio.ColetaPrecoService; import br.com.centralit.citcorpore.negocio.CotacaoService; import br.com.centralit.citcorpore.negocio.EnderecoService; import br.com.centralit.citcorpore.negocio.FornecedorService; import br.com.centralit.citcorpore.negocio.ItemPedidoCompraService; import br.com.centralit.citcorpore.negocio.PedidoCompraService; import br.com.centralit.citcorpore.util.Enumerados.SituacaoCotacao; import br.com.centralit.citcorpore.util.Enumerados.SituacaoPedidoCompra; import br.com.centralit.citcorpore.util.WebUtil; import br.com.centralit.citged.bean.ControleGEDDTO; import br.com.centralit.citged.negocio.ControleGEDService; import br.com.citframework.excecao.ServiceException; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.Constantes; import br.com.citframework.util.UtilI18N; public class PedidoCompra extends AjaxFormAction { @SuppressWarnings("rawtypes") public Class getBeanClass() { return PedidoCompraDTO.class; } private void configuraBotoes(DocumentHTML document, HttpServletRequest request, PedidoCompraDTO pedidoCompraBean) throws Exception { if (pedidoCompraBean.getIdCotacao() == null) return; document.executeScript("document.getElementById('btnGravar').style.display = 'none'"); document.executeScript("document.getElementById('btnExcluir').style.display = 'none'"); if (pedidoCompraBean.getSituacao() != null && pedidoCompraBean.getSituacao().equals(SituacaoPedidoCompra.Entregue.name())) { document.executeScript("desabilitarTela()"); return; } document.executeScript("habilitarTela()"); CotacaoDTO cotacaoDto = new CotacaoDTO(); cotacaoDto.setIdCotacao(pedidoCompraBean.getIdCotacao()); CotacaoService cotacaoService = (CotacaoService) ServiceLocator.getInstance().getService(CotacaoService.class, null); cotacaoDto = (CotacaoDTO) cotacaoService.restore(cotacaoDto); if (cotacaoDto == null) return; SituacaoCotacao situacao = SituacaoCotacao.valueOf(cotacaoDto.getSituacao()); if (situacao.equals(SituacaoCotacao.Publicada) || situacao.equals(SituacaoCotacao.Pedido) || situacao.equals(SituacaoCotacao.Entrega)) { Collection colItens = cotacaoService.findItensPendentesAprovacao(cotacaoDto); if (colItens == null || colItens.size() == 0) { document.executeScript("document.getElementById('btnGravar').style.display = 'block'"); if (pedidoCompraBean.getIdPedido() != null) document.executeScript("document.getElementById('btnExcluir').style.display = 'block'"); } } } public void carregaItens(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { PedidoCompraDTO pedidoCompraDto = (PedidoCompraDTO) document.getBean(); if (pedidoCompraDto.getIdFornecedor() == null) return; ColetaPrecoService coletaPrecoService = (ColetaPrecoService) ServiceLocator.getInstance().getService(ColetaPrecoService.class, null); ItemPedidoCompraService itemPedidoService = (ItemPedidoCompraService) ServiceLocator.getInstance().getService(ItemPedidoCompraService.class, null); Collection<ColetaPrecoDTO> colColetas = coletaPrecoService.findHabilitadasByIdCotacao(pedidoCompraDto.getIdCotacao()); if (colColetas != null) { Collection<ItemPedidoCompraDTO> itensPedido = new ArrayList(); for (ColetaPrecoDTO coletaPrecoDto : colColetas) { if (coletaPrecoDto.getIdFornecedor().intValue() != pedidoCompraDto.getIdFornecedor().intValue()) continue; if (coletaPrecoDto.getIdProduto() == null) continue; double qtdePedido = itemPedidoService.obtemQtdePedidoColetaPreco(coletaPrecoDto.getIdColetaPreco()); if (qtdePedido < coletaPrecoDto.getQuantidadeDisponivel()) { double quantidade = coletaPrecoDto.getQuantidadeDisponivel().doubleValue() - qtdePedido; if (pedidoCompraDto.getQuantidade() != null && pedidoCompraDto.getQuantidade().doubleValue() < quantidade) quantidade = pedidoCompraDto.getQuantidade().doubleValue(); double valorTotal = coletaPrecoDto.getPreco() / coletaPrecoDto.getQuantidadeCotada() * quantidade; double valorDesconto = coletaPrecoDto.getValorDesconto() / coletaPrecoDto.getQuantidadeCotada() * quantidade; double valorAcrescimo = coletaPrecoDto.getValorAcrescimo() / coletaPrecoDto.getQuantidadeCotada() * quantidade; ItemPedidoCompraDTO itemPedidoDto = new ItemPedidoCompraDTO(); itemPedidoDto.setIdColetaPreco(coletaPrecoDto.getIdColetaPreco()); itemPedidoDto.setQuantidade(quantidade); itemPedidoDto.setValorTotal(valorTotal); itemPedidoDto.setValorDesconto(valorDesconto); itemPedidoDto.setValorAcrescimo(valorAcrescimo); itemPedidoDto.setIdProduto(coletaPrecoDto.getIdProduto()); itemPedidoDto.setDescricaoItem(coletaPrecoDto.getDescricaoItem()); itemPedidoDto.setCodigoProduto(coletaPrecoDto.getCodigoProduto()); itemPedidoDto.setValorFrete(coletaPrecoDto.getValorFrete()); itensPedido.add(itemPedidoDto); } } if (itensPedido.size() > 0) { HTMLTable tblItensPedido = document.getTableById("tblItensPedido"); tblItensPedido.addRowsByCollection(itensPedido, new String[] {"","descricaoItem","quantidade","valorTotal"}, null, "", new String[] {"gerarImgAlterar"}, "editarItem", null); }else document.alert(UtilI18N.internacionaliza(request, "MSG04")); } } public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { request.getSession(true).setAttribute("colUploadsGED", null); try{ UsuarioDTO usuario = WebUtil.getUsuario(request); if (usuario == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } PedidoCompraDTO pedidoCompraDto = (PedidoCompraDTO) document.getBean(); HTMLSelect idFornecedor = (HTMLSelect) document.getSelectById("idFornecedor"); idFornecedor.removeAllOptions(); idFornecedor.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); ColetaPrecoService coletaPrecoService = (ColetaPrecoService) ServiceLocator.getInstance().getService(ColetaPrecoService.class, null); Collection<ColetaPrecoDTO> colColetas = coletaPrecoService.findHabilitadasByIdCotacao(pedidoCompraDto.getIdCotacao()); if (colColetas != null) { HashMap<String, ColetaPrecoDTO> mapFornecedor = new HashMap(); for (ColetaPrecoDTO coletaPrecoDto : colColetas) { if (mapFornecedor.get(""+coletaPrecoDto.getIdFornecedor()) != null) continue; idFornecedor.addOption(""+coletaPrecoDto.getIdFornecedor(), coletaPrecoDto.getNomeFornecedor()); mapFornecedor.put(""+coletaPrecoDto.getIdFornecedor(), coletaPrecoDto); } } /*HTMLSelect situacao = (HTMLSelect) document.getSelectById("situacao"); situacao.removeAllOptions(); situacao.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); for (SituacaoPedidoCompra situacaoObj : SituacaoPedidoCompra.values()) { if (!situacaoObj.equals(SituacaoPedidoCompra.Entregue)) situacao.addOption(situacaoObj.name(), situacaoObj.getDescricao()); } */ EnderecoService enderecoService = (EnderecoService) ServiceLocator.getInstance().getService(EnderecoService.class, WebUtil.getUsuarioSistema(request)); HTMLSelect idEnderecoEntrega = (HTMLSelect) document.getSelectById("idEnderecoEntrega"); idEnderecoEntrega.removeAllOptions(); idEnderecoEntrega.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); Collection colEnderecos = enderecoService.recuperaEnderecosEntregaProduto(); if(colEnderecos != null && !colEnderecos.isEmpty()) idEnderecoEntrega.addOptions(colEnderecos, "idEndereco", "enderecoStr", null); request.setAttribute("idCotacao", ""+pedidoCompraDto.getIdCotacao()); exibePedidosCompra(document,request,pedidoCompraDto); restore(document,request,response); }finally{ document.executeScript("parent.escondeJanelaAguarde()"); } } private void exibePedidosCompra(DocumentHTML document, HttpServletRequest request, PedidoCompraDTO pedidoCompraDto) throws Exception { HTMLTable tblPedidos = document.getTableById("tblPedidos"); tblPedidos.deleteAllRows(); PedidoCompraService pedidoCompraService = (PedidoCompraService) ServiceLocator.getInstance().getService(PedidoCompraService.class, null); Collection<PedidoCompraDTO> colPedidos = pedidoCompraService.findByIdCotacao(pedidoCompraDto.getIdCotacao()); if (colPedidos != null && !colPedidos.isEmpty()) { FornecedorService fornecedorService = (FornecedorService) ServiceLocator.getInstance().getService(FornecedorService.class, null); for (PedidoCompraDTO pedidoDto : colPedidos) { FornecedorDTO fornecedorDto = new FornecedorDTO(); fornecedorDto.setIdFornecedor(pedidoDto.getIdFornecedor()); fornecedorDto = (FornecedorDTO) fornecedorService.restore(fornecedorDto); if (fornecedorDto != null) pedidoDto.setNomeFornecedor(fornecedorDto.getNomeFantasia()); } tblPedidos.addRowsByCollection(colPedidos, new String[] {"","numeroPedido","nomeFornecedor","descrSituacao"}, null, null, new String[] {"gerarImgAlteracao"}, "exibirPedido", null); } } public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { PedidoCompraDTO pedidoCompraDto = (PedidoCompraDTO) document.getBean(); request.getSession(true).setAttribute("colUploadsGED", null); document.executeScript("uploadAnexos.refresh()"); HTMLForm form = document.getForm("form"); form.clear(); HTMLTable tblItensPedido = document.getTableById("tblItensPedido"); tblItensPedido.deleteAllRows(); if (pedidoCompraDto.getIdPedido() != null) { Integer idCotacao = pedidoCompraDto.getIdCotacao(); PedidoCompraService pedidoCompraService = (PedidoCompraService) ServiceLocator.getInstance().getService(PedidoCompraService.class, null); pedidoCompraDto = (PedidoCompraDTO) pedidoCompraService.restore(pedidoCompraDto); pedidoCompraDto.setIdCotacao(idCotacao); ItemPedidoCompraService itemPedidoCompraService = (ItemPedidoCompraService) ServiceLocator.getInstance().getService(ItemPedidoCompraService.class, WebUtil.getUsuarioSistema(request)); Collection<ItemPedidoCompraDTO> itensPedido = itemPedidoCompraService.findByIdPedido(pedidoCompraDto.getIdPedido()); if (itensPedido != null) { tblItensPedido.addRowsByCollection(itensPedido, new String[] {"","descricaoItem","quantidade","valorTotal"}, null, "", new String[] {"gerarImgAlterar"}, "editarItem", null); } restaurarAnexos(request, pedidoCompraDto.getIdPedido()); } configuraBotoes(document, request, pedidoCompraDto); form.setValues(pedidoCompraDto); } public void recuperaValoresColetaPreco(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { PedidoCompraDTO pedidoCompraDto = (PedidoCompraDTO) document.getBean(); if (pedidoCompraDto.getIdColetaPreco() == null) return; ColetaPrecoService coletaPrecoService = (ColetaPrecoService) ServiceLocator.getInstance().getService(ColetaPrecoService.class, null); ColetaPrecoDTO coletaPrecoDto = new ColetaPrecoDTO(); coletaPrecoDto.setIdColetaPreco(pedidoCompraDto.getIdColetaPreco()); coletaPrecoDto = (ColetaPrecoDTO) coletaPrecoService.restore(coletaPrecoDto); if (coletaPrecoDto == null) return; ItemPedidoCompraService itemPedidoService = (ItemPedidoCompraService) ServiceLocator.getInstance().getService(ItemPedidoCompraService.class, null); double qtdePedido = itemPedidoService.obtemQtdePedidoColetaPreco(coletaPrecoDto.getIdColetaPreco()); if (qtdePedido >= coletaPrecoDto.getQuantidadeDisponivel()) return; double quantidade = coletaPrecoDto.getQuantidadeDisponivel().doubleValue() - qtdePedido; if (pedidoCompraDto.getQuantidade() != null && pedidoCompraDto.getQuantidade().doubleValue() < quantidade) quantidade = pedidoCompraDto.getQuantidade().doubleValue(); double valorTotal = coletaPrecoDto.getPreco() / coletaPrecoDto.getQuantidadeCotada() * quantidade; double valorDesconto = coletaPrecoDto.getValorDesconto() / coletaPrecoDto.getQuantidadeCotada() * quantidade; double valorAcrescimo = coletaPrecoDto.getValorAcrescimo() / coletaPrecoDto.getQuantidadeCotada() * quantidade; ItemPedidoCompraDTO itemPedidoDto = new ItemPedidoCompraDTO(); itemPedidoDto.setIdColetaPreco(pedidoCompraDto.getIdColetaPreco()); itemPedidoDto.setQuantidade(quantidade); itemPedidoDto.setValorTotal(valorTotal); itemPedidoDto.setValorDesconto(valorDesconto); itemPedidoDto.setValorAcrescimo(valorAcrescimo); itemPedidoDto.setIdProduto(coletaPrecoDto.getIdProduto()); itemPedidoDto.setDescricaoItem(coletaPrecoDto.getDescricaoItem()); itemPedidoDto.setCodigoProduto(coletaPrecoDto.getCodigoProduto()); itemPedidoDto.setValorFrete(coletaPrecoDto.getValorFrete()); document.executeScript("exibeValoresColetaPreco(\""+br.com.citframework.util.WebUtil.serializeObject(itemPedidoDto, WebUtil.getLanguage(request))+"\")"); } public void preparaTelaItemPedido(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { PedidoCompraDTO pedidoCompraDto = (PedidoCompraDTO) document.getBean(); if (pedidoCompraDto.getIdFornecedor() == null) return; int idColeta = 0; if (pedidoCompraDto.getIdColetaPreco() != null) idColeta = pedidoCompraDto.getIdColetaPreco(); HTMLSelect idColetaPreco = (HTMLSelect) document.getSelectById("item#idColetaPreco"); idColetaPreco.removeAllOptions(); idColetaPreco.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); ColetaPrecoService coletaPrecoService = (ColetaPrecoService) ServiceLocator.getInstance().getService(ColetaPrecoService.class, null); ItemPedidoCompraService itemPedidoService = (ItemPedidoCompraService) ServiceLocator.getInstance().getService(ItemPedidoCompraService.class, null); Collection<ColetaPrecoDTO> colColetas = coletaPrecoService.findHabilitadasByIdCotacao(pedidoCompraDto.getIdCotacao()); if (colColetas != null) { for (ColetaPrecoDTO coletaPrecoDto : colColetas) { if (coletaPrecoDto.getIdFornecedor().intValue() != pedidoCompraDto.getIdFornecedor().intValue()) continue; double qtdePedido = itemPedidoService.obtemQtdePedidoColetaPreco(coletaPrecoDto.getIdColetaPreco()); if (qtdePedido < coletaPrecoDto.getQuantidadeDisponivel() || idColeta == coletaPrecoDto.getIdColetaPreco()) idColetaPreco.addOption(""+coletaPrecoDto.getIdColetaPreco(), "Coleta de pre�o "+coletaPrecoDto.getIdColetaPreco()+" - "+coletaPrecoDto.getDescricaoItem()); } if (idColeta > 0) idColetaPreco.setValue(""+idColeta); } document.executeScript("$(\"#POPUP_ITEM_PEDIDO\").dialog(\"open\");"); } public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { UsuarioDTO usuario = WebUtil.getUsuario(request); if (usuario == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } PedidoCompraDTO pedidoCompraDto = (PedidoCompraDTO) document.getBean(); Collection<ItemPedidoCompraDTO> colItens = br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(ItemPedidoCompraDTO.class, "itens_serialize", request); pedidoCompraDto.setColItens(colItens); Collection<UploadDTO> anexos = (Collection<UploadDTO>) request.getSession(true).getAttribute("colUploadsGED"); pedidoCompraDto.setAnexos(anexos); pedidoCompraDto.setUsuarioDto(usuario); pedidoCompraDto.setSituacao(SituacaoPedidoCompra.Efetivado.name()); PedidoCompraService pedidoCompraService = (PedidoCompraService) ServiceLocator.getInstance().getService(PedidoCompraService.class, null); if (pedidoCompraDto.getIdPedido() != null) { pedidoCompraService.update(pedidoCompraDto); }else{ pedidoCompraDto.setIdEmpresa(usuario.getIdEmpresa()); pedidoCompraService.create(pedidoCompraDto); } exibePedidosCompra(document,request,pedidoCompraDto); document.alert(UtilI18N.internacionaliza(request, "pedidoCompra.mensagemAtualizacao")); document.executeScript("limpar();"); document.executeScript("parent.atualiza();"); } public void delete(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { UsuarioDTO usuario = WebUtil.getUsuario(request); if (usuario == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } PedidoCompraDTO pedidoCompraDto = (PedidoCompraDTO) document.getBean(); pedidoCompraDto.setUsuarioDto(usuario); if (pedidoCompraDto.getIdPedido() != null) { pedidoCompraDto.setUsuarioDto(usuario); PedidoCompraService pedidoCompraService = (PedidoCompraService) ServiceLocator.getInstance().getService(PedidoCompraService.class, null); pedidoCompraService.delete(pedidoCompraDto); exibePedidosCompra(document,request,pedidoCompraDto); document.alert(UtilI18N.internacionaliza(request, "pedidoCompra.mensagemExclusao")); document.executeScript("limpar();"); } } protected void restaurarAnexos(HttpServletRequest request, Integer idPedido) throws ServiceException, Exception { ControleGEDService controleGedService = (ControleGEDService) ServiceLocator.getInstance().getService(ControleGEDService.class, null); Collection colAnexos = controleGedService.listByIdTabelaAndID(ControleGEDDTO.TABELA_PEDIDOCOMPRA, idPedido); Collection colAnexosUploadDTO = controleGedService.convertListControleGEDToUploadDTO(colAnexos); request.getSession(true).setAttribute("colUploadsGED", colAnexosUploadDTO); } }