fixes bug#23106

qua:
dev:Valdir

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@109257 d1611594-4594-4d17-8e1d-87c2c4800839
master
valdevir 2021-10-21 18:27:32 +00:00
parent b426189d58
commit b14396082a
4 changed files with 350 additions and 19 deletions

View File

@ -4,11 +4,9 @@
*/
package com.rjconsultores.ventaboletos.web.gui.controladores.esquemaoperacional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
@ -23,11 +21,6 @@ import org.zkoss.zul.Paging;
import org.zkoss.zul.api.Textbox;
import com.rjconsultores.ventaboletos.entidad.EsquemaAgrupacion;
import com.rjconsultores.ventaboletos.entidad.EsquemaAsiento;
import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida;
import com.rjconsultores.ventaboletos.entidad.EsquemaTramo;
import com.rjconsultores.ventaboletos.service.EsquemaAgrupacionService;
import com.rjconsultores.ventaboletos.service.EsquemaCorridaService;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.paginacion.HibernateSearchObject;
@ -42,17 +35,10 @@ import com.rjconsultores.ventaboletos.web.utilerias.render.RenderEsquemaAgrupaci
@Scope("prototype")
public class BusquedaEsquemaAgrupacionController extends MyGenericForwardComposer {
private static Logger log = Logger.getLogger(BusquedaEsquemaAgrupacionController.class);
private static final long serialVersionUID = 1L;
@Autowired
private transient PagedListWrapper<EsquemaAgrupacion> plwEsquemaAgrupacion;
@Autowired
private EsquemaAgrupacionService esquemaAgrupacionService;
@Autowired
private EsquemaCorridaService esquemaCorridaService;
private MyListbox esquemaAgrupacionList;
private Paging pagingEsquemaAgrupacion;
@ -79,6 +65,7 @@ public class BusquedaEsquemaAgrupacionController extends MyGenericForwardCompose
refreshLista();
}
@SuppressWarnings({ "unchecked", "rawtypes" })
private void verPeriodo(EsquemaAgrupacion ea) {
if (ea == null) {
return;

View File

@ -285,7 +285,6 @@ public class EditarCorridaAsientoController extends MyGenericForwardComposer {
}
if (poltronaExclusiva.isChecked()) {
// cmbDestino.setDisabled(true);
txtMotivo.setDisabled(true);
}
@ -350,12 +349,10 @@ public class EditarCorridaAsientoController extends MyGenericForwardComposer {
}
public void onClick$poltronaExclusiva() {
// cmbDestino.setDisabled(true);
txtMotivo.setDisabled(true);
}
public void onClick$poltronaOcupada() {
// cmbDestino.setDisabled(false);
txtMotivo.setDisabled(false);
}

View File

@ -33,6 +33,7 @@ import org.zkoss.zul.Intbox;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Radio;
import org.zkoss.zul.Radiogroup;
import org.zkoss.zul.Spinner;
import org.zkoss.zul.Tab;
import org.zkoss.zul.Textbox;
@ -44,10 +45,15 @@ import com.rjconsultores.ventaboletos.entidad.ClienteDireccion;
import com.rjconsultores.ventaboletos.entidad.ClienteFidelidad;
import com.rjconsultores.ventaboletos.entidad.Constante;
import com.rjconsultores.ventaboletos.entidad.Curso;
import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus;
import com.rjconsultores.ventaboletos.entidad.DiagramaAutobus;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.Escola;
import com.rjconsultores.ventaboletos.entidad.EsquemaAsiento;
import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida;
import com.rjconsultores.ventaboletos.entidad.MotivoViaje;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.ReservaEspecialCliente;
import com.rjconsultores.ventaboletos.entidad.Ruta;
import com.rjconsultores.ventaboletos.entidad.TarjetaFidelidad;
import com.rjconsultores.ventaboletos.entidad.TipoDomicilio;
@ -56,9 +62,13 @@ import com.rjconsultores.ventaboletos.entidad.TipoOcupacion;
import com.rjconsultores.ventaboletos.service.ClienteCursoService;
import com.rjconsultores.ventaboletos.service.ClienteService;
import com.rjconsultores.ventaboletos.service.ConstanteService;
import com.rjconsultores.ventaboletos.service.DiagramaAutobusService;
import com.rjconsultores.ventaboletos.service.EmpresaService;
import com.rjconsultores.ventaboletos.service.EscolaService;
import com.rjconsultores.ventaboletos.service.EsquemaAsientoService;
import com.rjconsultores.ventaboletos.service.EsquemaCorridaService;
import com.rjconsultores.ventaboletos.service.MotivoViajeService;
import com.rjconsultores.ventaboletos.service.ReservaEspecialClienteService;
import com.rjconsultores.ventaboletos.service.RutaService;
import com.rjconsultores.ventaboletos.service.TipoDomicilioService;
import com.rjconsultores.ventaboletos.service.TipoIdentificacionService;
@ -76,6 +86,7 @@ import com.rjconsultores.ventaboletos.web.utilerias.MyTextbox;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderClienteDescuento;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderClienteFidelidade;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderCurso;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderReservaEspecialCliente;
@Controller("editarClienteController")
@Scope("prototype")
@ -201,6 +212,41 @@ public class EditarClienteController extends MyGenericForwardComposer {
private String clienteEnderecoObrigatorio = "no empty";
private Datebox fecbloqueiopcd;
/*Reserva Especial*/
//Componentes Tela
private MyListbox reservaEspecialMyListBox;
private Intbox servicoIdIntBox;
private MyComboboxParada cmbParadaOrigemReserva;
private MyComboboxParadaCve cmbParadaOrigemCveReserva;
private MyComboboxParada cmbParadaDestinoReserva;
private MyComboboxParadaCve cmbParadaDestinoCveReserva;
private Intbox numAssentoReservaEspecial;
private Datebox dataFinalFinalReserva;
private Datebox dataInicioReserva;
private Spinner spTempoConfirmacaoHora;
private Spinner spTempoConfirmacaoMinuto;
private Checkbox indSegundaChk;
private Checkbox indTercaChk;
private Checkbox indQuartaChk;
private Checkbox indQuintaChk;
private Checkbox indSextaChk;
private Checkbox indSabadoChk;
private Checkbox indDomingoChk;
//Atributos
private Integer servicoId;
private List<ReservaEspecialCliente> reservaEspecialClienteList;
@Autowired
private ReservaEspecialClienteService reservaEspecialClientService;
@Autowired
private EsquemaCorridaService esquemaCorridaService;
@Autowired
EsquemaAsientoService esquemaAsientoService;
@Autowired
private DiagramaAutobusService diagramaAutoBusService;
private Integer numAssentoIntReservaEspecial;
public void aplicarMascara() {
Clients.evalJavaScript(
@ -272,6 +318,7 @@ public class EditarClienteController extends MyGenericForwardComposer {
}
});
cmbParadaDestinoCve.setItemRenderer(new ComboitemRenderer() {
@Override
public void render(Comboitem cmbtm, Object o) throws Exception {
@ -282,6 +329,26 @@ public class EditarClienteController extends MyGenericForwardComposer {
}
});
cmbParadaDestinoCveReserva.setItemRenderer(new ComboitemRenderer() {
@Override
public void render(Comboitem cmbtm, Object o) throws Exception {
Parada parada = (Parada) o;
cmbtm.setLabel(parada.getCveparada());
cmbtm.setValue(parada);
}
});
cmbParadaOrigemCveReserva.setItemRenderer(new ComboitemRenderer() {
@Override
public void render(Comboitem cmbtm, Object o) throws Exception {
Parada parada = (Parada) o;
cmbtm.setLabel(parada.getCveparada());
cmbtm.setValue(parada);
}
});
aplicarMascara();
lsTipoOcupacion = tipoOcupacionService.obtenerTodos();
lsMotivoViaje = motivoViajeService.obtenerTodos();
@ -328,6 +395,16 @@ public class EditarClienteController extends MyGenericForwardComposer {
}
}
});
//Reserva Especial
servicoId = null;
reservaEspecialMyListBox.setItemRenderer(new RenderReservaEspecialCliente());
reservaEspecialMyListBox.addEventListener("onDoubleClick", new EventListener() {
@Override
public void onEvent(Event arg0) throws Exception {
}
});
} else {
cliente = clienteService.obtenerID(cliente.getClienteId());
@ -453,7 +530,14 @@ public class EditarClienteController extends MyGenericForwardComposer {
lsClienteFidelidad = cliente.getListClienteFidelidadActivos();
clienteFidelidadeMyListBox.setData(lsClienteFidelidad);
}
//Reserva Especial
reservaEspecialMyListBox.setItemRenderer(new RenderReservaEspecialCliente());
reservaEspecialClienteList = reservaEspecialClientService.bucarReservaEspecialByClienteId(cliente.getClienteId().longValue());
if(reservaEspecialClienteList!=null && !reservaEspecialClienteList.isEmpty()) {
reservaEspecialMyListBox.setData(reservaEspecialClienteList);
}
}
//Aplica na constraint do campo
@ -1140,6 +1224,27 @@ public class EditarClienteController extends MyGenericForwardComposer {
.setComboItemByParada((Parada) cmbParadaDestino.getSelectedItem().getValue());
}
}
public void onSelect$cmbParadaOrigemReserva(Event ev) {
if (cmbParadaOrigemReserva.getSelectedItem() != null)
cmbParadaOrigemCveReserva
.setComboItemByParada((Parada) cmbParadaOrigemReserva.getSelectedItem().getValue());
}
public void onSelect$cmbParadaDestinoCveReserva(Event ev) {
if (cmbParadaDestinoCveReserva.getSelectedItem() != null) {
cmbParadaDestinoReserva.setComboItemByParada(
(Parada) cmbParadaDestinoCveReserva.getSelectedItem().getValue());
}
}
public void onSelect$cmbParadaDestinoReserva(Event ev) {
if (cmbParadaDestinoReserva.getSelectedItem() != null) {
cmbParadaDestinoCveReserva
.setComboItemByParada((Parada) cmbParadaDestinoReserva.getSelectedItem().getValue());
}
}
public void onClick$btnApagar(Event ev) {
try {
@ -1623,6 +1728,80 @@ public class EditarClienteController extends MyGenericForwardComposer {
return false;
}
public void onClick$btnAdicionarReservaEspecial(Event ev) throws InterruptedException {
EsquemaCorrida esquemaCorrida = buscaServico(servicoIdIntBox.getValue().intValue());
if(esquemaCorrida == null) {
Messagebox.show(Labels.getLabel("editarClienteController.msg.noServicoValido"),
Labels.getLabel("editarClienteController.window.title"), Messagebox.OK,
Messagebox.ERROR);
return;
}
if(!validaPoltrona(numAssentoReservaEspecial.getValue().toString(), esquemaCorrida)) {
Messagebox.show(Labels.getLabel("editarClienteController.msg.noPoltronaValido"),
Labels.getLabel("editarClienteController.window.title"), Messagebox.OK,
Messagebox.ERROR);
return;
}
ReservaEspecialCliente reservaEspecialCliente = new ReservaEspecialCliente();
reservaEspecialCliente.setActivo(Boolean.TRUE);
reservaEspecialCliente.setClienteId(cliente.getClienteId().longValue());
reservaEspecialCliente.setCorridaId(servicoIdIntBox.getValue().longValue());
reservaEspecialCliente.setOrigem((Parada) cmbParadaOrigemCveReserva.getSelectedItem().getValue());
reservaEspecialCliente.setDestino((Parada) cmbParadaDestinoCveReserva.getSelectedItem().getValue());
reservaEspecialCliente.setFecinicio(dataInicioReserva.getValue());
reservaEspecialCliente.setFecfinal(dataFinalFinalReserva.getValue());
reservaEspecialCliente.setFecmodif(new Date());
reservaEspecialCliente.setNumAsentoCorrida(numAssentoReservaEspecial.getValue().shortValue());
reservaEspecialCliente.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
reservaEspecialCliente.setTempoConfirmacao(spTempoConfirmacaoHora.getValue(), spTempoConfirmacaoMinuto.getValue());
reservaEspecialCliente.setIndDomingo(indDomingoChk.isChecked());
reservaEspecialCliente.setIndSegunda(indSegundaChk.isChecked());
reservaEspecialCliente.setIndTerca(indTercaChk.isChecked());
reservaEspecialCliente.setIndQuarta(indQuartaChk.isChecked());
reservaEspecialCliente.setIndQuinta(indQuintaChk.isChecked());
reservaEspecialCliente.setIndSexta(indSextaChk.isChecked());
reservaEspecialCliente.setIndSabado(indSabadoChk.isChecked());
reservaEspecialClienteList.add(reservaEspecialCliente);
cliente.setListReservaEspecialCliente(reservaEspecialClienteList);
reservaEspecialMyListBox.setData(new ArrayList<ReservaEspecialCliente>(reservaEspecialClienteList));
}
private boolean validaPoltrona(String numPoltrona, EsquemaCorrida esquemaCorrida) {
//Valida se existe cota cadastrada para a poltrona informada, caso exista retorn false e não deixa casdastrar.
EsquemaAsiento esquemaAsiento = esquemaAsientoService.obtenerPorCorridaeAsiento(esquemaCorrida, numPoltrona);
if( esquemaAsiento !=null && esquemaAsiento.getEsquemaasientoId() != null && esquemaAsiento.getNumasiento()!=null) {
return false;
}
//Valida se no diagrama cadastrado para o serviço existe a poltrona informada, caso exista valida se é vendível,
DiagramaAutobus diagramaAutobus = diagramaAutoBusService.obtenerID(esquemaCorrida.getRolOperativo().getDiagramaAutobus().getDiagramaautobusId());
for (DetDiagramaAutobus dd : diagramaAutobus.getDetDiagramaAutobusList()) {
if(numPoltrona.equals(dd.getAsiento())) {
if(Boolean.TRUE.equals(dd.getVendible())) {
return true;
}
}
}
return false;
}
private EsquemaCorrida buscaServico(Integer numCorrida) {
return esquemaCorridaService.obtenerByEsquemaCorrida(numCorrida);
}
public void onClick$btnRemoverReservaEspecial(Event ev) throws InterruptedException {
ReservaEspecialCliente reservaEspecialCliente = (ReservaEspecialCliente) reservaEspecialMyListBox.getSelected();
if (reservaEspecialCliente != null) {
reservaEspecialCliente.setActivo(false);
reservaEspecialCliente.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
reservaEspecialCliente.setFecmodif(Calendar.getInstance().getTime());
reservaEspecialClienteList.remove(reservaEspecialCliente);
reservaEspecialMyListBox.setData(new ArrayList<ReservaEspecialCliente>(reservaEspecialClienteList));
}
}
public void onClick$btnAdicionarFidelidade(Event ev) throws InterruptedException {
if (validarDadosFidelidade(empresa)) {
@ -1716,6 +1895,9 @@ public class EditarClienteController extends MyGenericForwardComposer {
txtNumFidelidade.setValue(null);
}
}
private void limparInput() {
cmbLinha.setSelectedItem(null);
@ -1865,5 +2047,54 @@ public class EditarClienteController extends MyGenericForwardComposer {
public void setCmbEmpresaCadastro(Combobox cmbEmpresaCadastro) {
this.cmbEmpresaCadastro = cmbEmpresaCadastro;
}
}
public Integer getServicoId() {
return servicoId;
}
public void setServicoId(Integer servicoId) {
this.servicoId = servicoId;
}
public Integer getNumAssentoIntReservaEspecial() {
return numAssentoIntReservaEspecial;
}
public void setNumAssentoIntReservaEspecial(Integer numAssentoIntReservaEspecial) {
this.numAssentoIntReservaEspecial = numAssentoIntReservaEspecial;
}
public Intbox getNumAssentoReservaEspecial() {
return numAssentoReservaEspecial;
}
public void setNumAssentoReservaEspecial(Intbox numAssentoReservaEspecial) {
this.numAssentoReservaEspecial = numAssentoReservaEspecial;
}
public MyComboboxParada getCmbParadaOrigemReserva() {
return cmbParadaOrigemReserva;
}
public void setCmbParadaOrigemReserva(MyComboboxParada cmbParadaOrigemReserva) {
this.cmbParadaOrigemReserva = cmbParadaOrigemReserva;
}
public MyComboboxParadaCve getCmbParadaOrigemCveReserva() {
return cmbParadaOrigemCveReserva;
}
public void setCmbParadaOrigemCveReserva(MyComboboxParadaCve cmbParadaOrigemCveReserva) {
this.cmbParadaOrigemCveReserva = cmbParadaOrigemCveReserva;
}
}

View File

@ -0,0 +1,116 @@
package com.rjconsultores.ventaboletos.web.utilerias.render;
import java.util.Calendar;
import java.util.Date;
import org.zkoss.util.resource.Labels;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.ListitemRenderer;
import com.rjconsultores.ventaboletos.entidad.ReservaEspecialCliente;
import com.rjconsultores.ventaboletos.utilerias.DateUtil;
public class RenderReservaEspecialCliente implements ListitemRenderer {
public void render(Listitem lstm, Object o) throws Exception {
ReservaEspecialCliente reservaEspecialCliente = (ReservaEspecialCliente) o;
//Serviço
Listcell lc = new Listcell(reservaEspecialCliente.getCorridaId().toString());
lc.setParent(lstm);
//Data Início
lc = new Listcell(dataComum(reservaEspecialCliente.getFecinicio()));
lc.setParent(lstm);
//Data Final
lc = new Listcell(dataComum(reservaEspecialCliente.getFecinicio()));
lc.setParent(lstm);
//Tempo Conferência
String[] horaMinutoTempoConfirmcao = capturarHoraMinuto(reservaEspecialCliente.getTempoConfirmacao());
lc = new Listcell(horaMinutoTempoConfirmcao[0] + ":" + horaMinutoTempoConfirmcao[1]);
lc.setParent(lstm);
//Origem
lc = new Listcell(reservaEspecialCliente.getOrigem().getDescparada());
lc.setParent(lstm);
//Destino
lc = new Listcell(reservaEspecialCliente.getDestino().getDescparada());
lc.setParent(lstm);
//Número poltrona
lc = new Listcell(reservaEspecialCliente.getNumAsentoCorrida().toString());
lc.setParent(lstm);
//Dias semana
lc = new Listcell(getDias(reservaEspecialCliente));
lc.setParent(lstm);
lstm.setAttribute("data", reservaEspecialCliente);
}
private String dataComum(java.util.Date data){
String retorno = "";
Calendar calendar = Calendar.getInstance();
calendar.setTime(data);
retorno = retorno + String.format("%02d",calendar.get(Calendar.DAY_OF_MONTH))+"/";
retorno = retorno + String.format("%02d",calendar.get(Calendar.MONTH)+1)+"/";
retorno = retorno + String.format("%02d",calendar.get(Calendar.YEAR));
return retorno;
}
private String getDias(ReservaEspecialCliente reservaEspecialCliente) {
String retorno = "";
if (reservaEspecialCliente.getIndDomingo()) {
retorno = retorno + Labels.getLabel("editarClienteController.msg.domingo")+", ";
}
if (reservaEspecialCliente.getIndSegunda()) {
retorno = retorno + Labels.getLabel("editarClienteController.msg.lunes")+", ";
}
if (reservaEspecialCliente.getIndTerca()) {
retorno = retorno + Labels.getLabel("editarClienteController.msg.martes")+", ";
}
if (reservaEspecialCliente.getIndQuarta()) {
retorno = retorno + Labels.getLabel("editarClienteController.msg.miercoles")+", ";
}
if (reservaEspecialCliente.getIndQuinta()) {
retorno = retorno + Labels.getLabel("editarClienteController.msg.jueves")+", ";
}
if (reservaEspecialCliente.getIndSexta()) {
retorno = retorno + Labels.getLabel("editarClienteController.msg.viernes")+", ";
}
if (reservaEspecialCliente.getIndSabado()) {
retorno = retorno + Labels.getLabel("editarClienteController.msg.sabado")+", ";
}
if (retorno.length() > 1) {
retorno = retorno.substring(0, retorno.length() - 2);
}
return retorno;
}
public String[] capturarHoraMinuto(Date data) {
if(data == null) {
return new String[] { "0", "0"};
}
String[] horaMinuto = new String[2];
Calendar c = Calendar.getInstance();
c.setTime(data);
Long tempo = DateUtil.getElapsedMinutos(DateUtil.getFecInicio().getTime(), c.getTime());
long minutos = (tempo % 60);
Integer horas = (tempo.intValue() / 60);
String sMinutos = String.valueOf(minutos);
horaMinuto[0] = horas.toString();
horaMinuto[1] = ((sMinutos.length() < 2) ? "0" + sMinutos : sMinutos);
return horaMinuto;
}
}