package br.com.centralit.citcorpore.ajaxForms;
import java.util.Collection;
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.CategoriaProdutoDTO;
import br.com.centralit.citcorpore.bean.CotacaoDTO;
import br.com.centralit.citcorpore.bean.EnderecoDTO;
import br.com.centralit.citcorpore.bean.ItemCotacaoDTO;
import br.com.centralit.citcorpore.bean.ItemRequisicaoProdutoDTO;
import br.com.centralit.citcorpore.bean.RequisicaoProdutoDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.negocio.CategoriaProdutoService;
import br.com.centralit.citcorpore.negocio.CentroResultadoService;
import br.com.centralit.citcorpore.negocio.CotacaoService;
import br.com.centralit.citcorpore.negocio.EnderecoService;
import br.com.centralit.citcorpore.negocio.ItemCotacaoService;
import br.com.centralit.citcorpore.negocio.ItemRequisicaoProdutoService;
import br.com.centralit.citcorpore.negocio.ProjetoService;
import br.com.centralit.citcorpore.negocio.RequisicaoProdutoService;
import br.com.centralit.citcorpore.negocio.UnidadeMedidaService;
import br.com.centralit.citcorpore.util.Enumerados.SituacaoCotacao;
import br.com.centralit.citcorpore.util.Enumerados.TipoDate;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilI18N;
import br.com.citframework.util.UtilStrings;
@SuppressWarnings({"rawtypes","unchecked"})
public class ItemCotacao extends AjaxFormAction {
public Class getBeanClass() {
return ItemCotacaoDTO.class;
}
private void configuraBotoes(DocumentHTML document, HttpServletRequest request, ItemCotacaoDTO itemCotacaoDto) throws Exception {
CotacaoDTO cotacaoDto = new CotacaoDTO();
cotacaoDto.setIdCotacao(itemCotacaoDto.getIdCotacao());
CotacaoService cotacaoService = (CotacaoService) ServiceLocator.getInstance().getService(CotacaoService.class, null);
cotacaoDto = (CotacaoDTO) cotacaoService.restore(cotacaoDto);
if (cotacaoDto == null)
return;
document.executeScript("document.getElementById('btnPesquisarRequisicao').style.display = 'none'");
SituacaoCotacao situacao = SituacaoCotacao.valueOf(cotacaoDto.getSituacao());
request.setAttribute("situacao", situacao);
if (situacao.equals(SituacaoCotacao.EmAndamento)) {
document.executeScript("document.getElementById('btnPesquisarRequisicao').style.display = 'block'");
}
}
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;
}
ItemCotacaoDTO itemCotacaoDto = (ItemCotacaoDTO) document.getBean();
UnidadeMedidaService unidadeMedidaService = (UnidadeMedidaService) ServiceLocator.getInstance().getService(UnidadeMedidaService.class, WebUtil.getUsuarioSistema(request));
HTMLSelect idUnidadeMedida = (HTMLSelect) document.getSelectById("idUnidadeMedida");
idUnidadeMedida.removeAllOptions();
idUnidadeMedida.addOption("", "---");
Collection colUnidades = unidadeMedidaService.list();
if(colUnidades != null && !colUnidades.isEmpty())
idUnidadeMedida.addOptions(colUnidades, "idUnidadeMedida", "siglaUnidadeMedida", null);
CentroResultadoService centroResultadoService = (CentroResultadoService) ServiceLocator.getInstance().getService(CentroResultadoService.class, WebUtil.getUsuarioSistema(request));
HTMLSelect idCentroCusto = (HTMLSelect) document.getSelectById("idCentroCusto");
idCentroCusto.removeAllOptions();
idCentroCusto.addOption("", "-- Selecione --");
Collection colCCusto = centroResultadoService.listPermiteRequisicaoProduto();
if(colCCusto != null && !colCCusto.isEmpty())
idCentroCusto.addOptions(colCCusto, "idCentroResultado", "nomeHierarquizado", null);
HTMLSelect idProjeto = (HTMLSelect) document.getSelectById("idProjeto");
idProjeto.removeAllOptions();
idProjeto.addOption("", "-- Selecione --");
ProjetoService projetoService = (ProjetoService) ServiceLocator.getInstance().getService(ProjetoService.class, WebUtil.getUsuarioSistema(request));
Collection colProjetos = projetoService.list();
if(colProjetos != null && !colProjetos.isEmpty())
idProjeto.addOptions(colProjetos, "idProjeto", "nomeProjeto", null);
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);
CategoriaProdutoService categoriaProdutoService = (CategoriaProdutoService) ServiceLocator.getInstance().getService(CategoriaProdutoService.class, WebUtil.getUsuarioSistema(request));
Collection<CategoriaProdutoDTO> colCategorias = categoriaProdutoService.listAtivas();
HTMLSelect idCategoria = (HTMLSelect) document.getSelectById("idCategoriaProduto");
idCategoria.removeAllOptions();
idCategoria.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
if(colCategorias != null && !colCategorias.isEmpty())
idCategoria.addOptions(colCategorias, "idCategoria", "nomeHierarquizado", null);
exibeItensCotacao(document, request, itemCotacaoDto);
configuraBotoes(document, request, itemCotacaoDto);
request.setAttribute("idCotacao", ""+itemCotacaoDto.getIdCotacao());
}finally{
document.executeScript("parent.escondeJanelaAguarde()");
}
}
private void exibeItensCotacao(DocumentHTML document, HttpServletRequest request, ItemCotacaoDTO itemCotacaoDto) throws Exception {
String str = "";
ItemCotacaoService itemCotacaoService = (ItemCotacaoService) ServiceLocator.getInstance().getService(ItemCotacaoService.class, null);
Collection<ItemCotacaoDTO> colItensCotacao = itemCotacaoService.findByIdCotacao(itemCotacaoDto.getIdCotacao());
if (colItensCotacao != null && !colItensCotacao.isEmpty()) {
ItemRequisicaoProdutoService itemRequisicaoService = (ItemRequisicaoProdutoService) ServiceLocator.getInstance().getService(ItemRequisicaoProdutoService.class, null);
RequisicaoProdutoService requisicaoService = (RequisicaoProdutoService) ServiceLocator.getInstance().getService(RequisicaoProdutoService.class, null);
str =
"<table class=\"table\" width=\"100%\">";
str += " <tr>";
str += " <th style=\"font-size:14px;background-color:#BFC6C3\" colspan=\"4\">"+UtilI18N.internacionaliza(request, "itemCotacao") + "</th>";
str += " <th style=\"font-size:14px;background-color:#BFC6C3\" colspan=\"4\">"+UtilI18N.internacionaliza(request, "requisicaoProduto.requisicao") + "</th>";
str += " </tr>";
str += " <tr>";
str += " <th width=\"1%\"> </th>";
str += " <th colspan=\"2\">"+UtilI18N.internacionaliza(request, "itemRequisicaoProduto.produto") + "</th>";
str += " <th width=\"5%\">"+UtilI18N.internacionaliza(request, "itemRequisicaoProduto.quantidade") + "</th>";
str += " <th width=\"5%\">"+UtilI18N.internacionaliza(request, "coletaPreco.numero") + "</th>";
str += " <th width=\"15%\">"+UtilI18N.internacionaliza(request, "requisicaoProduto.finalidade") + "</th>";
str += " <th width=\"5%\">"+UtilI18N.internacionaliza(request, "itemRequisicaoProduto.quantidade") + "</th>";
str += " <th width=\"15%\">"+UtilI18N.internacionaliza(request, "solicitacaoServico.datahoralimite") + "</th>";
str += " </tr>";
for (ItemCotacaoDTO itemDto : colItensCotacao) {
int rowSpan = 1;
Collection<ItemRequisicaoProdutoDTO> colItens = itemRequisicaoService.findByIdItemCotacao(itemDto.getIdItemCotacao());
if (colItens != null && colItens.size() > 0)
rowSpan = colItens.size();
str += "<tr onMouseOver='TrowOn(this,\"#FFCC99\");' onMouseOut='TrowOff(this)'>";
str += " <td rowspan=\""+rowSpan+"\" ><img style=\"cursor: pointer;\" src=\""+br.com.citframework.util.Constantes.getValue("CONTEXTO_APLICACAO")+"/imagens/delete.png\" onclick=\"excluirItemCotacao('" + itemDto.getIdItemCotacao() + "')\" /></td>";
str += " <td rowspan=\""+rowSpan+"\" style=\"text-align:left;\" >"+UtilStrings.nullToVazio(itemDto.getCodigoProduto())+"</td>";
str += " <td rowspan=\""+rowSpan+"\" style=\"text-align:left;\" >"+itemDto.getDescricaoItem()+"</td>";
str += " <td rowspan=\""+rowSpan+"\" style=\"text-align:left;\" >"+itemDto.getQuantidade()+"</td>";
if (colItens != null && colItens.size() > 0) {
int i = 0;
for (ItemRequisicaoProdutoDTO itemRequisicaoDto : colItens) {
RequisicaoProdutoDTO requisicaoDto = new RequisicaoProdutoDTO();
requisicaoDto.setIdSolicitacaoServico(itemRequisicaoDto.getIdSolicitacaoServico());
requisicaoDto = (RequisicaoProdutoDTO) requisicaoService.restore(requisicaoDto);
requisicaoDto.setDataHoraLimiteStr(UtilDatas.convertDateToString(TipoDate.TIMESTAMP_WITH_SECONDS, requisicaoDto.getDataHoraLimite(), WebUtil.getLanguage(request)));
if (i > 0)
str += "<tr>";
String cor = "";
String finalidade = UtilI18N.internacionaliza(request, "requisicaoProduto.finalidade.usoInterno");
if (requisicaoDto.getFinalidade().equals("C")) {
cor = "red";
finalidade = UtilI18N.internacionaliza(request, "requisicaoProduto.finalidade.atendimentoCliente");
}
str += " <td style=\"text-align:right;color:"+cor+"\" >"+requisicaoDto.getIdSolicitacaoServico()+"</td>";
str += " <td style=\"color:"+cor+"\">"+finalidade+"</td>";
str += " <td style=\"text-align:right;color:"+cor+"\" >"+itemRequisicaoDto.getQtdeAprovada()+"</td>";
str += " <td style=\"color:"+cor+"\">"+(requisicaoDto.getDataHoraLimiteStr() == null ? "" : requisicaoDto.getDataHoraLimiteStr())+"</td>";
str += "</tr>";
i++;
}
}else{
str += " <td> </td>";
str += " <td> </td>";
str += " <td> </td>";
str += " <td> </td>";
str += "</tr>";
}
}
str += "</table>";
}
document.getElementById("divItensCotacao").setInnerHTML(str);
}
public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
}
public void incluiItensRequisicao(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;
}
ItemCotacaoDTO itemCotacaoDto = (ItemCotacaoDTO) document.getBean();
Collection<ItemRequisicaoProdutoDTO> colItensRequisicao = br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(ItemRequisicaoProdutoDTO.class, "colItensRequisicao_Serialize", request);
if (colItensRequisicao == null || colItensRequisicao.isEmpty()) {
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.nenhumaSelecao"));
return;
}
incluiItensRequisicao(document,request,itemCotacaoDto,itemCotacaoDto,colItensRequisicao);
}
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;
}
ItemCotacaoDTO itemCotacaoDto = (ItemCotacaoDTO) document.getBean();
if (itemCotacaoDto.getIdItemCotacao() == null)
return;
ItemCotacaoService itemCotacaoService = (ItemCotacaoService) ServiceLocator.getInstance().getService(ItemCotacaoService.class, null);
itemCotacaoDto.setUsuarioDto(usuario);
itemCotacaoService.delete(itemCotacaoDto);
exibeItensCotacao(document, request, itemCotacaoDto);
}
public void pesquisaItensParaCotacao(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;
}
HTMLTable tblItensRequisicao = document.getTableById("tblItensRequisicao");
tblItensRequisicao.deleteAllRows();
ItemCotacaoDTO itemCotacaoDto = (ItemCotacaoDTO) document.getBean();
ItemRequisicaoProdutoService itemRequisicaoProdutoService = (ItemRequisicaoProdutoService) ServiceLocator.getInstance().getService(ItemRequisicaoProdutoService.class, WebUtil.getUsuarioSistema(request));
Collection<ItemRequisicaoProdutoDTO> itensRequisicao = itemRequisicaoProdutoService.recuperaItensParaCotacao(itemCotacaoDto.getDataInicio(),
itemCotacaoDto.getDataFim(),
itemCotacaoDto.getIdCentroCusto(),
itemCotacaoDto.getIdProjeto(),
itemCotacaoDto.getIdEnderecoEntrega(),
itemCotacaoDto.getIdSolicitacaoServico());
if (itensRequisicao != null && !itensRequisicao.isEmpty()) {
EnderecoService enderecoService = (EnderecoService) ServiceLocator.getInstance().getService(EnderecoService.class, WebUtil.getUsuarioSistema(request));
for (ItemRequisicaoProdutoDTO itemDto : itensRequisicao) {
EnderecoDTO enderecoDto = enderecoService.recuperaEnderecoComUnidade(itemDto.getIdEnderecoEntrega());
if (enderecoDto != null)
itemDto.setEnderecoStr(enderecoDto.getEnderecoStr());
}
tblItensRequisicao.addRowsByCollection(itensRequisicao,
new String[] {"","idSolicitacaoServico","dataHoraSolicitacao","nomeCentroCusto","nomeProjeto","enderecoStr","codigoProduto","descricaoItem","qtdeAprovada"},
null,
"",
new String[] {"gerarSelecaoItemRequisicao"},
null,
null);
document.executeScript("document.getElementById('divSelecionarItens').style.display = 'block';");
}else{
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.resultado"));
}
}
public void verificaInclusaoItensRequisicao(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;
}
Collection<ItemRequisicaoProdutoDTO> colItensRequisicao = br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(ItemRequisicaoProdutoDTO.class, "colItensRequisicao_Serialize", request);
if (colItensRequisicao == null || colItensRequisicao.isEmpty()) {
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.nenhumaSelecao"));
return;
}
ItemCotacaoDTO itemCotacaoDto = (ItemCotacaoDTO) document.getBean();
if (itemCotacaoDto.getTipoCriacaoItem() == null) {
document.alert(UtilI18N.internacionaliza(request, "itemCotacao.tipoCriacao")+""+UtilI18N.internacionaliza(request, "citcorpore.comum.naoInformado"));
return;
}
CotacaoService cotacaoService = (CotacaoService) ServiceLocator.getInstance().getService(CotacaoService.class, null);
ItemCotacaoDTO itemCotacaoRef = cotacaoService.verificaInclusaoItensRequisicao(itemCotacaoDto.getTipoCriacaoItem(), colItensRequisicao);
if (itemCotacaoDto.getTipoCriacaoItem().equals("2") && itemCotacaoRef != null && itemCotacaoRef.getTipoIdentificacao().equalsIgnoreCase("D")) {
HTMLForm form = document.getForm("formItemCotacao");
form.setValues(itemCotacaoRef);
document.executeScript("exibirItemCotacao();");
return;
}else{
incluiItensRequisicao(document,request,itemCotacaoDto,itemCotacaoRef,colItensRequisicao);
}
}
private void incluiItensRequisicao(DocumentHTML document, HttpServletRequest request, ItemCotacaoDTO itemCotacaoDto, ItemCotacaoDTO itemCotacaoRef, Collection<ItemRequisicaoProdutoDTO> colItensRequisicao) 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;
}
CotacaoService cotacaoService = (CotacaoService) ServiceLocator.getInstance().getService(CotacaoService.class, null);
cotacaoService.incluiItensRequisicao(usuario, itemCotacaoDto.getIdCotacao(), itemCotacaoRef, itemCotacaoDto.getTipoCriacaoItem(), colItensRequisicao);
exibeItensCotacao(document, request, itemCotacaoDto);
document.executeScript("$(\"#POPUP_ITENS_REQUISICAO\").dialog(\"close\");");
}
}