bug#al-2935

ADM - Ajuste Pricing Conexão
dev:
qua:
master
valdir.cordeiro 2023-07-17 20:08:40 -03:00
parent 9d69920ba7
commit 2d7c973bfd
4 changed files with 161 additions and 48 deletions

View File

@ -4,11 +4,11 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>br.com.rjconsultores</groupId> <groupId>br.com.rjconsultores</groupId>
<artifactId>ventaboletosadm</artifactId> <artifactId>ventaboletosadm</artifactId>
<version>1.10.0</version> <version>1.10.1</version>
<packaging>war</packaging> <packaging>war</packaging>
<properties> <properties>
<modelWeb.version>1.7.0</modelWeb.version> <modelWeb.version>1.7.1</modelWeb.version>
<flyway.version>1.6.0</flyway.version> <flyway.version>1.6.0</flyway.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

View File

@ -84,6 +84,7 @@ import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.vo.parada.ParadaVOConexionRuta; import com.rjconsultores.ventaboletos.vo.parada.ParadaVOConexionRuta;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.MyTextboxDecimal; import com.rjconsultores.ventaboletos.web.utilerias.MyTextboxDecimal;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderConexaoPricing;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderGeracaoConexionPorRuta; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderGeracaoConexionPorRuta;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderPricingAsiento; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderPricingAsiento;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderPricingCategoria; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderPricingCategoria;
@ -265,6 +266,7 @@ public class EditarPricingController extends PricingController {
private List<ConexionCtrl> lsConexoesCtrlList; private List<ConexionCtrl> lsConexoesCtrlList;
private List<ParadaVOConexionRuta> conexoesPricingList; private List<ParadaVOConexionRuta> conexoesPricingList;
private List<ParadaVOConexionRuta> conexoesPricingListApresentacao;
private List<Parada> paradasConexao; private List<Parada> paradasConexao;
private MyListbox conexaoCtrlList; private MyListbox conexaoCtrlList;
private List<PricingConexao> lsPricingConexao; private List<PricingConexao> lsPricingConexao;
@ -1074,6 +1076,8 @@ public class EditarPricingController extends PricingController {
} }
pricing.setPricingConexaoList(lsPricingConexao); pricing.setPricingConexaoList(lsPricingConexao);
limparPesquisaPricingConexao(pricing.getPricingId());
} }
if (gravarNovo) { if (gravarNovo) {
@ -1136,6 +1140,16 @@ public class EditarPricingController extends PricingController {
} }
} }
private void limparPesquisaPricingConexao(Integer pricingId) {
try {
if(pricingId != null) {
conexionCtrlService.limparPesquisaPricingConexao(pricingId);
}
} catch (Exception e) {
log.info("Erro ao remover pesquisa do pricing de conexao, erro: ", e);
}
}
private Boolean isExistePricingAtivo(List<PricingConexao> lsPricingConexao2) { private Boolean isExistePricingAtivo(List<PricingConexao> lsPricingConexao2) {
for(PricingConexao p : lsPricingConexao2) { for(PricingConexao p : lsPricingConexao2) {
@ -2652,15 +2666,26 @@ public class EditarPricingController extends PricingController {
Parada paradaOrigem = paradaService.obtenerID(p.getOrigenId()); Parada paradaOrigem = paradaService.obtenerID(p.getOrigenId());
Parada paradaDestino = paradaService.obtenerID(p.getDestinoId()); Parada paradaDestino = paradaService.obtenerID(p.getDestinoId());
Boolean origem = false, destino = false;
if(!paradasConexao.contains(paradaOrigem)) { if(!paradasConexao.contains(paradaOrigem)) {
paradasConexao.add(paradaOrigem); paradasConexao.add(paradaOrigem);
} else {
origem = true;
} }
if(!paradasConexao.contains(paradaDestino)) { if(!paradasConexao.contains(paradaDestino)) {
paradasConexao.add(paradaDestino); paradasConexao.add(paradaDestino);
} else {
destino = true;
} }
Comboitem comboItem = new Comboitem(p.getConexionctrlId() + " : " + paradaOrigem.getDescparada() + " -> " + paradaDestino.getDescparada()); //Se ja foi adicionado a origem e destino nao mostra novamente.
if(origem && destino) {
continue;
}
Comboitem comboItem = new Comboitem(paradaOrigem.getDescparada() + " -> " + paradaDestino.getDescparada());
comboItem.setValue(p); comboItem.setValue(p);
comboItem.setParent(cmbConexaoCtrl); comboItem.setParent(cmbConexaoCtrl);
} }
@ -2685,7 +2710,7 @@ public class EditarPricingController extends PricingController {
Labels.getLabel("editarPricingController.window.title"), Messagebox.OK, Messagebox.INFORMATION); Labels.getLabel("editarPricingController.window.title"), Messagebox.OK, Messagebox.INFORMATION);
return; return;
} else { } else {
List<ParadaVOConexionRuta> novasConexoes = conexionCtrlService.carregarConexoesCadastradas(coCtrl.getConexionctrlId()); List<ParadaVOConexionRuta> novasConexoes = conexionCtrlService.carregarConexoesCadastradas(coCtrl.getOrigenId(), coCtrl.getDestinoId(), null);
if(isConexaoJaAdicionada(novasConexoes)) { if(isConexaoJaAdicionada(novasConexoes)) {
Messagebox.show(Labels.getLabel("editarConexionController.msgConexaoJaAdicionada.value"), Messagebox.show(Labels.getLabel("editarConexionController.msgConexaoJaAdicionada.value"),
@ -2693,32 +2718,74 @@ public class EditarPricingController extends PricingController {
return; return;
} }
criarPricingConexao(coCtrl, novasConexoes); criarPricingConexao(novasConexoes);
conexoesPricingList.addAll(novasConexoes); conexoesPricingList.addAll(novasConexoes);
conexaoCtrlList.setData(conexoesPricingList);
conexaoCtrlList.setItemRenderer(new RenderGeracaoConexionPorRuta()); conexoesPricingListApresentacao = buscarDadosApresentacao(conexoesPricingList);
conexaoCtrlList.setData(conexoesPricingListApresentacao);
conexaoCtrlList.setItemRenderer(new RenderConexaoPricing());
} }
} catch (Exception e) { } catch (Exception e) {
log.error("Erro ao adicionar nova conexao, erro: ", e); log.error("Erro ao adicionar nova conexao, erro: ", e);
} }
} }
private void criarPricingConexao(ConexionCtrl coCtrl, List<ParadaVOConexionRuta> novasConexoes) { private List<ParadaVOConexionRuta> buscarDadosApresentacao(List<ParadaVOConexionRuta> conexoesPricingList2) {
PricingConexao prConexao = new PricingConexao(); try {
prConexao.setActivo(Pricing.ATIVO); List<ParadaVOConexionRuta> listaApresentacao = new ArrayList<>();
prConexao.setConexionCtrl(coCtrl); List<String> origemDestino = new ArrayList<>();
prConexao.setFecmodif(Calendar.getInstance().getTime());
prConexao.setPricing(pricing);
prConexao.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
lsPricingConexao.add(prConexao); for(ParadaVOConexionRuta p : conexoesPricingList2) {
String parada = p.getParadaOrigem().getDescparada() + "-" + p.getParadaDestino().getDescparada();
if(!origemDestino.contains(parada)) {
origemDestino.add(parada);
listaApresentacao.add(p);
}
}
return listaApresentacao;
} catch (Exception e) {
log.error("Erro ao buscar dados de Apresentacao: ", e);
}
return null;
}
private void criarPricingConexao(List<ParadaVOConexionRuta> novasConexoes) {
for(ParadaVOConexionRuta nConex : novasConexoes) { for(ParadaVOConexionRuta nConex : novasConexoes) {
PricingConexao prConexao = new PricingConexao();
prConexao.setActivo(Pricing.ATIVO);
ConexionCtrl coCtrl = new ConexionCtrl();
coCtrl.setConexionctrlId(nConex.getConexionCtrl().getConexionctrlId());
prConexao.setConexionCtrl(coCtrl);
prConexao.setFecmodif(Calendar.getInstance().getTime());
prConexao.setPricing(pricing);
prConexao.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
if(!conexaoJaAdicionada(prConexao)) {
lsPricingConexao.add(prConexao);
}
nConex.setPricingConexao(prConexao); nConex.setPricingConexao(prConexao);
} }
} }
private boolean conexaoJaAdicionada(PricingConexao prCon) {
for(PricingConexao conex : lsPricingConexao) {
if(prCon.getConexionCtrl().getConexionctrlId() != null
&& prCon.getConexionCtrl().getConexionctrlId().equals(conex.getConexionCtrl().getConexionctrlId()) ){
return true;
}
}
return false;
}
private void carregarConexoesCadastradas() { private void carregarConexoesCadastradas() {
if (lsPricingConexao.size() > 0) { if (lsPricingConexao.size() > 0) {
@ -2729,7 +2796,8 @@ public class EditarPricingController extends PricingController {
List<ParadaVOConexionRuta> novasConexoes = new ArrayList<>(); List<ParadaVOConexionRuta> novasConexoes = new ArrayList<>();
for(PricingConexao p : lsPricingConexao) { for(PricingConexao p : lsPricingConexao) {
List<ParadaVOConexionRuta> aux = conexionCtrlService.carregarConexoesCadastradas(p.getConexionCtrl().getConexionctrlId()); List<ParadaVOConexionRuta> aux = conexionCtrlService.carregarConexoesCadastradas(p.getConexionCtrl().getOrigenId(), p.getConexionCtrl().getDestinoId(),
p.getConexionCtrl().getConexionctrlId());
for(ParadaVOConexionRuta nConex : aux) { for(ParadaVOConexionRuta nConex : aux) {
nConex.setPricingConexao(p); nConex.setPricingConexao(p);
@ -2739,8 +2807,11 @@ public class EditarPricingController extends PricingController {
} }
conexoesPricingList.addAll(novasConexoes); conexoesPricingList.addAll(novasConexoes);
conexaoCtrlList.setData(conexoesPricingList);
conexaoCtrlList.setItemRenderer(new RenderGeracaoConexionPorRuta()); conexoesPricingListApresentacao = buscarDadosApresentacao(conexoesPricingList);
conexaoCtrlList.setData(conexoesPricingListApresentacao);
conexaoCtrlList.setItemRenderer(new RenderConexaoPricing());
} }
} }
@ -2750,22 +2821,40 @@ public class EditarPricingController extends PricingController {
if (conexao != null ) { if (conexao != null ) {
PricingConexao prConexao = conexao.getPricingConexao(); PricingConexao prConexaoSelecionado = conexao.getPricingConexao();
lsPricingConexao.remove(prConexao); List<PricingConexao> prConexaoARemover = new ArrayList<>();
if(prConexao.getPricingConexaoId() != null) { List<PricingConexao> todos = new ArrayList<>();
prConexao.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); todos.addAll(lsPricingConexao);
prConexao.setFecmodif(Calendar.getInstance().getTime());
prConexao.setActivo(Pricing.EXCLUIDO);
lsPricingConexao.add(prConexao); //Limpa o pricing, pois o remove nao funciona pq o equals nao leva em consideracao somente origem e destino
lsPricingConexao.clear();
for(PricingConexao prConexao : todos) {
if(isMesmaOrigemDestino(prConexao, prConexaoSelecionado)) {
if(prConexao.getPricingConexaoId() != null) {
prConexao.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
prConexao.setFecmodif(Calendar.getInstance().getTime());
prConexao.setActivo(Pricing.EXCLUIDO);
//Adiciona os que ja estao no banco de dados
lsPricingConexao.add(prConexao);
} else {
prConexaoARemover.add(prConexao);
}
} else {
//Adiciona os que nao sao iguais ao selecionado
lsPricingConexao.add(prConexao);
}
} }
List<ParadaVOConexionRuta> listaAAdicionar = new ArrayList<>(); List<ParadaVOConexionRuta> listaAAdicionar = new ArrayList<>();
for(ParadaVOConexionRuta pAdiciona : conexoesPricingList) { for(ParadaVOConexionRuta pAdiciona : conexoesPricingList) {
if(!pAdiciona.getConexionCtrl().getConexionctrlId().equals(prConexao.getConexionCtrl().getConexionctrlId())) { if(!pAdiciona.getParadaOrigem().getParadaId().equals(conexao.getParadaOrigem().getParadaId()) ||
!pAdiciona.getParadaDestino().getParadaId().equals(conexao.getParadaDestino().getParadaId()) ) {
listaAAdicionar.add(pAdiciona); listaAAdicionar.add(pAdiciona);
} }
} }
@ -2774,15 +2863,21 @@ public class EditarPricingController extends PricingController {
conexoesPricingList.addAll(listaAAdicionar); conexoesPricingList.addAll(listaAAdicionar);
conexaoCtrlList.clear(); conexaoCtrlList.clear();
conexaoCtrlList.setData(conexoesPricingList);
conexoesPricingListApresentacao = buscarDadosApresentacao(conexoesPricingList);
conexaoCtrlList.setData(conexoesPricingListApresentacao);
} }
} }
private boolean isMesmaOrigemDestino(PricingConexao prConexao, PricingConexao prConexaoSelecionado) {
return prConexao.getConexionCtrl() != null && prConexao.getConexionCtrl().isOrigemDestinoIgual(prConexaoSelecionado.getConexionCtrl().getOrigenId(), prConexaoSelecionado.getConexionCtrl().getDestinoId());
}
private boolean isConexaoJaAdicionada(List<ParadaVOConexionRuta> novasConexoes) { private boolean isConexaoJaAdicionada(List<ParadaVOConexionRuta> novasConexoes) {
for(ParadaVOConexionRuta p : novasConexoes) { for(ParadaVOConexionRuta p : novasConexoes) {
for(ParadaVOConexionRuta pAdd : conexoesPricingList) { for(ParadaVOConexionRuta pAdd : conexoesPricingList) {
if(pAdd.getConexionCtrl().getConexionctrlId().equals(p.getConexionCtrl().getConexionctrlId())) { if(pAdd.getConexionCtrl().getOrigenId().equals(p.getConexionCtrl().getOrigenId()) && pAdd.getConexionCtrl().getDestinoId().equals(p.getConexionCtrl().getDestinoId())) {
return true; return true;
} }
} }

View File

@ -0,0 +1,35 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.rjconsultores.ventaboletos.web.utilerias.render;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.ListitemRenderer;
import com.rjconsultores.ventaboletos.vo.parada.ParadaVOConexionRuta;
/**
*
* @author Valdir Cordeiro
*/
public class RenderConexaoPricing implements ListitemRenderer {
public void render(Listitem lstm, Object o) throws Exception {
ParadaVOConexionRuta conexion = (ParadaVOConexionRuta) o;
Listcell lc = new Listcell(conexion.getParadaOrigem().getDescparada());
lc.setParent(lstm);
lc = new Listcell(conexion.getParadaDestino().getDescparada());
lc.setParent(lstm);
lstm.setValue(conexion);
}
}

View File

@ -924,26 +924,9 @@
pageSize="15" multiple="false" height="370px" width="100%"> pageSize="15" multiple="false" height="370px" width="100%">
<listhead> <listhead>
<listheader <listheader
label="${c:l('editarConexionPorRutaController.labelOrigemConexao.value')}" label="${c:l('editarConexionPorRutaController.labelOrigemConexao.value')}" width="50%" />
width="50%" />
<listheader <listheader
label="${c:l('editarConexionPorRutaController.labelDestinoConexao.value')}" label="${c:l('editarConexionPorRutaController.labelDestinoConexao.value')}" width="50%" />
width="50%" />
<listheader
label="${c:l('editarConexionPorRutaController.labelOrigemTrecho.value')}"
width="50%" />
<listheader
label="${c:l('editarConexionPorRutaController.labelDestinoTrecho.value')}"
width="50%" />
<listheader
label="${c:l('editarConexionPorRutaController.labelNumRuta.value')}"
width="50%" />
<listheader align="center"
label="${c:l('editarConexionPorRutaController.labelGrupo.value')}"
width="25%" />
<listheader align="center"
label="${c:l('editarConexionPorRutaController.labelSecuencia.value')}"
width="25%" />
</listhead> </listhead>
</listbox> </listbox>
</vbox> </vbox>