fixes bug #7587 - reajuste automatico de vigencia - merge

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@58379 d1611594-4594-4d17-8e1d-87c2c4800839
master
edgar 2016-07-28 12:20:17 +00:00
parent c0be1873a4
commit a92c7fb3cd
3 changed files with 134 additions and 59 deletions

View File

@ -4,6 +4,7 @@
*/
package com.rjconsultores.ventaboletos.web.gui.controladores.tarifas;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@ -20,6 +21,8 @@ import org.zkoss.zk.ui.event.Event;
import org.zkoss.zul.Button;
import org.zkoss.zul.Datebox;
import com.ctc.wstx.util.DataUtil;
import com.rjconsultores.ventaboletos.dao.VigenciaTarifaDAO;
import com.rjconsultores.ventaboletos.entidad.Tarifa;
import com.rjconsultores.ventaboletos.entidad.VigenciaTarifa;
import com.rjconsultores.ventaboletos.service.TarifaService;
@ -29,6 +32,8 @@ import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import bsh.org.objectweb.asm.Label;
/**
*
* @author rodrigo
@ -115,67 +120,47 @@ public class EditarVigenciaTarifaController extends MyGenericForwardComposer {
Date inicio = fecInicio.getValue();
Date fim = fecFinal.getValue();
// checando se o fim da vigencia eh menor que o inicio:
if (!fim.before(inicio)) {
vigenciaTarifa.setFeciniciovigencia(DateUtil.inicioFecha(inicio));
vigenciaTarifa.setFecfinvigencia(DateUtil.fimFecha(fim));
// checando se a vigencia pode ser salva. A data de inicio de uma
// nova vigencia tem q ser maior que a da fim da vigencia anterior
// para que não tenha tarifas com duas vigencias:
// Não traga ela mesma se em edição
List<VigenciaTarifa> lsVigencias = vigenciaTarifaService.buscarVigenciasIntervalo(vigenciaTarifa);
Boolean podeSalvar = lsVigencias.isEmpty() ? true : false;
// Se for ele mesmo pode salvar.
if (lsVigencias.size() == 1) {
// Somente eição
if (vigenciaTarifa.getVigenciatarifaId() != null) {
if (vigenciaTarifa.getVigenciatarifaId().equals(lsVigencias.get(0).getVigenciatarifaId())) {
podeSalvar = true;
// Nova Tarifa ou em edição e sem conflitos
if ((lsVigencias.isEmpty() && vigenciaTarifa.getVigenciatarifaId() == null)
|| (lsVigencias.isEmpty() && vigenciaTarifa.getVigenciatarifaId() != null)) {
salvarVigencia();
} else {
StringBuilder msgConflito = new StringBuilder(Labels.getLabel("editarVigenciaTarifaController.MSG.conflitoVigencias"));
msgConflito.append(". ");
VigenciaTarifa vigenciaBase = lsVigencias.get(0);
if (vigenciaTarifa.getVigenciatarifaId() == null
&& vigenciaTarifa.getFeciniciovigencia().equals(vigenciaBase.getFeciniciovigencia())) {
Messagebox.show(getMsgDataInicioIgual(msgConflito, vigenciaBase));
return;
}
Boolean indDataInicialConflitante = indDataInicialConflitante(vigenciaBase, msgConflito);
if (indDataInicialConflitante && lsVigencias.size() > 1) {
VigenciaTarifa vigenciaPosterior = lsVigencias.get(1);
setDataFinalAntesVigenciaParam(vigenciaPosterior, msgConflito);
}
msgConflito.append("\n");
msgConflito.append(Labels.getLabel("editarVigenciaTarifaController.MSG.continuar"));
int opcao = Messagebox.show(msgConflito.toString(), "", Messagebox.OK | Messagebox.CANCEL, Messagebox.QUESTION);
if (opcao == Messagebox.OK) {
salvarVigencia();
if (indDataInicialConflitante) {
atualizarItem(vigenciaBase);
}
}
}
if (podeSalvar) {
if (vigenciaTarifa.getVigenciatarifaId() == null) {
if (lsVigencias.isEmpty()) {
vigenciaTarifaService.suscribir(vigenciaTarifa);
vigenciaList.addItem(vigenciaTarifa);
Messagebox.show(
Labels.getLabel("editarVigenciaTarifaController.btnFechar.MSG.SuscbrirOK"),
Labels.getLabel("editarVigenciaTarifaController.window.title"),
Messagebox.OK, Messagebox.INFORMATION);
closeWindow();
}
else {
Messagebox.show(
Labels.getLabel("MSG.Registro.Existe"),
Labels.getLabel("editarVigenciaTarifaController.window.title"),
Messagebox.OK, Messagebox.EXCLAMATION);
}
}
else {
vigenciaTarifaService.actualizacion(vigenciaTarifa);
vigenciaList.updateItem(vigenciaTarifa);
Messagebox.show(
Labels.getLabel("editarVigenciaTarifaController.btnFechar.MSG.SuscbrirOK"),
Labels.getLabel("editarVigenciaTarifaController.window.title"),
Messagebox.OK, Messagebox.INFORMATION);
closeWindow();
}
}
else {
Messagebox.show(
Labels.getLabel("editarVigenciaTarifaController.MSG.conflitoVigencias"),
Labels.getLabel("editarVigenciaTarifaController.window.title"),
Messagebox.OK, Messagebox.EXCLAMATION);
}
}
else {
} else {
Messagebox.show(
Labels.getLabel("editarVigenciaTarifaController.MSG.FimMenorInicio"),
Labels.getLabel("editarVigenciaTarifaController.window.title"),
@ -183,12 +168,95 @@ public class EditarVigenciaTarifaController extends MyGenericForwardComposer {
}
}
private Boolean indDataInicialConflitante(VigenciaTarifa vigenciaBase, StringBuilder msgConflito) {
if (vigenciaTarifa.getFeciniciovigencia().before(vigenciaBase.getFeciniciovigencia())) {
// Apenas data final é conflitante...
// Reduzir a data final da nova vigencia para um dia anterior
// a data inicial da vigencia conflitante(Posterior, a entrar em vigencia)
setDataFinalAntesVigenciaParam(vigenciaBase, msgConflito);
return false;
} else {
// Nova vigencia tem data inicial conflitante mas nao igual
// a data inicial da vigencia conflitante(Anteriormente em vigencia)...
// Reduza a data final da vigencia conflitante para um dia anterior a nova vigencia (tire sua vigencia)
vigenciaBase.setFecfinvigencia(DateUtil.somarMinutos(vigenciaTarifa.getFeciniciovigencia(), -1));
setMsgDataInicioConflitante(msgConflito, vigenciaBase);
return true;
}
}
private void setDataFinalAntesVigenciaParam(VigenciaTarifa vigenciaBase, StringBuilder msgConflito) {
vigenciaTarifa.setFecfinvigencia(DateUtil.somarMinutos(vigenciaBase.getFeciniciovigencia(), -1));
setMegDataFinalConflitante(msgConflito);
}
private void setMsgDataInicioConflitante(StringBuilder msgConflito, VigenciaTarifa vigenciaBase) {
msgConflito.append(" ");
msgConflito.append(Labels.getLabel("editarVigenciaTarifaController.MSG.dataInicialConflitante"));
msgConflito.append(" ");
msgConflito.append(SimpleDateFormat.getInstance().format(vigenciaBase.getFecfinvigencia()));
msgConflito.append(". ");
}
private void setMegDataFinalConflitante(StringBuilder msgConflito) {
msgConflito.append(" ");
msgConflito.append(Labels.getLabel("editarVigenciaTarifaController.MSG.dataFinalConflitante"));
msgConflito.append(" ");
msgConflito.append(SimpleDateFormat.getInstance().format(vigenciaTarifa.getFecfinvigencia()));
msgConflito.append(". ");
}
private String getMsgDataInicioIgual(StringBuilder msgConflito, VigenciaTarifa vigenciaBase) {
msgConflito.append(Labels.getLabel("editarVigenciaTarifaController.MSG.dataInicialIgual"));
msgConflito.append(" ");
msgConflito.append(vigenciaBase.getVigenciatarifaId());
return msgConflito.toString();
}
private void salvarVigencia() throws InterruptedException {
if (vigenciaTarifa.getVigenciatarifaId() == null) {
salvarItemNovo();
} else {
atualizarItem(vigenciaTarifa);
}
}
private void atualizarItem(VigenciaTarifa vigencia) throws InterruptedException {
vigenciaTarifaService.actualizacion(vigencia);
vigenciaList.updateItem(vigencia);
Messagebox.show(
Labels.getLabel("editarVigenciaTarifaController.btnFechar.MSG.SuscbrirOK"),
Labels.getLabel("editarVigenciaTarifaController.window.title"),
Messagebox.OK, Messagebox.INFORMATION);
closeWindow();
}
private void salvarItemNovo() throws InterruptedException {
vigenciaTarifaService.suscribir(vigenciaTarifa);
vigenciaList.addItemNovo(vigenciaTarifa);
Messagebox.show(
Labels.getLabel("editarVigenciaTarifaController.btnFechar.MSG.SuscbrirOK"),
Labels.getLabel("editarVigenciaTarifaController.window.title"),
Messagebox.OK, Messagebox.INFORMATION);
closeWindow();
}
public void onClick$btnApagar(Event ev) throws InterruptedException {
vigenciaTarifa.setFecmodif(Calendar.getInstance().getTime());
vigenciaTarifa.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
vigenciaTarifa.setActivo(Boolean.FALSE);
int opcao = Messagebox.show(
int opcao = Messagebox.show(
Labels.getLabel("editarVigenciaTarifaController.btnFechar.MSG.Deseja.Borrar"),
Labels.getLabel("editarVigenciaTarifaController.window.title"),
Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);
@ -202,8 +270,7 @@ public class EditarVigenciaTarifaController extends MyGenericForwardComposer {
Labels.getLabel("editarVigenciaTarifaController.MSG.podeApagar"),
Labels.getLabel("editarVigenciaTarifaController.window.title"),
Messagebox.OK, Messagebox.EXCLAMATION);
}
else {
} else {
vigenciaTarifaService.borrar(vigenciaTarifa);
vigenciaList.removeItem(vigenciaTarifa);

View File

@ -2265,7 +2265,11 @@ editarVigenciaTarifaController.btnApagar.tooltiptext = Eliminar
editarVigenciaTarifaController.btnSalvar.tooltiptext = Guardar
editarVigenciaTarifaController.btnFechar.tooltiptext = Cerrar
editarVigenciaTarifaController.MSG.FimMenorInicio = Vigencia final menor que inicial
editarVigenciaTarifaController.MSG.conflitoVigencias = La vigencia informada se traslapa con otra ya existente
editarVigenciaTarifaController.MSG.conflitoVigencias = La vigencia informada se traslapa con otras ya existente
editarVigenciaTarifaController.MSG.dataInicialConflitante = A vigência de data conflitante terá a data final ajustada para o dia
editarVigenciaTarifaController.MSG.dataFinalConflitante = A data final da nova vigência será ajustada para
editarVigenciaTarifaController.MSG.dataInicialIgual= Ha uma vigência de mesma data inicial com id
editarVigenciaTarifaController.MSG.continuar=Deseja continuar?
editarVigenciaTarifaController.MSG.podeApagar = Hay tarifas con esta vigencia, no es posible elimimar
editarVigenciaTarifaController.MSG.fecVenta = Fecha vigencia venta debe de estar entre fecha início y fecha fin

View File

@ -2317,8 +2317,12 @@ editarVigenciaTarifaController.btnFechar.MSG.borrarOK = Vigência tarifa Excluid
editarVigenciaTarifaController.btnApagar.tooltiptext = Eliminar
editarVigenciaTarifaController.btnSalvar.tooltiptext = Salvar
editarVigenciaTarifaController.btnFechar.tooltiptext = Fechar
editarVigenciaTarifaController.MSG.FimMenorInicio = Vigência Final menor que Inicial.
editarVigenciaTarifaController.MSG.conflitoVigencias = A vigência informada se sobrepõe com outra já existente.
editarVigenciaTarifaController.MSG.FimMenorInicio = Vigência Final menor que Inicial.
editarVigenciaTarifaController.MSG.conflitoVigencias = A vigência informada se sobrepõe outras já existentes
editarVigenciaTarifaController.MSG.dataInicialConflitante = A vigência de data conflitante terá a data final ajustada para o dia
editarVigenciaTarifaController.MSG.dataFinalConflitante = A data final da nova vigência será ajustada para
editarVigenciaTarifaController.MSG.dataInicialIgual= Ha uma vigência de mesma data inicial com id
editarVigenciaTarifaController.MSG.continuar=Deseja continuar?
editarVigenciaTarifaController.MSG.podeApagar = Há tarifas com esta vigência, não é possível elimimar.
editarVigenciaTarifaController.MSG.fecVenta = Data vigência Venda deve estar entre data início e data Fim.