fixes bug#20900
dev:alberto qua:wally git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@112043 d1611594-4594-4d17-8e1d-87c2c4800839master
parent
7a8c4d22c2
commit
0ec3c62a5f
|
@ -0,0 +1,126 @@
|
||||||
|
package com.rjconsultores.ventaboletos.web.utilerias.api;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import javax.xml.bind.DatatypeConverter;
|
||||||
|
|
||||||
|
import org.apache.http.HttpResponse;
|
||||||
|
import org.apache.http.auth.UsernamePasswordCredentials;
|
||||||
|
import org.apache.http.client.HttpClient;
|
||||||
|
import org.apache.http.client.methods.HttpGet;
|
||||||
|
import org.apache.http.impl.auth.BasicScheme;
|
||||||
|
import org.apache.http.impl.client.DefaultHttpClient;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
import com.nimbusds.jose.JOSEException;
|
||||||
|
import com.nimbusds.jose.JWSAlgorithm;
|
||||||
|
import com.nimbusds.jose.JWSHeader;
|
||||||
|
import com.nimbusds.jose.JWSObject;
|
||||||
|
import com.nimbusds.jose.Payload;
|
||||||
|
import com.nimbusds.jose.crypto.MACSigner;
|
||||||
|
import com.nimbusds.jwt.JWTClaimsSet;
|
||||||
|
|
||||||
|
public class ApiCallRunnable implements Runnable {
|
||||||
|
|
||||||
|
private static Logger log = Logger.getLogger(ApiCallRunnable.class);
|
||||||
|
private static final int minutesExpireToken = 10;
|
||||||
|
private static final String secret = "#KO&Fm4_k.sU9M8`6Mx'F\\\"H:*Qxu]6F4r,)JmZ2Jwafd)I.2[RET'1:)VQ6mG9,";
|
||||||
|
|
||||||
|
private final String url;
|
||||||
|
private final String tenant;
|
||||||
|
private String retorno;
|
||||||
|
private String urlBase;
|
||||||
|
|
||||||
|
public String getUrl() {
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTenant() {
|
||||||
|
return tenant;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRetorno() {
|
||||||
|
return retorno;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRetorno(String retorno) {
|
||||||
|
this.retorno = retorno;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUrlBase() {
|
||||||
|
return urlBase;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUrlBase(String urlBase) {
|
||||||
|
this.urlBase = urlBase;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ApiCallRunnable(String url, String tenant, String urlOriginal) {
|
||||||
|
this.url = url;
|
||||||
|
this.tenant = tenant;
|
||||||
|
this.urlBase = urlOriginal;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
HttpClient client = new DefaultHttpClient();
|
||||||
|
HttpGet request = new HttpGet(url);
|
||||||
|
UsernamePasswordCredentials creds = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
creds = new UsernamePasswordCredentials("internal", getToken());
|
||||||
|
request.addHeader(new BasicScheme().authenticate(creds, request));
|
||||||
|
|
||||||
|
if (tenant != null) {
|
||||||
|
request.addHeader("x-tenant-id", tenant);
|
||||||
|
}
|
||||||
|
|
||||||
|
HttpResponse response = client.execute(request);
|
||||||
|
if (response != null && response.getStatusLine() != null) {
|
||||||
|
log.info(String.format(":: Response Status Code %d :: Headers = %s", response.getStatusLine().getStatusCode(),Arrays.toString(response.getAllHeaders())));
|
||||||
|
}
|
||||||
|
|
||||||
|
Integer codigoRetorno = (response != null && response.getStatusLine() != null) ? response.getStatusLine().getStatusCode() : null;
|
||||||
|
|
||||||
|
retorno = montarMensagemRetorno(tenant, urlBase, codigoRetorno, null);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
retorno = montarMensagemRetorno(tenant, urlBase, null, e.getMessage());
|
||||||
|
log.error("Ocorreu um erro ao executar a requisição de limpar cache de localidade da API", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private String montarMensagemRetorno(String tenant, String url, Integer codigoRetorno, String mensagemErro) {
|
||||||
|
|
||||||
|
StringBuilder mensagemRetorno = new StringBuilder();
|
||||||
|
mensagemRetorno.append("ULR -> ").append(url).append("\n");
|
||||||
|
mensagemRetorno.append("tenant -> ").append(tenant).append("\n");
|
||||||
|
if (mensagemErro == null) {
|
||||||
|
mensagemRetorno.append("Resposta -> ").append((codigoRetorno != null && codigoRetorno.equals(200)) ? "Solicitação de limpeza de cache executada com sucesso, código " + codigoRetorno : "Erro ao enviar solicitação, código " + codigoRetorno);
|
||||||
|
} else {
|
||||||
|
mensagemRetorno.append("Resposta -> ").append(mensagemErro);
|
||||||
|
}
|
||||||
|
|
||||||
|
return mensagemRetorno.toString();
|
||||||
|
}
|
||||||
|
private String getToken() throws JOSEException {
|
||||||
|
long ttlMillis = minutesExpireToken * 60000;
|
||||||
|
long nowMillis = System.currentTimeMillis();
|
||||||
|
long expMillis = nowMillis + ttlMillis;
|
||||||
|
|
||||||
|
JWTClaimsSet claims = new JWTClaimsSet.Builder()
|
||||||
|
.claim("sub", new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new Date()))
|
||||||
|
.claim("userId", "adm")
|
||||||
|
.claim("role", "ROLE_TOKEN")
|
||||||
|
.claim("exp", expMillis)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
JWSObject jwsObject = new JWSObject(new JWSHeader(JWSAlgorithm.HS256),
|
||||||
|
new Payload(claims.toJSONObject()));
|
||||||
|
|
||||||
|
jwsObject.sign(new MACSigner(DatatypeConverter.parseBase64Binary(secret)));
|
||||||
|
|
||||||
|
return jwsObject.serialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,99 @@
|
||||||
|
package com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.zkoss.util.resource.Labels;
|
||||||
|
import org.zkoss.zk.ui.util.Clients;
|
||||||
|
import org.zkoss.zul.Messagebox;
|
||||||
|
|
||||||
|
import com.rjconsultores.ventaboletos.service.ConstanteService;
|
||||||
|
import com.rjconsultores.ventaboletos.web.utilerias.api.ApiCallRunnable;
|
||||||
|
import com.rjconsultores.ventaboletos.web.utilerias.menu.DefaultItemMenuSistema;
|
||||||
|
import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext;
|
||||||
|
|
||||||
|
public class ItemMenuLimparCacheEmbarcadaAPI extends DefaultItemMenuSistema {
|
||||||
|
private static Logger log = Logger.getLogger(ItemMenuLimparCacheEmbarcadaAPI.class);
|
||||||
|
|
||||||
|
|
||||||
|
public ItemMenuLimparCacheEmbarcadaAPI() {
|
||||||
|
super("indexController.mniLimparCacheEmbarcadaAPI.label");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getClaveMenu() {
|
||||||
|
return "COM.RJCONSULTORES.ADMINISTRACION.GUI.SEGURIDAD.MENU.RECARREGARCACHEEMBARCADASINCRONIZACAOAPI";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void ejecutar() {
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
int resp = Messagebox.show(
|
||||||
|
Labels.getLabel("limparCacheEmbarcadaAPI.message.pergunta"),
|
||||||
|
Labels.getLabel("limparCacheEmbarcadaAPI.title"), Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);
|
||||||
|
|
||||||
|
if (resp == Messagebox.YES) {
|
||||||
|
|
||||||
|
String[] urls = getURLSAPI();
|
||||||
|
|
||||||
|
if (urls == null || urls.length == 0) {
|
||||||
|
Clients.alert(org.zkoss.util.resource.Labels.getLabel("limparCacheEmbarcadaAPI.message.naoconfigurado"),
|
||||||
|
org.zkoss.util.resource.Labels.getLabel("limparCacheEmbarcadaAPI.title"), Messagebox.INFORMATION);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (String url : urls) {
|
||||||
|
|
||||||
|
if (StringUtils.isBlank(url) || url.contains("|")) {
|
||||||
|
Clients.alert(org.zkoss.util.resource.Labels.getLabel("limparCacheEmbarcadaAPI.message.naoconfigurado"),
|
||||||
|
org.zkoss.util.resource.Labels.getLabel("limparCacheEmbarcadaAPI.title"), Messagebox.INFORMATION);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String tenant = StringUtils.substringBetween(url, "[", "]");
|
||||||
|
if (tenant != null) {
|
||||||
|
url = url.replaceAll("\\[.*?\\]", "");
|
||||||
|
}
|
||||||
|
String urlBase = url;
|
||||||
|
url = montarUrlRequest(url);
|
||||||
|
|
||||||
|
ApiCallRunnable cache = new ApiCallRunnable(url, tenant, urlBase);
|
||||||
|
Thread thread = new Thread(cache);
|
||||||
|
thread.start();
|
||||||
|
thread.join();
|
||||||
|
|
||||||
|
Clients.alert(cache.getRetorno(), org.zkoss.util.resource.Labels.getLabel("limparCacheEmbarcadaAPI.title"), Messagebox.INFORMATION);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
Clients.alert(e.getMessage(),
|
||||||
|
org.zkoss.util.resource.Labels.getLabel("limparCacheEmbarcadaAPI.title"), Messagebox.ERROR);
|
||||||
|
log.error(e.getMessage(), e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private String montarUrlRequest(String url) {
|
||||||
|
|
||||||
|
url = url.toLowerCase();
|
||||||
|
|
||||||
|
if (!url.endsWith("/")) {
|
||||||
|
url += "/";
|
||||||
|
}
|
||||||
|
|
||||||
|
return url.concat("embarcadasync/excluirCacheSincronizacaoTramos");
|
||||||
|
}
|
||||||
|
|
||||||
|
private String[] getURLSAPI() {
|
||||||
|
ApplicationContext appContext = AppContext.getApplicationContext();
|
||||||
|
ConstanteService constanteService = (ConstanteService) appContext.getBean("constanteService");
|
||||||
|
String constante = constanteService.buscarURLAPI();
|
||||||
|
|
||||||
|
return constante == null ? null : constante.split("\\|");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,39 +1,20 @@
|
||||||
package com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad;
|
package com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
import javax.xml.bind.DatatypeConverter;
|
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.http.HttpResponse;
|
|
||||||
import org.apache.http.auth.UsernamePasswordCredentials;
|
|
||||||
import org.apache.http.client.HttpClient;
|
|
||||||
import org.apache.http.client.methods.HttpGet;
|
|
||||||
import org.apache.http.impl.auth.BasicScheme;
|
|
||||||
import org.apache.http.impl.client.DefaultHttpClient;
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.zkoss.util.resource.Labels;
|
import org.zkoss.util.resource.Labels;
|
||||||
import org.zkoss.zk.ui.util.Clients;
|
import org.zkoss.zk.ui.util.Clients;
|
||||||
import org.zkoss.zul.Messagebox;
|
import org.zkoss.zul.Messagebox;
|
||||||
|
|
||||||
import com.nimbusds.jose.JOSEException;
|
|
||||||
import com.nimbusds.jose.JWSAlgorithm;
|
|
||||||
import com.nimbusds.jose.JWSHeader;
|
|
||||||
import com.nimbusds.jose.JWSObject;
|
|
||||||
import com.nimbusds.jose.Payload;
|
|
||||||
import com.nimbusds.jose.crypto.MACSigner;
|
|
||||||
import com.nimbusds.jwt.JWTClaimsSet;
|
|
||||||
import com.rjconsultores.ventaboletos.service.ConstanteService;
|
import com.rjconsultores.ventaboletos.service.ConstanteService;
|
||||||
|
import com.rjconsultores.ventaboletos.web.utilerias.api.ApiCallRunnable;
|
||||||
import com.rjconsultores.ventaboletos.web.utilerias.menu.DefaultItemMenuSistema;
|
import com.rjconsultores.ventaboletos.web.utilerias.menu.DefaultItemMenuSistema;
|
||||||
import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext;
|
import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext;
|
||||||
|
|
||||||
public class ItemMenuLimparCacheLocalidadesAPI extends DefaultItemMenuSistema {
|
public class ItemMenuLimparCacheLocalidadesAPI extends DefaultItemMenuSistema {
|
||||||
private static Logger log = Logger.getLogger(ItemMenuLimparCacheLocalidadesAPI.class);
|
private static Logger log = Logger.getLogger(ItemMenuLimparCacheLocalidadesAPI.class);
|
||||||
|
|
||||||
private static final String secret = "#KO&Fm4_k.sU9M8`6Mx'F\\\"H:*Qxu]6F4r,)JmZ2Jwafd)I.2[RET'1:)VQ6mG9,";
|
|
||||||
private static final int minutesExpireToken = 10;
|
|
||||||
|
|
||||||
public ItemMenuLimparCacheLocalidadesAPI() {
|
public ItemMenuLimparCacheLocalidadesAPI() {
|
||||||
super("indexController.mniLimparCacheLocalidadesAPI.label");
|
super("indexController.mniLimparCacheLocalidadesAPI.label");
|
||||||
|
@ -75,10 +56,10 @@ public class ItemMenuLimparCacheLocalidadesAPI extends DefaultItemMenuSistema {
|
||||||
if (tenant != null) {
|
if (tenant != null) {
|
||||||
url = url.replaceAll("\\[.*?\\]", "");
|
url = url.replaceAll("\\[.*?\\]", "");
|
||||||
}
|
}
|
||||||
String urlOriginal = url;
|
String urlBase = url;
|
||||||
url = montarUrlRequest(url);
|
url = montarUrlRequest(url);
|
||||||
|
|
||||||
ThreadCache cache = new ThreadCache(url, tenant, urlOriginal);
|
ApiCallRunnable cache = new ApiCallRunnable(url, tenant, urlBase);
|
||||||
Thread thread = new Thread(cache);
|
Thread thread = new Thread(cache);
|
||||||
thread.start();
|
thread.start();
|
||||||
thread.join();
|
thread.join();
|
||||||
|
@ -115,104 +96,4 @@ public class ItemMenuLimparCacheLocalidadesAPI extends DefaultItemMenuSistema {
|
||||||
return constante == null ? null : constante.split("\\|");
|
return constante == null ? null : constante.split("\\|");
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getToken() throws JOSEException {
|
|
||||||
long ttlMillis = minutesExpireToken * 60000;
|
|
||||||
long nowMillis = System.currentTimeMillis();
|
|
||||||
long expMillis = nowMillis + ttlMillis;
|
|
||||||
|
|
||||||
JWTClaimsSet claims = new JWTClaimsSet.Builder()
|
|
||||||
.claim("sub", new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new Date()))
|
|
||||||
.claim("userId", "adm")
|
|
||||||
.claim("role", "ROLE_TOKEN")
|
|
||||||
.claim("exp", expMillis)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
JWSObject jwsObject = new JWSObject(new JWSHeader(JWSAlgorithm.HS256),
|
|
||||||
new Payload(claims.toJSONObject()));
|
|
||||||
|
|
||||||
jwsObject.sign(new MACSigner(DatatypeConverter.parseBase64Binary(secret)));
|
|
||||||
|
|
||||||
return jwsObject.serialize();
|
|
||||||
}
|
|
||||||
|
|
||||||
public class ThreadCache implements Runnable {
|
|
||||||
|
|
||||||
private final String url;
|
|
||||||
private final String tenant;
|
|
||||||
private String retorno;
|
|
||||||
private String urlOriginal;
|
|
||||||
|
|
||||||
public String getUrl() {
|
|
||||||
return url;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTenant() {
|
|
||||||
return tenant;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRetorno() {
|
|
||||||
return retorno;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRetorno(String retorno) {
|
|
||||||
this.retorno = retorno;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getUrlOriginal() {
|
|
||||||
return urlOriginal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUrlOriginal(String urlOriginal) {
|
|
||||||
this.urlOriginal = urlOriginal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ThreadCache(String url, String tenant, String urlOriginal) {
|
|
||||||
this.url = url;
|
|
||||||
this.tenant = tenant;
|
|
||||||
this.urlOriginal = urlOriginal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void run() {
|
|
||||||
HttpClient client = new DefaultHttpClient();
|
|
||||||
HttpGet request = new HttpGet(url);
|
|
||||||
UsernamePasswordCredentials creds = null;
|
|
||||||
|
|
||||||
try {
|
|
||||||
creds = new UsernamePasswordCredentials("internal", getToken());
|
|
||||||
request.addHeader(new BasicScheme().authenticate(creds, request));
|
|
||||||
|
|
||||||
if (tenant != null) {
|
|
||||||
request.addHeader("x-tenant-id", tenant);
|
|
||||||
}
|
|
||||||
|
|
||||||
HttpResponse response = client.execute(request);
|
|
||||||
if (response != null && response.getStatusLine() != null) {
|
|
||||||
log.info(String.format(":: Response Status Code %d ::", response.getStatusLine().getStatusCode()));
|
|
||||||
}
|
|
||||||
|
|
||||||
Integer codigoRetorno = (response != null && response.getStatusLine() != null) ? response.getStatusLine().getStatusCode() : null;
|
|
||||||
|
|
||||||
retorno = montarMensagemRetorno(tenant, urlOriginal, codigoRetorno, null);
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
retorno = montarMensagemRetorno(tenant, urlOriginal, null, e.getMessage());
|
|
||||||
log.error("Ocorreu um erro ao executar a requisição de limpar cache de localidade da API", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private String montarMensagemRetorno(String tenant, String url, Integer codigoRetorno, String mensagemErro) {
|
|
||||||
|
|
||||||
StringBuilder mensagemRetorno = new StringBuilder();
|
|
||||||
mensagemRetorno.append("ULR -> ").append(url).append("\n");
|
|
||||||
mensagemRetorno.append("tenant -> ").append(tenant).append("\n");
|
|
||||||
if (mensagemErro == null) {
|
|
||||||
mensagemRetorno.append("Resposta -> ").append((codigoRetorno != null && codigoRetorno.equals(200)) ? "Solicitação de limpeza de cache executada com sucesso, código " + codigoRetorno : "Erro ao enviar solicitação, código " + codigoRetorno);
|
|
||||||
} else {
|
|
||||||
mensagemRetorno.append("Resposta -> ").append(mensagemErro);
|
|
||||||
}
|
|
||||||
|
|
||||||
return mensagemRetorno.toString();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
package com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad;
|
||||||
|
|
||||||
|
import com.rjconsultores.ventaboletos.web.utilerias.menu.DefaultItemMenuSistema;
|
||||||
|
|
||||||
|
public class MenuAPI extends DefaultItemMenuSistema {
|
||||||
|
|
||||||
|
public MenuAPI() {
|
||||||
|
super("indexController.mniAPI.label");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getClaveMenu() {
|
||||||
|
return "COM.RJCONSULTORES.ADMINISTRACION.GUI.SEGURIDAD.MENU.API";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -304,7 +304,9 @@ seguridad.painelBpe=com.rjconsultores.ventaboletos.web.utilerias.menu.item.segur
|
||||||
seguridad.contingencia=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuContingencia
|
seguridad.contingencia=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuContingencia
|
||||||
seguridad.reenvioBpe=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuReenvioBPe
|
seguridad.reenvioBpe=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuReenvioBPe
|
||||||
seguridad.reenvioBpe=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuExtrairBPeXml
|
seguridad.reenvioBpe=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuExtrairBPeXml
|
||||||
seguridad.limparCacheLocalidadesAPI=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuLimparCacheLocalidadesAPI
|
seguridad.menuAPI=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.MenuAPI
|
||||||
|
seguridad.menuAPI.limparCacheLocalidadesAPI=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuLimparCacheLocalidadesAPI
|
||||||
|
seguridad.menuAPI.limparCacheEmbarcadaAPI=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuLimparCacheEmbarcadaAPI
|
||||||
seguridad.logAuditoria=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuLogAuditoria
|
seguridad.logAuditoria=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuLogAuditoria
|
||||||
pasajerofrecuente=com.rjconsultores.ventaboletos.web.utilerias.menu.item.pasajerofrecuente.MenuPasajeroFrecuente
|
pasajerofrecuente=com.rjconsultores.ventaboletos.web.utilerias.menu.item.pasajerofrecuente.MenuPasajeroFrecuente
|
||||||
pasajerofrecuente.cliente=com.rjconsultores.ventaboletos.web.utilerias.menu.item.pasajerofrecuente.ItemMenuCliente
|
pasajerofrecuente.cliente=com.rjconsultores.ventaboletos.web.utilerias.menu.item.pasajerofrecuente.ItemMenuCliente
|
||||||
|
|
|
@ -460,6 +460,8 @@ indexController.mniReenvioBpe.label = Reenvio BP-e
|
||||||
indexController.mniVisualizaSenhaInstalacaoVendaEmbarcada.label = Visualizar Senha Instalação
|
indexController.mniVisualizaSenhaInstalacaoVendaEmbarcada.label = Visualizar Senha Instalação
|
||||||
indexController.mniExtrairBpeXmlController.label = Extrair BP-e XML
|
indexController.mniExtrairBpeXmlController.label = Extrair BP-e XML
|
||||||
|
|
||||||
|
indexController.mniAPI.label = Api
|
||||||
|
|
||||||
indexController.mniEscola.label = Escola
|
indexController.mniEscola.label = Escola
|
||||||
indexController.mniCurso.label = Curso
|
indexController.mniCurso.label = Curso
|
||||||
indexController.mniPracaPedagio.label = Praça Pedágio
|
indexController.mniPracaPedagio.label = Praça Pedágio
|
||||||
|
@ -10016,6 +10018,11 @@ limparCacheLocalidadesAPI.title = Localidades (API)
|
||||||
limparCacheLocalidadesAPI.message.naoconfigurado=A constante de configuração da URL da API não foi encontrada.
|
limparCacheLocalidadesAPI.message.naoconfigurado=A constante de configuração da URL da API não foi encontrada.
|
||||||
limparCacheLocalidadesAPI.message.pergunta=Deseja recarregar Cache de Localidades (API) ? (API de Localidade ficará indisponível durante a execução)
|
limparCacheLocalidadesAPI.message.pergunta=Deseja recarregar Cache de Localidades (API) ? (API de Localidade ficará indisponível durante a execução)
|
||||||
|
|
||||||
|
indexController.mniLimparCacheEmbarcadaAPI.label = Recarregar Cache Sincronização Embarcada (API)
|
||||||
|
limparCacheEmbarcadaAPI.title = Cache Embarcada (API)
|
||||||
|
limparCacheEmbarcadaAPI.message.naoconfigurado=A constante de configuração da URL da API não foi encontrada.
|
||||||
|
limparCacheEmbarcadaAPI.message.pergunta=Deseja recarregar o Cache de Sincronização (API) ?
|
||||||
|
|
||||||
#Relatório de Aproveitamento Financeiro
|
#Relatório de Aproveitamento Financeiro
|
||||||
relatorioAproveitamentoFinanceiroController.window.title = Relatório de Aproveitamento Financeiro
|
relatorioAproveitamentoFinanceiroController.window.title = Relatório de Aproveitamento Financeiro
|
||||||
relatorioAproveitamentoFinanceiroController.lbDatInicial.value = Data inicial
|
relatorioAproveitamentoFinanceiroController.lbDatInicial.value = Data inicial
|
||||||
|
|
Loading…
Reference in New Issue