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.ColetaPrecoDTO;
import br.com.centralit.citcorpore.bean.CotacaoDTO;
import br.com.centralit.citcorpore.bean.ItemCotacaoDTO;
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.ItemCotacaoService;
import br.com.centralit.citcorpore.negocio.JustificativaParecerService;
import br.com.centralit.citcorpore.util.Enumerados.SituacaoCotacao;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.UtilFormatacao;
import br.com.citframework.util.UtilI18N;
public class ResultadoCotacao extends AjaxFormAction {
@SuppressWarnings("rawtypes")
public Class getBeanClass() {
return ColetaPrecoDTO.class;
}
private void configuraBotoes(DocumentHTML document, HttpServletRequest request, ColetaPrecoDTO coletaPrecoBean) throws Exception {
CotacaoDTO cotacaoDto = new CotacaoDTO();
if(coletaPrecoBean.getIdCotacao() != null) {
cotacaoDto.setIdCotacao(coletaPrecoBean.getIdCotacao());
CotacaoService cotacaoService = (CotacaoService) ServiceLocator.getInstance().getService(CotacaoService.class, null);
cotacaoDto = (CotacaoDTO) cotacaoService.restore(cotacaoDto);
if (cotacaoDto == null)
return;
document.executeScript("document.getElementById('btnCalcularResultado').style.display = 'none'");
document.executeScript("document.getElementById('btnPublicarResultado').style.display = 'none'");
document.executeScript("document.getElementById('btnReabrirColeta').style.display = 'none'");
SituacaoCotacao situacao = SituacaoCotacao.valueOf(cotacaoDto.getSituacao());
if (situacao.equals(SituacaoCotacao.EmAndamento)) {
document.executeScript("document.getElementById('btnCalcularResultado').style.display = 'block'");
document.executeScript("document.getElementById('btnPublicarResultado').style.display = 'none'");
}
if (situacao.equals(SituacaoCotacao.Calculada)) {
document.executeScript("document.getElementById('btnCalcularResultado').style.display = 'none'");
document.executeScript("document.getElementById('btnPublicarResultado').style.display = 'block'");
document.executeScript("document.getElementById('btnReabrirColeta').style.display = 'block'");
}
if (situacao.equals(SituacaoCotacao.Publicada)) {
document.executeScript("document.getElementById('btnCalcularResultado').style.display = 'none'");
document.executeScript("document.getElementById('btnPublicarResultado').style.display = 'none'");
}
}
document.executeScript("JANELA_AGUARDE_MENU.hide();");
}
public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
try{
JustificativaParecerService justificativaService = (JustificativaParecerService) ServiceLocator.getInstance().getService(JustificativaParecerService.class, WebUtil.getUsuarioSistema(request));
HTMLSelect idJustificativa = (HTMLSelect) document.getSelectById("idJustifResultado");
idJustificativa.removeAllOptions();
idJustificativa.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
Collection colJustificativas = justificativaService.listAplicaveisCotacao();
if(colJustificativas != null && !colJustificativas.isEmpty())
idJustificativa.addOptions(colJustificativas, "idJustificativa", "descricaoJustificativa", null);
ColetaPrecoDTO coletaPrecoBean = (ColetaPrecoDTO) document.getBean();
request.setAttribute("idCotacao", ""+coletaPrecoBean.getIdCotacao());
exibeItensCotacao(document, request, coletaPrecoBean);
}finally{
document.executeScript("parent.escondeJanelaAguarde()");
}
}
private void exibeItensCotacao(DocumentHTML document, HttpServletRequest request, ColetaPrecoDTO coletaPrecoBean) throws Exception {
HTMLTable tblItensCotacao = document.getTableById("tblItensCotacao");
tblItensCotacao.deleteAllRows();
document.getElementById("divResultado").setInnerHTML("");
ItemCotacaoService itemCotacaoService = (ItemCotacaoService) ServiceLocator.getInstance().getService(ItemCotacaoService.class, null);
Collection<ItemCotacaoDTO> colItens = itemCotacaoService.findByIdCotacao(coletaPrecoBean.getIdCotacao());
if (colItens != null && !colItens.isEmpty()) {
tblItensCotacao.addRowsByCollection(colItens,
new String[] {"","codigoProduto","descricaoItem","marcaPreferencial","quantidade"},
null,
"",
new String[] {"gerarImgResultados"},
"exibirResultado",
null);
}
configuraBotoes(document, request, coletaPrecoBean);
}
public void exibeResultado(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;
}
document.getElementById("divResultado").setInnerHTML("");
ColetaPrecoDTO coletaPrecoBean = (ColetaPrecoDTO) document.getBean();
if (coletaPrecoBean.getIdItemCotacao() == null)
return;
ColetaPrecoService coletaPrecoService = (ColetaPrecoService) ServiceLocator.getInstance().getService(ColetaPrecoService.class, null);
Collection<ColetaPrecoDTO> colResultado = coletaPrecoService.findResultadoByIdItemCotacao(coletaPrecoBean.getIdItemCotacao());
if (colResultado == null)
return;
String str =
"<table class=\"table\" width=\"100%\">";
str += " <tr>";
str += " <th width=\"16px\"></th>";
str += " <th width=\"12%\">"+UtilI18N.internacionaliza(request, "coletaPreco.pontuacao")+"</th>";
str += " <th width=\"3%\">"+UtilI18N.internacionaliza(request, "coletaPreco.coleta")+"</th>";
str += " <th width=\"5%\">"+UtilI18N.internacionaliza(request, "coletaPreco.quantidade")+"</th>";
str += " <th width=\"15%\">"+UtilI18N.internacionaliza(request, "coletaPreco.preco")+"</th>";
str += " <th >"+UtilI18N.internacionaliza(request, "coletaPreco.fornecedor")+"</th>";
str += " </tr>";
for (ColetaPrecoDTO coletaPrecoDto : colResultado) {
String corLetra = "black";
String corLinha = "#ADF7DA";
String imagem = "trophy.png";
if (coletaPrecoDto.getResultadoFinal() == null) {
corLinha = "";
imagem = "";
}else if (coletaPrecoDto.getResultadoFinal().equals(ColetaPrecoDTO.RESULT_DESCLASSIFICADA)) {
corLinha = "";
corLetra = "red";
imagem = "thumb-down.png";
}else if (coletaPrecoDto.getResultadoFinal().equals(ColetaPrecoDTO.RESULT_EMPATE)) {
imagem = "interrog.png";
}
str += "<tr style=\"background-color:"+corLinha+"\" >";
if (coletaPrecoDto.getPontuacao() != null) {
str += "<td><img style=\"cursor: pointer;\" src=\""+Constantes.getValue("CONTEXTO_APLICACAO")+"/imagens/hammer.png\" title=\"Definir resultado\" onclick=\"exibirDefinicaoResultado("+coletaPrecoDto.getIdColetaPreco()+")\" ></td>";
str += "<td style=\"text-align:right;color:"+corLetra+"\"\" >"+UtilFormatacao.formatDecimal(coletaPrecoDto.getPontuacao(),"##.####")+" ";
str += " <img style=\"cursor: pointer;\" src=\""+Constantes.getValue("CONTEXTO_APLICACAO")+"/imagens/"+imagem+"\" title=\""+coletaPrecoDto.getResultadoFinalStr()+"\" ></td>";
}else{
str += "<td> </td>";
str += "<td> </td>";
}
str += " <td style=\"text-align:right;color:"+corLetra+"\" >"+coletaPrecoDto.getIdColetaPreco()+"</td>";
if (coletaPrecoDto.getQuantidadeCompra() != null && coletaPrecoDto.getQuantidadeCompra().doubleValue() > 0) {
str += " <td style=\"text-align:right;color:"+corLetra+"\"\" >"+coletaPrecoDto.getQuantidadeCompra()+"</td>";
str += " <td style=\"text-align:right;color:"+corLetra+"\"\" >"+UtilFormatacao.formatDouble(coletaPrecoDto.getValorLiquido()/coletaPrecoDto.getQuantidadeCotada()*coletaPrecoDto.getQuantidadeCompra(),2)+"</td>";
}else{
str += " <td style=\"text-align:right;color:"+corLetra+"\"\" >"+coletaPrecoDto.getQuantidadeCotada()+"</td>";
str += " <td style=\"text-align:right;color:"+corLetra+"\"\" >"+UtilFormatacao.formatDouble(coletaPrecoDto.getValorLiquido(),2)+"</td>";
}
str += " <td style=\"color:"+corLetra+"\">"+coletaPrecoDto.getNomeFornecedor()+"</td>";
str += "</tr>";
}
str += "</table>";
document.getElementById("divResultado").setInnerHTML(str);
}
public void calculaResultado(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;
}
ColetaPrecoDTO coletaPrecoBean = (ColetaPrecoDTO) document.getBean();
CotacaoDTO cotacaoDto = new CotacaoDTO();
cotacaoDto.setIdCotacao(coletaPrecoBean.getIdCotacao());
cotacaoDto.setUsuarioDto(usuario);
CotacaoService cotacaoService = (CotacaoService) ServiceLocator.getInstance().getService(CotacaoService.class, null);
cotacaoService.calculaResultado(cotacaoDto);
exibeItensCotacao(document,request,coletaPrecoBean);
String idItem = "";
if (coletaPrecoBean.getIdItemCotacao() != null)
idItem = ""+coletaPrecoBean.getIdItemCotacao();
document.executeScript("exibirResultadoItem('"+idItem+"');");
document.executeScript("parent.atualiza();");
}
public void publicaResultado(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;
}
ColetaPrecoDTO coletaPrecoBean = (ColetaPrecoDTO) document.getBean();
CotacaoDTO cotacaoDto = new CotacaoDTO();
cotacaoDto.setIdCotacao(coletaPrecoBean.getIdCotacao());
cotacaoDto.setUsuarioDto(usuario);
CotacaoService cotacaoService = (CotacaoService) ServiceLocator.getInstance().getService(CotacaoService.class, null);
cotacaoService.publicaResultado(cotacaoDto);
configuraBotoes(document, request, coletaPrecoBean);
document.alert(UtilI18N.internacionaliza(request, "cotacao.confirmacaoPublicacao"));
document.executeScript("parent.atualiza();");
}
public void exibeDefinicaoResultado(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;
}
ColetaPrecoDTO coletaPrecoBean = (ColetaPrecoDTO) document.getBean();
if (coletaPrecoBean.getIdColetaPreco() == null)
return;
HTMLForm form = document.getForm("formResultado");
form.clear();
ColetaPrecoService coletaPrecoService = (ColetaPrecoService) ServiceLocator.getInstance().getService(ColetaPrecoService.class, WebUtil.getUsuarioSistema(request));
ColetaPrecoDTO coletaPrecoDto = new ColetaPrecoDTO();
coletaPrecoDto.setIdColetaPreco(coletaPrecoBean.getIdColetaPreco());
coletaPrecoDto = (ColetaPrecoDTO) coletaPrecoService.restore(coletaPrecoDto);
form.setValues(coletaPrecoDto);
configuraTelaResultado(document,request,coletaPrecoDto);
document.executeScript("$(\"#POPUP_RESULTADO\").dialog(\"open\");");
}
public void configuraTelaResultado(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;
}
ColetaPrecoDTO coletaPrecoBean = (ColetaPrecoDTO) document.getBean();
if (coletaPrecoBean.getIdColetaPreco() == null)
return;
configuraTelaResultado(document,request,coletaPrecoBean);
}
private void configuraTelaResultado(DocumentHTML document, HttpServletRequest request, ColetaPrecoDTO coletaPrecoBean) throws Exception {
document.executeScript("document.getElementById('divJustificativa').style.display = 'none';");
boolean bExibeJustificativa = !coletaPrecoBean.getResultadoCalculo().equalsIgnoreCase(coletaPrecoBean.getResultadoFinal());
if (!bExibeJustificativa)
bExibeJustificativa = coletaPrecoBean.getQuantidadeCompra().doubleValue() != coletaPrecoBean.getQuantidadeCalculo().doubleValue();
if (bExibeJustificativa)
document.executeScript("document.getElementById('divJustificativa').style.display = 'block';");
}
public void defineResultado(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;
}
ColetaPrecoDTO coletaPrecoBean = (ColetaPrecoDTO) document.getBean();
if (coletaPrecoBean.getIdColetaPreco() == null)
return;
coletaPrecoBean.setIdRespResultado(usuario.getIdEmpregado());
ColetaPrecoService coletaPrecoService = (ColetaPrecoService) ServiceLocator.getInstance().getService(ColetaPrecoService.class, WebUtil.getUsuarioSistema(request));
coletaPrecoService.defineResultado(coletaPrecoBean);
document.executeScript("$(\"#POPUP_RESULTADO\").dialog(\"close\");");
exibeResultado(document,request,response);
exibeItensCotacao(document, request, coletaPrecoBean);
String idItem = "";
if (coletaPrecoBean.getIdItemCotacao() != null)
idItem = ""+coletaPrecoBean.getIdItemCotacao();
document.executeScript("exibirResultadoItem('"+idItem+"');");
}
public void reabreColetaPrecos(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;
}
ColetaPrecoDTO coletaPrecoBean = (ColetaPrecoDTO) document.getBean();
CotacaoDTO cotacaoDto = new CotacaoDTO();
cotacaoDto.setIdCotacao(coletaPrecoBean.getIdCotacao());
cotacaoDto.setUsuarioDto(usuario);
CotacaoService cotacaoService = (CotacaoService) ServiceLocator.getInstance().getService(CotacaoService.class, null);
cotacaoService.reabreColetaPrecos(cotacaoDto);
document.executeScript("parent.atualiza();");
document.executeScript("parent.exibeResultadoCotacao()");
document.alert(UtilI18N.internacionaliza(request, "cotacao.confirmacaoReaberturaColeta"));
}
}