diff --git a/pom.xml b/pom.xml index 755a97b47..9ed86277f 100644 --- a/pom.xml +++ b/pom.xml @@ -4,11 +4,11 @@ 4.0.0 br.com.rjconsultores ventaboletosadm - 1.160.3 + 1.161.0 war - 1.120.0 + 1.121.0 1.102.0 UTF-8 diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLegalizacaoMassiva.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLegalizacaoMassiva.jasper index c9114d028..84c6e574f 100644 Binary files a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLegalizacaoMassiva.jasper and b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLegalizacaoMassiva.jasper differ diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/configuracioneccomerciales/BusquedaVoucherController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/configuracioneccomerciales/BusquedaVoucherController.java index a4e3b879a..78e7ab1f7 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/configuracioneccomerciales/BusquedaVoucherController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/configuracioneccomerciales/BusquedaVoucherController.java @@ -1,6 +1,7 @@ package com.rjconsultores.ventaboletos.web.gui.controladores.configuracioneccomerciales; import java.util.ArrayList; +import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -12,10 +13,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import org.zkoss.util.resource.Labels; +import org.zkoss.zhtml.Filedownload; import org.zkoss.zhtml.Messagebox; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zul.Button; import org.zkoss.zul.Checkbox; import org.zkoss.zul.Combobox; import org.zkoss.zul.Datebox; @@ -25,7 +28,10 @@ import org.zkoss.zul.Textbox; import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Voucher; +import com.rjconsultores.ventaboletos.enums.SituacaoVoucher; import com.rjconsultores.ventaboletos.service.ParadaService; +import com.rjconsultores.ventaboletos.utilerias.DateUtil; +import com.rjconsultores.ventaboletos.vo.configuracioneccomerciales.VoucherVO; import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; import com.rjconsultores.ventaboletos.web.utilerias.paginacion.HibernateSearchObject; @@ -57,6 +63,7 @@ public class BusquedaVoucherController extends MyGenericForwardComposer { private Checkbox chkLegalizado; private Checkbox chkFaturado; private Checkbox chkCancelado; + private Button btnExportar; @Override public void doAfterCompose(Component comp) throws Exception { @@ -73,7 +80,7 @@ public class BusquedaVoucherController extends MyGenericForwardComposer { }); refreshLista(); - + btnExportar.setVisible(false); txtNumVoucher.focus(); } @@ -161,6 +168,7 @@ public class BusquedaVoucherController extends MyGenericForwardComposer { } }else { preencheComplemento(); + btnExportar.setVisible(true); } } @@ -171,6 +179,10 @@ public class BusquedaVoucherController extends MyGenericForwardComposer { public void onClick$btnRefresh(Event ev) { refreshLista(); } + + public void onClick$btnExportar(Event ev) { + exportarCvs(); + } public void onClick$btnNovo(Event ev) { verVoucher(new Voucher()); @@ -187,5 +199,23 @@ public class BusquedaVoucherController extends MyGenericForwardComposer { obj.setDescDestino( paradaService.obtenerID(obj.getDestinoId()).getDescparada() ); } } - } + } + + private void exportarCvs() { + String[] cabecalho = {"ID", "contrato", "validade", "origem", "destino", "valor licitado", "VALOR LEGALIZADO", "TRANSPORTADORA"}; + + StringBuilder resultado = new StringBuilder("\r\n"); + + resultado.append(String.join(";", cabecalho)); + for (Object item : voucherList.getListData()) { + Voucher obj = (Voucher)item; + if( obj.getSituacaoVoucher().equals(SituacaoVoucher.EMITIDO)) { + VoucherVO vo = new VoucherVO(obj); + resultado.append(vo.toCsv()); + } + } + + String data = DateUtil.getStringDate(Calendar.getInstance().getTime(), "ddMMyyyy_HHmm"); + Filedownload.save(resultado.toString(), "text/csv", "legalizacao_massiva"+data+".csv"); + } } diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/configuracioneccomerciales/LegalizacaoMassivaController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/configuracioneccomerciales/LegalizacaoMassivaController.java index 503eddacf..7a2d7f6e6 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/configuracioneccomerciales/LegalizacaoMassivaController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/configuracioneccomerciales/LegalizacaoMassivaController.java @@ -10,11 +10,13 @@ import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; +import org.zkoss.util.media.Media; import org.zkoss.util.resource.Labels; import org.zkoss.zhtml.Messagebox; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zk.ui.event.UploadEvent; import org.zkoss.zul.Button; import org.zkoss.zul.Combobox; import org.zkoss.zul.Comboitem; @@ -45,6 +47,7 @@ import lombok.Setter; @Scope("prototype") public class LegalizacaoMassivaController extends MyGenericForwardComposer { + private static final String ERROR = "MSG.Error"; private static Logger log = LogManager.getLogger(LegalizacaoMassivaController.class); private static final long serialVersionUID = 1L; private static final String TITULO = "legalizacaoMassivaController.window.title"; @@ -67,6 +70,7 @@ public class LegalizacaoMassivaController extends MyGenericForwardComposer { private Textbox txtNumContrato; private Textbox txtNit; private Textbox txtNome; + private Textbox txtArquivo; private Combobox cmbOrigem; private Combobox cmbDestino; private Button btnLegalizar; @@ -120,7 +124,7 @@ public class LegalizacaoMassivaController extends MyGenericForwardComposer { } catch (Exception ex) { log.error(ex.getMessage()); Messagebox.show( - Labels.getLabel("MSG.Error"), + Labels.getLabel(ERROR), Labels.getLabel(TITULO), Messagebox.OK, Messagebox.ERROR); } @@ -143,7 +147,7 @@ public class LegalizacaoMassivaController extends MyGenericForwardComposer { } catch (Exception ex) { log.error(ex.getMessage()); Messagebox.show( - Labels.getLabel("MSG.Error"), + Labels.getLabel(ERROR), Labels.getLabel(TITULO), Messagebox.OK, Messagebox.ERROR); } @@ -207,6 +211,14 @@ public class LegalizacaoMassivaController extends MyGenericForwardComposer { parametros.put("destino", dest.getDescparada()); filtro.append(ESPACO); } + + if(txtArquivo.getValue() != null ) { + filtro.setLength(0); + filtro.append(Labels.getLabel("label.importadoDe")); + filtro.append(ESPACO); + filtro.append(txtArquivo.getValue()); + filtro.append(ESPACO); + } parametros.put("FILTROS", filtro.toString()); @@ -260,6 +272,10 @@ public class LegalizacaoMassivaController extends MyGenericForwardComposer { origem, destino); + posLegalizacao(processamento); + } + + private void posLegalizacao(List processamento) { voucherList.setData(processamento); preencheComplemento(); pagingLegalizar.setVisible(true); @@ -287,5 +303,37 @@ public class LegalizacaoMassivaController extends MyGenericForwardComposer { } } } - } + } + + public void onUpload(UploadEvent event) throws InterruptedException { + try { + final List processamento; + + Media media = event.getMedia(); + if(media.getName().toLowerCase().endsWith(".csv")){ + processamento = voucherService.lerArquivo(media.getStringData()); + }else{ + throw new BusinessException("legalizacaoMassivaController.MSG.extensaoInvalida"); + } + + if (processamento !=null && !processamento.isEmpty()) { + txtArquivo.setText(media.getName()); + posLegalizacao(processamento); + + Messagebox.show("Arquivo Processado com sucesso", + Labels.getLabel(TITULO), + Messagebox.OK, Messagebox.INFORMATION); + } + } catch (BusinessException bex) { + Messagebox.show( + bex.getMessage(), + Labels.getLabel(TITULO), + Messagebox.OK, Messagebox.ERROR); + } catch (Exception ex) { + Messagebox.show( + Labels.getLabel(ERROR), + Labels.getLabel(TITULO), + Messagebox.OK, Messagebox.ERROR); + } + } } diff --git a/web/WEB-INF/i3-label_en.label b/web/WEB-INF/i3-label_en.label index 97bf5d8e4..d1c5636b8 100644 --- a/web/WEB-INF/i3-label_en.label +++ b/web/WEB-INF/i3-label_en.label @@ -7421,8 +7421,6 @@ estacionServiceImpl.msg.macDuplicado = Mac or IMEI already registered for anothe estacionServiceImpl.msg.macDuplicado.descricaoEstacao = Station Name: estacionServiceImpl.msg.macDuplicado.numeroCaixa = Box Number: estacionServiceImpl.msg.noChequeFolioPreimpresos = The company requested to configure a Fiscal Printer already has stock for the station. Operation cancelled. -expresoController.MSG.archivoGuardadoConExito = File saved succesfully. -expresoController.MSG.archivoNoSeleccionado = No file selected. expresoController.MSG.asuntoCorreoCotizacion = Quoted Express Request expresoController.MSG.cuerpoCorreoCotizacion = Dear {0}, the express request has been quoted, in the following link {1} you can accept the quote and make the payment. expresoController.MSG.emailNoEnviado = There's been a problem. Please check logs @@ -8294,6 +8292,7 @@ label.exigeExcedente = Requires Surplus in Travel Exchange label.grupoContrato = Contract Group label.id = ID label.identificacao = Identification +label.importadoDe = Imported from File: label.logradouro = Public place label.manipulaBonus = Manage Bonuses label.mensagem = Message @@ -8398,9 +8397,13 @@ lb.sigla = Acronym lb.todas = ALL lb.uf = UF lbEquivalencia.value = Equivalence +legalizacaoMassivaController.MSG.arquivoSemVoucher = No valid voucher on file legalizacaoMassivaController.MSG.camposObrigatorios = It is necessary to inform Nit legalizacaoMassivaController.MSG.contratoDiferente = Another Contract legalizacaoMassivaController.MSG.destinoDiferente = Different Destiny +legalizacaoMassivaController.MSG.extensaoInvalida = Only files in CSV format are accepted. +legalizacaoMassivaController.MSG.faltaTransportadora = Missed Carrier +legalizacaoMassivaController.MSG.faltaValor = Missed Legalized Value legalizacaoMassivaController.MSG.nitNaoEncontrado = Carrier not found with this nit legalizacaoMassivaController.MSG.origemDiferente = Different origin legalizacaoMassivaController.MSG.statusDiferente = Status not ISSUED diff --git a/web/WEB-INF/i3-label_es_CO.label b/web/WEB-INF/i3-label_es_CO.label index 69028cc17..dbd3c25e9 100644 --- a/web/WEB-INF/i3-label_es_CO.label +++ b/web/WEB-INF/i3-label_es_CO.label @@ -7425,8 +7425,6 @@ estacionServiceImpl.msg.macDuplicado = MAC o IMEI ya dado de alta para otra esta estacionServiceImpl.msg.macDuplicado.descricaoEstacao = Nome Estação: estacionServiceImpl.msg.macDuplicado.numeroCaixa = Numero Caixa: estacionServiceImpl.msg.noChequeFolioPreimpresos = Hay de stock para la estación en la empresa solicitada para establecer la impresora fiscal. Operación cancelada. -expresoController.MSG.archivoGuardadoConExito = Archivo guardado con éxito. -expresoController.MSG.archivoNoSeleccionado = Archivo no seleccionado. expresoController.MSG.asuntoCorreoCotizacion = Solicitud de Expreso Cotizada expresoController.MSG.cuerpoCorreoCotizacion = Estimado/a {0}, la solicitud de expreso ha sido cotizada, en el siguiente link {1} podrá aceptar la cotización y realizar el pago. expresoController.MSG.emailNoEnviado = Ocurrió un problema. Favor de revisar logs @@ -8298,6 +8296,7 @@ label.exigeExcedente = Exige Excedente en cambio de viaje label.grupoContrato = Grupo de Contrato label.id = ID label.identificacao = Identtificación +label.importadoDe = Importado del archivo: label.logradouro = Dirección label.manipulaBonus = Maneja Bono label.mensagem = Mensaje @@ -8402,9 +8401,13 @@ lb.sigla = Sigla lb.todas = TODAS lb.uf = Cve Estado lbEquivalencia.value = Equivalencia +legalizacaoMassivaController.MSG.arquivoSemVoucher = No hay bono válido registrados legalizacaoMassivaController.MSG.camposObrigatorios = Es necesario informar: Número Inicial, Número Final, Valor Legalizado y Transportista legalizacaoMassivaController.MSG.contratoDiferente = Otro Contrato legalizacaoMassivaController.MSG.destinoDiferente = Destino diferente +legalizacaoMassivaController.MSG.extensaoInvalida = Sólo se aceptan archivos en formato CSV. +legalizacaoMassivaController.MSG.faltaTransportadora = Falta Transportadora +legalizacaoMassivaController.MSG.faltaValor = Falta Valor Legalizado legalizacaoMassivaController.MSG.nitNaoEncontrado = Transportadora no encontrado con este nit legalizacaoMassivaController.MSG.origemDiferente = origen diferente legalizacaoMassivaController.MSG.statusDiferente = Situación no EMITIDA @@ -8586,7 +8589,7 @@ movimentacionBilhetesPuntoVentaController.MSG.suscribirOK = Movimentación se gu movimentacionBilhetesPuntoVentaController.window.title = Movimentación de estoque - agencia msg.constraint.cajaObligatorio = Caja obligatoria mudancaMassivaContrato.MSG.arquivoSemTarifa = No hay tarifas válidas registradas -mudancaMassivaContrato.MSG.camposObrigatorios = Es necesario informar el grupo de contratos +mudancaMassivaContrato.MSG.camposObrigatorios = Es necesario informar el contrato o grupo de contratos mudancaMassivaContrato.MSG.contratoGrupoDiferente = Tarifa con Grupo diferente al indicado: mudancaMassivaContrato.MSG.dbErro = Se produjo un error en la base de datos: mudancaMassivaContrato.MSG.extensaoInvalida = Sólo se aceptan archivos en formato CSV. diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label index a6af0add7..f526dd8c2 100644 --- a/web/WEB-INF/i3-label_es_MX.label +++ b/web/WEB-INF/i3-label_es_MX.label @@ -7425,8 +7425,6 @@ estacionServiceImpl.msg.macDuplicado = MAC o IMEI ya dado de alta para otra esta estacionServiceImpl.msg.macDuplicado.descricaoEstacao = Nome Estação: estacionServiceImpl.msg.macDuplicado.numeroCaixa = Numero Caixa: estacionServiceImpl.msg.noChequeFolioPreimpresos = Hay de stock para la estación en la empresa solicitada para establecer la impresora fiscal. Operación cancelada. -expresoController.MSG.archivoGuardadoConExito = Archivo guardado con éxito. -expresoController.MSG.archivoNoSeleccionado = Archivo no seleccionado. expresoController.MSG.asuntoCorreoCotizacion = Solicitud de Expreso Cotizada expresoController.MSG.cuerpoCorreoCotizacion = Estimado/a {0}, la solicitud de expreso ha sido cotizada, en el siguiente link {1} podrá aceptar la cotización y realizar el pago. expresoController.MSG.emailNoEnviado = Ocurrió un problema. Favor de revisar logs @@ -8300,6 +8298,7 @@ label.exigeExcedente = Exige Excedente en cambio de viaje label.grupoContrato = Grupo de Contrato label.id = ID label.identificacao = Identtificación +label.importadoDe = Importado del archivo: label.logradouro = Dirección label.manipulaBonus = Maneja Bono label.mensagem = Mensaje @@ -8404,9 +8403,13 @@ lb.sigla = Sigla lb.todas = TODAS lb.uf = Cve Estado lbEquivalencia.value = Equivalencia +legalizacaoMassivaController.MSG.arquivoSemVoucher = No hay bono válido registrados legalizacaoMassivaController.MSG.camposObrigatorios = Es necesario informar: Número Inicial, Número Final, Valor Legalizado y Transportista legalizacaoMassivaController.MSG.contratoDiferente = Otro Contrato legalizacaoMassivaController.MSG.destinoDiferente = Destino diferente +legalizacaoMassivaController.MSG.extensaoInvalida = Sólo se aceptan archivos en formato CSV. +legalizacaoMassivaController.MSG.faltaTransportadora = Falta Transportadora +legalizacaoMassivaController.MSG.faltaValor = Falta Valor Legalizado legalizacaoMassivaController.MSG.nitNaoEncontrado = Transportadora no encontrado con este nit legalizacaoMassivaController.MSG.origemDiferente = origen diferente legalizacaoMassivaController.MSG.statusDiferente = Situación no EMITIDA diff --git a/web/WEB-INF/i3-label_fr_FR.label b/web/WEB-INF/i3-label_fr_FR.label index 0b70a70ab..515d42c22 100644 --- a/web/WEB-INF/i3-label_fr_FR.label +++ b/web/WEB-INF/i3-label_fr_FR.label @@ -7420,8 +7420,6 @@ estacionServiceImpl.msg.macDuplicado = Mac ou IMEI déjà enregistré pour une a estacionServiceImpl.msg.macDuplicado.descricaoEstacao = Nom de la station : estacionServiceImpl.msg.macDuplicado.numeroCaixa = Numéro de boîte : estacionServiceImpl.msg.noChequeFolioPreimpresos = L'entreprise demandée pour configurer une imprimante fiscale dispose déjà d'un stock pour la station. Opération annulée. -expresoController.MSG.archivoGuardadoConExito = Fichier enregistré avec succès. -expresoController.MSG.archivoNoSeleccionado = Archivo nou sélectionnée. expresoController.MSG.asuntoCorreoCotizacion = Demande express citée expresoController.MSG.cuerpoCorreoCotizacion = Cher {0}, la demande expresse a été citée, dans le lien suivant {1} vous pouvez accepter le devis et effectuer le paiement. expresoController.MSG.emailNoEnviado = Il y a eu un problème. Veuillez vérifier les journaux @@ -8293,6 +8291,7 @@ label.grupoContrato = Groupe contractuel # Labels Default label.id = ID label.identificacao = Identification +label.importadoDe = Importé depuis le fichier : label.logradouro = Lieu public label.manipulaBonus = Gérer les bonus label.mensagem = Message @@ -8397,9 +8396,13 @@ lb.sigla = Acronyme lb.todas = TOUS lb.uf = UF lbEquivalencia.value = Equivalence +legalizacaoMassivaController.MSG.arquivoSemVoucher = Aucun Bon valide dans le dossier legalizacaoMassivaController.MSG.camposObrigatorios = Il est nécessaire d'informer Nit legalizacaoMassivaController.MSG.contratoDiferente = Autre Contrat legalizacaoMassivaController.MSG.destinoDiferente = Destination différente +legalizacaoMassivaController.MSG.extensaoInvalida = Seuls les fichiers au format CSV sont acceptés. +legalizacaoMassivaController.MSG.faltaTransportadora = Manque Transporteur +legalizacaoMassivaController.MSG.faltaValor = Manque Valeur légalisée legalizacaoMassivaController.MSG.nitNaoEncontrado = Transporteur introuvable avec ce nit legalizacaoMassivaController.MSG.origemDiferente = Origine différente legalizacaoMassivaController.MSG.statusDiferente = Non ÉMIS Situation diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index 10b945d84..2ce7cccb3 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -7419,8 +7419,6 @@ estacionServiceImpl.msg.macDuplicado = Mac ou IMEI já cadastrado para outra est estacionServiceImpl.msg.macDuplicado.descricaoEstacao = Nome Estação: estacionServiceImpl.msg.macDuplicado.numeroCaixa = Número Caixa: estacionServiceImpl.msg.noChequeFolioPreimpresos = A empresa solicitada para configuração de Impressora Fiscal já possui estoque para a estação. Operação cancelada. -expresoController.MSG.archivoGuardadoConExito = Arquivo salvo com sucesso. -expresoController.MSG.archivoNoSeleccionado = Archivo no selecionado. expresoController.MSG.errorArchivo = Arquivo inválido ou nulo expresosController.lbl.asignarBus = Atribuir ônibus expresosController.lbl.btnCargarCumplimientoServicio = Anexar Documento @@ -8285,6 +8283,7 @@ label.exigeExcedente = Exige Excedente na Troca de viagem label.grupoContrato = Grupo de Contrato label.id = ID label.identificacao = Identificação +label.importadoDe = Importado do Arquivo: label.logradouro = Logradouro label.manipulaBonus = Gerencia Bônus label.mensagem = Mensagem @@ -8389,9 +8388,13 @@ lb.sigla = Sigla lb.todas = TODAS lb.uf = UF lbEquivalencia.value = Equivalencia +legalizacaoMassivaController.MSG.arquivoSemVoucher = Sem Voucher válido no arquivo legalizacaoMassivaController.MSG.camposObrigatorios = É necessário informar os campos: Número inicial, Número Final, Valor Legalizado e Transportadora legalizacaoMassivaController.MSG.contratoDiferente = Outro Contrato legalizacaoMassivaController.MSG.destinoDiferente = Destino diferente +legalizacaoMassivaController.MSG.extensaoInvalida = Somente arquivos no formato CSV são aceitos. +legalizacaoMassivaController.MSG.faltaTransportadora = Falta Transportadora +legalizacaoMassivaController.MSG.faltaValor = Falta Valor Legalizado legalizacaoMassivaController.MSG.nitNaoEncontrado = Transportadora não encontrada com esse nit legalizacaoMassivaController.MSG.origemDiferente = Origem diferente legalizacaoMassivaController.MSG.statusDiferente = Situação não EMITIDO diff --git a/web/gui/configuraciones_comerciales/negcorporativos/busquedaTransportadora.zul b/web/gui/configuraciones_comerciales/negcorporativos/busquedaTransportadora.zul index cb360b00d..2d92487e4 100644 --- a/web/gui/configuraciones_comerciales/negcorporativos/busquedaTransportadora.zul +++ b/web/gui/configuraciones_comerciales/negcorporativos/busquedaTransportadora.zul @@ -59,6 +59,9 @@ use="com.rjconsultores.ventaboletos.web.utilerias.MyListbox" multiple="false"> + diff --git a/web/gui/configuraciones_comerciales/negcorporativos/busquedaVoucher.zul b/web/gui/configuraciones_comerciales/negcorporativos/busquedaVoucher.zul index a19f9d6bf..e0c03e404 100644 --- a/web/gui/configuraciones_comerciales/negcorporativos/busquedaVoucher.zul +++ b/web/gui/configuraciones_comerciales/negcorporativos/busquedaVoucher.zul @@ -81,6 +81,8 @@