diff --git a/pom.xml b/pom.xml
index 2aabd88e2..6677c3e98 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,11 +4,11 @@
4.0.0
br.com.rjconsultores
ventaboletosadm
- 1.11.7
+ 1.11.8
war
- 1.8.0
+ 1.8.1
1.6.4
UTF-8
UTF-8
diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/EditarCorridaController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/EditarCorridaController.java
index e4beb09f0..d95afe2f5 100644
--- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/EditarCorridaController.java
+++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/EditarCorridaController.java
@@ -4,6 +4,8 @@
*/
package com.rjconsultores.ventaboletos.web.gui.controladores.esquemaoperacional;
+import java.time.LocalDate;
+import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
@@ -19,6 +21,7 @@ import org.apache.commons.lang.math.NumberUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
+import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.stereotype.Controller;
import org.zkoss.util.resource.Labels;
import org.zkoss.zhtml.Messagebox;
@@ -37,13 +40,14 @@ import org.zkoss.zul.Datebox;
import org.zkoss.zul.Intbox;
import org.zkoss.zul.Label;
import org.zkoss.zul.Radio;
-import org.zkoss.zul.Radiogroup;
import org.zkoss.zul.Spinner;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Timebox;
+import org.zkoss.zul.Window;
import com.rjconsultores.ventaboletos.entidad.Autobus;
import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
+import com.rjconsultores.ventaboletos.entidad.Corrida;
import com.rjconsultores.ventaboletos.entidad.Division;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.EsquemaAsiento;
@@ -61,6 +65,7 @@ import com.rjconsultores.ventaboletos.entidad.RutaSecuencia;
import com.rjconsultores.ventaboletos.entidad.Tramo;
import com.rjconsultores.ventaboletos.entidad.TramoServicio;
import com.rjconsultores.ventaboletos.service.AutobusService;
+import com.rjconsultores.ventaboletos.service.BoletoService;
import com.rjconsultores.ventaboletos.service.ClaseServicioService;
import com.rjconsultores.ventaboletos.service.CorridaService;
import com.rjconsultores.ventaboletos.service.DivisionService;
@@ -78,7 +83,9 @@ import com.rjconsultores.ventaboletos.service.RutaService;
import com.rjconsultores.ventaboletos.service.TramoServicioService;
import com.rjconsultores.ventaboletos.utilerias.ApplicationProperties;
import com.rjconsultores.ventaboletos.utilerias.CustomEnum;
+import com.rjconsultores.ventaboletos.utilerias.DateUtil;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
+import com.rjconsultores.ventaboletos.vo.esquemaoperacional.TarefaGeracaoCorridaVO;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.render.MyComboRutaRenderer;
@@ -93,9 +100,10 @@ import com.rjconsultores.ventaboletos.web.utilerias.render.RenderEsquemaCorridaE
@Scope("prototype")
public class EditarCorridaController extends MyGenericForwardComposer {
+ private static final int PERIODO_MAXIMO_90_DIAS = 90;
private static Logger log = Logger.getLogger(EditarCorridaController.class);
-
private static final long serialVersionUID = 1L;
+ //Services
@Autowired
private EsquemaCorridaService esquemaCorridaService;
@Autowired
@@ -125,10 +133,104 @@ public class EditarCorridaController extends MyGenericForwardComposer {
@Autowired
CorridaService corridaService;
@Autowired
+ BoletoService boletoService;
+ @Autowired
private RutaEmbarqueDesembarqueService rutaEmbarqueDesembarqueService;
@Autowired
private EsquemaCorridaEmbarqueDesembarqueService esquemaCorridaEmbarqueDesembarqueService;
+
private DivisionService divisionService;
+
+ //Radio
+ private Radio porBloq;
+ private Radio latente;
+ private Radio autorizada;
+ private Radio cancelada;
+ private Radio sentado;
+ private Radio emPe;
+ private Radio fletes;
+ private Radio viajesEspeciales;
+ private Radio transportePasajeros;
+ private Radio rdImprimeBPE;
+ private Radio rdNaoImprimeBPE;
+ //MyListbox
+ private MyListbox esquemaCorridaList;
+ private MyListbox esquemaTramoList;
+ private MyListbox esquemaCorridaEmbarqueDesembarqueListbox;
+ //Datebox
+ private Datebox fecniciovigencia;
+ private Datebox fecfinvigencia;
+ //Spinner
+ private Spinner minutos;
+ private Spinner txtHorasParaConfirmacao;
+ private Spinner txtMinutosParaConfirmacao;
+ private Spinner txtHorasAutomacaoDE;
+ private Spinner txtMinutosAutomacaoDE;
+ private Spinner txtHorasAutomacaoATE;
+ private Spinner txtMinutosAutomacaoATE;
+ //Intbox
+ private Intbox txtNumCorrida;
+ private Intbox txtNumCorridaPisoExtra;
+ private Intbox txtNumCorridaPisoExtra2;
+ private Intbox txtQtdeDiasGeracao;
+ private Intbox txtOcupacaoMinima;
+ private Intbox txtOcupacaoHorarioExtra;
+ private Intbox txtNumCorridaExtraAuto;
+ //Combobox
+ private Combobox cmbClase;
+ private Combobox cmbMarca;
+ private Combobox cmbRuta;
+ private Combobox cmbEmpresaCorrida;
+ private Combobox cmbEmpresaIngresso;
+ private Combobox cmbRolOperativo;
+ private Combobox cmbStatus;
+ private Combobox cmbVia;
+ private Combobox cmbTramo;
+ private Combobox cmbDivision;
+ private Combobox cmbIndGeneraFeriado;
+ private Combobox cmbEmbarqueDesembarque;
+ private Combobox cmbLocalEmbarqueDesembarque;
+ private Combobox cmbRolOperativoServicoExtra;
+ //Button
+ private Button btnAsientos;
+ private Button btnApagar;
+ //Timebox
+ private Timebox horasalida;
+ private Timebox de;
+ private Timebox hasta;
+ private Timebox horaIniNaoImpBpe;
+ private Timebox horaFimNaoImpBpe;
+ //Label
+ private Label horasalidaLabel;
+ private Label minutosLabel1;
+ private Label minutosLabel2;
+ private Label horaLabel1;
+ private Label horaLabel2;
+ private Label horaLabel21;
+ private Label horaLabel22;
+ private Label lbDivision;
+ private Label lbNumCorridaPisoExtra;
+ private Label lbNumCorridaPisoExtra2;
+ //Textbox
+ private Textbox txtIdCorridaRebote;
+ private Textbox txtPlataforma;
+ private Textbox txtInfoCorrida;
+ //Checkbox
+ private Checkbox chkDoblePiso;
+ private Checkbox chkCorridaExtra;
+ private Checkbox lun;
+ private Checkbox mar;
+ private Checkbox mie;
+ private Checkbox jue;
+ private Checkbox vie;
+ private Checkbox sab;
+ private Checkbox dom;
+ private Checkbox cbEmbarque;
+ private Checkbox cbDesembarque;
+ private Checkbox cbVisualizaNaAPI;
+ private Checkbox chkBloqueiaCorridaWebAposSaida;
+ private Checkbox diaSimDiaNao;
+ //List
private List lsDivision;
private List lsEmpresa;
private List lsEmpresaIngresso;
@@ -142,105 +244,22 @@ public class EditarCorridaController extends MyGenericForwardComposer {
private List lsTramosRutaEsquemaCorrida;
private List lsTramos;
private List lsParadaEsquema;
- private Radio porBloq;
- private Radio latente;
- private Radio autorizada;
- private Radio cancelada;
- private Radio sentado;
- private Radio emPe;
- private Radio fletes;
- private Radio viajesEspeciales;
- private Radio transportePasajeros;
- private Radio rdImprimeBPE;
- private Radio rdNaoImprimeBPE;
- private Checkbox chkDoblePiso;
- private EsquemaCorrida esquemaCorrida;
- private MyListbox esquemaCorridaList;
- private MyListbox esquemaTramoList;
- private MyListbox esquemaCorridaEmbarqueDesembarqueListbox;
- private Datebox fecniciovigencia;
- private Datebox fecfinvigencia;
- private Intbox txtNumCorrida;
- private Textbox txtInfoCorrida;
- private Checkbox chkCorridaExtra;
- private Intbox txtNumCorridaPisoExtra;
- private Intbox txtNumCorridaPisoExtra2;
- private Intbox txtQtdeDiasGeracao;
- private Combobox cmbClase;
- private Combobox cmbMarca;
- private Combobox cmbRuta;
- private Combobox cmbEmpresaCorrida;
- private Combobox cmbEmpresaIngresso;
- private Combobox cmbRolOperativo;
- private Combobox cmbStatus;
- private Combobox cmbVia;
- private Combobox cmbTramo;
- private Combobox cmbDivision;
- private Combobox cmbIndGeneraFeriado;
- private Combobox cmbEmbarqueDesembarque;
- private Button btnAsientos;
- private Timebox horasalida;
- private Timebox de;
- private Timebox hasta;
- private Timebox horaIniNaoImpBpe;
- private Timebox horaFimNaoImpBpe;
- private Spinner minutos;
- private Label horasalidaLabel;
- private Label minutosLabel1;
- private Label minutosLabel2;
- private Label horaLabel1;
- private Label horaLabel2;
- private Label horaLabel21;
- private Label horaLabel22;
- private Label lbDivision;
-
- private Label lbNumCorridaPisoExtra;
- private Label lbNumCorridaPisoExtra2;
- private Button btnApagar;
- private Textbox txtIdCorridaRebote;
- private Textbox txtPlataforma;
-
- private Checkbox lun;
- private Checkbox mar;
- private Checkbox mie;
- private Checkbox jue;
- private Checkbox vie;
- private Checkbox sab;
- private Checkbox dom;
- @SuppressWarnings("unused")
- private boolean isClone = false;
- private Checkbox diaSimDiaNao;
- private Boolean embarqueDesembarqueDisabled = true;
- private boolean isPrimeiraVez = true;
-
private List lsRutaEmbarqueDesembarque = new ArrayList();
private List lsEsquemaCorridaEmbarqueDesembarqueSelected = new ArrayList();
private List lsEsquemaCorridaEmbarqueDesembarqueBorrar = new ArrayList();
-
- private Combobox cmbLocalEmbarqueDesembarque;
private List lsEmbarqueDesembarque;
+ //boolean
+ private boolean isPrimeiraVez = true;
+ private Boolean embarqueDesembarqueDisabled = true;
+ private Boolean isAlteraCorridaJaGerada;
private Boolean embarque = Boolean.FALSE;
private Boolean desembarque = Boolean.FALSE;
private Boolean isVisualizarNaAPI = Boolean.FALSE;
- private Checkbox cbEmbarque;
- private Checkbox cbDesembarque;
- private Checkbox cbVisualizaNaAPI;
+ //Outros objetos
+ private EsquemaCorrida esquemaCorrida;
+ private Date dataInicialFiltroCorridaExistente;
+ private Date dataFinalFiltroCorridaExistente;
- //FlexBus
- private Spinner txtHorasParaConfirmacao;
- private Spinner txtMinutosParaConfirmacao;
- private Intbox txtOcupacaoMinima;
-
- private Intbox txtOcupacaoHorarioExtra;
- private Spinner txtHorasAutomacaoDE;
- private Spinner txtMinutosAutomacaoDE;
- private Spinner txtHorasAutomacaoATE;
- private Spinner txtMinutosAutomacaoATE;
-
- private Intbox txtNumCorridaExtraAuto;
- private Combobox cmbRolOperativoServicoExtra;
-
- private Checkbox chkBloqueiaCorridaWebAposSaida;
@Override
public void doAfterCompose(Component comp) throws Exception {
@@ -500,7 +519,6 @@ public class EditarCorridaController extends MyGenericForwardComposer {
txtNumCorrida.setText("");
txtNumCorrida.setConstraint("no empty");
chkCorridaExtra.setDisabled(Boolean.FALSE);
- isClone = true;
esquemaCorrida.setEsquemacorridaId(null);
esquemaCorrida.setNumCorrida(null);
@@ -689,7 +707,7 @@ public class EditarCorridaController extends MyGenericForwardComposer {
if(!validaEsquemaTramo(dataDeFecInicioVigencia, dataAteFecfinvigencia)) {
return;
} else {
- salvaEsquemaTramo(dataDeFecInicioVigencia);
+ salvaEsquemaCorrida(dataDeFecInicioVigencia);
}
} catch (WrongValueException ex) {
@@ -813,7 +831,7 @@ public class EditarCorridaController extends MyGenericForwardComposer {
return true;
}
- private void salvaEsquemaTramo(Date dataDeFecInicioVigencia) throws InterruptedException {
+ private void salvaEsquemaCorrida(Date dataDeFecInicioVigencia) throws InterruptedException {
//FlexBus
if(esquemaCorrida.getIsFlexBus()) {
esquemaCorrida.setHorasParaConfirmacao(txtHorasParaConfirmacao.getValue());
@@ -904,6 +922,9 @@ public class EditarCorridaController extends MyGenericForwardComposer {
}
esquemaCorridaService.actualizacion(esquemaCorrida);
esquemaCorridaService.actualizaEsquemaTramo(lsParadaEsquema, esquemaCorrida);
+ if(Boolean.TRUE.equals(isAlteraCorridaJaGerada)) {
+ validaRealizaGeracaoCorrida();
+ }
esquemaCorridaList.updateItem(esquemaCorrida);
@@ -923,6 +944,91 @@ public class EditarCorridaController extends MyGenericForwardComposer {
closeWindow();
}
+ private void validaRealizaGeracaoCorrida() {
+ try {
+ LocalDate inicioLocalDate = dataInicialFiltroCorridaExistente.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+ LocalDate fimLocalDate = dataFinalFiltroCorridaExistente.toInstant().atZone(ZoneId.systemDefault()).toLocalDate().plusDays(1);
+ LocalDate currentStart=LocalDate.from(inicioLocalDate);
+ List tarefaSucesso = new ArrayList();
+ List tarefaErros = new ArrayList();
+ Date dataIter = Date.from(currentStart.atStartOfDay(ZoneId.systemDefault()).toInstant());
+ for (LocalDate date = inicioLocalDate; date.isBefore(fimLocalDate); date = date.plusDays(1)) {
+ //valida data
+ try {
+ //1 - Validar se corrida existe vendas disponíveis
+ if(!boletoService.isExisteBoletoPorCorrida(esquemaCorrida.getNumCorrida(), dataIter)) {
+ //2 - Apagar corrida caso não exista venda
+ Corrida.Id id = new Corrida.Id(esquemaCorrida.getNumCorrida(), dataIter);
+ //3 - Gerar nova corrida somente se a corrida estiver ativa
+ Corrida corrida = corridaService.buscarCorridaAtivaPorId(id);
+ if(corrida !=null) {
+ try {
+ corridaService.borrar(corrida);
+ }catch (DataIntegrityViolationException e) {
+ if(e.getRootCause()!=null && e.getRootCause().getLocalizedMessage() !=null && e.getRootCause().getLocalizedMessage().contains("SYS_C004956867")) {
+ String msgErro = "Existe uma ocupação para esta corrida nesta data (tabela Disponibilidade). Corrida:" + esquemaCorrida.getNumCorrida() + " data:" + DateUtil.getStringDate(dataIter);
+ TarefaGeracaoCorridaVO tarefa = new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO");
+ tarefaErros.add(tarefa);
+ //log.error("Geração de corrida via Conf. " + msgErro, e);
+ }else if (e.getRootCause()!=null && e.getRootCause().getLocalizedMessage() !=null && e.getRootCause().getLocalizedMessage().contains("SYS_C004957483")) {
+ String msgErro = "Existe um assento exclusivo para esta corrida nesta data (tabela ASIENTO_EXCLUSIVO). Corrida:" + esquemaCorrida.getNumCorrida() + " data:" + DateUtil.getStringDate(dataIter);
+ TarefaGeracaoCorridaVO tarefa = new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO");
+ tarefaErros.add(tarefa);
+ //log.error("Geração de corrida via Conf. " + msgErro, e);
+
+ }else{
+ String msgErro = "Alguma restrição de integridade foi violada. Favor verificar ";
+ TarefaGeracaoCorridaVO tarefa = new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO");
+ tarefaErros.add(tarefa);
+ log.error("Geração de corrida via Conf. " + msgErro, e);
+ }
+ continue;
+
+ }
+ //4 - Gerar corrida novamente.
+ List esquemaCorridaList = new ArrayList();
+ esquemaCorridaList.add(esquemaCorrida);
+ corridaService.generarCorrida(dataIter, esquemaCorridaList, false);
+ String msgSucesso = "Corrida parada a data " + DateUtil.getStringDate(dataIter) + " gerada com sucesso";
+ TarefaGeracaoCorridaVO tarefa = new TarefaGeracaoCorridaVO(msgSucesso, "OK", "OK" );
+ tarefaSucesso.add(tarefa);
+ }else {
+ String msgErro = "Não econtrado corrida:" + esquemaCorrida.getNumCorrida() + " para a data:" + DateUtil.getStringDate(dataIter);
+ log.error("Geração de corrida via Conf. " + msgErro);
+ TarefaGeracaoCorridaVO tarefa = new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO");
+ tarefaErros.add(tarefa);
+
+ }
+
+ }else {
+ String msgErro = "Corrida não será gerada novamente. Existem vendas para a corrida:" + esquemaCorrida.getNumCorrida() + " na data:" + DateUtil.getStringDate(dataIter);
+ log.error("Geração de corrida via Conf. " + msgErro);
+ TarefaGeracaoCorridaVO tarefa = new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO");
+ tarefaErros.add(tarefa);
+
+ }
+ }catch (Exception e) {
+ String msgErro = "Serviço. Erro ao regerar a corrida:" + esquemaCorrida.getNumCorrida() + "para a data:" + DateUtil.getStringDate(dataIter);
+ log.error("Geração de corrida via Conf. " + msgErro, e);
+ TarefaGeracaoCorridaVO tarefa = new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO");
+ tarefaErros.add(tarefa);
+ }
+ }
+
+ Map args = new HashMap();
+ dataInicialFiltroCorridaExistente = new Date();
+ dataFinalFiltroCorridaExistente = new Date();
+ args.put("tarfaSucesso", tarefaSucesso);
+ args.put("tarefaErros", tarefaErros);
+ Window dialog = (Window)Executions.createComponents(
+ "/gui/esquema_operacional/logGeracaoCorridaViaConfServico.zul", null, args);
+
+ dialog.doModal();
+ }catch (InterruptedException e) {
+ log.error("Erro ao gerar corrida para a corrida: " + esquemaCorrida.getNumCorrida());
+ }
+ }
+
private void salvaNovoEsquemaCorrida(Date dataDeFecInicioVigencia, List lsEC)
throws InterruptedException {
Calendar agora = Calendar.getInstance();
@@ -1017,7 +1123,6 @@ public class EditarCorridaController extends MyGenericForwardComposer {
esquemaCorridaService.suscribir(esquemaCorrida);
esquemaCorridaService.actualizaEsquemaTramo(lsParadaEsquema, esquemaCorrida);
- isClone = false;
}
Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.suscribirOK"),
Labels.getLabel("editarConfiguracionCorridaController.window.title"),
@@ -1041,7 +1146,61 @@ public class EditarCorridaController extends MyGenericForwardComposer {
}
}
+ @SuppressWarnings("unchecked")
private boolean realizaValidacoes() throws InterruptedException {
+
+ if(lsParadaEsquema!=null && !lsParadaEsquema.isEmpty()) {
+ int resp = Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.desajaAlterarCorridaJaGeradas"),
+ Labels.getLabel("editarConfiguracionCorridaController.window.title"),
+ Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);
+
+ if (resp == Messagebox.YES) {
+ //chama poupup com filtro de data
+ try {
+ @SuppressWarnings("rawtypes")
+ Map args = new HashMap();
+ dataInicialFiltroCorridaExistente = new Date();
+ dataFinalFiltroCorridaExistente = new Date();
+ args.put("dataInicial", dataInicialFiltroCorridaExistente);
+ args.put("dataFinal", dataFinalFiltroCorridaExistente);
+
+ Window dialog = (Window)Executions.createComponents(
+ "/gui/esquema_operacional/filtroDataEdicaoCorrida.zul", null, args);
+ Button okBtn = (Button) dialog.getFellow("okBtn");
+
+ okBtn.addEventListener("onClick", new EventListener() {
+ @Override
+ public void onEvent(Event event) throws Exception {
+ try{
+ if(DateUtil.diferencaEntreDatasEmdias(dataInicialFiltroCorridaExistente, dataFinalFiltroCorridaExistente) > PERIODO_MAXIMO_90_DIAS) {
+ String msg = Labels.getLabel("MSG.Error.editarConfiguracionCorridaController.erroValidacaoDataEdicaoPeriodoMaximo");
+ Messagebox.show(msg, Labels.getLabel("editarConfiguracionCorridaController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION);;
+ }
+ Datebox fecInicial = (Datebox) dialog.getFellow("fecInicio");
+ dataInicialFiltroCorridaExistente = fecInicial.getValue();
+ Datebox fecFinal = (Datebox) dialog.getFellow("fecFinal");
+ dataFinalFiltroCorridaExistente = fecFinal.getValue();
+ isAlteraCorridaJaGerada = Boolean.TRUE;
+ }catch(Exception e){
+ log.error("Erro ao obter data", e);
+ }
+ dialog.detach();
+ }
+ });
+ dialog.doModal();
+
+ }catch (Exception e) {
+ String msg = Labels.getLabel("MSG.Error.editarConfiguracionCorridaController.erroValidacaoDataEdicaoCorridaExistentes") + e.getMessage();
+ Messagebox.show(msg, Labels.getLabel("editarConfiguracionCorridaController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION);
+ log.error(msg, e);
+ isAlteraCorridaJaGerada = Boolean.FALSE;
+ }
+ }else {
+ isAlteraCorridaJaGerada = Boolean.FALSE;
+ }
+
+ }
+
//Linha Destaivada
if (esquemaCorrida.getRuta().getIndRutaCancelada()) {
Messagebox.show(Labels.getLabel("editarCatalogoDeRutaController.msg.rutaDesativadaId")
diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/EditarDataEdicaoCorridaController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/EditarDataEdicaoCorridaController.java
new file mode 100644
index 000000000..e9141ce49
--- /dev/null
+++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/EditarDataEdicaoCorridaController.java
@@ -0,0 +1,91 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.rjconsultores.ventaboletos.web.gui.controladores.esquemaoperacional;
+
+import java.util.Date;
+
+import org.apache.log4j.Logger;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Controller;
+import org.zkoss.util.resource.Labels;
+import org.zkoss.zhtml.Messagebox;
+import org.zkoss.zk.ui.Component;
+import org.zkoss.zk.ui.Executions;
+import org.zkoss.zk.ui.event.Event;
+import org.zkoss.zul.Button;
+import org.zkoss.zul.Datebox;
+
+import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
+
+/**
+ *
+ * @author rodrigo
+ */
+@Controller("editarDataEdicaoCorridaController")
+@Scope("prototype")
+public class EditarDataEdicaoCorridaController extends MyGenericForwardComposer {
+
+
+ private Button btnApagar;
+ private Datebox fecInicio;
+ private Datebox fecFinal;
+ private Logger log = Logger.getLogger(EditarDataEdicaoCorridaController.class);
+
+
+ public Button getBtnApagar() {
+ return btnApagar;
+ }
+
+ public void setBtnApagar(Button btnApagar) {
+ this.btnApagar = btnApagar;
+ }
+
+ public Datebox getFecInicio() {
+ return fecInicio;
+ }
+
+ public void setFecInicio(Datebox fecInicio) {
+ this.fecInicio = fecInicio;
+ }
+
+ public Datebox getFecFinal() {
+ return fecFinal;
+ }
+
+ public void setFecFinal(Datebox fecFinal) {
+ this.fecFinal = fecFinal;
+ }
+
+
+ @Override
+ public void doAfterCompose(Component comp) throws Exception {
+ super.doAfterCompose(comp);
+ fecInicio.setValue((Date) Executions.getCurrent().getArg().get("dataInicial"));
+ fecFinal.setValue((Date) Executions.getCurrent().getArg().get("dataFinal"));
+
+
+ fecInicio.focus();
+ }
+
+ @SuppressWarnings("unchecked")
+ public void onClick$btnSalvar(Event ev) throws InterruptedException {
+ Date inicio = fecInicio.getValue();
+ Date fim = fecFinal.getValue();
+
+ if (!fim.before(inicio)) {
+ Executions.getCurrent().getArg().clear();
+ Executions.getCurrent().getArg().put("dataInicial", fecInicio.getValue());
+ Executions.getCurrent().getArg().put("dataFinal", fecFinal.getValue());
+
+ } else {
+ Messagebox.show(
+ Labels.getLabel("editarVigenciaTarifaController.MSG.FimMenorInicio"),
+ Labels.getLabel("editarVigenciaTarifaController.window.title"),
+ Messagebox.OK, Messagebox.EXCLAMATION);
+ }
+ }
+
+
+}
diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/LogGeracaoCorridaViaConfServicosController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/LogGeracaoCorridaViaConfServicosController.java
new file mode 100644
index 000000000..9b70be124
--- /dev/null
+++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/LogGeracaoCorridaViaConfServicosController.java
@@ -0,0 +1,92 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.rjconsultores.ventaboletos.web.gui.controladores.esquemaoperacional;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Controller;
+import org.zkoss.zk.ui.Component;
+import org.zkoss.zk.ui.Executions;
+import org.zkoss.zul.Button;
+
+import com.rjconsultores.ventaboletos.entidad.Empresa;
+import com.rjconsultores.ventaboletos.vo.esquemaoperacional.TarefaGeracaoCorridaVO;
+import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
+import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
+import com.rjconsultores.ventaboletos.web.utilerias.render.RenderTarefaGeracaoCorridaVO;
+
+@Controller("logGeracaoCorridaViaConfServicosController")
+@Scope("prototype")
+public class LogGeracaoCorridaViaConfServicosController extends MyGenericForwardComposer {
+
+ private static final long serialVersionUID = 1L;
+
+ private MyListbox tarefasList;
+ private MyListbox errosList;
+
+ private Button btnFechar;
+
+ private Empresa empresa;
+
+ @Override
+ public void doAfterCompose(Component comp) throws Exception {
+
+ super.doAfterCompose(comp);
+
+ tarefasList.setItemRenderer(new RenderTarefaGeracaoCorridaVO());
+ @SuppressWarnings("unchecked")
+ List tarefaSucessoList = (List) Executions.getCurrent().getArg()
+ .get("tarfaSucesso");
+ if (tarefaSucessoList == null) {
+ tarefaSucessoList = new ArrayList();
+ }
+ tarefasList.setData(tarefaSucessoList);
+
+ errosList.setItemRenderer(new RenderTarefaGeracaoCorridaVO());
+ @SuppressWarnings("unchecked")
+ List tarefaErroList = (List) Executions.getCurrent().getArg()
+ .get("tarefaErros");
+ if (tarefaErroList == null) {
+ tarefaErroList = new ArrayList();
+ }
+ errosList.setData(tarefaErroList);
+
+ }
+
+ public MyListbox getTarefasList() {
+ return tarefasList;
+ }
+
+ public void setTarefasList(MyListbox tarefasList) {
+ this.tarefasList = tarefasList;
+ }
+
+ public MyListbox getErrosList() {
+ return errosList;
+ }
+
+ public void setErrosList(MyListbox errosList) {
+ this.errosList = errosList;
+ }
+
+ public Empresa getEmpresa() {
+ return empresa;
+ }
+
+ public void setEmpresa(Empresa empresa) {
+ this.empresa = empresa;
+ }
+
+ public Button getBtnFechar() {
+ return btnFechar;
+ }
+
+ public void setBtnFechar(Button btnFechar) {
+ this.btnFechar = btnFechar;
+ }
+
+}
diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderTarefaGeracaoCorridaVO.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderTarefaGeracaoCorridaVO.java
new file mode 100644
index 000000000..42ec32d7a
--- /dev/null
+++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderTarefaGeracaoCorridaVO.java
@@ -0,0 +1,34 @@
+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.esquemaoperacional.TarefaGeracaoCorridaVO;
+
+public class RenderTarefaGeracaoCorridaVO implements ListitemRenderer {
+
+ @Override
+ public void render(Listitem lstm, Object o) throws Exception {
+ TarefaGeracaoCorridaVO testVO = (TarefaGeracaoCorridaVO) o;
+
+ Listcell lc = new Listcell();
+ if (testVO.getCodStatus().equals("OK")) {
+ lc.setImage("/gui/img/check_icon.png");
+ } else if (testVO.getCodStatus().equals("ERRO")) {
+ lc.setImage("/gui/img/close_icon.png");
+ }
+
+ lc.setParent(lstm);
+
+ lc = new Listcell(testVO.getTarefa());
+ lc.setParent(lstm);
+
+ lc = new Listcell(testVO.getStatus());
+ lc.setParent(lstm);
+
+ lstm.setAttribute("data", testVO);
+
+ }
+
+}
diff --git a/web/WEB-INF/i3-label_en.label b/web/WEB-INF/i3-label_en.label
index 55b429347..51d2555f1 100644
--- a/web/WEB-INF/i3-label_en.label
+++ b/web/WEB-INF/i3-label_en.label
@@ -3467,6 +3467,9 @@ editarConfiguracionCorridaController.corridaAlteradaSucesso.value= Corrida Alter
editarConfiguracionCorridaController.MSG.desejaConfirmarCorrida= Depois de Confirmada o serviço aparecerá para todos os pontos de venda e não será mais possível cancelar. Deseja realmente confirmar a corrida?
editarConfiguracionCorridaController.MSG.desejaCancelarCorrida= Depois de cancelada a corrida, não será mais possível alterar. Deseja realmente cancelar?
editarConfiguracionCorridaController.lbOcupacaoAtual.value=Ocupação Atual
+MSG.Error.editarConfiguracionCorridaController.erroValidacaoDataEdicaoCorridaExistentes=Não foi possível carrgegar a data, não será alterado as corridas já existentes
+MSG.Error.editarConfiguracionCorridaController.erroValidacaoDataEdicaoPeriodoMaximo= Período máximo para alteração de corridas é de 90 dias
+
editarConfiguracionCorridaController.lbAutomatizacaoHorarioExtra.value= Automatização Horário Extra
editarConfiguracionCorridaController.lbHabilitaCorridaExtraAutomatica.value= Habilita Automatização
@@ -3495,6 +3498,7 @@ editarConfiguracionCorridaController.lbD.value = D
editarConfiguracionCorridaController.lbCantParados.value = Quantidade de Venda em pé
editarConfiguracionCorridaController.MSG.suscribirOK = Configuração de serviço Registrado com Sucesso.
editarConfiguracionCorridaController.MSG.borrarPergunta = Deseja Eliminar este serviço?
+editarConfiguracionCorridaController.MSG.desajaAlterarCorridaJaGeradas = Deseja alterar localidades para corridas já geradas ?
editarConfiguracionCorridaController.MSG.borrarOK = Serviço Excluido com Sucesso.
editarConfiguracionCorridaController.MSG.gravarServico = Para configurar a cota, é necessário antes salvar a configuração do serviço
editarConfiguracionCorridaController.MSG.editarServicio = Para editar o serviço, é necessário antes salvar a configuração do trem
diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label
index 30a01b5b2..bd1ec4042 100644
--- a/web/WEB-INF/i3-label_es_MX.label
+++ b/web/WEB-INF/i3-label_es_MX.label
@@ -3149,6 +3149,7 @@ editarConfiguracionCorridaController.lbD.value = D
editarConfiguracionCorridaController.lbCantParados.value = Cantidad de parados
editarConfiguracionCorridaController.MSG.suscribirOK = Configuración de servicio se registró exitosamente
editarConfiguracionCorridaController.MSG.borrarPergunta = Desea eliminar este servicio?
+editarConfiguracionCorridaController.MSG.desajaAlterarCorridaJaGeradas = Deseja alterar localidades para corridas já geradas ?
editarConfiguracionCorridaController.MSG.borrarOK = Servicio se eliminó exitosamente.
editarConfiguracionCorridaController.MSG.gravarServico = Para configurar la cota, es necesário antes guardar la configuración de servicio
editarConfiguracionCorridaController.MSG.editarServicio = Para editar o serviço, é necessário antes Guardar a configuração do trem
@@ -3390,6 +3391,9 @@ editarConfiguracionCorridaController.corridaAlteradaSucesso.value= Raza cambiada
editarConfiguracionCorridaController.MSG.desejaConfirmarCorrida= Después de Confirmado, el servicio aparecerá para todos los puntos de venta y ya no será posible cancelar. ¿De verdad quieres confirmar la carrera?
editarConfiguracionCorridaController.MSG.desejaCancelarCorrida=Una vez que se cancele la carrera, ya no será posible realizar cambios. ¿De verdad quieres cancelar?
editarConfiguracionCorridaController.lbOcupacaoAtual.value=Ocupación actual
+MSG.Error.editarConfiguracionCorridaController.erroValidacaoDataEdicaoCorridaExistentes=Não foi possível carrgegar a data, não será alterado as corridas já existentes
+MSG.Error.editarConfiguracionCorridaController.erroValidacaoDataEdicaoPeriodoMaximo= Período máximo para alteração de corridas é de 90 dias
+
editarEmpresaController.habilitaVendaEmAbertoMovimentoCaixa= Habilite la venta abierta con movimiento de efectivo.
editarEmpresaController.naoImprimeCupomDeEmbarqueVendaEmAberto=Não Imprime Cupom de Embarque na Venda em aberto
editarEmpresaController.naoImprimeCupomDeEmbarqueConfirmacaoDeAberto=Não Imprime Cupom de Embarque na Confirmação de aberto
diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label
index 582f3df53..a72e9bcee 100644
--- a/web/WEB-INF/i3-label_pt_BR.label
+++ b/web/WEB-INF/i3-label_pt_BR.label
@@ -3477,7 +3477,14 @@ editarConfiguracionCorridaController.corridaAlteradaSucesso.value= Corrida Alter
editarConfiguracionCorridaController.MSG.desejaConfirmarCorrida= Depois de Confirmada o serviço aparecerá para todos os pontos de venda e não será mais possível cancelar. Deseja realmente confirmar a corrida?
editarConfiguracionCorridaController.MSG.desejaCancelarCorrida= Depois de cancelada a corrida, não será mais possível alterar. Deseja realmente cancelar?
editarConfiguracionCorridaController.lbOcupacaoAtual.value=Ocupação Atual
-
+MSG.Error.editarConfiguracionCorridaController.erroValidacaoDataEdicaoCorridaExistentes=Não foi possível carrgegar a data, não será alterado as corridas já existentes
+MSG.Error.editarConfiguracionCorridaController.erroValidacaoDataEdicaoPeriodoMaximo= Período máximo para alteração de corridas é de 90 dias
+label.editarConfiguracionCorridaController.inserirFiltroDataCorrida=Insira o filtro de data das corridas a serem alteradas
+logGeracaoCorridaViaConfServicosController.btnFechar.tooltiptext=Fechar
+logGeracaoCorridaViaConfServicosController.tabCorrida=Sucessos
+logGeracaoCorridaViaConfServicosController.tabErros=Erros
+logGeracaoCorridaViaConfServicosController.lhStatus=Status
+logGeracaoCorridaViaConfServicosController.window.title= Geração de Corrida via Conf. Serviços
editarConfiguracionCorridaController.lbAutomatizacaoHorarioExtra.value= Automatização Horário Extra
editarConfiguracionCorridaController.lbHabilitaCorridaExtraAutomatica.value= Habilita Automatização
editarConfiguracionCorridaController.lbTaxaDeOcupacao.value= Taxa de Ocupação (%)
@@ -3505,6 +3512,7 @@ editarConfiguracionCorridaController.lbD.value = D
editarConfiguracionCorridaController.lbCantParados.value = Quantidade de Venda em pé
editarConfiguracionCorridaController.MSG.suscribirOK = Configuração de serviço Registrado com Sucesso.
editarConfiguracionCorridaController.MSG.borrarPergunta = Deseja Eliminar este serviço?
+editarConfiguracionCorridaController.MSG.desajaAlterarCorridaJaGeradas = Deseja alterar localidades para corridas já geradas ?
editarConfiguracionCorridaController.MSG.borrarOK = Serviço Excluido com Sucesso.
editarConfiguracionCorridaController.MSG.gravarServico = Para configurar a cota, é necessário antes salvar a configuração do serviço
editarConfiguracionCorridaController.MSG.editarServicio = Para editar o serviço, é necessário antes salvar a configuração do trem
diff --git a/web/gui/esquema_operacional/filtroDataEdicaoCorrida.zul b/web/gui/esquema_operacional/filtroDataEdicaoCorrida.zul
new file mode 100644
index 000000000..95d0797bb
--- /dev/null
+++ b/web/gui/esquema_operacional/filtroDataEdicaoCorrida.zul
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/web/gui/esquema_operacional/logGeracaoCorridaViaConfServico.zul b/web/gui/esquema_operacional/logGeracaoCorridaViaConfServico.zul
new file mode 100644
index 000000000..bd3f5483e
--- /dev/null
+++ b/web/gui/esquema_operacional/logGeracaoCorridaViaConfServico.zul
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+