diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/tarifas/GenerarTarifaOrgaoController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/tarifas/GenerarTarifaOrgaoController.java index 47b7e3b0a..9ca16b9e8 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/tarifas/GenerarTarifaOrgaoController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/tarifas/GenerarTarifaOrgaoController.java @@ -5,8 +5,11 @@ package com.rjconsultores.ventaboletos.web.gui.controladores.tarifas; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import org.apache.poi.hssf.util.HSSFColor.ORCHID; +import org.hibernate.LazyInitializationException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; @@ -15,16 +18,19 @@ import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.Event; import org.zkoss.zul.Checkbox; import org.zkoss.zul.Combobox; +import org.zkoss.zul.Constraint; import org.zkoss.zul.Messagebox; import com.rjconsultores.ventaboletos.dao.TarifaOficialDAO; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente; import com.rjconsultores.ventaboletos.entidad.Ruta; +import com.rjconsultores.ventaboletos.entidad.RutaEmpresa; import com.rjconsultores.ventaboletos.exception.BusinessException; import com.rjconsultores.ventaboletos.service.EmpresaService; import com.rjconsultores.ventaboletos.service.EsquemaCorridaService; import com.rjconsultores.ventaboletos.service.OrgaoConcedenteService; +import com.rjconsultores.ventaboletos.service.RutaEmpresaService; import com.rjconsultores.ventaboletos.service.RutaService; import com.rjconsultores.ventaboletos.service.TarifaOficialService; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; @@ -45,6 +51,8 @@ public class GenerarTarifaOrgaoController extends MyGenericForwardComposer { @Autowired private RutaService rutaService; @Autowired + private RutaEmpresaService rutaEmpresaService; + @Autowired private TarifaOficialService tarifaOficialService; @Autowired private OrgaoConcedenteService orgaoConcedenteService; @@ -54,7 +62,7 @@ public class GenerarTarifaOrgaoController extends MyGenericForwardComposer { private TarifaOficialDAO tarifaOficialDAO; @Autowired private EsquemaCorridaService esquemaCorridaService; - + private List lsRuta; private List lsOrgaoConcedente; private List lsEmpresa; @@ -70,7 +78,8 @@ public class GenerarTarifaOrgaoController extends MyGenericForwardComposer { private List listSelectedRutas; private MyListbox selectedRutasList; private List lsEmpresaSelected; - + private Boolean esperar = false; + public List getLsEmpresaSelected() { return lsEmpresaSelected; } @@ -78,7 +87,7 @@ public class GenerarTarifaOrgaoController extends MyGenericForwardComposer { public void setLsEmpresaSelected(List lsEmpresaSelected) { this.lsEmpresaSelected = lsEmpresaSelected; } - + public List getLsRuta() { return lsRuta; } @@ -91,22 +100,21 @@ public class GenerarTarifaOrgaoController extends MyGenericForwardComposer { return lsEmpresa; } - @Override public void doAfterCompose(Component comp) throws Exception { lsOrgaoConcedente = orgaoConcedenteService.obtenerTodos(); lsEmpresa = UsuarioLogado.getUsuarioLogado().getEmpresa(); lsRuta = rutaService.buscarRutasPorEmpresas(lsEmpresa); - + super.doAfterCompose(comp); selectedRutasList.setItemRenderer(new RenderRutaDesc()); listSelectedRutas = new ArrayList(); lsEmpresaSelected = new ArrayList(); } - - public void onClick$chkZerarTabela(Event ev) + + public void onClick$chkZerarTabela(Event ev) { - if(chkZerarTabela.isChecked()) + if (chkZerarTabela.isChecked()) { chkTarifa.setChecked(false); chkTarifa.setDisabled(true); @@ -118,7 +126,7 @@ public class GenerarTarifaOrgaoController extends MyGenericForwardComposer { chkPedagio.setDisabled(true); chkArredondarTaxaEmbarque.setChecked(false); chkArredondarTaxaEmbarque.setDisabled(true); - }else + } else { chkTarifa.setDisabled(false); chkTarifa.setChecked(true); @@ -132,21 +140,21 @@ public class GenerarTarifaOrgaoController extends MyGenericForwardComposer { public void onClick$btnGenerarVigencia(Event ev) throws InterruptedException { cmbOrgaoConcedente.getValue(); - + cmbEmpresa.getValue(); + Integer orgaoConcedenteId = null; if (cmbOrgaoConcedente.getSelectedItem() != null) { orgaoConcedenteId = ((OrgaoConcedente) cmbOrgaoConcedente.getSelectedItem().getValue()).getOrgaoConcedenteId(); } - if(lsEmpresaSelected.isEmpty()){ - lsEmpresaSelected = lsEmpresa; - } - - if(listSelectedRutas == null || listSelectedRutas.isEmpty()){ + + lsEmpresaSelected = Arrays.asList((Empresa) cmbEmpresa.getSelectedItem().getValue()); + + if (listSelectedRutas == null || listSelectedRutas.isEmpty()) { listSelectedRutas = lsRuta; } - if (orgaoConcedenteId == null){ + if (orgaoConcedenteId == null) { int resp = Messagebox.show( Labels.getLabel("generarTarifaOrgaoController.MSG.gerarTodosOrgaos"), Labels.getLabel("indexController.mniGenerarTarifaOrgao.label"), @@ -156,24 +164,24 @@ public class GenerarTarifaOrgaoController extends MyGenericForwardComposer { return; } } - - if(!chkZerarTabela.isChecked()){ + + if (!chkZerarTabela.isChecked()) { try { - + if (chkTarifa.isChecked()) { tarifaOficialService.gerarAtualizarTarifa(listSelectedRutas, orgaoConcedenteId, lsEmpresaSelected); } - + boolean gerarTabelaZerada = !chkTarifa.isChecked(); - + if (chkTaxaEmbarque.isChecked()) { - tarifaOficialService.atualizarTaxaEmbarque(listSelectedRutas, orgaoConcedenteId,gerarTabelaZerada, lsEmpresaSelected); + tarifaOficialService.atualizarTaxaEmbarque(listSelectedRutas, orgaoConcedenteId, gerarTabelaZerada, lsEmpresaSelected); } if (chkSeguro.isChecked()) { tarifaOficialService.atualizarSeguro(listSelectedRutas, orgaoConcedenteId); } - + if (chkPedagio.isChecked()) { tarifaOficialService.atualizarPedagio(); } @@ -181,32 +189,32 @@ public class GenerarTarifaOrgaoController extends MyGenericForwardComposer { tarifaOficialService.aplicarArredondamentoTarifa(orgaoConcedenteId, chkArredondarTaxaEmbarque.isChecked()); long l = tarifaOficialService.obtenerCount(); - + Messagebox.show(Labels.getLabel("generarTarifaOrgaoController.MSG.suscribirOK", new Object[] { l }), Labels.getLabel("indexController.mniGenerarTarifaOrgao.label"), Messagebox.OK, Messagebox.INFORMATION); - } catch (BusinessException e) { - Messagebox.show(e.getLocalizedMessage(), - Labels.getLabel("indexController.mniGenerarTarifaOrgao.label"), - Messagebox.OK, Messagebox.EXCLAMATION); - } - }else{ - - try{ + } catch (BusinessException e) { + Messagebox.show(e.getLocalizedMessage(), + Labels.getLabel("indexController.mniGenerarTarifaOrgao.label"), + Messagebox.OK, Messagebox.EXCLAMATION); + } + } else { + + try { tarifaOficialService.gerarAtualizarTabelaZerada(listSelectedRutas, orgaoConcedenteId, lsEmpresaSelected); Messagebox.show(Labels.getLabel("generarTarifaOrgaoController.MSG.suscribirOK"), Labels.getLabel("indexController.mniGenerarTarifaOrgao.label"), Messagebox.OK, Messagebox.INFORMATION); - }catch (BusinessException e) { + } catch (BusinessException e) { Messagebox.show(e.getLocalizedMessage(), Labels.getLabel("indexController.mniGenerarTarifaOrgao.label"), Messagebox.OK, Messagebox.EXCLAMATION); } - + } - + } public List getListSelectedRutas() { @@ -216,20 +224,75 @@ public class GenerarTarifaOrgaoController extends MyGenericForwardComposer { public void setListSelectedRutas(List listSelectedRutas) { this.listSelectedRutas = listSelectedRutas; } - + public void onClick$btnAddRuta(Event ev) throws InterruptedException { - if(cmbRuta.getSelectedItem() != null){ - listSelectedRutas.add((Ruta)cmbRuta.getSelectedItem().getValue()); + if(esperar){ + cmbRuta.setSelectedItem(null); + return; + } + if (cmbRuta.getSelectedItem() != null) { + listSelectedRutas.add((Ruta) cmbRuta.getSelectedItem().getValue()); selectedRutasList.setData(listSelectedRutas); - lsEmpresaSelected.add(((Empresa)cmbEmpresa.getSelectedItem().getValue())); cmbRuta.setSelectedItem(null); } } - + public void onClick$btnRemoveRuta(Event ev) throws InterruptedException { Ruta ruta = (Ruta) selectedRutasList.getSelected(); listSelectedRutas.remove(ruta); selectedRutasList.setData(listSelectedRutas); } + public void onSelect$cmbOrgaoConcedente(Event ev) { + onSelectEmpresaOrgaoConcedente(); + } + + public void onSelect$cmbEmpresa(Event ev) throws InterruptedException { + onSelectEmpresaOrgaoConcedente(); + } + + public void onSelectEmpresaOrgaoConcedente() { + Constraint constraint = cmbEmpresa.getConstraint(); + cmbEmpresa.setConstraint(""); + Empresa empresaSelected = cmbEmpresa.getSelectedItem() == null ? null : (Empresa) cmbEmpresa.getSelectedItem().getValue(); + cmbEmpresa.setConstraint(constraint); + OrgaoConcedente orgaoSelected = cmbOrgaoConcedente.getSelectedItem() == null ? null : (OrgaoConcedente) cmbOrgaoConcedente.getSelectedItem().getValue(); + + esperar = true; + + lsRuta = rutaService.buscarRutasPorEmpresaOrgaoConcedente(empresaSelected, orgaoSelected); + + int indexToRemove = 0; + boolean achou = false; + List indexList = new ArrayList(); + + for (final Ruta ruta : listSelectedRutas) { + if (orgaoSelected == null || orgaoSelected.getOrgaoConcedenteId() == -1 || ruta.getOrgaoConcedente().equals(orgaoSelected)) { + try { + ruta.getLsRutaEmpresa(); + } catch (LazyInitializationException e) { + ruta.setLsRutaEmpresa(rutaEmpresaService.obtenerPorRuta(ruta)); + } + for (RutaEmpresa rutaEmpresa : ruta.getLsRutaEmpresa()) { + if (empresaSelected == null || rutaEmpresa.getEmpresa().equals(empresaSelected)) { + achou = true; + } + } + } + if (!achou) { + indexList.add(indexToRemove); + } + indexToRemove++; + achou = false; + } + + for (Integer i : indexList) { + Ruta ruta = listSelectedRutas.get(i); + listSelectedRutas.remove(ruta); + } + selectedRutasList.setData(listSelectedRutas); + cmbRuta.setSelectedItem(null); + esperar = false; + } + } diff --git a/src/java/db/migration/V20160802_1636__dropTarifaOficialUnica.sql b/src/java/db/migration/V20160802_1636__dropTarifaOficialUnica.sql new file mode 100644 index 000000000..43e402f72 --- /dev/null +++ b/src/java/db/migration/V20160802_1636__dropTarifaOficialUnica.sql @@ -0,0 +1,26 @@ +--drop constraint se existe +DECLARE +itemExists NUMBER; +BEGIN + itemExists := 0; + +SELECT COUNT(CONSTRAINT_NAME) INTO itemExists +FROM ALL_CONSTRAINTS +WHERE UPPER(CONSTRAINT_NAME) = UPPER('UNIQUE_TARIFA_OFICIAL'); + +IF itemExists > 0 THEN +EXECUTE IMMEDIATE 'ALTER TABLE TARIFA_OFICIAL DROP CONSTRAINT UNIQUE_TARIFA_OFICIAL'; +END IF; +END; + +DECLARE + COUNT_INDEXES INTEGER; +BEGIN + SELECT COUNT(*) INTO COUNT_INDEXES + FROM USER_INDEXES + WHERE INDEX_NAME = 'UNIQUE_TARIFA_OFICIAL'; + + IF COUNT_INDEXES > 0 THEN + EXECUTE IMMEDIATE 'DROP INDEX UNIQUE_TARIFA_OFICIAL'; + END IF; +END; \ No newline at end of file