diff --git a/pom.xml b/pom.xml
index d774dcbb6..f4c6d5e35 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,12 +4,12 @@
4.0.0
br.com.rjconsultores
ventaboletosadm
- 1.30.1
+ 1.31.0
war
- 1.21.0
- 1.18.0
+ 1.22.0
+ 1.19.0
UTF-8
UTF-8
@@ -32,6 +32,15 @@
+ tests
+
+
+ tests
+
+ **/*.java
+
+
+
maven-compiler-plugin
diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarEmpresaController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarEmpresaController.java
index c83b8508f..687a2fa48 100644
--- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarEmpresaController.java
+++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarEmpresaController.java
@@ -134,6 +134,7 @@ import com.rjconsultores.ventaboletos.web.utilerias.render.RenderComEmpTipoEvent
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderEmpresaContaBancaria;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderEmpresaImposto;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderEmpresaInscricaoEstadual;
+import com.rjconsultores.ventaboletos.web.utilerias.security.SecurityEmpresaToken;
/**
*
@@ -465,6 +466,12 @@ public class EditarEmpresaController extends MyGenericForwardComposer {
private Textbox txtLatitudeLongitude;
private Textbox txtLatitude;
private Textbox txtLongitude;
+
+ private Textbox txtTokenRJ;
+ private Textbox txtLicenca;
+ private Button btnDigitarLicenca;
+ private Button btnValidarLicenca;
+ private boolean cadastroEmpresaNova = false;
private static final String EMAIL_PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
@@ -517,6 +524,8 @@ public class EditarEmpresaController extends MyGenericForwardComposer {
if (empresa.getEmpresaId() == null) {
btnAdicionarEstadoImposto.setVisible(false);
btnAdicionarInscEstadual.setVisible(false);
+
+ cadastroEmpresaNova = true;
} else {
btnAdicionarEstadoImposto.setVisible(true);
@@ -825,6 +834,28 @@ public class EditarEmpresaController extends MyGenericForwardComposer {
ajustarRadioAbaRateioComissao();
}
+ public void onClick$btnDigitarLicenca(Event ev) {
+ txtLicenca.setDisabled(false);
+ }
+ public void onClick$btnValidarLicenca(Event ev) throws InterruptedException {
+
+ String tokenLicensa = empresaService.validarTokenLicensa(empresa,txtLicenca.getText());
+
+ if (StringUtils.isNotBlank(tokenLicensa)){
+ txtLicenca.setText(tokenLicensa);
+ txtLicenca.setDisabled(true);
+ btnValidarLicenca.setDisabled(true);
+ btnDigitarLicenca.setDisabled(true);
+ empresa.setLicenca(tokenLicensa);
+
+ Messagebox.show(Labels.getLabel("editarEmpresaController.MSG.licencaOK"),
+ Labels.getLabel("editarEmpresaController.window.title"), Messagebox.OK, Messagebox.INFORMATION);
+ }else{
+ txtLicenca.setText("");
+ Messagebox.show(Labels.getLabel("editarEmpresaController.MSG.licencaNOK"),
+ Labels.getLabel("editarEmpresaController.window.title"), Messagebox.OK, Messagebox.ERROR);
+ }
+ }
public void onClick$chkAutenticacao(Event ev) {
if(chkAutenticacao.isChecked()){
textEmail.setDisabled(false);
@@ -899,7 +930,11 @@ public class EditarEmpresaController extends MyGenericForwardComposer {
openWindow("/gui/catalogos/editarContaBancariaEmpresa.zul",
Labels.getLabel("editarEmpresaController.contaBancaria.window.title"), args, MyGenericForwardComposer.MODAL);
}
-
+
+ public void onClick$btnGerarToken(Event ev) throws InterruptedException {
+ txtTokenRJ.setText(empresaService.token(empresa));
+ }
+
public void onClick$btnSalvar(Event ev) throws InterruptedException {
txtNome.getValue();
cmbIndTipo.getValue();
@@ -1266,6 +1301,25 @@ public class EditarEmpresaController extends MyGenericForwardComposer {
Messagebox.show(Labels.getLabel("editarEmpresaController.MSG.suscribirOK"),
Labels.getLabel("editarEmpresaController.window.title"),
Messagebox.OK, Messagebox.INFORMATION);
+
+
+
+ if (cadastroEmpresaNova){
+ Messagebox.show(
+ Labels.getLabel("editarEmpresaController.MSG.tokenNovaEmpresaOK", new String[] {empresa.getToken()}),
+ Labels.getLabel("editarEmpresaController.window.title"),
+ Messagebox.OK, Messagebox.EXCLAMATION);
+ }else{
+
+ List lsEmpresa = Arrays.asList(new Empresa[]{empresa});
+ if (empresaService.filtrarApenasEmpresasLicencaValida(lsEmpresa).isEmpty()){
+ Messagebox.show(
+ Labels.getLabel("editarEmpresaController.MSG.licencaNOK"),
+ Labels.getLabel("editarEmpresaController.window.title"),
+ Messagebox.OK, Messagebox.EXCLAMATION);
+ }
+
+ }
closeWindow();
@@ -2854,4 +2908,9 @@ public void onClick$btnTestEmailFlexBus(Event ev) throws InterruptedException {
public void setHoraFimEmbarque(Timebox horaFimEmbarque) {
this.horaFimEmbarque = horaFimEmbarque;
}
+
+ public boolean isExibeDadosTokenLicenca() {
+ return !cadastroEmpresaNova;
+ }
+
}
diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/MyAppInit.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/MyAppInit.java
index 7b878bf9e..8b206425e 100644
--- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/MyAppInit.java
+++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/MyAppInit.java
@@ -29,6 +29,7 @@ import org.zkoss.zk.ui.WebApp;
import com.rjconsultores.ventaboletos.FlyWay;
import com.rjconsultores.ventaboletos.entidad.Constante;
import com.rjconsultores.ventaboletos.service.ConstanteService;
+import com.rjconsultores.ventaboletos.service.EmpresaService;
import com.rjconsultores.ventaboletos.utilerias.ApplicationProperties;
import com.rjconsultores.ventaboletos.web.gui.controladores.job.GeneracionConferenciaMovimentoJob;
import com.rjconsultores.ventaboletos.web.gui.controladores.job.GeneracionCorridaJob;
@@ -105,6 +106,8 @@ public class MyAppInit implements org.zkoss.zk.ui.util.WebAppInit {
customToDatabase();
imageToDatabase();
}
+
+ this.atualizarLicencaPrimeiraVez();
}
@@ -434,4 +437,14 @@ public class MyAppInit implements org.zkoss.zk.ui.util.WebAppInit {
ConstanteService cs = (ConstanteService) factory.getBean("constanteService");
return cs;
}
+
+ private void atualizarLicencaPrimeiraVez(){
+ ApplicationContext appContext = AppContext.getApplicationContext();
+ BeanFactory factory = (BeanFactory) appContext;
+ EmpresaService es = (EmpresaService) factory.getBean("empresaService");
+
+ Integer cantLicencaEmpresasPrimeiraVez = es.atualizarLicencaEmpresasPrimeiraVez();
+
+ log.info(String.format("cantLicencaEmpresasPrimeiraVez: %s", cantLicencaEmpresasPrimeiraVez));
+ }
}
diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/security/exception/SecurityException.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/security/exception/SecurityException.java
new file mode 100644
index 000000000..ca6b559f9
--- /dev/null
+++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/security/exception/SecurityException.java
@@ -0,0 +1,13 @@
+package com.rjconsultores.ventaboletos.web.utilerias.security.exception;
+
+public class SecurityException extends Exception {
+ private static final long serialVersionUID = 1801174850577435303L;
+
+ public SecurityException(String arg0, Throwable arg1) {
+ super(arg0, arg1);
+ }
+
+ public SecurityException(String arg0) {
+ super(arg0);
+ }
+}
diff --git a/tests/com/rjconsultores/tests/SecurityEmpresaTokenTest.java b/tests/com/rjconsultores/tests/SecurityEmpresaTokenTest.java
new file mode 100644
index 000000000..ccb6edd43
--- /dev/null
+++ b/tests/com/rjconsultores/tests/SecurityEmpresaTokenTest.java
@@ -0,0 +1,117 @@
+package com.rjconsultores.tests;
+
+import static org.junit.Assert.fail;
+
+import java.time.Duration;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.rjconsultores.ventaboletos.web.utilerias.security.SecurityEmpresaToken;
+
+public class SecurityEmpresaTokenTest {
+ private static final Logger log = LoggerFactory.getLogger(SecurityEmpresaTokenTest.class);
+
+ @Before
+ public void initApplicationContext() {
+ log.info("[ BEGIN ]");
+ }
+
+ @After
+ public void closeApplicationContext() {
+ log.info("[ END ]");
+ }
+
+ @Test
+ public void test_Token() throws Exception {
+ // license request -> token request -> token response -> license
+
+ Integer empresaId = 1313;
+ String cnpj = "00073778000120";
+
+ SecurityEmpresaToken security = new SecurityEmpresaToken();
+
+ final String bodyRequest = security.bodyRequestGenerate(empresaId, cnpj);
+ final String request = security.requestGenerate(bodyRequest);
+
+ final String reponse = "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI4ZTY2MGVmOTQwMGRlNjU2MmQ1MjljZTVkZDMyZDU0NmM2OGU5YTk0NTUwYjUyNzc4MDhjNWIxMjgzNzkwNjVlNzI0NWU2ZTMxNzBjMTQ2ZGVlOWUyNGQwZjc1YzMwYTVmM2JlYmY5NjY0YzZiNWNiYjU3NTk1NzVmOGYzMTk4OTljNmVmODNkZDc3NmI4YjM2MGM1NDE3N2RhMzFkMDAzNTA5ZDFlIiwiZXhwIjoxNjk5NjQ5OTQ1LCJ1c2VySWQiOiJhZG0iLCJyb2xlIjoiUk9MRV9UT0tFTiJ9.0WFPKf6RcpPYle4Rgq_D-GScwhkw_Q4pmCvNCL_INfg";
+
+ final String license = security.tokenValidate(reponse);
+ final boolean valid = security.licenseValidate(license, empresaId, cnpj);
+
+ log.info("Body Request: " + bodyRequest);
+ log.info("Request: " + request);
+ log.info("License: " + license);
+ log.info("Valid: " + Boolean.toString(valid));
+
+ if (!valid) fail("Licença inválida");
+ }
+
+ @Test
+ public void test_EmpresaNova() throws Exception {
+ // license request -> token request -> token response -> license
+
+ Integer empresaId = 1313;
+ String cnpj = "00073778000120";
+
+ SecurityEmpresaToken security = new SecurityEmpresaToken();
+
+ final String bodyRequest = security.bodyRequestGenerate(empresaId, cnpj);
+ final String request = security.requestGenerate(bodyRequest);
+
+ final String license = security.tokenValidate(request);
+ final boolean valid = security.licenseValidate(license, empresaId, cnpj);
+
+ log.info("Body Request: " + bodyRequest);
+ log.info("Request: " + request);
+ log.info("License: " + license);
+ log.info("Valid: " + Boolean.toString(valid));
+
+ if (valid) fail("Licença válida");
+ }
+
+ @Test
+ public void test_Licenca() throws Exception {
+ Integer empresaId = 1313;
+ String cnpj = "00073778000120";
+
+ SecurityEmpresaToken security = new SecurityEmpresaToken();
+
+ final String license = security.licenseDefaultGenerate(empresaId, cnpj);
+ final boolean valid = security.licenseValidate(license, empresaId, cnpj);
+
+ log.info("License: " + license);
+ log.info("Valid: " + Boolean.toString(valid));
+
+ if (!valid) fail("Licença inválida");
+ }
+
+ @Test(expected = SecurityException.class)
+ public void test_TTL_expired() throws Exception {
+ Duration ttl = Duration.ofSeconds(5);
+
+ Integer empresaId = 1313;
+ String cnpj = "00073778000120";
+
+ SecurityEmpresaToken security = new SecurityEmpresaToken();
+
+ final String bodyRequest = security.bodyRequestGenerate(empresaId, cnpj);
+ final String request = security.requestGenerate(bodyRequest, ttl);
+
+ log.info("Body Request: " + bodyRequest);
+ log.info("Request: " + request);
+
+ Thread.sleep(Duration.ofSeconds(10).toMillis());
+
+ final String license = security.tokenValidate(request);
+ final boolean valid = security.licenseValidate(license, empresaId, cnpj);
+
+ log.info("License: " + license);
+ log.info("Valid: " + Boolean.toString(valid));
+
+ if (valid) fail("Licença válida");
+ }
+}
diff --git a/tests/com/rjconsultores/tests/SerieEmbarcadaTest.java b/tests/com/rjconsultores/tests/SerieEmbarcadaTest.java.old
similarity index 100%
rename from tests/com/rjconsultores/tests/SerieEmbarcadaTest.java
rename to tests/com/rjconsultores/tests/SerieEmbarcadaTest.java.old
diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label
index 5e44fc1c0..03b1424ef 100644
--- a/web/WEB-INF/i3-label_pt_BR.label
+++ b/web/WEB-INF/i3-label_pt_BR.label
@@ -1740,6 +1740,9 @@ editarEmpresaController.lbNome.value = Descrição
editarEmpresaController.lbConfiguraciones.value = Configurações
editarEmpresaController.lbActivo.value = Ativo
editarEmpresaController.MSG.suscribirOK = Empresa Registrada com Sucesso.
+editarEmpresaController.MSG.tokenNovaEmpresaOK = Para que a Empresa cadastrada possa ser utilizada no sistema, favor acionar o Suporte com o seguinte TOKEN: {0}
+editarEmpresaController.MSG.licencaNOK = Licença Informada não é válida. A empresa não ficará disponível para utilização. Favor entrar em contato com o Suporte.
+editarEmpresaController.MSG.licencaOK = Licença validada.
editarEmpresaController.MSG.borrarPergunta = Deseja Eliminar esta empresa?
editarEmpresaController.MSG.borrarOK = Empresa Excluida com Sucesso.
editarEmpresaController.MSG.insEstadualCadastrada = Já existe uma inscrição estadual para este estado.
@@ -1860,6 +1863,8 @@ editarEmpresaController.cst00.label = CST=00 (Tribuitação Normal)
editarEmpresaController.cst40.label = CST=40 (Isento)
editarEmpresaController.cst41.label = CST=41 (Não Tributado)
editarEmpresaController.codContPrevidencia.label = Código Indicador de Contribuição Previdenciária
+editarEmpresaController.tokenEmpresa.label = Token para Licença
+editarEmpresaController.tokenLicenca.label = Licença
editarEmpresaController.lbInscricaoMunicipal.value =Inscrição Municipal
editarEmpresaController.label.isento = ISENTO
editarEmpresaController.lbInscricaoMunicipal.label =Insc.Municipal
diff --git a/web/gui/catalogos/editarEmpresa.zul b/web/gui/catalogos/editarEmpresa.zul
index 6fc2487a2..79d220a16 100644
--- a/web/gui/catalogos/editarEmpresa.zul
+++ b/web/gui/catalogos/editarEmpresa.zul
@@ -166,24 +166,43 @@
-
-
-
-
+
+
+
+
-
+
-
+ value="${c:l('editarEmpresaController.tokenEmpresa.label')}" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+