Merge pull request 'Legalizacao Massiva por arquivo feat #AL-5054' (!799) from AL-5054 into master

Reviewed-on: adm/VentaBoletosAdm#799
Reviewed-by: Valdir Cordeiro <valdir.cordeiro@totvs.com.br>
master 1.161.0
fabio 2024-10-19 15:51:22 +00:00
commit fdf367fc9d
12 changed files with 130 additions and 27 deletions

View File

@ -4,11 +4,11 @@
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.rjconsultores</groupId>
<artifactId>ventaboletosadm</artifactId>
<version>1.160.3</version>
<version>1.161.0</version>
<packaging>war</packaging>
<properties>
<modelWeb.version>1.120.0</modelWeb.version>
<modelWeb.version>1.121.0</modelWeb.version>
<flyway.version>1.102.0</flyway.version>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

View File

@ -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");
}
}

View File

@ -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<VoucherVO> 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<VoucherVO> 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);
}
}
}

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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
@ -7435,8 +7433,8 @@ expresosController.lbl.btnVerPlanilla = Ver Planilla
expresosController.lbl.cargarFluec = Chargement FLUEC
expresosController.lbl.cargarPlaca = Chargement Placa
expresosController.lbl.estadoAceptado = Accepté
expresosController.lbl.estadoEnviado = Envoyé
expresosController.lbl.estadoCumplido = Rempli
expresosController.lbl.estadoEnviado = Envoyé
expresosController.lbl.estadoRechazado = Refusé
expresosController.lbl.estadoSolicitado = Requis
expresosController.lbl.idaVuelta = En allant
@ -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

View File

@ -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

View File

@ -59,6 +59,9 @@
use="com.rjconsultores.ventaboletos.web.utilerias.MyListbox"
multiple="false">
<listhead sizable="true">
<listheader id="lhId" image="/gui/img/create_doc.gif"
label="${c:l('label.id')}" width="20%"
sort="auto(transportadoraId)" />
<listheader id="lhNit" image="/gui/img/create_doc.gif"
label="${c:l('label.nit')}" width="20%"
sort="auto(nit)" />

View File

@ -81,6 +81,8 @@
<toolbar>
<button id="btnPesquisa" image="/gui/img/find.png"
label="${c:l('label.btnPesquisar')}" />
<button id="btnExportar" image="/gui/img/excel.png"
label="${c:l('label.btnExportar')}" />
</toolbar>
<paging id="pagingVoucher" pageSize="20" />

View File

@ -64,22 +64,27 @@
<combobox id="cmbDestino" width="95%"
autodrop="false" mold="rounded" buttonVisible="true"
use="com.rjconsultores.ventaboletos.web.utilerias.MyComboboxParada" />
</row>
<textbox id="txtArquivo" visible="false" />
</row>
<row spans="4" align="center">
<div>
<button id="btnLegalizar" height="20"
image="/gui/img/ok.png" width="120px"
<button id="btnLegalizar"
height="20" width="120px"
image="/gui/img/ok.png"
label="${c:l('label.btnLegalizar')}" />
<button id="btnImprimir" height="20" visible="false"
image="/gui/img/pdf.png" width="120px"
label="${c:l('label.btnImprimir')}" />
<button id="btnImprimir"
height="20" width="120px" visible="false"
image="/gui/img/pdf.png"
label="${c:l('label.btnImprimir')}" />
<fileupload id="fileUpload"
label="${c:l('label.selecionarArquivo')}"
onUpload="winLegalizar$composer.onUpload(event)" />
</div>
</row>
</rows>
</grid>
<paging id="pagingLegalizar" pageSize="20" visible="false"/>
<listbox id="voucherList" visible="false"