From 54ab21ef3b7a7571de51233de7c0f1dfe9037a0a Mon Sep 17 00:00:00 2001 From: "Andrey Cunh@" Date: Tue, 14 Apr 2026 08:37:19 -0300 Subject: [PATCH] att --- Ginseng_chamados/datasets/.project | 17 + .../datasets/.settings/.jsdtscope | 7 + ...rg.eclipse.wst.jsdt.ui.superType.container | 1 + .../org.eclipse.wst.jsdt.ui.superType.name | 1 + Ginseng_chamados/forms/.project | 17 + Ginseng_chamados/forms/.settings/.jsdtscope | 7 + ...rg.eclipse.wst.jsdt.ui.superType.container | 1 + .../org.eclipse.wst.jsdt.ui.superType.name | 1 + Lançamento de documentos/.vscode/servers.json | 7 +- .../.metadata | Bin 730 -> 827 bytes .../totvsflow_lancamento_documento.html | 183 ++++- .../.settings/org.eclipse.core.resources.prefs | 61 ++ Transferência Ginseng/.vscode/servers.json | 13 + .../datasets/ds_LojasTransf.js | 2 +- .../datasets/ds_fiscal_invoice_by_keys.js | 344 ++++++-- .../datasets/ds_rgb_products_v2.js | 2 +- .../.metadata | Bin 709 -> 692 bytes .../events/validateForm.js | 2 +- .../script.js | 523 ++++++++++-- .../totvsflow_solicitacao_transferencia.html | 59 +- .../src/main/resources/application.info | 19 + .../wdtransf/src/main/resources/edit.ftl | 5 + .../wdtransf/src/main/resources/view.ftl | 97 +++ .../src/main/resources/wdtransf.properties | 2 + .../main/resources/wdtransf_en_US.properties | 2 + .../src/main/resources/wdtransf_es.properties | 2 + .../main/resources/wdtransf_pt_BR.properties | 2 + .../src/main/webapp/WEB-INF/jboss-web.xml | 5 + .../wdtransf/src/main/webapp/WEB-INF/web.xml | 12 + .../src/main/webapp/resources/css/wdtransf.css | 277 +++++++ .../src/main/webapp/resources/images/icon.png | Bin 0 -> 7845 bytes .../src/main/webapp/resources/js/wdtransf.js | 570 ++++++++++++++ .../wcm/widget/wdtransf/target/wdtransf.war | Bin 0 -> 16612 bytes .../src/main/resources/application.info | 19 + .../src/main/resources/edit.ftl | 5 + .../src/main/resources/view.ftl | 11 + .../main/resources/wdtransfanalista.properties | 2 + .../wdtransfanalista_en_US.properties | 2 + .../resources/wdtransfanalista_es.properties | 2 + .../wdtransfanalista_pt_BR.properties | 2 + .../src/main/webapp/WEB-INF/jboss-web.xml | 5 + .../src/main/webapp/WEB-INF/web.xml | 12 + .../webapp/resources/css/wdtransfanalista.css | 181 +++++ .../src/main/webapp/resources/images/icon.png | Bin 0 -> 7845 bytes .../webapp/resources/js/wdtransfanalista.js | 446 +++++++++++ .../target/wdtransfanalista.war | Bin 0 -> 15195 bytes .../src/main/resources/application.info | 19 + .../wdtransfloja/src/main/resources/edit.ftl | 5 + .../wdtransfloja/src/main/resources/view.ftl | 11 + .../src/main/resources/wdtransfloja.properties | 2 + .../resources/wdtransfloja_en_US.properties | 2 + .../main/resources/wdtransfloja_es.properties | 2 + .../resources/wdtransfloja_pt_BR.properties | 2 + .../src/main/webapp/WEB-INF/jboss-web.xml | 5 + .../src/main/webapp/WEB-INF/web.xml | 12 + .../main/webapp/resources/css/wdtransfloja.css | 181 +++++ .../src/main/webapp/resources/images/icon.png | Bin 0 -> 7845 bytes .../main/webapp/resources/js/wdtransfloja.js | 447 +++++++++++ .../wdtransfloja/target/wdtransfloja.war | Bin 0 -> 15154 bytes .../src/main/resources/application.info | 19 + .../src/main/resources/edit.ftl | 5 + .../src/main/resources/view.ftl | 11 + .../resources/wdtransfmotorista.properties | 2 + .../wdtransfmotorista_en_US.properties | 2 + .../resources/wdtransfmotorista_es.properties | 2 + .../wdtransfmotorista_pt_BR.properties | 2 + .../src/main/webapp/WEB-INF/jboss-web.xml | 5 + .../src/main/webapp/WEB-INF/web.xml | 12 + .../webapp/resources/css/wdtransfmotorista.css | 181 +++++ .../src/main/webapp/resources/images/icon.png | Bin 0 -> 7845 bytes .../webapp/resources/js/wdtransfmotorista.js | 447 +++++++++++ .../target/wdtransfmotorista.war | Bin 0 -> 15215 bytes .../src/main/resources/application.info | 19 + .../wdtransfreg/src/main/resources/edit.ftl | 5 + .../wdtransfreg/src/main/resources/view.ftl | 11 + .../src/main/resources/wdtransfreg.properties | 2 + .../resources/wdtransfreg_en_US.properties | 2 + .../main/resources/wdtransfreg_es.properties | 2 + .../resources/wdtransfreg_pt_BR.properties | 2 + .../src/main/webapp/WEB-INF/jboss-web.xml | 5 + .../src/main/webapp/WEB-INF/web.xml | 12 + .../main/webapp/resources/css/wdtransfreg.css | 181 +++++ .../src/main/webapp/resources/images/icon.png | Bin 0 -> 7845 bytes .../main/webapp/resources/js/wdtransfreg.js | 447 +++++++++++ .../widget/wdtransfreg/target/wdtransfreg.war | Bin 0 -> 15116 bytes .../workflow/.resources/Producao.ws.cache | 743 ++++++++++++++++++ .../Solicitação de transferência.ecm30.xml | 112 ++- .../Solicitação de transferência.png | Bin 56278 -> 50256 bytes ...licitação de transferência.processimage.svg | 2 +- .../Solicitação de transferência.process | 4 +- ...icitação de transferência.beforeTaskSave.js | 2 +- 91 files changed, 5660 insertions(+), 195 deletions(-) create mode 100644 Ginseng_chamados/datasets/.project create mode 100644 Ginseng_chamados/datasets/.settings/.jsdtscope create mode 100644 Ginseng_chamados/datasets/.settings/org.eclipse.wst.jsdt.ui.superType.container create mode 100644 Ginseng_chamados/datasets/.settings/org.eclipse.wst.jsdt.ui.superType.name create mode 100644 Ginseng_chamados/forms/.project create mode 100644 Ginseng_chamados/forms/.settings/.jsdtscope create mode 100644 Ginseng_chamados/forms/.settings/org.eclipse.wst.jsdt.ui.superType.container create mode 100644 Ginseng_chamados/forms/.settings/org.eclipse.wst.jsdt.ui.superType.name create mode 100644 Transferência Ginseng/.settings/org.eclipse.core.resources.prefs create mode 100644 Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/application.info create mode 100644 Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/edit.ftl create mode 100644 Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/view.ftl create mode 100644 Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/wdtransf.properties create mode 100644 Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/wdtransf_en_US.properties create mode 100644 Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/wdtransf_es.properties create mode 100644 Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/wdtransf_pt_BR.properties create mode 100644 Transferência Ginseng/wcm/widget/wdtransf/src/main/webapp/WEB-INF/jboss-web.xml create mode 100644 Transferência Ginseng/wcm/widget/wdtransf/src/main/webapp/WEB-INF/web.xml create mode 100644 Transferência Ginseng/wcm/widget/wdtransf/src/main/webapp/resources/css/wdtransf.css create mode 100644 Transferência Ginseng/wcm/widget/wdtransf/src/main/webapp/resources/images/icon.png create mode 100644 Transferência Ginseng/wcm/widget/wdtransf/src/main/webapp/resources/js/wdtransf.js create mode 100644 Transferência Ginseng/wcm/widget/wdtransf/target/wdtransf.war create mode 100644 Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/application.info create mode 100644 Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/edit.ftl create mode 100644 Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/view.ftl create mode 100644 Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/wdtransfanalista.properties create mode 100644 Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/wdtransfanalista_en_US.properties create mode 100644 Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/wdtransfanalista_es.properties create mode 100644 Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/wdtransfanalista_pt_BR.properties create mode 100644 Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/webapp/WEB-INF/jboss-web.xml create mode 100644 Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/webapp/WEB-INF/web.xml create mode 100644 Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/webapp/resources/css/wdtransfanalista.css create mode 100644 Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/webapp/resources/images/icon.png create mode 100644 Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/webapp/resources/js/wdtransfanalista.js create mode 100644 Transferência Ginseng/wcm/widget/wdtransfanalista/target/wdtransfanalista.war create mode 100644 Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/application.info create mode 100644 Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/edit.ftl create mode 100644 Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/view.ftl create mode 100644 Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/wdtransfloja.properties create mode 100644 Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/wdtransfloja_en_US.properties create mode 100644 Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/wdtransfloja_es.properties create mode 100644 Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/wdtransfloja_pt_BR.properties create mode 100644 Transferência Ginseng/wcm/widget/wdtransfloja/src/main/webapp/WEB-INF/jboss-web.xml create mode 100644 Transferência Ginseng/wcm/widget/wdtransfloja/src/main/webapp/WEB-INF/web.xml create mode 100644 Transferência Ginseng/wcm/widget/wdtransfloja/src/main/webapp/resources/css/wdtransfloja.css create mode 100644 Transferência Ginseng/wcm/widget/wdtransfloja/src/main/webapp/resources/images/icon.png create mode 100644 Transferência Ginseng/wcm/widget/wdtransfloja/src/main/webapp/resources/js/wdtransfloja.js create mode 100644 Transferência Ginseng/wcm/widget/wdtransfloja/target/wdtransfloja.war create mode 100644 Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/application.info create mode 100644 Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/edit.ftl create mode 100644 Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/view.ftl create mode 100644 Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/wdtransfmotorista.properties create mode 100644 Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/wdtransfmotorista_en_US.properties create mode 100644 Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/wdtransfmotorista_es.properties create mode 100644 Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/wdtransfmotorista_pt_BR.properties create mode 100644 Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/webapp/WEB-INF/jboss-web.xml create mode 100644 Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/webapp/WEB-INF/web.xml create mode 100644 Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/webapp/resources/css/wdtransfmotorista.css create mode 100644 Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/webapp/resources/images/icon.png create mode 100644 Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/webapp/resources/js/wdtransfmotorista.js create mode 100644 Transferência Ginseng/wcm/widget/wdtransfmotorista/target/wdtransfmotorista.war create mode 100644 Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/application.info create mode 100644 Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/edit.ftl create mode 100644 Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/view.ftl create mode 100644 Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/wdtransfreg.properties create mode 100644 Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/wdtransfreg_en_US.properties create mode 100644 Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/wdtransfreg_es.properties create mode 100644 Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/wdtransfreg_pt_BR.properties create mode 100644 Transferência Ginseng/wcm/widget/wdtransfreg/src/main/webapp/WEB-INF/jboss-web.xml create mode 100644 Transferência Ginseng/wcm/widget/wdtransfreg/src/main/webapp/WEB-INF/web.xml create mode 100644 Transferência Ginseng/wcm/widget/wdtransfreg/src/main/webapp/resources/css/wdtransfreg.css create mode 100644 Transferência Ginseng/wcm/widget/wdtransfreg/src/main/webapp/resources/images/icon.png create mode 100644 Transferência Ginseng/wcm/widget/wdtransfreg/src/main/webapp/resources/js/wdtransfreg.js create mode 100644 Transferência Ginseng/wcm/widget/wdtransfreg/target/wdtransfreg.war diff --git a/Ginseng_chamados/datasets/.project b/Ginseng_chamados/datasets/.project new file mode 100644 index 0000000..2fb354a --- /dev/null +++ b/Ginseng_chamados/datasets/.project @@ -0,0 +1,17 @@ + + + datasets + + + + + + org.eclipse.wst.validation.validationbuilder + + + + + + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/Ginseng_chamados/datasets/.settings/.jsdtscope b/Ginseng_chamados/datasets/.settings/.jsdtscope new file mode 100644 index 0000000..cca691f --- /dev/null +++ b/Ginseng_chamados/datasets/.settings/.jsdtscope @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Ginseng_chamados/datasets/.settings/org.eclipse.wst.jsdt.ui.superType.container b/Ginseng_chamados/datasets/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 0000000..49c8cd4 --- /dev/null +++ b/Ginseng_chamados/datasets/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.JRE_CONTAINER \ No newline at end of file diff --git a/Ginseng_chamados/datasets/.settings/org.eclipse.wst.jsdt.ui.superType.name b/Ginseng_chamados/datasets/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 0000000..11006e2 --- /dev/null +++ b/Ginseng_chamados/datasets/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Global \ No newline at end of file diff --git a/Ginseng_chamados/forms/.project b/Ginseng_chamados/forms/.project new file mode 100644 index 0000000..e269f56 --- /dev/null +++ b/Ginseng_chamados/forms/.project @@ -0,0 +1,17 @@ + + + forms + + + + + + org.eclipse.wst.validation.validationbuilder + + + + + + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/Ginseng_chamados/forms/.settings/.jsdtscope b/Ginseng_chamados/forms/.settings/.jsdtscope new file mode 100644 index 0000000..cca691f --- /dev/null +++ b/Ginseng_chamados/forms/.settings/.jsdtscope @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Ginseng_chamados/forms/.settings/org.eclipse.wst.jsdt.ui.superType.container b/Ginseng_chamados/forms/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 0000000..49c8cd4 --- /dev/null +++ b/Ginseng_chamados/forms/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.JRE_CONTAINER \ No newline at end of file diff --git a/Ginseng_chamados/forms/.settings/org.eclipse.wst.jsdt.ui.superType.name b/Ginseng_chamados/forms/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 0000000..11006e2 --- /dev/null +++ b/Ginseng_chamados/forms/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Global \ No newline at end of file diff --git a/Lançamento de documentos/.vscode/servers.json b/Lançamento de documentos/.vscode/servers.json index 9854b91..0c5f368 100644 --- a/Lançamento de documentos/.vscode/servers.json +++ b/Lançamento de documentos/.vscode/servers.json @@ -2,15 +2,16 @@ "version": "1.0.0", "configurations": [ { - "id": "cafi5jey9zammnjzp2n5z2h8lutld7", - "name": "Fluig produção", + "id": "kcd262syqgmnhlewwba1vu2pgu6b", + "name": "Fluig producao", "host": "comerciode188006.fluig.cloudtotvs.com.br", "ssl": true, "port": 443, "username": "andrey.cunha", - "password": "eyJpdiI6ImQwNjBhYWU1NzM3ZjVhNzU0ZWExOWYwZGZiNDEzNWI3Iiwic2FsdCI6IjQ0NmVjYTQ4OTY3ZWViOTc3NmRjY2E4M2UyYzc2NGViIiwidGV4dCI6ImNmZWRiYzFlODFjY2EwOTUzOWZlMGVlMTMzZWIwNzA0In0=", + "password": "eyJpdiI6IjM5OWJjNjRiOGQ3Yjg5ZWEwYzk0Yzk4NWU5YjI5ODk4Iiwic2FsdCI6ImZjMzVmM2FmMDRhNjljNjA1YThiYzJjYTI5ZjU3NTgyIiwidGV4dCI6ImYwNDA2ZWYxOTM1N2FmMzYyYWZiODc4ZThjMmMzM2ZiIn0=", "userCode": "andrey.cunha", "confirmExporting": false, + "hasBrowser": false, "companyId": 1 } ] diff --git a/Lançamento de documentos/lançamentos/forms/41254 - totvsflow_lancamento_documento/.metadata b/Lançamento de documentos/lançamentos/forms/41254 - totvsflow_lancamento_documento/.metadata index ab065a3796ca7b1c09e8a57a09c94f9c167f3531..6d0b785d06b0e5c99f36e7b85e4a51691ebacef0 100644 GIT binary patch delta 50 zcmcb`x|?mn6?W!w76t|e=8d;6GfsA9GUwn3D9TSMO-`KL!=%n4Rl=Y=c> -

Lançamento de documento

+

Lançamento de documento

@@ -90,7 +90,7 @@

 Dados do documento 

-
Dados referentes ao documento que será lançado.
+
Dados referentes ao documento que será lançado.

@@ -113,11 +113,11 @@ + obrigatório

- + *
- + Tipo de cadastro * + obrigatório

* @@ -176,7 +176,7 @@ mask="00.000.000/0000-00" class="form-control" readonly /> + obrigatório

@@ -199,7 +199,7 @@ />

@@ -207,8 +207,9 @@ @@ -219,13 +220,13 @@
- * + * + obrigatório

@@ -245,8 +246,8 @@ * -

Utilize a aba anexos para anexar o documento ou o botão - abaixo. Anexo obrigatório.

+

Utilize a aba anexos para anexar o documento ou o botão + abaixo. Anexo obrigatório.

@@ -258,21 +259,21 @@

 Descrição dos serviços +  Descrição dos serviços  

-
Descrição detalhada dos serviços prestados e as possíveis informações complementares.
+
Descrição detalhada dos serviços prestados e as possíveis informações complementares.

- Descrição dos serviços * + obrigatório

@@ -294,10 +295,10 @@
-
-
-
-
+
+
+
+
+
+
+
+
+ +
+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+ +
+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+ +
+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+ +
+
+
+
+ + + +
+
+ + + +
+
+ + + +
@@ -926,7 +1031,35 @@ $("#msgJustificativa").show(); erro++; } - } if (activity == ANALISAR_DOCUMENTO) { + } + if (activity == ANALISAR_DOCUMENTO) { + var camposAnalistaObrigatorios = [ + { valor: $("#FILIAL").val(), classe: ".divFilialAnalista", help: "#filialAnalista" }, + { valor: $("#PREFIXO").val(), classe: ".divPrefixoAnalista", help: "#prefixoAnalista" }, + { valor: $("#NUMERO").val(), classe: ".divNumeroAnalista", help: "#numeroAnalista" }, + { valor: $("#PARCELA").val(), classe: ".divParcelaAnalista", help: "#parcelaAnalista" }, + { valor: $("#TIPO").val(), classe: ".divTipoAnalista", help: "#tipoAnalista" }, + { valor: $("#NATUREZA").val(), classe: ".divNaturezaAnalista", help: "#naturezaAnalista" }, + { valor: $("#COD_FORN").val(), classe: ".divCodFornAnalista", help: "#codFornAnalista" }, + { valor: $("#LOJA").val(), classe: ".divLojaAnalista", help: "#lojaAnalista" }, + { valor: $("#EMISSAO").val(), classe: ".divEmissaoAnalista", help: "#emissaoAnalista" }, + { valor: $("#VENCIMENTO").val(), classe: ".divVencimentoAnalista", help: "#vencimentoAnalista" }, + { valor: $("#VENC_REAL").val(), classe: ".divVencRealAnalista", help: "#vencRealAnalista" }, + { valor: $("#VALOR").val(), classe: ".divValorAnalista", help: "#valorAnalista" }, + { valor: $("#HISTORICO").val(), classe: ".divHistoricoAnalista", help: "#historicoAnalista" }, + { valor: $("#CENTRO_CUSTO").val(), classe: ".divCentroCustoAnalista", help: "#centroCustoAnalista" } + ]; + + for (var i = 0; i < camposAnalistaObrigatorios.length; i++) { + var campo = camposAnalistaObrigatorios[i]; + if (campo.valor == undefined || campo.valor == "" || campo.valor == null) { + $(campo.classe).addClass("has-error"); + $(campo.help).show(); + erro++; + } + } + + var justi_decisao_gestor = $("#justi_decisao_gestor").val(); if (justi_decisao_gestor == undefined || justi_decisao_gestor == "" || justi_decisao_gestor == null) { $(".divJustiDecisaoGestor").addClass("has-error"); $("#justiDecisaoGestor").show(); diff --git a/Transferência Ginseng/.settings/org.eclipse.core.resources.prefs b/Transferência Ginseng/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..5fed4cd --- /dev/null +++ b/Transferência Ginseng/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,61 @@ +eclipse.preferences.version=1 +encoding//wcm/widget/wdtransf/src/main/resources/application.info=utf8 +encoding//wcm/widget/wdtransf/src/main/resources/edit.ftl=utf8 +encoding//wcm/widget/wdtransf/src/main/resources/view.ftl=utf8 +encoding//wcm/widget/wdtransf/src/main/resources/wdtransf.properties=utf8 +encoding//wcm/widget/wdtransf/src/main/resources/wdtransf_en_US.properties=utf8 +encoding//wcm/widget/wdtransf/src/main/resources/wdtransf_es.properties=utf8 +encoding//wcm/widget/wdtransf/src/main/resources/wdtransf_pt_BR.properties=utf8 +encoding//wcm/widget/wdtransf/src/main/webapp/WEB-INF/jboss-web.xml=utf8 +encoding//wcm/widget/wdtransf/src/main/webapp/WEB-INF/web.xml=utf8 +encoding//wcm/widget/wdtransf/src/main/webapp/resources/css/wdtransf.css=utf8 +encoding//wcm/widget/wdtransf/src/main/webapp/resources/images/icon.png=utf8 +encoding//wcm/widget/wdtransf/src/main/webapp/resources/js/wdtransf.js=utf8 +encoding//wcm/widget/wdtransfanalista/src/main/resources/application.info=utf8 +encoding//wcm/widget/wdtransfanalista/src/main/resources/edit.ftl=utf8 +encoding//wcm/widget/wdtransfanalista/src/main/resources/view.ftl=utf8 +encoding//wcm/widget/wdtransfanalista/src/main/resources/wdtransfanalista.properties=utf8 +encoding//wcm/widget/wdtransfanalista/src/main/resources/wdtransfanalista_en_US.properties=utf8 +encoding//wcm/widget/wdtransfanalista/src/main/resources/wdtransfanalista_es.properties=utf8 +encoding//wcm/widget/wdtransfanalista/src/main/resources/wdtransfanalista_pt_BR.properties=utf8 +encoding//wcm/widget/wdtransfanalista/src/main/webapp/WEB-INF/jboss-web.xml=utf8 +encoding//wcm/widget/wdtransfanalista/src/main/webapp/WEB-INF/web.xml=utf8 +encoding//wcm/widget/wdtransfanalista/src/main/webapp/resources/css/wdtransfanalista.css=utf8 +encoding//wcm/widget/wdtransfanalista/src/main/webapp/resources/images/icon.png=utf8 +encoding//wcm/widget/wdtransfanalista/src/main/webapp/resources/js/wdtransfanalista.js=utf8 +encoding//wcm/widget/wdtransfloja/src/main/resources/application.info=utf8 +encoding//wcm/widget/wdtransfloja/src/main/resources/edit.ftl=utf8 +encoding//wcm/widget/wdtransfloja/src/main/resources/view.ftl=utf8 +encoding//wcm/widget/wdtransfloja/src/main/resources/wdtransfloja.properties=utf8 +encoding//wcm/widget/wdtransfloja/src/main/resources/wdtransfloja_en_US.properties=utf8 +encoding//wcm/widget/wdtransfloja/src/main/resources/wdtransfloja_es.properties=utf8 +encoding//wcm/widget/wdtransfloja/src/main/resources/wdtransfloja_pt_BR.properties=utf8 +encoding//wcm/widget/wdtransfloja/src/main/webapp/WEB-INF/jboss-web.xml=utf8 +encoding//wcm/widget/wdtransfloja/src/main/webapp/WEB-INF/web.xml=utf8 +encoding//wcm/widget/wdtransfloja/src/main/webapp/resources/css/wdtransfloja.css=utf8 +encoding//wcm/widget/wdtransfloja/src/main/webapp/resources/images/icon.png=utf8 +encoding//wcm/widget/wdtransfloja/src/main/webapp/resources/js/wdtransfloja.js=utf8 +encoding//wcm/widget/wdtransfmotorista/src/main/resources/application.info=utf8 +encoding//wcm/widget/wdtransfmotorista/src/main/resources/edit.ftl=utf8 +encoding//wcm/widget/wdtransfmotorista/src/main/resources/view.ftl=utf8 +encoding//wcm/widget/wdtransfmotorista/src/main/resources/wdtransfmotorista.properties=utf8 +encoding//wcm/widget/wdtransfmotorista/src/main/resources/wdtransfmotorista_en_US.properties=utf8 +encoding//wcm/widget/wdtransfmotorista/src/main/resources/wdtransfmotorista_es.properties=utf8 +encoding//wcm/widget/wdtransfmotorista/src/main/resources/wdtransfmotorista_pt_BR.properties=utf8 +encoding//wcm/widget/wdtransfmotorista/src/main/webapp/WEB-INF/jboss-web.xml=utf8 +encoding//wcm/widget/wdtransfmotorista/src/main/webapp/WEB-INF/web.xml=utf8 +encoding//wcm/widget/wdtransfmotorista/src/main/webapp/resources/css/wdtransfmotorista.css=utf8 +encoding//wcm/widget/wdtransfmotorista/src/main/webapp/resources/images/icon.png=utf8 +encoding//wcm/widget/wdtransfmotorista/src/main/webapp/resources/js/wdtransfmotorista.js=utf8 +encoding//wcm/widget/wdtransfreg/src/main/resources/application.info=utf8 +encoding//wcm/widget/wdtransfreg/src/main/resources/edit.ftl=utf8 +encoding//wcm/widget/wdtransfreg/src/main/resources/view.ftl=utf8 +encoding//wcm/widget/wdtransfreg/src/main/resources/wdtransfreg.properties=utf8 +encoding//wcm/widget/wdtransfreg/src/main/resources/wdtransfreg_en_US.properties=utf8 +encoding//wcm/widget/wdtransfreg/src/main/resources/wdtransfreg_es.properties=utf8 +encoding//wcm/widget/wdtransfreg/src/main/resources/wdtransfreg_pt_BR.properties=utf8 +encoding//wcm/widget/wdtransfreg/src/main/webapp/WEB-INF/jboss-web.xml=utf8 +encoding//wcm/widget/wdtransfreg/src/main/webapp/WEB-INF/web.xml=utf8 +encoding//wcm/widget/wdtransfreg/src/main/webapp/resources/css/wdtransfreg.css=utf8 +encoding//wcm/widget/wdtransfreg/src/main/webapp/resources/images/icon.png=utf8 +encoding//wcm/widget/wdtransfreg/src/main/webapp/resources/js/wdtransfreg.js=utf8 diff --git a/Transferência Ginseng/.vscode/servers.json b/Transferência Ginseng/.vscode/servers.json index 4a764ca..a51223c 100644 --- a/Transferência Ginseng/.vscode/servers.json +++ b/Transferência Ginseng/.vscode/servers.json @@ -13,6 +13,19 @@ "confirmExporting": false, "hasBrowser": false, "companyId": 1 + }, + { + "id": "ktaxtphdhzqmn8tbsn4t14t2skqwo", + "name": "Producao", + "host": "comerciode188006.fluig.cloudtotvs.com.br", + "ssl": true, + "port": 443, + "username": "andrey.cunha", + "password": "eyJpdiI6ImFmYzY2MWIzNmNmMTNhYTRkZTUyZGVjZjFhOWJjMmI2Iiwic2FsdCI6ImNhMTQ4ZWIxMjAzMDQyZDM5MGY0YzVlM2Y3ZjUyMmUwIiwidGV4dCI6IjRhZjUwNjcxMzFkZjljYmVlOGI5Y2JjNzU2ZmRiMWYyIn0=", + "userCode": "andrey.cunha", + "confirmExporting": false, + "hasBrowser": false, + "companyId": 1 } ] } \ No newline at end of file diff --git a/Transferência Ginseng/datasets/ds_LojasTransf.js b/Transferência Ginseng/datasets/ds_LojasTransf.js index 1273d55..63db996 100644 --- a/Transferência Ginseng/datasets/ds_LojasTransf.js +++ b/Transferência Ginseng/datasets/ds_LojasTransf.js @@ -119,7 +119,7 @@ function parseConstraints(constraints) { var out = { pdv: "", loja: "", - onlyAtivo: true, + onlyAtivo: false, termoLivre: "" }; diff --git a/Transferência Ginseng/datasets/ds_fiscal_invoice_by_keys.js b/Transferência Ginseng/datasets/ds_fiscal_invoice_by_keys.js index 259ac84..99642cf 100644 --- a/Transferência Ginseng/datasets/ds_fiscal_invoice_by_keys.js +++ b/Transferência Ginseng/datasets/ds_fiscal_invoice_by_keys.js @@ -38,14 +38,14 @@ function createDataset(fields, constraints, sortFields) { } var auth = resolveAuth(constraints); + var authVariants = buildAuthVariants(auth); var diagnostics = []; + var query = "page=1&page_size=50&key=" + key + "&sort_by=updatedAt&sort_order=desc"; var endpoints = [ - "/fiscal-invoices?key=" + key, - "fiscal-invoices?key=" + key, - "/fiscal/invoices?key=" + key, - "/fiscal/invoice?key=" + key, - "/invoice?key=" + key + "/v2/vendas/rgb-transferencias?" + query, + "v2/vendas/rgb-transferencias?" + query, + "/rgb-transferencias?" + query ]; var apiObj = null; @@ -56,15 +56,21 @@ function createDataset(fields, constraints, sortFields) { var clientService = fluigAPI.getAuthorizeClientService(); for (var i = 0; i < endpoints.length; i++) { var endpoint = endpoints[i]; - var resp = invokeAuthorizedGet(clientService, endpoint, auth); - diagnostics.push(endpoint + " => HTTP " + trim(resp.status)); - var parsed = parseApiPayload(resp.body); - if (parsed && trim(parsed.message)) { - lastApiMessage = trim(parsed.message); + for (var a = 0; a < authVariants.length; a++) { + var authVariant = authVariants[a]; + var resp = invokeAuthorizedGet(clientService, endpoint, authVariant); + diagnostics.push(endpoint + " [" + authVariant.name + "] => HTTP " + trim(resp.status)); + var parsed = parseApiPayload(resp.body); + if (parsed && trim(parsed.message)) { + lastApiMessage = trim(parsed.message); + } + if (String(resp.status) === "200" && isApiSuccess(parsed)) { + apiObj = parsed; + hitInfo = endpoint + " [" + authVariant.name + "]"; + break; + } } - if (String(resp.status) === "200" && isApiSuccess(parsed)) { - apiObj = parsed; - hitInfo = endpoint; + if (apiObj) { break; } } @@ -74,21 +80,26 @@ function createDataset(fields, constraints, sortFields) { if (!apiObj) { var directUrls = [ - "https://api.grupoginseng.com.br/fiscal-invoices?key=" + key, - "https://api.grupoginseng.com.br/fiscal/invoice?key=" + key + "https://api.grupoginseng.com.br/v2/vendas/rgb-transferencias?" + query ]; for (var d = 0; d < directUrls.length; d++) { var url = directUrls[d]; - var directResp = fetchDirect(url, 30000, auth); - diagnostics.push(url + " => HTTP " + trim(directResp.status)); - var parsedDirect = parseApiPayload(directResp.body); - if (parsedDirect && trim(parsedDirect.message)) { - lastApiMessage = trim(parsedDirect.message); + for (var da = 0; da < authVariants.length; da++) { + var directAuthVariant = authVariants[da]; + var directResp = fetchDirect(url, 30000, directAuthVariant); + diagnostics.push(url + " [" + directAuthVariant.name + "] => HTTP " + trim(directResp.status)); + var parsedDirect = parseApiPayload(directResp.body); + if (parsedDirect && trim(parsedDirect.message)) { + lastApiMessage = trim(parsedDirect.message); + } + if (String(directResp.status) === "200" && isApiSuccess(parsedDirect)) { + apiObj = parsedDirect; + hitInfo = url + " [" + directAuthVariant.name + "]"; + break; + } } - if (String(directResp.status) === "200" && isApiSuccess(parsedDirect)) { - apiObj = parsedDirect; - hitInfo = url; + if (apiObj) { break; } } @@ -103,34 +114,33 @@ function createDataset(fields, constraints, sortFields) { return dataset; } - if (!apiObj.success || !apiObj.data) { + var dataNfe = extractInvoiceData(apiObj, key); + if (!dataNfe) { addErrorRow(dataset, trim(apiObj.message) || "NFe nao encontrada. Fonte: " + hitInfo); return dataset; } - - var dataNfe = apiObj.data || {}; - var itens = dataNfe.itens || []; + var itens = resolveItems(dataNfe); var itensJson = JSON.stringify(buildNfeItems(itens)); dataset.addRow([ "true", "OK (" + hitInfo + ")", - trim(dataNfe.key), - trim(dataNfe.invoiceNumber), - trim(dataNfe.serie), - formatIsoDate(dataNfe.emissionDate), - formatIsoDate(dataNfe.operationDate), - trim(dataNfe.supplierName), - trim(dataNfe.documentValue), - trim(dataNfe.totalItemsValue), - trim(dataNfe.situation), - trim(dataNfe.fiscalOperationDescription), + trim(dataNfe.key || dataNfe.nfeKey || dataNfe.chave || key), + trim(dataNfe.invoiceNumber || dataNfe.numeroNota || dataNfe.numero || dataNfe.number), + trim(dataNfe.serie || dataNfe.series), + formatIsoDate(dataNfe.emissionDate || dataNfe.issueDate || dataNfe.invoiceDate), + formatIsoDate(dataNfe.operationDate || dataNfe.transactionDate || dataNfe.operation_at), + trim(dataNfe.supplierName || dataNfe.supplier || dataNfe.fornecedor || dataNfe.emitente), + trim(dataNfe.documentValue || dataNfe.totalValue || dataNfe.valorDocumento || dataNfe.amount), + trim(dataNfe.totalItemsValue || dataNfe.itemsValue || dataNfe.valorItens || dataNfe.totalValue), + trim(dataNfe.situation || dataNfe.status), + trim(dataNfe.fiscalOperationDescription || dataNfe.operationDescription || dataNfe.naturezaOperacao), String(itens.length), itensJson, - trim(dataNfe.storeId), - trim(dataNfe.invoiceId), - trim(dataNfe.emitterEmployeeId), - formatIsoDateTime(dataNfe.updatedAt) + trim(dataNfe.storeId || dataNfe.pdv || dataNfe.storeCode || dataNfe.lojaId), + trim(dataNfe.invoiceId || dataNfe.id_venda || dataNfe.id || dataNfe.transferId), + trim(dataNfe.emitterEmployeeId || dataNfe.emitterId || dataNfe.usuarioEmissor), + formatIsoDateTime(dataNfe.updatedAt || dataNfe.modifiedAt || dataNfe.lastUpdate) ]); } catch (e) { addErrorRow(dataset, "Erro ao consultar a NFe: " + e); @@ -187,11 +197,12 @@ function addErrorRow(dataset, message) { function getConstraintValue(constraints, fieldName) { if (!constraints || !fieldName) return ""; + var target = String(fieldName).toLowerCase(); for (var i = 0; i < constraints.length; i++) { var c = constraints[i]; if (!c || !c.fieldName) continue; - if (String(c.fieldName) === String(fieldName)) { + if (String(c.fieldName).toLowerCase() === target) { return c.initialValue; } } @@ -199,7 +210,13 @@ function getConstraintValue(constraints, fieldName) { } function resolveAuth(constraints) { - var token = trim(getConstraintValue(constraints, "token")); + var token = trim(getFirstConstraintValue(constraints, [ + "token", + "accessToken", + "xAccessToken", + "bearerToken", + "access_token" + ])); if (!token) { try { token = trim(java.lang.System.getenv("GINSENG_FISCAL_TOKEN")); @@ -210,8 +227,16 @@ function resolveAuth(constraints) { token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhcGlnaW5zZW5nIiwiZXhwIjoxNzg3NDQ4MDY3fQ.GJqcIJBkMIfp_q_KRzgGuAHWWo93j3FWo3TObKqlAwA"; } - var basicUser = trim(getConstraintValue(constraints, "basicUser")); - var basicPass = trim(getConstraintValue(constraints, "basicPass")); + var basicUser = trim(getFirstConstraintValue(constraints, [ + "basicUser", + "username", + "user" + ])); + var basicPass = trim(getFirstConstraintValue(constraints, [ + "basicPass", + "password", + "pass" + ])); // Fallback operacional para homologacao, conforme credenciais validadas em teste manual. if (!basicUser) basicUser = "fluig"; @@ -224,19 +249,84 @@ function resolveAuth(constraints) { }; } -function invokeAuthorizedGet(clientService, endpoint, auth) { - var authHeader = resolveAuthHeader(auth); - var headers = { "Accept": "application/json" }; - if (authHeader) { - headers.Authorization = authHeader; - if (auth && auth.token) { - headers["x-access-token"] = auth.token; +function getFirstConstraintValue(constraints, names) { + if (!names || !(names instanceof Array)) return ""; + for (var i = 0; i < names.length; i++) { + var val = getConstraintValue(constraints, names[i]); + if (trim(val)) return val; + } + return ""; +} + +function buildAuthVariants(auth) { + auth = auth || {}; + var variants = []; + + var token = trim(auth.token); + var basicUser = trim(auth.basicUser); + var basicPass = trim(auth.basicPass); + var basicHeader = buildBasicAuthHeader(basicUser, basicPass); + + if (token) { + variants.push({ + name: "Bearer+XToken", + authorization: "Bearer " + token, + xAccessToken: token + }); + variants.push({ + name: "XToken", + xAccessToken: token + }); + variants.push({ + name: "Bearer", + authorization: "Bearer " + token + }); + } + + if (basicHeader) { + variants.push({ + name: "Basic", + authorization: basicHeader + }); + if (token) { + variants.push({ + name: "Basic+XToken", + authorization: basicHeader, + xAccessToken: token + }); } } + variants.push({ name: "NoAuth" }); + return dedupeAuthVariants(variants); +} + +function dedupeAuthVariants(variants) { + var out = []; + var seen = {}; + + for (var i = 0; i < variants.length; i++) { + var v = variants[i] || {}; + var signature = trim(v.authorization) + "|" + trim(v.xAccessToken); + if (seen[signature]) continue; + seen[signature] = true; + out.push(v); + } + + if (!out.length) { + out.push({ name: "NoAuth" }); + } + + return out; +} + +function invokeAuthorizedGet(clientService, endpoint, authVariant) { + var headers = { "Accept": "application/json" }; + applyAuthHeaders(headers, authVariant); + var data = { companyId: String(getValue("WKCompany") || "1"), - serviceCode: "GinsengAPI2", + serviceCode: "Fastapi", endpoint: endpoint, method: "get", timeoutService: "30000", @@ -284,12 +374,113 @@ function parseApiPayload(bodyText) { } function isApiSuccess(obj) { - if (!obj || !obj.data) return false; + if (!obj) return false; if (obj.success === true) return true; if (String(obj.success).toLowerCase() === "true") return true; + if (obj.data || obj.items || obj.result || obj.content) return true; return false; } +function extractInvoiceData(apiObj, expectedKey) { + if (!apiObj) return null; + var normalizedKey = normalizeDigits(expectedKey); + return extractInvoiceFromNode(apiObj, normalizedKey); +} + +function extractInvoiceFromNode(node, normalizedKey) { + if (!node) return null; + + if (typeof node === "string") { + var parsed = parseJsonSafe(node); + if (!parsed) return null; + return extractInvoiceFromNode(parsed, normalizedKey); + } + + if (node instanceof Array) { + return extractInvoiceFromArray(node, normalizedKey); + } + + if (matchesInvoiceObject(node, normalizedKey)) { + return node; + } + + var nestedCandidates = [ + node.data, + node.items, + node.rows, + node.results, + node.content, + node.result, + node.list, + node.transferencias, + node.rgbTransferencias + ]; + + for (var i = 0; i < nestedCandidates.length; i++) { + var nested = extractInvoiceFromNode(nestedCandidates[i], normalizedKey); + if (nested) return nested; + } + + return null; +} + +function extractInvoiceFromArray(list, normalizedKey) { + if (!list || !(list instanceof Array) || list.length === 0) return null; + + for (var i = 0; i < list.length; i++) { + var item = list[i]; + if (matchesInvoiceObject(item, normalizedKey)) { + return item; + } + } + + return list[0] || null; +} + +function matchesInvoiceObject(item, normalizedKey) { + if (!item || item instanceof Array || typeof item !== "object") return false; + + var keyCandidate = normalizeDigits(item.key || item.nfeKey || item.chave || item.invoiceKey || item.nfe_key); + if (normalizedKey && keyCandidate) { + return keyCandidate === normalizedKey; + } + + if (keyCandidate) return true; + + var hasIdentity = trim(item.invoiceNumber || item.numeroNota || item.invoiceId || item.transferId); + return !!hasIdentity; +} + +function resolveItems(dataNfe) { + if (!dataNfe || typeof dataNfe !== "object") return []; + + var candidates = [ + dataNfe.itens, + dataNfe.itensJson, + dataNfe.items, + dataNfe.products, + dataNfe.produtos + ]; + + for (var i = 0; i < candidates.length; i++) { + var raw = candidates[i]; + if (!raw) continue; + + if (raw instanceof Array) { + return raw; + } + + if (typeof raw === "string") { + var parsed = parseJsonSafe(raw); + if (parsed instanceof Array) { + return parsed; + } + } + } + + return []; +} + function fetchDirect(url, timeoutMs, auth) { var conn = null; var reader = null; @@ -305,10 +496,12 @@ function fetchDirect(url, timeoutMs, auth) { conn.setReadTimeout(timeoutMs || 30000); conn.setRequestProperty("Accept", "application/json"); - var authHeader = resolveAuthHeader(auth); - if (authHeader) { - conn.setRequestProperty("Authorization", authHeader); - if (auth.token) conn.setRequestProperty("x-access-token", auth.token); + var authHeaders = {}; + applyAuthHeaders(authHeaders, auth); + for (var h in authHeaders) { + if (!authHeaders.hasOwnProperty(h)) continue; + if (!authHeaders[h]) continue; + conn.setRequestProperty(h, String(authHeaders[h])); } var status = conn.getResponseCode(); @@ -331,18 +524,30 @@ function fetchDirect(url, timeoutMs, auth) { } } -function resolveAuthHeader(auth) { - auth = auth || {}; - if (auth.basicUser && auth.basicPass) { - var raw = String(auth.basicUser) + ":" + String(auth.basicPass); - var bytes = new java.lang.String(raw).getBytes("UTF-8"); - var encoded = java.util.Base64.getEncoder().encodeToString(bytes); - return "Basic " + String(encoded); +function applyAuthHeaders(headers, authVariant) { + headers = headers || {}; + authVariant = authVariant || {}; + + var authorization = trim(authVariant.authorization); + var xAccessToken = trim(authVariant.xAccessToken); + + if (authorization) { + headers.Authorization = authorization; } - if (auth.token) { - return "Bearer " + String(auth.token); + if (xAccessToken) { + headers["x-access-token"] = xAccessToken; } - return ""; +} + +function buildBasicAuthHeader(basicUser, basicPass) { + var user = trim(basicUser); + var pass = trim(basicPass); + if (!user || !pass) return ""; + + var raw = String(user) + ":" + String(pass); + var bytes = new java.lang.String(raw).getBytes("UTF-8"); + var encoded = java.util.Base64.getEncoder().encodeToString(bytes); + return "Basic " + String(encoded); } function buildNfeItems(items) { @@ -354,7 +559,8 @@ function buildNfeItems(items) { out.push({ productId: trim(item.productId), quantity: toNumber(item.quantity || item.completeQuantity), - code: trim(item.code || item.sku || item.productCode || item.codigo) + code: trim(item.code || item.sku || item.productCode || item.codigo || item.productId), + unitValue: toNumber(item.unitValue || item.unit_value || item.value) }); } diff --git a/Transferência Ginseng/datasets/ds_rgb_products_v2.js b/Transferência Ginseng/datasets/ds_rgb_products_v2.js index cf0783c..d3bbc87 100644 --- a/Transferência Ginseng/datasets/ds_rgb_products_v2.js +++ b/Transferência Ginseng/datasets/ds_rgb_products_v2.js @@ -32,7 +32,7 @@ function createDataset(fields, constraints, sortFields) { var clientService = fluigAPI.getAuthorizeClientService(); var data = { companyId: String(getValue("WKCompany") || "1"), - serviceCode: "GINSENG APITESTE", + serviceCode: "GinsengAPI2", endpoint: "/dados_rgb_products", method: "get", timeoutService: "60000", diff --git a/Transferência Ginseng/forms/totvsflow_solicitacao_transferencia/.metadata b/Transferência Ginseng/forms/totvsflow_solicitacao_transferencia/.metadata index 0a702dd8c51b71cedd8d2835ba50b1563b9c1c4b..826ba41f2a3f2e76ec883ac163aa0767387b2c3f 100644 GIT binary patch delta 73 zcmX@gx`lOv50folNl{{6aawB8;Z=FbnTf@P40R0L3=FI63Q8C_0*dleN|O`wOBncJ T%2Gk9%8V*N>O>~bV$ucxyX_er delta 63 zcmdnOdX#m857T6ICV72s1_ma-f)WOffTH}A(&WVa5(dfO{G80>%#uVPFTSKGF|Rl+ RwJ0?&IWw`MU~(suHUMPH6#W1I diff --git a/Transferência Ginseng/forms/totvsflow_solicitacao_transferencia/events/validateForm.js b/Transferência Ginseng/forms/totvsflow_solicitacao_transferencia/events/validateForm.js index f99f2af..fdcf849 100644 --- a/Transferência Ginseng/forms/totvsflow_solicitacao_transferencia/events/validateForm.js +++ b/Transferência Ginseng/forms/totvsflow_solicitacao_transferencia/events/validateForm.js @@ -39,7 +39,7 @@ function validateForm(form) { } var qtdDivergenciasNfe = parseInt(String(form.getValue("qtdDivergenciasNfe") || "0"), 10); if (!isNaN(qtdDivergenciasNfe) && qtdDivergenciasNfe > 0) { - message += "Existem " + qtdDivergenciasNfe + " divergencia(s) entre a solicitacao e a NFe.
"; + message += "Existem " + qtdDivergenciasNfe + " divergencia(s) entre a base aprovada e a NFe.
"; hasErros = true; } if (form.getValue("usuarioEmissorNfe") == "") { diff --git a/Transferência Ginseng/forms/totvsflow_solicitacao_transferencia/script.js b/Transferência Ginseng/forms/totvsflow_solicitacao_transferencia/script.js index 535fd70..1adb2af 100644 --- a/Transferência Ginseng/forms/totvsflow_solicitacao_transferencia/script.js +++ b/Transferência Ginseng/forms/totvsflow_solicitacao_transferencia/script.js @@ -1,8 +1,34 @@ +var EXCEL_ATTACHMENT_DESCRIPTION = "Planilha de Itens Excel"; +var EXCEL_ATTACHMENT_INPUT_ID = "fnAnexo_PlanilhaItens"; + +function updateExcelImportUi(filename) { + var name = String(filename || "").trim(); + if (name) { + $("#nomeArquivoExcel").text("Arquivo selecionado: " + name); + $("#btnAdicionarExcel").hide(); + $("#btnRemoverExcel").show(); + return; + } + $("#nomeArquivoExcel").text("Nenhum arquivo selecionado"); + $("#btnAdicionarExcel").show(); + $("#btnRemoverExcel").hide(); +} + +function getExcelAttachmentField() { + var $field = $("#" + EXCEL_ATTACHMENT_INPUT_ID); + if ($field.length) return $field; + return $("#_" + EXCEL_ATTACHMENT_INPUT_ID); +} + $(document).ready(function () { // Quando clicar em "Adicionar arquivo" $('#btnAdicionarExcel').on('click', function () { - $('#excelUpload').click(); // aciona o input escondido + if (typeof uploadFile === "function" && getExcelAttachmentField().length) { + uploadFile(EXCEL_ATTACHMENT_DESCRIPTION, EXCEL_ATTACHMENT_INPUT_ID); + return; + } + $('#excelUpload').click(); // fallback: aciona o input escondido }); // Quando um arquivo for selecionado @@ -10,10 +36,7 @@ $(document).ready(function () { const file = this.files[0]; if (file) { - $('#nomeArquivoExcel').text('Arquivo selecionado: ' + file.name); - $('#btnAdicionarExcel').hide(); - $('#btnRemoverExcel').show(); - + updateExcelImportUi(file.name); carregarItensDoExcel('excelUpload'); // chama sua função } }); @@ -21,9 +44,17 @@ $(document).ready(function () { // Quando clicar em "Remover arquivo" $('#btnRemoverExcel').on('click', function () { $('#excelUpload').val(''); - $('#nomeArquivoExcel').text('Nenhum arquivo selecionado'); - $('#btnAdicionarExcel').show(); - $('#btnRemoverExcel').hide(); + updateExcelImportUi(""); + getExcelAttachmentField().val(""); + + try { + removeFile(EXCEL_ATTACHMENT_DESCRIPTION); + if (typeof setFilePhisicalName === "function") { + setFilePhisicalName(EXCEL_ATTACHMENT_INPUT_ID, ""); + } + } catch (e) { + console.error("Falha ao remover anexo da planilha:", e); + } }); $('#chaveNfe').on('input', function () { @@ -45,8 +76,28 @@ $(document).ready(function () { applySelectedMotoristaEntregaOption(); }); - $(document).on("input", "input[name^='quantidadeItem___']", function () { + $(document).on("input", "input[name^='quantidadeItem___'], input[name^='_quantidadeItem___'], input[name='quantidadeItem'], input[name='_quantidadeItem'], input[id^='quantidadeItem___'], input[id^='_quantidadeItem___'], #quantidadeItem, #_quantidadeItem", function () { + syncQuantidadeAprovadaFromSolicitada(this); processarConferenciaNfe(); + toggleQuantidadeAprovadaGestorByActivity($("#activity").val()); + }); + + $(document).on("input", ".input-qtd-aprov-gestor-view", function () { + var linha = String($(this).attr("data-linha") || ""); + var indice = String($(this).attr("data-indice") || ""); + if (!linha) return; + + var normalized = normalizeQuantidadeCampo($(this).val()); + $(this).val(normalized); + var $row = $("#tabelaAprovacaoGestorItensBody tr[data-linha='" + linha + "']"); + var $hidden = getCampoItem("quantidadeAprovadaGestor", indice, $row); + if (!$hidden.length) { + $hidden = getCampoItem("quantidadeAprovadaGestor", indice); + } + if ($hidden.length) { + $hidden.val(normalized); + } + atualizarStatusLinhaAprovacaoGestor(linha); }); var activity = String($("#activity").val() || ""); @@ -194,11 +245,17 @@ $(document).ready(function () { updateConferenciaNfeVisibility(activity); } + syncQuantidadeAprovadaAllRows(); + toggleQuantidadeAprovadaGestorByActivity(activity); + agendarRefreshTabelaAprovacao(activity); + updateExcelImportUi(getExcelAttachmentField().val()); + formatarMoedasTabela("preco___"); //formatarMoedasTabela("precoIndica___"); formatarMoedasTabela("ValorTotal"); displayBtnFiles(); + invisibleBtnUpload("fnAnexo_PlanilhaItens"); invisibleBtnUpload("fnAnexo_Nfe"); invisibleBtnUpload("fdAnexo_Coleta"); invisibleBtnUpload("fdAnexo_Entrega"); @@ -211,6 +268,20 @@ $(document).ready(function () { }); +function agendarRefreshTabelaAprovacao(activity) { + var state = String(activity || $("#activity").val() || ""); + var retries = [250, 800, 1800]; + + for (var i = 0; i < retries.length; i++) { + (function (delay) { + setTimeout(function () { + syncQuantidadeAprovadaAllRows(); + toggleQuantidadeAprovadaGestorByActivity(state); + }, delay); + })(retries[i]); + } +} + function applyTransferStatus(activity) { var current = String(activity || ""); var pills = $("#transferStatus .status-pill"); @@ -331,6 +402,296 @@ function getCurrentDate() { return currentDate; } +function normalizeQuantidadeCampo(value) { + var txt = String(value == null ? "" : value).trim(); + if (txt === "") return ""; + + txt = txt.replace(",", "."); + var n = parseFloat(txt); + if (isNaN(n) || n < 0) return ""; + + if (Math.floor(n) === n) return String(parseInt(n, 10)); + return String(n); +} + +function toNumberQuantidade(value) { + var txt = normalizeQuantidadeCampo(value); + if (txt === "") return NaN; + return parseFloat(txt); +} + +function getIndiceCampoPaiFilho($el) { + var raw = String($el.attr("name") || $el.attr("id") || ""); + if (raw.indexOf("___") < 0) return ""; + return String(raw.split("___")[1] || ""); +} + +function collectQuantidadeItemFields() { + var out = []; + var seen = {}; + var selector = [ + "input[name^='quantidadeItem___']", + "input[name^='_quantidadeItem___']", + "input[name='quantidadeItem']", + "input[name='_quantidadeItem']", + "input[id^='quantidadeItem___']", + "input[id^='_quantidadeItem___']", + "#quantidadeItem", + "#_quantidadeItem" + ].join(", "); + + $(selector).each(function () { + var $field = $(this); + var key = String($field.attr("name") || $field.attr("id") || ""); + if (!key) { + key = "anon_" + out.length; + } + if (seen[key]) return; + seen[key] = true; + out.push(this); + }); + + return out; +} + +function getCampoItem(baseName, indice, $scopeRow) { + var idx = String(indice == null ? "" : indice).trim(); + var selectors = []; + + if (idx !== "") { + selectors.push("#" + baseName + "___" + idx); + selectors.push("#_" + baseName + "___" + idx); + selectors.push("[name='" + baseName + "___" + idx + "']"); + selectors.push("[name='_" + baseName + "___" + idx + "']"); + } + + selectors.push("#" + baseName); + selectors.push("#_" + baseName); + selectors.push("[name='" + baseName + "']"); + selectors.push("[name='_" + baseName + "']"); + + for (var i = 0; i < selectors.length; i++) { + var selector = selectors[i]; + var $field = $(); + + if ($scopeRow && $scopeRow.length) { + $field = $scopeRow.find(selector).first(); + } + + if (!$field.length) { + $field = $(selector).first(); + } + + if ($field.length) return $field; + } + + return $(); +} + +function syncQuantidadeAprovadaFromSolicitada(inputSolicitada) { + var $solicitada = $(inputSolicitada); + var idx = getIndiceCampoPaiFilho($solicitada); + var $row = $solicitada.closest("tr"); + + var $aprovada = getCampoItem("quantidadeAprovadaGestor", idx, $row); + if (!$aprovada.length) return; + + var currentAprovada = normalizeQuantidadeCampo($aprovada.val()); + if (currentAprovada !== "") return; + + var solicitada = normalizeQuantidadeCampo($solicitada.val()); + if (solicitada !== "") { + $aprovada.val(solicitada); + } +} + +function syncQuantidadeAprovadaAllRows() { + $(collectQuantidadeItemFields()).each(function () { + syncQuantidadeAprovadaFromSolicitada(this); + }); +} + +function toggleQuantidadeAprovadaGestorByActivity(activity) { + var state = String(activity || ""); + var isGestorApproval = state === "4"; + var $tbody = $("#tabelaAprovacaoGestorItensBody"); + if (!$tbody.length) return; + + var html = []; + var rowsFound = 0; + + $(collectQuantidadeItemFields()).each(function (idx, el) { + var $qtdSolicitadaField = $(el); + var $row = $qtdSolicitadaField.closest("tr"); + var linha = getIndiceCampoPaiFilho($qtdSolicitadaField); + var linhaKey = linha !== "" ? linha : ("base_" + idx); + + var codigo = $.trim(String(getCampoItem("descricao", linha, $row).val() || "")); + var descricao = $.trim(String(getCampoItem("codigoItem", linha, $row).val() || "")); + var categoria = $.trim(String(getCampoItem("categoriaItem", linha, $row).val() || "")); + var qtdSolicitadaNorm = normalizeQuantidadeCampo($qtdSolicitadaField.val()); + + var hasData = qtdSolicitadaNorm !== "" || codigo !== "" || descricao !== "" || categoria !== ""; + if (!hasData) return; + + rowsFound++; + var qtdSolicitadaLabel = qtdSolicitadaNorm || "-"; + + var itemLabel = codigo || descricao || ("Item " + rowsFound); + if (descricao && descricao !== codigo) itemLabel += " - " + descricao; + if (categoria) itemLabel += " (" + categoria + ")"; + + var $hiddenAprovada = getCampoItem("quantidadeAprovadaGestor", linha, $row); + var qtdAprovadaAtual = normalizeQuantidadeCampo($hiddenAprovada.val()); + if (qtdAprovadaAtual === "" && qtdSolicitadaNorm !== "") { + qtdAprovadaAtual = qtdSolicitadaNorm; + $hiddenAprovada.val(qtdAprovadaAtual); + } + + var status = "Sem divergência"; + var statusClass = "label label-success"; + if (qtdSolicitadaNorm === "" || qtdAprovadaAtual === "") { + status = "Aprovado"; + statusClass = "label label-default"; + } else { + var nSolicitada = toNumberQuantidade(qtdSolicitadaNorm); + var nAprovada = toNumberQuantidade(qtdAprovadaAtual); + if (isNaN(nSolicitada) || isNaN(nAprovada)) { + status = "Inválido"; + statusClass = "label label-danger"; + } else if (nAprovada > nSolicitada) { + status = "Maior que solicitada"; + statusClass = "label label-danger"; + } else if (nAprovada === 0) { + status = "Sem estoque"; + statusClass = "label label-warning"; + } else if (nAprovada < nSolicitada) { + status = "Divergente"; + statusClass = "label label-warning"; + } + } + + var disabledAttr = isGestorApproval ? "" : " readonly disabled "; + + html.push( + "" + + "" + rowsFound + "" + + "" + escapeHtml(itemLabel) + "" + + "" + escapeHtml(qtdSolicitadaLabel) + "" + + "" + + "" + + "" + + "" + escapeHtml(status) + "" + + "" + ); + }); + + if (!rowsFound) { + html.push("Sem itens para validação."); + } + + $tbody.html(html.join("")); + $(".hint-qtd-aprov-gestor").toggle(isGestorApproval); +} + +function atualizarStatusLinhaAprovacaoGestor(linha) { + var rowSelector = "#tabelaAprovacaoGestorItensBody tr[data-linha='" + linha + "']"; + var $row = $(rowSelector); + if (!$row.length) return; + + var $status = $row.find(".status-aprov-gestor"); + if (!$status.length) return; + + var qtdSolicitada = toNumberQuantidade($row.attr("data-qtd-solicitada")); + var qtdAprovada = toNumberQuantidade($row.find(".input-qtd-aprov-gestor-view").val()); + + $status.removeClass("label-success label-warning label-danger label-default"); + + if (isNaN(qtdSolicitada) || isNaN(qtdAprovada)) { + $status.addClass("label-default").text("Pendente"); + return; + } + + if (qtdAprovada > qtdSolicitada) { + $status.addClass("label-danger").text("Maior que solicitada"); + return; + } + + if (qtdAprovada === 0) { + $status.addClass("label-warning").text("Sem estoque"); + return; + } + + if (qtdAprovada < qtdSolicitada) { + $status.addClass("label-warning").text("Divergente"); + return; + } + + $status.addClass("label-success").text("Sem divergência"); +} + +function validarQuantidadeAprovadaGestor() { + var divergencias = 0; + var itemContador = 0; + + $(collectQuantidadeItemFields()).each(function () { + var $qtdSolicitada = $(this); + var $row = $qtdSolicitada.closest("tr"); + var linha = getIndiceCampoPaiFilho($qtdSolicitada); + + var codigo = $.trim(String(getCampoItem("descricao", linha, $row).val() || "")); + var descricao = $.trim(String(getCampoItem("codigoItem", linha, $row).val() || "")); + var qtdSolicitadaRaw = $.trim(String($qtdSolicitada.val() || "")); + + if (qtdSolicitadaRaw === "" && !codigo && !descricao) { + return; + } + + itemContador++; + + var $qtdAprovada = getCampoItem("quantidadeAprovadaGestor", linha, $row); + if (!$qtdAprovada.length) return; + + var qtdSolicitada = toNumberQuantidade(qtdSolicitadaRaw); + if (isNaN(qtdSolicitada) || qtdSolicitada <= 0) { + $qtdSolicitada.closest("td, div").addClass("errorValidate"); + throw "Quantidade solicitada inválida no item " + itemContador + "."; + } + + var qtdAprovadaRaw = $.trim(String($qtdAprovada.val() || "")); + if (qtdAprovadaRaw === "") { + $qtdAprovada.val(normalizeQuantidadeCampo($qtdSolicitada.val())); + qtdAprovadaRaw = $.trim(String($qtdAprovada.val() || "")); + } + + var qtdAprovada = toNumberQuantidade(qtdAprovadaRaw); + if (isNaN(qtdAprovada) || qtdAprovada < 0) { + $qtdAprovada.closest("td, div").addClass("errorValidate"); + throw "Preencha a quantidade aprovada do item " + itemContador + " com valor maior ou igual a zero."; + } + + if (qtdAprovada > qtdSolicitada) { + $qtdAprovada.closest("td, div").addClass("errorValidate"); + throw "A quantidade aprovada do item " + itemContador + " não pode ser maior que a solicitada."; + } + + if (qtdAprovada !== qtdSolicitada) { + divergencias++; + } + }); + + $("#qtdDivergenciasGestor").val(String(divergencias)); + + if (divergencias > 0 && $.trim($("#justificativaDecisaoGestor").val()) === "") { + $("#justificativaDecisaoGestor").parent("div").addClass("errorValidate"); + throw "Informe a justificativa da decisão quando houver divergência de quantidade."; + } +} + function initMotoristaEntregaEscolha() { var escolha = String($("input[name='tipoMotoristaEntrega']:checked").val() || ""); if (!escolha) { @@ -607,6 +968,10 @@ function updateConferenciaNfeVisibility(activity) { } var ATTACHMENT_PLUGIN_CONFIG = { + fnAnexo_PlanilhaItens: { + filename: EXCEL_ATTACHMENT_DESCRIPTION, + accept: ".xlsx,.xls" + }, fnAnexo_Nfe: { filename: "Nota Fiscal", accept: ".pdf,.xml,image/*" @@ -666,6 +1031,10 @@ function initAttachmentPlugins() { } function resolveAttachmentFilename(inputId, fallback) { + if (inputId === EXCEL_ATTACHMENT_INPUT_ID) { + var numProcExcel = String($("#WKNumProces").val() || "").trim(); + return numProcExcel ? (EXCEL_ATTACHMENT_DESCRIPTION + " - " + numProcExcel) : EXCEL_ATTACHMENT_DESCRIPTION; + } if (inputId !== "fnAnexo_Nfe") return fallback; var solicitacao = String($("#WKNumProces").val() || "").trim(); if (!solicitacao) return "Nota Fiscal"; @@ -785,7 +1154,7 @@ function processarConferenciaNfe() { if (req.qty === 0 && nfe.qty > 0) { status = "Somente NFe"; } else if (nfe.qty === 0 && req.qty > 0) { - status = "Somente solicitacao"; + status = "Somente base"; } else if (Math.abs(req.qty - nfe.qty) > 0.00001) { status = "Quantidade divergente"; } @@ -821,20 +1190,21 @@ function parseItensNfeJson() { function buildSolicitacaoMap() { var out = {}; - $("input[name^='quantidadeItem___']").each(function () { - var name = $(this).attr("name") || ""; - var indice = name.split("___")[1]; - if (!indice) return; + $(collectQuantidadeItemFields()).each(function (i) { + var $qtd = $(this); + var $row = $qtd.closest("tr"); + var indice = getIndiceCampoPaiFilho($qtd); + var rowKey = indice || ("BASE_" + (i + 1)); - var qty = toFloatSafe($(this).val()); + var qty = getQuantidadeBaseConferencia($qtd, indice, $row); if (qty <= 0) return; - var productId = String($("#productIdItem___" + indice).val() || "").trim(); - var code = resolveSolicitacaoItemCode(indice, $(this)); - var descricao = String($("#codigoItem___" + indice).val() || "").trim(); + var productId = String(getCampoItem("productIdItem", indice, $row).val() || "").trim(); + var code = resolveSolicitacaoItemCode(indice, $qtd); + var descricao = String(getCampoItem("codigoItem", indice, $row).val() || "").trim(); - var key = resolveConferenciaKey(productId, code, "ROW:" + indice); - var label = productId ? ("PID " + productId) : (code || descricao || ("Linha " + indice)); + var key = resolveConferenciaKey(productId, code, "ROW:" + rowKey); + var label = productId ? ("PID " + productId) : (code || descricao || ("Linha " + rowKey)); if (!out[key]) { out[key] = { qty: 0, label: label }; @@ -844,6 +1214,21 @@ function buildSolicitacaoMap() { return out; } +function getQuantidadeBaseConferencia($qtdSolicitada, indice, $row) { + var qtdSolicitada = toFloatSafe($qtdSolicitada.val()); + var $qtdAprovada = getCampoItem("quantidadeAprovadaGestor", indice, $row); + + if ($qtdAprovada.length) { + var qtdAprovadaRaw = String($qtdAprovada.val() == null ? "" : $qtdAprovada.val()).trim(); + // Regra: se o gestor preencheu, a conferencia da NFe usa a quantidade aprovada (inclusive 0). + if (qtdAprovadaRaw !== "") { + return toFloatSafe(qtdAprovadaRaw); + } + } + + return qtdSolicitada; +} + function resolveSolicitacaoItemCode(indice, qtyInput) { var code = String($("#codigoProdutoItem___" + indice).val() || "").trim(); if (code) return normalizeCodigoComparacao(code); @@ -975,7 +1360,7 @@ function renderTabelaConferencia(rows, totalItens, divergencias, mensagem, tipo) var itemNfe = row.key; var qtdNfe = formatConferenciaNumero(row.nfeQty); - if (row.status === "Somente solicitacao") { + if (row.status === "Somente base") { itemNfe = "-"; qtdNfe = "0"; } else if (row.status === "Somente NFe") { @@ -1018,7 +1403,7 @@ function montarResumoDivergenciasConferencia(limit) { var itemNfe = String($(cols[2]).text() || "").trim(); var qtdNfe = String($(cols[3]).text() || "").trim(); - linhas.push("Item solicitado: " + itemSolicitado + " / Quantidade: " + qtdSolicitada + " | Item emitido na nota: " + itemNfe + " / Quantidade: " + qtdNfe); + linhas.push("Item base: " + itemSolicitado + " / Quantidade: " + qtdSolicitada + " | Item emitido na nota: " + itemNfe + " / Quantidade: " + qtdNfe); }); if (!linhas.length) return ""; @@ -1138,35 +1523,52 @@ var beforeSendValidate = function (numState, nextState) { } else if ($("#justificativa").val() == "") { $("#justificativa").parent("div").addClass("errorValidate"); throw "'Qual o motivo da transferência?' é obrigatório."; + } else if (String($("#analistasup").val() || "").trim() == "") { + $("#analistasup").parent("div").addClass("errorValidate"); + throw "'Analista solicitante' é obrigatório."; } else { - $("input[id^='quantidadeItem___']").each(function (index, value) { - var linha = $(value).attr("name").split("___")[1]; + $(collectQuantidadeItemFields()).each(function () { + var $qtd = $(this); + var $row = $qtd.closest("tr"); + var linha = getIndiceCampoPaiFilho($qtd); + if (!linha) return; - if ( - $("#descricao___" + linha).val() == "" && - $("#quantidadeItem___" + linha).val() == "" - ) { - remove_row(value); + var $descricao = getCampoItem("descricao", linha, $row); + var descricaoValor = $.trim(String($descricao.val() || "")); + var qtdValor = $.trim(String($qtd.val() || "")); + if (!descricaoValor && !qtdValor) { + var $btnRemove = $row.find("button[onclick*='remove_row']"); + if ($btnRemove.length) { + remove_row($btnRemove.get(0)); + } } }); - $("input[id^='quantidadeItem___']").each(function (index, value) { - var linha = $(value).attr("name").split("___")[1]; + var itensInformados = 0; + $(collectQuantidadeItemFields()).each(function () { + var $qtd = $(this); + var $row = $qtd.closest("tr"); + var linha = getIndiceCampoPaiFilho($qtd); + var $descricao = getCampoItem("descricao", linha, $row); - if ($("#descricao___" + linha).val() == "") { - $("#descricao___" + linha) - .parent("div") - .addClass("errorValidate"); - throw "Selecione o item " + (index + 1) + "."; - } else if ($("#quantidadeItem___" + linha).val() == "") { - $("#quantidadeItem___" + linha) - .parent("div") - .addClass("errorValidate"); - throw "Preencha a quantidade do item " + (index + 1) + "."; + var descricaoValor = $.trim(String($descricao.val() || "")); + var qtdValor = $.trim(String($qtd.val() || "")); + if (!descricaoValor && !qtdValor) return; + + itensInformados++; + + if (!descricaoValor) { + $descricao.parent("div").addClass("errorValidate"); + throw "Selecione o item " + itensInformados + "."; + } + + if (!qtdValor) { + $qtd.parent("div").addClass("errorValidate"); + throw "Preencha a quantidade do item " + itensInformados + "."; } }); - if ($("input[name^='quantidadeItem___']").length == 0) { + if (itensInformados === 0) { throw "Ao menos um item é necessário para iniciar a solicitação."; } } @@ -1176,6 +1578,8 @@ var beforeSendValidate = function (numState, nextState) { $("#justificativaDecisaoGestor").parent("div").addClass("errorValidate"); throw "'Justificativa da decisão' é obrigatória para reprovar."; } + } else { + validarQuantidadeAprovadaGestor(); } } else if (numState == 6) { var chaveNfe = normalizeNfeKey($("#chaveNfe").val()); @@ -1199,7 +1603,7 @@ var beforeSendValidate = function (numState, nextState) { var qtdDivergencias = parseInt($("#qtdDivergenciasNfe").val() || "0", 10); if (!isNaN(qtdDivergencias) && qtdDivergencias > 0) { var produtos = listarProdutosDivergentes(10); - var msg = "A nota tem produtos divergentes da solicitacao."; + var msg = "A nota tem produtos divergentes da base aprovada para emissão."; if (produtos) { msg += " Produtos: " + produtos + "."; } @@ -1247,6 +1651,7 @@ var beforeSendValidate = function (numState, nextState) { throw "'Data da entrega' é obrigatória."; } if (String($("#nomerecebedor").val() || "").trim() == "") { + $("#nomerecebedor").parent("div").addClass("errorValidate"); throw "'Nome de quem recebeu a mercadoria' é obrigatório."; } } else if (numState == 18) { @@ -1354,6 +1759,7 @@ function setSelectedZoomItem(selectedItem) { $("#productIdItem" + "___" + indice).val(itemProductId); $("#categoriaItem" + "___" + indice).val(itemCategoria); processarConferenciaNfe(); + toggleQuantidadeAprovadaGestorByActivity($("#activity").val()); } } @@ -1395,7 +1801,9 @@ function removedZoomItem(removedItem) { $("#productIdItem___" + linha[1]).val(""); $("#categoriaItem___" + linha[1]).val(""); $("#quantidadeItem___" + linha[1]).val(""); + $("#quantidadeAprovadaGestor___" + linha[1]).val(""); processarConferenciaNfe(); + toggleQuantidadeAprovadaGestorByActivity($("#activity").val()); } } @@ -1404,13 +1812,17 @@ function removedZoomItem(removedItem) { $("#codigoProdutoItem" + "___" + indice).val(""); $("#productIdItem" + "___" + indice).val(""); $("#categoriaItem" + "___" + indice).val(""); + $("#quantidadeAprovadaGestor" + "___" + indice).val(""); processarConferenciaNfe(); + toggleQuantidadeAprovadaGestorByActivity($("#activity").val()); } } function add_new_row(table) { var row = wdkAddChild(table); updt_line(); + toggleQuantidadeAprovadaGestorByActivity($("#activity").val()); + syncQuantidadeAprovadaAllRows(); } function updt_line() { @@ -1424,6 +1836,7 @@ function remove_row(element) { fnWdkRemoveChild(element); updt_line(); processarConferenciaNfe(); + toggleQuantidadeAprovadaGestorByActivity($("#activity").val()); } @@ -1820,6 +2233,10 @@ function getAllowedAttachmentInputs() { return []; } + if (activity === "0" || activity === "1") { + return ["fnAnexo_PlanilhaItens"]; + } + if (activity === "6") { return ["fnAnexo_Nfe"]; } @@ -1958,18 +2375,22 @@ function hasFileFluig(fileDescription){ //Quando o Fluig finalizar o upload e o anexo for escolhido window.parent.$("#ecm-navigation-inputFile-clone").on('change', function () { - const fileDescription = this.getAttribute("data-file-name-camera"); + const fileDescription = String(this.getAttribute("data-file-name-camera") || ""); const file = this.files[0]; + if (!file) return; - if (fileDescription === "Planilha de Itens Excel") { + if (fileDescription === EXCEL_ATTACHMENT_DESCRIPTION || fileDescription.indexOf(EXCEL_ATTACHMENT_DESCRIPTION + " - ") === 0) { // Copia o arquivo para o input técnico const dt = new DataTransfer(); dt.items.add(file); - document.getElementById("excelUpload").files = dt.files; + var excelInput = document.getElementById("excelUpload"); + if (!excelInput) return; + excelInput.files = dt.files; // Atualiza nome mostrado - $("#nomeArquivoExcel").text("Arquivo selecionado: " + file.name); + updateExcelImportUi(file.name); + getExcelAttachmentField().val(file.name); // Agora sim o arquivo está dentro do input e pode ser lido carregarItensDoExcel("excelUpload"); @@ -1978,5 +2399,9 @@ window.parent.$("#ecm-navigation-inputFile-clone").on('change', function () { - - +function getChaveNfeLimpa() { + return (document.getElementById("chaveNfe").value || "") + .replace(/\s+/g, "") // tira espaços + .replace(/\D/g, "") // garante só dígitos + .slice(0, 44); // limite oficial +} diff --git a/Transferência Ginseng/forms/totvsflow_solicitacao_transferencia/totvsflow_solicitacao_transferencia.html b/Transferência Ginseng/forms/totvsflow_solicitacao_transferencia/totvsflow_solicitacao_transferencia.html index d9a87af..bafdf34 100644 --- a/Transferência Ginseng/forms/totvsflow_solicitacao_transferencia/totvsflow_solicitacao_transferencia.html +++ b/Transferência Ginseng/forms/totvsflow_solicitacao_transferencia/totvsflow_solicitacao_transferencia.html @@ -315,6 +315,10 @@
+
+ + +
@@ -322,7 +326,7 @@

Itens da Transferência

- Colunas esperadas: codigo/codigoItem e quantidade/quantidadeItem. + Colunas esperadas: codigo e quantidade. Coloque a planilha no botão verde com seta para cima.
Nenhum arquivo selecionado +
+ + +
@@ -338,10 +346,10 @@ # - Código do item - Quantidade + Código do item + Quantidade Descrição - Categoria + Categoria @@ -364,6 +372,7 @@ + @@ -393,6 +402,37 @@

Aprovação Filial Emitente

+
+
+
+ Se a quantidade de algum item estiver diferente, preencha a coluna Qtd. aprovada gestor nesta validação. + Campo em branco = mesma quantidade solicitada. Valor 0 = sem estoque. +
+
+
+
+
+ +
+ + + + + + + + + + + + + + + +
#ItemQtd. solicitadaQtd. aprovada gestorStatus
Sem itens para validação.
+
+
+
@@ -432,7 +472,7 @@
- + Campo rastreável para consulta posterior da nota fiscal.
@@ -556,7 +596,7 @@
- +
@@ -565,7 +605,7 @@

Validação do Recebimento

-

Conferência da NFe x Solicitação

+

Conferência da NFe x Base Aprovada

Consulte a chave da NFe para gerar o confronto dos itens.
@@ -573,8 +613,8 @@ - - + + @@ -636,6 +676,7 @@ + diff --git a/Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/application.info b/Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/application.info new file mode 100644 index 0000000..0f74423 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/application.info @@ -0,0 +1,19 @@ +application.type=widget +application.code=wdtransf +application.title=wdtransf +application.description=wdtransf +application.fluig.version=null +application.category=SYSTEM +application.renderer=freemarker +developer.code=Andrey Cunha +developer.name=Andrey cunha +developer.url=http://www.fluig.com +application.uiwidget=true +application.mobileapp=false +application.version=${build.version}-${build.revision} +view.file=view.ftl +edit.file=edit.ftl +locale.file.base.name=wdtransf +application.resource.js.1=/resources/js/wdtransf.js +application.resource.css.2=/resources/css/wdtransf.css +hash=4a16315e9e66fa7d797b3f6b1fb365b69f9a4ce2 diff --git a/Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/edit.ftl b/Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/edit.ftl new file mode 100644 index 0000000..ce2d0ae --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/edit.ftl @@ -0,0 +1,5 @@ +
+ +
+ + diff --git a/Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/view.ftl b/Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/view.ftl new file mode 100644 index 0000000..195c487 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/view.ftl @@ -0,0 +1,97 @@ +
+
+
+
+

Monitor de Transferencias

+

Fonte: dataset transferenciav2

+
+ Atualizando... +
+ +
+
+ + +
+
+ + +
+
+ +
+
+ + + +
+
+
+
Total carregado
+
0
+
+
+
+
+
Em transito
+
0
+
+
+
+
+
Aguard. recebimento
+
0
+
+
+
+
+
Em problema
+
0
+
+
+
+
+
Finalizadas
+
0
+
+
+
+ +
+
Funil por etapa
+
+
+ +
+
Detalhes das transferencias
+
+
Item solicitadoQtd. solicitadaItem baseQtd. base Item emitido na NFe Qtd. emitida na NFe Status
+ + + + + + + + + + + + + + + +
ProcessoSolicitanteOrigemDestinoData aberturaAtividade
Carregando dados...
+
+
+
Exibindo 0 de 0
+
+ + Pagina 0 de 0 + +
+
+
+
+
+ diff --git a/Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/wdtransf.properties b/Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/wdtransf.properties new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/wdtransf.properties @@ -0,0 +1,2 @@ + + diff --git a/Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/wdtransf_en_US.properties b/Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/wdtransf_en_US.properties new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/wdtransf_en_US.properties @@ -0,0 +1,2 @@ + + diff --git a/Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/wdtransf_es.properties b/Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/wdtransf_es.properties new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/wdtransf_es.properties @@ -0,0 +1,2 @@ + + diff --git a/Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/wdtransf_pt_BR.properties b/Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/wdtransf_pt_BR.properties new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransf/src/main/resources/wdtransf_pt_BR.properties @@ -0,0 +1,2 @@ + + diff --git a/Transferência Ginseng/wcm/widget/wdtransf/src/main/webapp/WEB-INF/jboss-web.xml b/Transferência Ginseng/wcm/widget/wdtransf/src/main/webapp/WEB-INF/jboss-web.xml new file mode 100644 index 0000000..b9da1d9 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransf/src/main/webapp/WEB-INF/jboss-web.xml @@ -0,0 +1,5 @@ + + + /wdtransf + false + diff --git a/Transferência Ginseng/wcm/widget/wdtransf/src/main/webapp/WEB-INF/web.xml b/Transferência Ginseng/wcm/widget/wdtransf/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..6797e41 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransf/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,12 @@ + + + + + + 30 + + + diff --git a/Transferência Ginseng/wcm/widget/wdtransf/src/main/webapp/resources/css/wdtransf.css b/Transferência Ginseng/wcm/widget/wdtransf/src/main/webapp/resources/css/wdtransf.css new file mode 100644 index 0000000..1513620 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransf/src/main/webapp/resources/css/wdtransf.css @@ -0,0 +1,277 @@ +.wdtransf-widget .wdtransf-shell { + background: #f4f7fb; + border: 1px solid #d8e3ee; + border-radius: 12px; + padding: 14px; +} + +.wdtransf-widget .wdtransf-head { + display: flex; + justify-content: space-between; + align-items: flex-start; + gap: 12px; + margin-bottom: 12px; +} + +.wdtransf-widget .wdtransf-title { + margin: 0; + color: #0f4a77; + font-size: 22px; + font-weight: 700; +} + +.wdtransf-widget .wdtransf-subtitle { + margin: 4px 0 0; + color: #5a6c7f; + font-size: 12px; +} + +.wdtransf-widget .wdtransf-updated { + color: #4f6274; + font-size: 11px; + white-space: nowrap; +} + +.wdtransf-widget .wdtransf-label { + display: block; + margin-bottom: 4px; + color: #3e5a73; + font-size: 11px; + font-weight: 700; + text-transform: uppercase; +} + +.wdtransf-widget .wdtransf-filters { + margin-bottom: 10px; +} + +.wdtransf-widget .wdtransf-filters .form-control { + height: 36px; + border-radius: 8px; +} + +.wdtransf-widget .wdtransf-actions { + display: flex; + align-items: flex-end; + gap: 6px; + padding-top: 18px; +} + +.wdtransf-widget .wdtransf-message { + margin-bottom: 10px; + border-radius: 8px; + padding: 8px 10px; + font-size: 12px; + border: 1px solid transparent; +} + +.wdtransf-widget .wdtransf-message.is-info { + background: #e8f1fb; + color: #1d4f7d; + border-color: #bed6ee; +} + +.wdtransf-widget .wdtransf-message.is-success { + background: #e8f6ea; + color: #2b6a3b; + border-color: #bde0c3; +} + +.wdtransf-widget .wdtransf-message.is-warning { + background: #fff5e8; + color: #8f6219; + border-color: #f0d8b5; +} + +.wdtransf-widget .wdtransf-message.is-danger { + background: #fdecec; + color: #9a2f2f; + border-color: #e8b8b8; +} + +.wdtransf-widget .wdtransf-kpis { + margin-bottom: 12px; +} + +.wdtransf-widget .wdtransf-kpi { + background: #ffffff; + border: 1px solid #dbe6f1; + border-radius: 10px; + padding: 10px 12px; + min-height: 72px; +} + +.wdtransf-widget .wdtransf-kpi-label { + color: #4b647b; + font-size: 11px; + font-weight: 700; + text-transform: uppercase; +} + +.wdtransf-widget .wdtransf-kpi-value { + margin-top: 4px; + color: #0f4a77; + font-size: 24px; + font-weight: 700; + line-height: 1.1; +} + +.wdtransf-widget .wdtransf-panel { + background: #ffffff; + border: 1px solid #dbe6f1; + border-radius: 10px; + padding: 10px 12px; + margin-bottom: 12px; +} + +.wdtransf-widget .wdtransf-panel-title { + color: #1a537f; + font-size: 13px; + font-weight: 700; + margin-bottom: 8px; + text-transform: uppercase; + letter-spacing: 0.02em; +} + +.wdtransf-widget .wdtransf-stage-list { + display: flex; + flex-direction: column; + gap: 8px; +} + +.wdtransf-widget .wdtransf-stage-item { + display: grid; + grid-template-columns: 180px 1fr 62px; + gap: 8px; + align-items: center; +} + +.wdtransf-widget .wdtransf-stage-label { + color: #3f5d75; + font-size: 12px; + font-weight: 600; +} + +.wdtransf-widget .wdtransf-stage-bar-wrap { + background: #edf2f7; + border: 1px solid #d5e0eb; + border-radius: 999px; + height: 14px; + overflow: hidden; +} + +.wdtransf-widget .wdtransf-stage-bar { + background: linear-gradient(90deg, #2f84bf 0%, #0f5b91 100%); + height: 100%; + min-width: 0; +} + +.wdtransf-widget .wdtransf-stage-value { + text-align: right; + color: #244d70; + font-size: 12px; + font-weight: 700; +} + +.wdtransf-widget .wdtransf-table { + margin-bottom: 0; +} + +.wdtransf-widget .wdtransf-table thead th { + background: #eef4fb; + color: #3f5d75; + font-size: 11px; + border-bottom: 1px solid #d6e1ed; +} + +.wdtransf-widget .wdtransf-table tbody td { + font-size: 12px; + vertical-align: middle; +} + +.wdtransf-widget .wdtransf-pagination { + margin-top: 10px; + padding-top: 8px; + border-top: 1px solid #e1e9f2; + display: flex; + justify-content: space-between; + align-items: center; + gap: 10px; + flex-wrap: wrap; +} + +.wdtransf-widget .wdtransf-pagination-info { + color: #536b81; + font-size: 12px; +} + +.wdtransf-widget .wdtransf-pagination-controls { + display: flex; + align-items: center; + gap: 6px; +} + +.wdtransf-widget .wdtransf-page-status { + min-width: 110px; + text-align: center; + color: #2d5679; + font-size: 12px; + font-weight: 600; +} + +.wdtransf-widget .wdtransf-status { + display: inline-block; + padding: 2px 8px; + border-radius: 999px; + font-size: 11px; + font-weight: 700; + border: 1px solid transparent; +} + +.wdtransf-widget .wdtransf-status.is-progress { + color: #1d6095; + background: #e8f2fb; + border-color: #c3dbef; +} + +.wdtransf-widget .wdtransf-status.is-problem { + color: #a53333; + background: #feecec; + border-color: #efb9b9; +} + +.wdtransf-widget .wdtransf-status.is-done { + color: #2f6f41; + background: #e9f8ed; + border-color: #bfe4c7; +} + +.wdtransf-widget .wdtransf-status.is-cancel { + color: #8c651f; + background: #fff5e8; + border-color: #f0dcba; +} + +.wdtransf-widget.is-loading .wdtransf-panel, +.wdtransf-widget.is-loading .wdtransf-kpi { + opacity: 0.85; +} + +@media (max-width: 767px) { + .wdtransf-widget .wdtransf-head { + flex-direction: column; + align-items: flex-start; + } + + .wdtransf-widget .wdtransf-actions { + padding-top: 6px; + } + + .wdtransf-widget .wdtransf-stage-item { + grid-template-columns: 1fr; + } + + .wdtransf-widget .wdtransf-stage-value { + text-align: left; + } +} diff --git a/Transferência Ginseng/wcm/widget/wdtransf/src/main/webapp/resources/images/icon.png b/Transferência Ginseng/wcm/widget/wdtransf/src/main/webapp/resources/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..102160cdd282b0d62712b3c7e6bef86fcd538496 GIT binary patch literal 7845 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 D*xqLB literal 0 HcmV?d00001 diff --git a/Transferência Ginseng/wcm/widget/wdtransf/src/main/webapp/resources/js/wdtransf.js b/Transferência Ginseng/wcm/widget/wdtransf/src/main/webapp/resources/js/wdtransf.js new file mode 100644 index 0000000..a22e539 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransf/src/main/webapp/resources/js/wdtransf.js @@ -0,0 +1,570 @@ +var WdTransfWidget = SuperWidget.extend({ + datasetName: "transferenciav2", + pageSize: 10, + batchSize: 1000, + currentPage: 1, + rowsCache: [], + isIncrementalLoading: false, + loadOffset: 0, + batchToken: 0, + lastChunkMarker: "", + noPagingMode: false, + + stageDefs: [ + { label: "Solicitacao", activities: ["0", "1"] }, + { label: "Aprovacao", activities: ["4"] }, + { label: "Emissao NFe", activities: ["6"] }, + { label: "Coleta", activities: ["31"] }, + { label: "Entrega", activities: ["57"] }, + { label: "Recebimento", activities: ["18"] }, + { label: "Consultar Entrada", activities: ["99"] }, + { label: "Verificar Problema", activities: ["24", "104"] }, + { label: "Finalizada", activities: ["96", "101"] }, + { label: "Cancelada", activities: ["39", "60"] } + ], + + bindings: { + local: {}, + global: {} + }, + + init: function() { + this.$widget = $("#MyWidget_" + this.instanceId); + this.bindEvents(); + this.populateActivityFilter(); + this.currentPage = 1; + this.loadData(); + }, + + bindEvents: function() { + var self = this; + + self.$widget.on("click", "[data-action='reload']", function() { + self.currentPage = 1; + self.loadData(); + }); + + self.$widget.on("change", "[data-role='activityFilter']", function() { + self.currentPage = 1; + self.render(); + }); + + self.$widget.on("keypress", "[data-role='search']", function(e) { + if (e.which === 13) { + e.preventDefault(); + self.currentPage = 1; + self.render(); + } + }); + + self.$widget.on("click", "[data-action='prevPage']", function() { + self.setPage(self.currentPage - 1); + }); + + self.$widget.on("click", "[data-action='nextPage']", function() { + self.setPage(self.currentPage + 1); + }); + }, + + populateActivityFilter: function() { + var added = {}; + var options = [""]; + + for (var i = 0; i < this.stageDefs.length; i++) { + var stage = this.stageDefs[i]; + for (var j = 0; j < stage.activities.length; j++) { + var code = String(stage.activities[j]); + if (added[code]) continue; + added[code] = true; + options.push( + "" + ); + } + } + + this.$widget.find("[data-role='activityFilter']").html(options.join("")); + }, + + loadData: function() { + this.batchToken++; + this.rowsCache = []; + this.currentPage = 1; + this.loadOffset = 0; + this.lastChunkMarker = ""; + this.noPagingMode = false; + this.isIncrementalLoading = true; + + this.setLoading(true); + this.setMessage("Carregando solicitacoes...", "info"); + this.render(); + this.loadNextBatch(this.batchToken); + }, + + loadNextBatch: function(token) { + var self = this; + if (token !== self.batchToken) return; + + self.fetchDatasetBatch(self.batchSize, self.loadOffset, function(err, rows) { + if (token !== self.batchToken) return; + + if (err) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Erro ao carregar dataset: " + err, "danger"); + return; + } + + rows = rows || []; + if (!rows.length) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Dados carregados: " + self.formatNumber(self.rowsCache.length) + " registro(s).", "success"); + return; + } + + var chunkMarker = self.buildChunkMarker(rows[0]); + if (self.loadOffset > 0 && chunkMarker && chunkMarker === self.lastChunkMarker) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Paginacao do dataset nao evoluiu (sqlStart/offset). Verifique suporte no ambiente.", "warning"); + return; + } + + self.lastChunkMarker = chunkMarker; + self.rowsCache = self.rowsCache.concat(rows); + self.loadOffset += rows.length; + self.render(); + self.setMessage("Carregando solicitacoes... " + self.formatNumber(self.rowsCache.length) + " registro(s).", "info"); + + if (self.noPagingMode) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Dados carregados: " + self.formatNumber(self.rowsCache.length) + " registro(s).", "success"); + return; + } + + if (rows.length < self.batchSize) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Dados carregados: " + self.formatNumber(self.rowsCache.length) + " registro(s).", "success"); + return; + } + + setTimeout(function() { + self.loadNextBatch(token); + }, 0); + }); + }, + + fetchDatasetBatch: function(limit, offset, callback) { + var self = this; + if (self.noPagingMode && offset > 0) { + callback(null, []); + return; + } + + try { + if (typeof DatasetFactory !== "undefined" && typeof DatasetFactory.getDataset === "function" && + typeof ConstraintType !== "undefined" && typeof DatasetFactory.createConstraint === "function") { + var constraints = self.noPagingMode ? null : self.buildFactoryPagingConstraints(limit, offset); + var ds = DatasetFactory.getDataset(self.datasetName, null, constraints, null); + var rows = (ds && ds.values) ? ds.values : []; + + // Fallback para datasets (card/form) que nao suportam sqlLimit/sqlStart como MUST. + if (!rows.length && offset === 0 && !self.noPagingMode) { + var dsNoPaging = DatasetFactory.getDataset(self.datasetName, null, null, null); + var rowsNoPaging = (dsNoPaging && dsNoPaging.values) ? dsNoPaging.values : []; + if (rowsNoPaging.length) { + self.noPagingMode = true; + callback(null, rowsNoPaging); + return; + } + } + + callback(null, rows); + return; + } + } catch (e) { + // fallback REST + } + + this.fetchDatasetBatchViaRest(limit, offset, callback); + }, + + buildFactoryPagingConstraints: function(limit, offset) { + var constraints = []; + constraints.push(DatasetFactory.createConstraint("sqlLimit", String(limit), String(limit), ConstraintType.MUST)); + constraints.push(DatasetFactory.createConstraint("sqlStart", String(offset), String(offset), ConstraintType.MUST)); + constraints.push(DatasetFactory.createConstraint("offset", String(offset), String(offset), ConstraintType.MUST)); + constraints.push(DatasetFactory.createConstraint("sqlOffset", String(offset), String(offset), ConstraintType.MUST)); + return constraints; + }, + + fetchDatasetBatchViaRest: function(limit, offset, callback) { + var self = this; + if (self.noPagingMode && offset > 0) { + callback(null, []); + return; + } + + function readRows(resp) { + if (resp && resp.content && resp.content.values) return resp.content.values; + if (resp && resp.values) return resp.values; + return []; + } + + function request(usePaging, done) { + var constraints = usePaging ? self.buildRestPagingConstraints(limit, offset) : []; + $.ajax({ + url: "/api/public/ecm/dataset/datasets", + type: "POST", + contentType: "application/json; charset=UTF-8", + dataType: "json", + data: JSON.stringify({ + name: self.datasetName, + fields: [], + constraints: constraints, + order: [] + }) + }).done(function(resp) { + done(null, readRows(resp) || []); + }).fail(function(xhr) { + var detail = xhr && (xhr.responseText || xhr.statusText || xhr.status); + done(detail || "falha na API REST de datasets", []); + }); + } + + request(!self.noPagingMode, function(err, rows) { + if (err) { + callback(err); + return; + } + + if (!rows.length && offset === 0 && !self.noPagingMode) { + request(false, function(err2, rows2) { + if (err2) { + callback(err2); + return; + } + if (rows2.length) { + self.noPagingMode = true; + } + callback(null, rows2 || []); + }); + return; + } + + callback(null, rows || []); + }); + }, + + buildRestPagingConstraints: function(limit, offset) { + return [ + { _field: "sqlLimit", _initialValue: String(limit), _finalValue: String(limit), _type: 1 }, + { _field: "sqlStart", _initialValue: String(offset), _finalValue: String(offset), _type: 1 }, + { _field: "offset", _initialValue: String(offset), _finalValue: String(offset), _type: 1 }, + { _field: "sqlOffset", _initialValue: String(offset), _finalValue: String(offset), _type: 1 } + ]; + }, + + buildChunkMarker: function(row) { + if (!row) return ""; + var id = this.pick(row, ["metadata#id", "id", "WKNumProces", "processInstanceId"]); + var state = this.pick(row, ["activity", "WKNumState", "state"]); + return (id || "-") + "|" + (state || "-"); + }, + + render: function() { + var rows = this.getFilteredRows(this.rowsCache); + this.renderKpis(rows); + this.renderStageBars(rows); + this.renderTable(rows); + this.renderUpdatedAt(); + }, + + getFilteredRows: function(rows) { + var out = []; + var search = $.trim(String(this.$widget.find("[data-role='search']").val() || "")).toLowerCase(); + var activityFilter = $.trim(String(this.$widget.find("[data-role='activityFilter']").val() || "")); + + for (var i = 0; i < (rows || []).length; i++) { + var row = rows[i] || {}; + var activityCode = this.getActivityCode(row); + + if (activityFilter && activityCode !== activityFilter) { + continue; + } + + if (search) { + var base = this.extractRow(row); + var blob = [ + base.processo, + base.solicitante, + base.origem, + base.destino, + base.dataAbertura, + base.atividadeCode + ].join(" ").toLowerCase(); + + if (blob.indexOf(search) === -1) { + continue; + } + } + + out.push(row); + } + + return out; + }, + + renderKpis: function(rows) { + var total = rows.length; + var transit = this.countByActivities(rows, ["31", "57"]); + var pendingReceipt = this.countByActivities(rows, ["18"]); + var problem = this.countByActivities(rows, ["24", "104"]); + var done = this.countByActivities(rows, ["96", "101"]); + + this.$widget.find("[data-role='kpiTotal']").text(this.formatNumber(total)); + this.$widget.find("[data-role='kpiTransit']").text(this.formatNumber(transit)); + this.$widget.find("[data-role='kpiPendingReceipt']").text(this.formatNumber(pendingReceipt)); + this.$widget.find("[data-role='kpiProblem']").text(this.formatNumber(problem)); + this.$widget.find("[data-role='kpiDone']").text(this.formatNumber(done)); + }, + + renderStageBars: function(rows) { + var total = rows.length; + var html = []; + + for (var i = 0; i < this.stageDefs.length; i++) { + var stage = this.stageDefs[i]; + var count = this.countByActivities(rows, stage.activities); + var percent = total > 0 ? ((count * 100) / total) : 0; + + html.push( + "
" + + "" + this.escapeHtml(stage.label) + "" + + "
" + + "
" + + "
" + + "" + this.formatNumber(count) + "" + + "
" + ); + } + + this.$widget.find("[data-role='stageBars']").html(html.join("")); + }, + + renderTable: function(rows) { + var html = []; + var totalRows = rows.length; + var totalPages = totalRows > 0 ? Math.ceil(totalRows / this.pageSize) : 1; + + if (this.currentPage > totalPages) { + this.currentPage = totalPages; + } + if (this.currentPage < 1) { + this.currentPage = 1; + } + + var startIndex = totalRows > 0 ? ((this.currentPage - 1) * this.pageSize) : 0; + var endIndex = totalRows > 0 ? Math.min(startIndex + this.pageSize, totalRows) : 0; + var pageRows = rows.slice(startIndex, endIndex); + + if (!totalRows) { + var emptyMsg = this.isIncrementalLoading ? + "Carregando dados..." : + "Nenhum registro para os filtros informados."; + html.push("" + this.escapeHtml(emptyMsg) + ""); + this.$widget.find("[data-role='tableBody']").html(html.join("")); + this.renderPagination(0, 0, 0, 0); + return; + } + + for (var i = 0; i < pageRows.length; i++) { + var base = this.extractRow(pageRows[i]); + html.push( + "" + + "" + this.escapeHtml(base.processo) + "" + + "" + this.escapeHtml(base.solicitante) + "" + + "" + this.escapeHtml(base.origem) + "" + + "" + this.escapeHtml(base.destino) + "" + + "" + this.escapeHtml(base.dataAbertura) + "" + + "" + this.escapeHtml(base.atividadeCode) + "" + + "" + ); + } + + this.$widget.find("[data-role='tableBody']").html(html.join("")); + this.renderPagination(totalRows, totalPages, startIndex + 1, endIndex); + }, + + renderPagination: function(totalRows, totalPages, firstRow, lastRow) { + var info = "Exibindo " + this.formatNumber(firstRow) + "-" + this.formatNumber(lastRow) + + " de " + this.formatNumber(totalRows); + if (totalRows === 0) { + info = "Exibindo 0-0 de 0"; + } + + this.$widget.find("[data-role='pageInfo']").text(info); + this.$widget.find("[data-role='pageStatus']").text( + "Pagina " + this.formatNumber(this.currentPage) + " de " + + this.formatNumber(totalPages || 1) + + (this.isIncrementalLoading ? " (carregando...)" : "") + ); + + var disablePrev = (this.currentPage <= 1 || totalRows === 0); + var disableNext = (this.currentPage >= (totalPages || 1) && !this.isIncrementalLoading) || totalRows === 0; + this.$widget.find("[data-action='prevPage']").prop("disabled", disablePrev); + this.$widget.find("[data-action='nextPage']").prop("disabled", disableNext); + }, + + setPage: function(page) { + var n = parseInt(page, 10); + if (isNaN(n)) return; + if (n < 1) n = 1; + var totalPages = Math.ceil(this.getFilteredRows(this.rowsCache).length / this.pageSize) || 1; + if (n > totalPages) { + if (this.isIncrementalLoading) { + this.setMessage("Aguarde: ainda carregando mais registros...", "info"); + return; + } + n = totalPages; + } + this.currentPage = n; + this.render(); + }, + + extractRow: function(row) { + var activityCode = this.getActivityCode(row); + var solicitante = this.pick(row, ["requesterName"]) || "-"; + var origem = this.pick(row, ["ufOrigem"]) || "-"; + var destino = this.pick(row, ["ufDestino"]) || "-"; + return { + processo: this.pick(row, ["WKNumProces"]) || "-", + solicitante: solicitante, + origem: origem, + destino: destino, + dataAbertura: this.formatDate(this.pick(row, ["dataAbertura"])) || "-", + atividadeCode: activityCode || "-", + atividadeLabel: this.getActivityLabel(activityCode) + }; + }, + + getActivityCode: function(row) { + var raw = this.pick(row, ["Activity", "activity", "WKNumState", "state", "statusAtividade"]); + var text = $.trim(String(raw || "")); + if (!text) return ""; + var parsed = parseInt(text, 10); + return isNaN(parsed) ? text : String(parsed); + }, + + getActivityLabel: function(code) { + var map = { + "0": "Solicitacao", + "1": "Solicitacao", + "4": "Aprovacao", + "6": "Emissao NFe", + "18": "Recebimento", + "24": "Verificar Problema", + "31": "Coleta", + "39": "Cancelada", + "57": "Entrega", + "60": "Cancelada", + "99": "Consultar Entrada", + "96": "Finalizada", + "101": "Finalizada", + "104": "Problema de Lancamento" + }; + + return map[String(code || "")] || "Nao mapeada"; + }, + + countByActivities: function(rows, activities) { + var set = {}; + for (var i = 0; i < activities.length; i++) { + set[String(activities[i])] = true; + } + + var count = 0; + for (var j = 0; j < rows.length; j++) { + var code = this.getActivityCode(rows[j]); + if (set[String(code)]) count++; + } + return count; + }, + + pick: function(row, keys) { + for (var i = 0; i < keys.length; i++) { + var value = row[keys[i]]; + if (value !== null && value !== undefined && String(value).trim() !== "") { + return String(value).trim(); + } + } + return ""; + }, + + formatDate: function(value) { + var text = $.trim(String(value || "")); + if (!text) return ""; + + var iso = /^(\d{4})-(\d{2})-(\d{2})/.exec(text); + if (iso) { + return iso[3] + "/" + iso[2] + "/" + iso[1]; + } + return text; + }, + + formatNumber: function(value) { + var n = Number(value || 0); + if (isNaN(n)) return "0"; + return n.toLocaleString("pt-BR"); + }, + + renderUpdatedAt: function() { + var now = new Date(); + var stamp = now.toLocaleDateString("pt-BR") + " " + now.toLocaleTimeString("pt-BR"); + this.$widget.find("[data-role='updatedAt']").text("Atualizado em: " + stamp); + }, + + setLoading: function(isLoading) { + this.$widget.toggleClass("is-loading", !!isLoading); + if (isLoading) { + this.setMessage("Carregando dados...", "info"); + } + }, + + setMessage: function(text, type) { + var $msg = this.$widget.find("[data-role='message']"); + $msg.removeClass("is-info is-success is-warning is-danger"); + + if (!text) { + $msg.hide().text(""); + return; + } + + var className = "is-info"; + if (type === "success") className = "is-success"; + if (type === "warning") className = "is-warning"; + if (type === "danger") className = "is-danger"; + + $msg.addClass(className).text(text).show(); + }, + + escapeHtml: function(text) { + return String(text == null ? "" : text) + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """) + .replace(/'/g, "'"); + } +}); + + diff --git a/Transferência Ginseng/wcm/widget/wdtransf/target/wdtransf.war b/Transferência Ginseng/wcm/widget/wdtransf/target/wdtransf.war new file mode 100644 index 0000000000000000000000000000000000000000..4a9e6a519b3b550fd88d2a0acf145555266d70c4 GIT binary patch literal 16612 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 literal 0 HcmV?d00001 diff --git a/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/application.info b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/application.info new file mode 100644 index 0000000..731ef14 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/application.info @@ -0,0 +1,19 @@ +application.type=widget +application.code=wdtransfanalista +application.title=wdtransfanalista +application.description=wdtransfanalista +application.fluig.version=null +application.category=SYSTEM +application.renderer=freemarker +developer.code=Andrey Cunha +developer.name=Andrey Cunha +developer.url=http://www.fluig.com +application.uiwidget=true +application.mobileapp=false +application.version=${build.version}-${build.revision} +view.file=view.ftl +edit.file=edit.ftl +locale.file.base.name=wdtransfanalista +application.resource.js.1=/resources/js/wdtransfanalista.js +application.resource.css.2=/resources/css/wdtransfanalista.css +hash=4a16315e9e66fa7d797b3f6b1fb365b69f9a4ce2 diff --git a/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/edit.ftl b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/edit.ftl new file mode 100644 index 0000000..8bbc59a --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/edit.ftl @@ -0,0 +1,5 @@ +

+ +
+ + diff --git a/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/view.ftl b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/view.ftl new file mode 100644 index 0000000..9867032 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/view.ftl @@ -0,0 +1,11 @@ +
+
+
+

Transferencias por Analista

+
+
Carregando dados...
+
+
+
+
+ diff --git a/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/wdtransfanalista.properties b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/wdtransfanalista.properties new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/wdtransfanalista.properties @@ -0,0 +1,2 @@ + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/wdtransfanalista_en_US.properties b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/wdtransfanalista_en_US.properties new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/wdtransfanalista_en_US.properties @@ -0,0 +1,2 @@ + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/wdtransfanalista_es.properties b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/wdtransfanalista_es.properties new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/wdtransfanalista_es.properties @@ -0,0 +1,2 @@ + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/wdtransfanalista_pt_BR.properties b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/wdtransfanalista_pt_BR.properties new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/resources/wdtransfanalista_pt_BR.properties @@ -0,0 +1,2 @@ + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/webapp/WEB-INF/jboss-web.xml b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/webapp/WEB-INF/jboss-web.xml new file mode 100644 index 0000000..0503b47 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/webapp/WEB-INF/jboss-web.xml @@ -0,0 +1,5 @@ + + + /wdtransfanalista + false + diff --git a/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/webapp/WEB-INF/web.xml b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..6797e41 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,12 @@ + + + + + + 30 + + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/webapp/resources/css/wdtransfanalista.css b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/webapp/resources/css/wdtransfanalista.css new file mode 100644 index 0000000..3bddf18 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/webapp/resources/css/wdtransfanalista.css @@ -0,0 +1,181 @@ +.wdtransf-agg-widget .wdtransf-agg-shell { + background: #f4f7fb; + border: 1px solid #d8e3ee; + border-radius: 12px; + padding: 8px; +} + +.wdtransf-agg-widget .wdtransf-agg-chart-wrap { + background: #e8ecf1; + border: 1px solid #d3dde8; + border-radius: 16px; + padding: 10px 12px; +} + +.wdtransf-agg-widget .wdtransf-agg-title { + margin: 0 0 8px; + color: #00507c; + font-size: 18px; + font-weight: 700; + text-align: center; +} + +.wdtransf-agg-widget .wdtransf-agg-chart { + display: flex; + flex-direction: column; + gap: 6px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-legend { + margin-bottom: 4px; + color: #486680; + font-size: 12px; + font-weight: 600; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-legend-item { + display: inline-flex; + align-items: center; + gap: 6px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-legend-swatch { + display: inline-block; + width: 16px; + height: 10px; + border-radius: 2px; + background: #0f678a; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart { + display: grid; + grid-template-columns: 36px 1fr; + gap: 8px; + align-items: end; + min-height: 195px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-axis { + height: 160px; + display: flex; + flex-direction: column; + justify-content: space-between; + color: #57728b; + font-size: 11px; + text-align: right; + padding-right: 2px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-scroll { + overflow-x: auto; + overflow-y: hidden; + padding-bottom: 2px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-plot { + position: relative; + height: 160px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-grid { + position: absolute; + left: 0; + right: 0; + border-top: 1px solid #ced9e4; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-grid.grid-100 { top: 0; } +.wdtransf-agg-widget .wdtransf-agg-vchart-grid.grid-50 { top: 50%; } +.wdtransf-agg-widget .wdtransf-agg-vchart-grid.grid-0 { bottom: 0; } + +.wdtransf-agg-widget .wdtransf-agg-vchart-bars { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + display: flex; + align-items: flex-end; + gap: 10px; + padding: 0 6px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-item { + width: 64px; + display: flex; + flex-direction: column; + align-items: center; + gap: 4px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-value { + color: #1e4e71; + font-size: 11px; + font-weight: 700; + line-height: 1; + min-height: 12px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-bar-wrap { + width: 30px; + height: 120px; + display: flex; + align-items: flex-end; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-bar { + width: 100%; + border-radius: 4px 4px 0 0; + background: #0f678a; + min-height: 2px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-label { + color: #3c5c75; + font-size: 11px; + font-weight: 600; + text-align: center; + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + transform: rotate(-12deg); + transform-origin: center top; +} + +.wdtransf-agg-widget .wdtransf-agg-chart-empty { + color: #4f6880; + font-size: 12px; + padding: 8px 0; +} + +@media (max-width: 767px) { + .wdtransf-agg-widget .wdtransf-agg-chart-wrap { + padding: 8px; + } + + .wdtransf-agg-widget .wdtransf-agg-title { + font-size: 16px; + } + + .wdtransf-agg-widget .wdtransf-agg-vchart { + grid-template-columns: 1fr; + min-height: 170px; + } + + .wdtransf-agg-widget .wdtransf-agg-vchart-axis { + display: none; + } + + .wdtransf-agg-widget .wdtransf-agg-vchart-plot { + height: 145px; + } + + .wdtransf-agg-widget .wdtransf-agg-vchart-bar-wrap { + height: 108px; + } + + .wdtransf-agg-widget .wdtransf-agg-vchart-label { + transform: none; + } +} diff --git a/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/webapp/resources/images/icon.png b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/webapp/resources/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..102160cdd282b0d62712b3c7e6bef86fcd538496 GIT binary patch literal 7845 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 D*xqLB literal 0 HcmV?d00001 diff --git a/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/webapp/resources/js/wdtransfanalista.js b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/webapp/resources/js/wdtransfanalista.js new file mode 100644 index 0000000..bf8b3b9 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfanalista/src/main/webapp/resources/js/wdtransfanalista.js @@ -0,0 +1,446 @@ +var WdTransfAnalistaWidget = SuperWidget.extend({ + datasetName: "transferenciav2", + batchSize: 1000, + rowsCache: [], + isIncrementalLoading: false, + loadOffset: 0, + batchToken: 0, + lastChunkMarker: "", + noPagingMode: false, + groupKeyCandidates: ["requesterName", "solicitante", "currentUserName", "requesterId", "nome"], + emptyLabel: "Nao informado", + + bindings: { + local: {}, + global: {} + }, + + init: function() { + this.$widget = $("#MyWidget_" + this.instanceId); + this.bindEvents(); + this.loadData(); + }, + + bindEvents: function() { + var self = this; + + self.$widget.on("click", "[data-action='reload']", function() { + self.loadData(); + }); + + self.$widget.on("change", "[data-role='topN']", function() { + self.render(); + }); + + self.$widget.on("input", "[data-role='search']", function() { + self.render(); + }); + + self.$widget.on("keypress", "[data-role='search']", function(e) { + if (e.which === 13) { + e.preventDefault(); + self.render(); + } + }); + }, + + loadData: function() { + this.batchToken++; + this.rowsCache = []; + this.loadOffset = 0; + this.lastChunkMarker = ""; + this.noPagingMode = false; + this.isIncrementalLoading = true; + + this.setLoading(true); + this.setMessage("Carregando solicitacoes...", "info"); + this.render(); + this.loadNextBatch(this.batchToken); + }, + + loadNextBatch: function(token) { + var self = this; + if (token !== self.batchToken) return; + + self.fetchDatasetBatch(self.batchSize, self.loadOffset, function(err, rows) { + if (token !== self.batchToken) return; + + if (err) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Erro ao carregar dataset: " + err, "danger"); + return; + } + + rows = rows || []; + if (!rows.length) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Dados carregados: " + self.formatNumber(self.rowsCache.length) + " registro(s).", "success"); + return; + } + + var chunkMarker = self.buildChunkMarker(rows[0]); + if (self.loadOffset > 0 && chunkMarker && chunkMarker === self.lastChunkMarker) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Paginacao do dataset nao evoluiu (sqlStart/offset). Verifique suporte no ambiente.", "warning"); + return; + } + + self.lastChunkMarker = chunkMarker; + self.rowsCache = self.rowsCache.concat(rows); + self.loadOffset += rows.length; + self.render(); + self.setMessage("Carregando solicitacoes... " + self.formatNumber(self.rowsCache.length) + " registro(s).", "info"); + + if (self.noPagingMode) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Dados carregados: " + self.formatNumber(self.rowsCache.length) + " registro(s).", "success"); + return; + } + + if (rows.length < self.batchSize) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Dados carregados: " + self.formatNumber(self.rowsCache.length) + " registro(s).", "success"); + return; + } + + setTimeout(function() { + self.loadNextBatch(token); + }, 0); + }); + }, + + fetchDatasetBatch: function(limit, offset, callback) { + var self = this; + if (self.noPagingMode && offset > 0) { + callback(null, []); + return; + } + + try { + if (typeof DatasetFactory !== "undefined" && typeof DatasetFactory.getDataset === "function" && + typeof ConstraintType !== "undefined" && typeof DatasetFactory.createConstraint === "function") { + var constraints = self.noPagingMode ? null : self.buildFactoryPagingConstraints(limit, offset); + var ds = DatasetFactory.getDataset(self.datasetName, null, constraints, null); + var rows = (ds && ds.values) ? ds.values : []; + + if (!rows.length && offset === 0 && !self.noPagingMode) { + var dsNoPaging = DatasetFactory.getDataset(self.datasetName, null, null, null); + var rowsNoPaging = (dsNoPaging && dsNoPaging.values) ? dsNoPaging.values : []; + if (rowsNoPaging.length) { + self.noPagingMode = true; + callback(null, rowsNoPaging); + return; + } + } + + callback(null, rows); + return; + } + } catch (e) { + // fallback REST + } + + this.fetchDatasetBatchViaRest(limit, offset, callback); + }, + + buildFactoryPagingConstraints: function(limit, offset) { + var constraints = []; + constraints.push(DatasetFactory.createConstraint("sqlLimit", String(limit), String(limit), ConstraintType.MUST)); + constraints.push(DatasetFactory.createConstraint("sqlStart", String(offset), String(offset), ConstraintType.MUST)); + constraints.push(DatasetFactory.createConstraint("offset", String(offset), String(offset), ConstraintType.MUST)); + constraints.push(DatasetFactory.createConstraint("sqlOffset", String(offset), String(offset), ConstraintType.MUST)); + return constraints; + }, + + fetchDatasetBatchViaRest: function(limit, offset, callback) { + var self = this; + if (self.noPagingMode && offset > 0) { + callback(null, []); + return; + } + + function readRows(resp) { + if (resp && resp.content && resp.content.values) return resp.content.values; + if (resp && resp.values) return resp.values; + return []; + } + + function request(usePaging, done) { + var constraints = usePaging ? self.buildRestPagingConstraints(limit, offset) : []; + $.ajax({ + url: "/api/public/ecm/dataset/datasets", + type: "POST", + contentType: "application/json; charset=UTF-8", + dataType: "json", + data: JSON.stringify({ + name: self.datasetName, + fields: [], + constraints: constraints, + order: [] + }) + }).done(function(resp) { + done(null, readRows(resp) || []); + }).fail(function(xhr) { + var detail = xhr && (xhr.responseText || xhr.statusText || xhr.status); + done(detail || "falha na API REST de datasets", []); + }); + } + + request(!self.noPagingMode, function(err, rows) { + if (err) { + callback(err); + return; + } + + if (!rows.length && offset === 0 && !self.noPagingMode) { + request(false, function(err2, rows2) { + if (err2) { + callback(err2); + return; + } + if (rows2.length) { + self.noPagingMode = true; + } + callback(null, rows2 || []); + }); + return; + } + + callback(null, rows || []); + }); + }, + + buildRestPagingConstraints: function(limit, offset) { + return [ + { _field: "sqlLimit", _initialValue: String(limit), _finalValue: String(limit), _type: 1 }, + { _field: "sqlStart", _initialValue: String(offset), _finalValue: String(offset), _type: 1 }, + { _field: "offset", _initialValue: String(offset), _finalValue: String(offset), _type: 1 }, + { _field: "sqlOffset", _initialValue: String(offset), _finalValue: String(offset), _type: 1 } + ]; + }, + + buildChunkMarker: function(row) { + if (!row) return ""; + var id = this.pick(row, ["metadata#id", "id", "WKNumProces", "processInstanceId"]); + var state = this.pick(row, ["activity", "WKNumState", "state"]); + return (id || "-") + "|" + (state || "-"); + }, + + render: function() { + var grouped = this.aggregateRows(this.rowsCache); + var filteredGroups = this.filterGroups(grouped); + var shownGroups = this.applyTopN(filteredGroups); + + this.renderChart(shownGroups, this.rowsCache.length); + }, + + aggregateRows: function(rows) { + var map = {}; + var key; + + for (var i = 0; i < (rows || []).length; i++) { + key = this.resolveGroupValue(rows[i]) || this.emptyLabel; + + if (!map[key]) { + map[key] = { + name: key, + count: 0 + }; + } + map[key].count++; + } + + var list = []; + for (var name in map) { + if (map.hasOwnProperty(name)) { + list.push(map[name]); + } + } + + list.sort(function(a, b) { + if (b.count !== a.count) return b.count - a.count; + return String(a.name).localeCompare(String(b.name)); + }); + + return list; + }, + + filterGroups: function(groups) { + var $search = this.$widget.find("[data-role='search']"); + if (!$search.length) return groups.slice(0); + + var search = $.trim(String($search.val() || "")).toLowerCase(); + if (!search) return groups.slice(0); + + var out = []; + for (var i = 0; i < groups.length; i++) { + var g = groups[i]; + if (String(g.name || "").toLowerCase().indexOf(search) !== -1) { + out.push(g); + } + } + return out; + }, + + applyTopN: function(groups) { + var $top = this.$widget.find("[data-role='topN']"); + if (!$top.length) return groups.slice(0); + + var raw = $.trim(String($top.val() || "0")); + var topN = parseInt(raw, 10); + + if (isNaN(topN) || topN < 0) topN = 0; + if (topN === 0) return groups.slice(0); + + return groups.slice(0, topN); + }, + + renderKpis: function(allGroups, shownGroups) { + var totalSolicitacoes = this.rowsCache.length; + var totalGrupos = allGroups.length; + var solicitacoesExibidas = 0; + + for (var i = 0; i < shownGroups.length; i++) { + solicitacoesExibidas += Number(shownGroups[i].count || 0); + } + + this.$widget.find("[data-role='kpiTotalSolicitacoes']").text(this.formatNumber(totalSolicitacoes)); + this.$widget.find("[data-role='kpiTotalGrupos']").text(this.formatNumber(totalGrupos)); + this.$widget.find("[data-role='kpiSolicitacoesExibidas']").text(this.formatNumber(solicitacoesExibidas)); + }, + + renderChart: function(groups, totalRows) { + var html = []; + + if (!groups.length) { + var emptyMsg = this.isIncrementalLoading ? + "Carregando dados..." : + "Nenhum registro para os filtros informados."; + html.push("
" + this.escapeHtml(emptyMsg) + "
"); + this.$widget.find("[data-role='chartBars']").html(html.join("")); + return; + } + var bars = []; + for (var i = 0; i < groups.length; i++) { + var item = groups[i]; + var count = Number(item.count || 0); + var percentTotal = totalRows > 0 ? (count * 100 / totalRows) : 0; + + bars.push( + "
" + + "
" + this.escapeHtml(this.formatPercent(percentTotal)) + "
" + + "
" + + "
" + + "
" + + "
" + this.escapeHtml(item.name) + "
" + + "
" + ); + } + + var minWidth = Math.max(groups.length * 86, 360); + + html.push( + "
" + + "" + + "Participacao (%)" + + "" + + "
" + + "
" + + "
" + + "100%50%0%" + + "
" + + "
" + + "
" + + "
" + + "
" + + "
" + + "
" + bars.join("") + "
" + + "
" + + "
" + + "
" + ); + + this.$widget.find("[data-role='chartBars']").html(html.join("")); + }, + + resolveGroupValue: function(row) { + return this.pick(row || {}, this.groupKeyCandidates); + }, + + pick: function(row, keys) { + for (var i = 0; i < keys.length; i++) { + var value = row[keys[i]]; + if (value !== null && value !== undefined && String(value).trim() !== "") { + return String(value).trim(); + } + } + return ""; + }, + + formatNumber: function(value) { + var n = Number(value || 0); + if (isNaN(n)) return "0"; + return n.toLocaleString("pt-BR"); + }, + + formatPercent: function(value) { + var n = Number(value || 0); + if (isNaN(n)) n = 0; + return n.toLocaleString("pt-BR", { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + "%"; + }, + + renderUpdatedAt: function() { + var now = new Date(); + var stamp = now.toLocaleDateString("pt-BR") + " " + now.toLocaleTimeString("pt-BR"); + this.$widget.find("[data-role='updatedAt']").text("Atualizado em: " + stamp); + }, + + setLoading: function(isLoading) { + this.$widget.toggleClass("is-loading", !!isLoading); + if (isLoading) { + this.setMessage("Carregando dados...", "info"); + } + }, + + setMessage: function(text, type) { + var $msg = this.$widget.find("[data-role='message']"); + $msg.removeClass("is-info is-success is-warning is-danger"); + + if (!text) { + $msg.hide().text(""); + return; + } + + var className = "is-info"; + if (type === "success") className = "is-success"; + if (type === "warning") className = "is-warning"; + if (type === "danger") className = "is-danger"; + + $msg.addClass(className).text(text).show(); + }, + + escapeHtml: function(text) { + return String(text == null ? "" : text) + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/\"/g, """) + .replace(/'/g, "'"); + } +}); + + + + + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfanalista/target/wdtransfanalista.war b/Transferência Ginseng/wcm/widget/wdtransfanalista/target/wdtransfanalista.war new file mode 100644 index 0000000000000000000000000000000000000000..2b3397b1dd2126b4d8ff97307cba6391febda44f GIT binary patch literal 15195 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 literal 0 HcmV?d00001 diff --git a/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/application.info b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/application.info new file mode 100644 index 0000000..22e266b --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/application.info @@ -0,0 +1,19 @@ +application.type=widget +application.code=wdtransfloja +application.title=wdtransfloja +application.description=wdtransfloja +application.fluig.version=null +application.category=SYSTEM +application.renderer=freemarker +developer.code=Andrey Cunha +developer.name=Andrey Cunha +developer.url=http://www.fluig.com +application.uiwidget=true +application.mobileapp=false +application.version=${build.version}-${build.revision} +view.file=view.ftl +edit.file=edit.ftl +locale.file.base.name=wdtransfloja +application.resource.js.1=/resources/js/wdtransfloja.js +application.resource.css.2=/resources/css/wdtransfloja.css +hash=4a16315e9e66fa7d797b3f6b1fb365b69f9a4ce2 diff --git a/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/edit.ftl b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/edit.ftl new file mode 100644 index 0000000..7fc0b61 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/edit.ftl @@ -0,0 +1,5 @@ +
+ +
+ + diff --git a/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/view.ftl b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/view.ftl new file mode 100644 index 0000000..61157c2 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/view.ftl @@ -0,0 +1,11 @@ +
+
+
+

Transferencias por Loja

+
+
Carregando dados...
+
+
+
+
+ diff --git a/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/wdtransfloja.properties b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/wdtransfloja.properties new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/wdtransfloja.properties @@ -0,0 +1,2 @@ + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/wdtransfloja_en_US.properties b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/wdtransfloja_en_US.properties new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/wdtransfloja_en_US.properties @@ -0,0 +1,2 @@ + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/wdtransfloja_es.properties b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/wdtransfloja_es.properties new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/wdtransfloja_es.properties @@ -0,0 +1,2 @@ + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/wdtransfloja_pt_BR.properties b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/wdtransfloja_pt_BR.properties new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/resources/wdtransfloja_pt_BR.properties @@ -0,0 +1,2 @@ + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/webapp/WEB-INF/jboss-web.xml b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/webapp/WEB-INF/jboss-web.xml new file mode 100644 index 0000000..2b51b44 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/webapp/WEB-INF/jboss-web.xml @@ -0,0 +1,5 @@ + + + /wdtransfloja + false + diff --git a/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/webapp/WEB-INF/web.xml b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..6797e41 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,12 @@ + + + + + + 30 + + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/webapp/resources/css/wdtransfloja.css b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/webapp/resources/css/wdtransfloja.css new file mode 100644 index 0000000..3bddf18 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/webapp/resources/css/wdtransfloja.css @@ -0,0 +1,181 @@ +.wdtransf-agg-widget .wdtransf-agg-shell { + background: #f4f7fb; + border: 1px solid #d8e3ee; + border-radius: 12px; + padding: 8px; +} + +.wdtransf-agg-widget .wdtransf-agg-chart-wrap { + background: #e8ecf1; + border: 1px solid #d3dde8; + border-radius: 16px; + padding: 10px 12px; +} + +.wdtransf-agg-widget .wdtransf-agg-title { + margin: 0 0 8px; + color: #00507c; + font-size: 18px; + font-weight: 700; + text-align: center; +} + +.wdtransf-agg-widget .wdtransf-agg-chart { + display: flex; + flex-direction: column; + gap: 6px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-legend { + margin-bottom: 4px; + color: #486680; + font-size: 12px; + font-weight: 600; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-legend-item { + display: inline-flex; + align-items: center; + gap: 6px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-legend-swatch { + display: inline-block; + width: 16px; + height: 10px; + border-radius: 2px; + background: #0f678a; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart { + display: grid; + grid-template-columns: 36px 1fr; + gap: 8px; + align-items: end; + min-height: 195px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-axis { + height: 160px; + display: flex; + flex-direction: column; + justify-content: space-between; + color: #57728b; + font-size: 11px; + text-align: right; + padding-right: 2px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-scroll { + overflow-x: auto; + overflow-y: hidden; + padding-bottom: 2px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-plot { + position: relative; + height: 160px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-grid { + position: absolute; + left: 0; + right: 0; + border-top: 1px solid #ced9e4; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-grid.grid-100 { top: 0; } +.wdtransf-agg-widget .wdtransf-agg-vchart-grid.grid-50 { top: 50%; } +.wdtransf-agg-widget .wdtransf-agg-vchart-grid.grid-0 { bottom: 0; } + +.wdtransf-agg-widget .wdtransf-agg-vchart-bars { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + display: flex; + align-items: flex-end; + gap: 10px; + padding: 0 6px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-item { + width: 64px; + display: flex; + flex-direction: column; + align-items: center; + gap: 4px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-value { + color: #1e4e71; + font-size: 11px; + font-weight: 700; + line-height: 1; + min-height: 12px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-bar-wrap { + width: 30px; + height: 120px; + display: flex; + align-items: flex-end; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-bar { + width: 100%; + border-radius: 4px 4px 0 0; + background: #0f678a; + min-height: 2px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-label { + color: #3c5c75; + font-size: 11px; + font-weight: 600; + text-align: center; + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + transform: rotate(-12deg); + transform-origin: center top; +} + +.wdtransf-agg-widget .wdtransf-agg-chart-empty { + color: #4f6880; + font-size: 12px; + padding: 8px 0; +} + +@media (max-width: 767px) { + .wdtransf-agg-widget .wdtransf-agg-chart-wrap { + padding: 8px; + } + + .wdtransf-agg-widget .wdtransf-agg-title { + font-size: 16px; + } + + .wdtransf-agg-widget .wdtransf-agg-vchart { + grid-template-columns: 1fr; + min-height: 170px; + } + + .wdtransf-agg-widget .wdtransf-agg-vchart-axis { + display: none; + } + + .wdtransf-agg-widget .wdtransf-agg-vchart-plot { + height: 145px; + } + + .wdtransf-agg-widget .wdtransf-agg-vchart-bar-wrap { + height: 108px; + } + + .wdtransf-agg-widget .wdtransf-agg-vchart-label { + transform: none; + } +} diff --git a/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/webapp/resources/images/icon.png b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/webapp/resources/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..102160cdd282b0d62712b3c7e6bef86fcd538496 GIT binary patch literal 7845 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 D*xqLB literal 0 HcmV?d00001 diff --git a/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/webapp/resources/js/wdtransfloja.js b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/webapp/resources/js/wdtransfloja.js new file mode 100644 index 0000000..55c3ceb --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfloja/src/main/webapp/resources/js/wdtransfloja.js @@ -0,0 +1,447 @@ +var WdTransfLojaWidget = SuperWidget.extend({ + datasetName: "transferenciav2", + batchSize: 1000, + rowsCache: [], + isIncrementalLoading: false, + loadOffset: 0, + batchToken: 0, + lastChunkMarker: "", + noPagingMode: false, + groupKeyCandidates: ["estabelecimento", "filialOrigem", "lojaOrigem", "centroCusto", "filialDestino", "lojaDestino"], + emptyLabel: "Nao informado", + + bindings: { + local: {}, + global: {} + }, + + init: function() { + this.$widget = $("#MyWidget_" + this.instanceId); + this.bindEvents(); + this.loadData(); + }, + + bindEvents: function() { + var self = this; + + self.$widget.on("click", "[data-action='reload']", function() { + self.loadData(); + }); + + self.$widget.on("change", "[data-role='topN']", function() { + self.render(); + }); + + self.$widget.on("input", "[data-role='search']", function() { + self.render(); + }); + + self.$widget.on("keypress", "[data-role='search']", function(e) { + if (e.which === 13) { + e.preventDefault(); + self.render(); + } + }); + }, + + loadData: function() { + this.batchToken++; + this.rowsCache = []; + this.loadOffset = 0; + this.lastChunkMarker = ""; + this.noPagingMode = false; + this.isIncrementalLoading = true; + + this.setLoading(true); + this.setMessage("Carregando solicitacoes...", "info"); + this.render(); + this.loadNextBatch(this.batchToken); + }, + + loadNextBatch: function(token) { + var self = this; + if (token !== self.batchToken) return; + + self.fetchDatasetBatch(self.batchSize, self.loadOffset, function(err, rows) { + if (token !== self.batchToken) return; + + if (err) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Erro ao carregar dataset: " + err, "danger"); + return; + } + + rows = rows || []; + if (!rows.length) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Dados carregados: " + self.formatNumber(self.rowsCache.length) + " registro(s).", "success"); + return; + } + + var chunkMarker = self.buildChunkMarker(rows[0]); + if (self.loadOffset > 0 && chunkMarker && chunkMarker === self.lastChunkMarker) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Paginacao do dataset nao evoluiu (sqlStart/offset). Verifique suporte no ambiente.", "warning"); + return; + } + + self.lastChunkMarker = chunkMarker; + self.rowsCache = self.rowsCache.concat(rows); + self.loadOffset += rows.length; + self.render(); + self.setMessage("Carregando solicitacoes... " + self.formatNumber(self.rowsCache.length) + " registro(s).", "info"); + + if (self.noPagingMode) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Dados carregados: " + self.formatNumber(self.rowsCache.length) + " registro(s).", "success"); + return; + } + + if (rows.length < self.batchSize) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Dados carregados: " + self.formatNumber(self.rowsCache.length) + " registro(s).", "success"); + return; + } + + setTimeout(function() { + self.loadNextBatch(token); + }, 0); + }); + }, + + fetchDatasetBatch: function(limit, offset, callback) { + var self = this; + if (self.noPagingMode && offset > 0) { + callback(null, []); + return; + } + + try { + if (typeof DatasetFactory !== "undefined" && typeof DatasetFactory.getDataset === "function" && + typeof ConstraintType !== "undefined" && typeof DatasetFactory.createConstraint === "function") { + var constraints = self.noPagingMode ? null : self.buildFactoryPagingConstraints(limit, offset); + var ds = DatasetFactory.getDataset(self.datasetName, null, constraints, null); + var rows = (ds && ds.values) ? ds.values : []; + + if (!rows.length && offset === 0 && !self.noPagingMode) { + var dsNoPaging = DatasetFactory.getDataset(self.datasetName, null, null, null); + var rowsNoPaging = (dsNoPaging && dsNoPaging.values) ? dsNoPaging.values : []; + if (rowsNoPaging.length) { + self.noPagingMode = true; + callback(null, rowsNoPaging); + return; + } + } + + callback(null, rows); + return; + } + } catch (e) { + // fallback REST + } + + this.fetchDatasetBatchViaRest(limit, offset, callback); + }, + + buildFactoryPagingConstraints: function(limit, offset) { + var constraints = []; + constraints.push(DatasetFactory.createConstraint("sqlLimit", String(limit), String(limit), ConstraintType.MUST)); + constraints.push(DatasetFactory.createConstraint("sqlStart", String(offset), String(offset), ConstraintType.MUST)); + constraints.push(DatasetFactory.createConstraint("offset", String(offset), String(offset), ConstraintType.MUST)); + constraints.push(DatasetFactory.createConstraint("sqlOffset", String(offset), String(offset), ConstraintType.MUST)); + return constraints; + }, + + fetchDatasetBatchViaRest: function(limit, offset, callback) { + var self = this; + if (self.noPagingMode && offset > 0) { + callback(null, []); + return; + } + + function readRows(resp) { + if (resp && resp.content && resp.content.values) return resp.content.values; + if (resp && resp.values) return resp.values; + return []; + } + + function request(usePaging, done) { + var constraints = usePaging ? self.buildRestPagingConstraints(limit, offset) : []; + $.ajax({ + url: "/api/public/ecm/dataset/datasets", + type: "POST", + contentType: "application/json; charset=UTF-8", + dataType: "json", + data: JSON.stringify({ + name: self.datasetName, + fields: [], + constraints: constraints, + order: [] + }) + }).done(function(resp) { + done(null, readRows(resp) || []); + }).fail(function(xhr) { + var detail = xhr && (xhr.responseText || xhr.statusText || xhr.status); + done(detail || "falha na API REST de datasets", []); + }); + } + + request(!self.noPagingMode, function(err, rows) { + if (err) { + callback(err); + return; + } + + if (!rows.length && offset === 0 && !self.noPagingMode) { + request(false, function(err2, rows2) { + if (err2) { + callback(err2); + return; + } + if (rows2.length) { + self.noPagingMode = true; + } + callback(null, rows2 || []); + }); + return; + } + + callback(null, rows || []); + }); + }, + + buildRestPagingConstraints: function(limit, offset) { + return [ + { _field: "sqlLimit", _initialValue: String(limit), _finalValue: String(limit), _type: 1 }, + { _field: "sqlStart", _initialValue: String(offset), _finalValue: String(offset), _type: 1 }, + { _field: "offset", _initialValue: String(offset), _finalValue: String(offset), _type: 1 }, + { _field: "sqlOffset", _initialValue: String(offset), _finalValue: String(offset), _type: 1 } + ]; + }, + + buildChunkMarker: function(row) { + if (!row) return ""; + var id = this.pick(row, ["metadata#id", "id", "WKNumProces", "processInstanceId"]); + var state = this.pick(row, ["activity", "WKNumState", "state"]); + return (id || "-") + "|" + (state || "-"); + }, + + render: function() { + var grouped = this.aggregateRows(this.rowsCache); + var filteredGroups = this.filterGroups(grouped); + var shownGroups = this.applyTopN(filteredGroups); + + this.renderChart(shownGroups, this.rowsCache.length); + }, + + aggregateRows: function(rows) { + var map = {}; + var key; + + for (var i = 0; i < (rows || []).length; i++) { + key = this.resolveGroupValue(rows[i]) || this.emptyLabel; + + if (!map[key]) { + map[key] = { + name: key, + count: 0 + }; + } + map[key].count++; + } + + var list = []; + for (var name in map) { + if (map.hasOwnProperty(name)) { + list.push(map[name]); + } + } + + list.sort(function(a, b) { + if (b.count !== a.count) return b.count - a.count; + return String(a.name).localeCompare(String(b.name)); + }); + + return list; + }, + + filterGroups: function(groups) { + var $search = this.$widget.find("[data-role='search']"); + if (!$search.length) return groups.slice(0); + + var search = $.trim(String($search.val() || "")).toLowerCase(); + if (!search) return groups.slice(0); + + var out = []; + for (var i = 0; i < groups.length; i++) { + var g = groups[i]; + if (String(g.name || "").toLowerCase().indexOf(search) !== -1) { + out.push(g); + } + } + return out; + }, + + applyTopN: function(groups) { + var $top = this.$widget.find("[data-role='topN']"); + if (!$top.length) return groups.slice(0); + + var raw = $.trim(String($top.val() || "0")); + var topN = parseInt(raw, 10); + + if (isNaN(topN) || topN < 0) topN = 0; + if (topN === 0) return groups.slice(0); + + return groups.slice(0, topN); + }, + + renderKpis: function(allGroups, shownGroups) { + var totalSolicitacoes = this.rowsCache.length; + var totalGrupos = allGroups.length; + var solicitacoesExibidas = 0; + + for (var i = 0; i < shownGroups.length; i++) { + solicitacoesExibidas += Number(shownGroups[i].count || 0); + } + + this.$widget.find("[data-role='kpiTotalSolicitacoes']").text(this.formatNumber(totalSolicitacoes)); + this.$widget.find("[data-role='kpiTotalGrupos']").text(this.formatNumber(totalGrupos)); + this.$widget.find("[data-role='kpiSolicitacoesExibidas']").text(this.formatNumber(solicitacoesExibidas)); + }, + + renderChart: function(groups, totalRows) { + var html = []; + + if (!groups.length) { + var emptyMsg = this.isIncrementalLoading ? + "Carregando dados..." : + "Nenhum registro para os filtros informados."; + html.push("
" + this.escapeHtml(emptyMsg) + "
"); + this.$widget.find("[data-role='chartBars']").html(html.join("")); + return; + } + var bars = []; + for (var i = 0; i < groups.length; i++) { + var item = groups[i]; + var count = Number(item.count || 0); + var percentTotal = totalRows > 0 ? (count * 100 / totalRows) : 0; + + bars.push( + "
" + + "
" + this.escapeHtml(this.formatPercent(percentTotal)) + "
" + + "
" + + "
" + + "
" + + "
" + this.escapeHtml(item.name) + "
" + + "
" + ); + } + + var minWidth = Math.max(groups.length * 86, 360); + + html.push( + "
" + + "" + + "Participacao (%)" + + "" + + "
" + + "
" + + "
" + + "100%50%0%" + + "
" + + "
" + + "
" + + "
" + + "
" + + "
" + + "
" + bars.join("") + "
" + + "
" + + "
" + + "
" + ); + + this.$widget.find("[data-role='chartBars']").html(html.join("")); + }, + + resolveGroupValue: function(row) { + return this.pick(row || {}, this.groupKeyCandidates); + }, + + pick: function(row, keys) { + for (var i = 0; i < keys.length; i++) { + var value = row[keys[i]]; + if (value !== null && value !== undefined && String(value).trim() !== "") { + return String(value).trim(); + } + } + return ""; + }, + + formatNumber: function(value) { + var n = Number(value || 0); + if (isNaN(n)) return "0"; + return n.toLocaleString("pt-BR"); + }, + + formatPercent: function(value) { + var n = Number(value || 0); + if (isNaN(n)) n = 0; + return n.toLocaleString("pt-BR", { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + "%"; + }, + + renderUpdatedAt: function() { + var now = new Date(); + var stamp = now.toLocaleDateString("pt-BR") + " " + now.toLocaleTimeString("pt-BR"); + this.$widget.find("[data-role='updatedAt']").text("Atualizado em: " + stamp); + }, + + setLoading: function(isLoading) { + this.$widget.toggleClass("is-loading", !!isLoading); + if (isLoading) { + this.setMessage("Carregando dados...", "info"); + } + }, + + setMessage: function(text, type) { + var $msg = this.$widget.find("[data-role='message']"); + $msg.removeClass("is-info is-success is-warning is-danger"); + + if (!text) { + $msg.hide().text(""); + return; + } + + var className = "is-info"; + if (type === "success") className = "is-success"; + if (type === "warning") className = "is-warning"; + if (type === "danger") className = "is-danger"; + + $msg.addClass(className).text(text).show(); + }, + + escapeHtml: function(text) { + return String(text == null ? "" : text) + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/\"/g, """) + .replace(/'/g, "'"); + } +}); + + + + + + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfloja/target/wdtransfloja.war b/Transferência Ginseng/wcm/widget/wdtransfloja/target/wdtransfloja.war new file mode 100644 index 0000000000000000000000000000000000000000..1de0a6fb82d1e75c22b0a5d9bc47c9267b9364ac GIT binary patch literal 15154 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 + +
+ + diff --git a/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/view.ftl b/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/view.ftl new file mode 100644 index 0000000..a966b90 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/view.ftl @@ -0,0 +1,11 @@ +
+
+
+

Transferencias por Motorista

+
+
Carregando dados...
+
+
+
+
+ diff --git a/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/wdtransfmotorista.properties b/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/wdtransfmotorista.properties new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/wdtransfmotorista.properties @@ -0,0 +1,2 @@ + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/wdtransfmotorista_en_US.properties b/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/wdtransfmotorista_en_US.properties new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/wdtransfmotorista_en_US.properties @@ -0,0 +1,2 @@ + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/wdtransfmotorista_es.properties b/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/wdtransfmotorista_es.properties new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/wdtransfmotorista_es.properties @@ -0,0 +1,2 @@ + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/wdtransfmotorista_pt_BR.properties b/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/wdtransfmotorista_pt_BR.properties new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/resources/wdtransfmotorista_pt_BR.properties @@ -0,0 +1,2 @@ + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/webapp/WEB-INF/jboss-web.xml b/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/webapp/WEB-INF/jboss-web.xml new file mode 100644 index 0000000..fcc943a --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/webapp/WEB-INF/jboss-web.xml @@ -0,0 +1,5 @@ + + + /wdtransfmotorista + false + diff --git a/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/webapp/WEB-INF/web.xml b/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..6797e41 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,12 @@ + + + + + + 30 + + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/webapp/resources/css/wdtransfmotorista.css b/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/webapp/resources/css/wdtransfmotorista.css new file mode 100644 index 0000000..3bddf18 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/webapp/resources/css/wdtransfmotorista.css @@ -0,0 +1,181 @@ +.wdtransf-agg-widget .wdtransf-agg-shell { + background: #f4f7fb; + border: 1px solid #d8e3ee; + border-radius: 12px; + padding: 8px; +} + +.wdtransf-agg-widget .wdtransf-agg-chart-wrap { + background: #e8ecf1; + border: 1px solid #d3dde8; + border-radius: 16px; + padding: 10px 12px; +} + +.wdtransf-agg-widget .wdtransf-agg-title { + margin: 0 0 8px; + color: #00507c; + font-size: 18px; + font-weight: 700; + text-align: center; +} + +.wdtransf-agg-widget .wdtransf-agg-chart { + display: flex; + flex-direction: column; + gap: 6px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-legend { + margin-bottom: 4px; + color: #486680; + font-size: 12px; + font-weight: 600; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-legend-item { + display: inline-flex; + align-items: center; + gap: 6px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-legend-swatch { + display: inline-block; + width: 16px; + height: 10px; + border-radius: 2px; + background: #0f678a; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart { + display: grid; + grid-template-columns: 36px 1fr; + gap: 8px; + align-items: end; + min-height: 195px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-axis { + height: 160px; + display: flex; + flex-direction: column; + justify-content: space-between; + color: #57728b; + font-size: 11px; + text-align: right; + padding-right: 2px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-scroll { + overflow-x: auto; + overflow-y: hidden; + padding-bottom: 2px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-plot { + position: relative; + height: 160px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-grid { + position: absolute; + left: 0; + right: 0; + border-top: 1px solid #ced9e4; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-grid.grid-100 { top: 0; } +.wdtransf-agg-widget .wdtransf-agg-vchart-grid.grid-50 { top: 50%; } +.wdtransf-agg-widget .wdtransf-agg-vchart-grid.grid-0 { bottom: 0; } + +.wdtransf-agg-widget .wdtransf-agg-vchart-bars { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + display: flex; + align-items: flex-end; + gap: 10px; + padding: 0 6px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-item { + width: 64px; + display: flex; + flex-direction: column; + align-items: center; + gap: 4px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-value { + color: #1e4e71; + font-size: 11px; + font-weight: 700; + line-height: 1; + min-height: 12px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-bar-wrap { + width: 30px; + height: 120px; + display: flex; + align-items: flex-end; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-bar { + width: 100%; + border-radius: 4px 4px 0 0; + background: #0f678a; + min-height: 2px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-label { + color: #3c5c75; + font-size: 11px; + font-weight: 600; + text-align: center; + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + transform: rotate(-12deg); + transform-origin: center top; +} + +.wdtransf-agg-widget .wdtransf-agg-chart-empty { + color: #4f6880; + font-size: 12px; + padding: 8px 0; +} + +@media (max-width: 767px) { + .wdtransf-agg-widget .wdtransf-agg-chart-wrap { + padding: 8px; + } + + .wdtransf-agg-widget .wdtransf-agg-title { + font-size: 16px; + } + + .wdtransf-agg-widget .wdtransf-agg-vchart { + grid-template-columns: 1fr; + min-height: 170px; + } + + .wdtransf-agg-widget .wdtransf-agg-vchart-axis { + display: none; + } + + .wdtransf-agg-widget .wdtransf-agg-vchart-plot { + height: 145px; + } + + .wdtransf-agg-widget .wdtransf-agg-vchart-bar-wrap { + height: 108px; + } + + .wdtransf-agg-widget .wdtransf-agg-vchart-label { + transform: none; + } +} diff --git a/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/webapp/resources/images/icon.png b/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/webapp/resources/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..102160cdd282b0d62712b3c7e6bef86fcd538496 GIT binary patch literal 7845 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 D*xqLB literal 0 HcmV?d00001 diff --git a/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/webapp/resources/js/wdtransfmotorista.js b/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/webapp/resources/js/wdtransfmotorista.js new file mode 100644 index 0000000..7cff568 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfmotorista/src/main/webapp/resources/js/wdtransfmotorista.js @@ -0,0 +1,447 @@ +var WdTransfMotoristaWidget = SuperWidget.extend({ + datasetName: "transferenciav2", + batchSize: 1000, + rowsCache: [], + isIncrementalLoading: false, + loadOffset: 0, + batchToken: 0, + lastChunkMarker: "", + noPagingMode: false, + groupKeyCandidates: ["motoristaEntregaNome", "motoristaColetaNome", "motoristaEntregaLogin", "motoristaColetaLogin", "motoristaNome"], + emptyLabel: "Nao informado", + + bindings: { + local: {}, + global: {} + }, + + init: function() { + this.$widget = $("#MyWidget_" + this.instanceId); + this.bindEvents(); + this.loadData(); + }, + + bindEvents: function() { + var self = this; + + self.$widget.on("click", "[data-action='reload']", function() { + self.loadData(); + }); + + self.$widget.on("change", "[data-role='topN']", function() { + self.render(); + }); + + self.$widget.on("input", "[data-role='search']", function() { + self.render(); + }); + + self.$widget.on("keypress", "[data-role='search']", function(e) { + if (e.which === 13) { + e.preventDefault(); + self.render(); + } + }); + }, + + loadData: function() { + this.batchToken++; + this.rowsCache = []; + this.loadOffset = 0; + this.lastChunkMarker = ""; + this.noPagingMode = false; + this.isIncrementalLoading = true; + + this.setLoading(true); + this.setMessage("Carregando solicitacoes...", "info"); + this.render(); + this.loadNextBatch(this.batchToken); + }, + + loadNextBatch: function(token) { + var self = this; + if (token !== self.batchToken) return; + + self.fetchDatasetBatch(self.batchSize, self.loadOffset, function(err, rows) { + if (token !== self.batchToken) return; + + if (err) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Erro ao carregar dataset: " + err, "danger"); + return; + } + + rows = rows || []; + if (!rows.length) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Dados carregados: " + self.formatNumber(self.rowsCache.length) + " registro(s).", "success"); + return; + } + + var chunkMarker = self.buildChunkMarker(rows[0]); + if (self.loadOffset > 0 && chunkMarker && chunkMarker === self.lastChunkMarker) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Paginacao do dataset nao evoluiu (sqlStart/offset). Verifique suporte no ambiente.", "warning"); + return; + } + + self.lastChunkMarker = chunkMarker; + self.rowsCache = self.rowsCache.concat(rows); + self.loadOffset += rows.length; + self.render(); + self.setMessage("Carregando solicitacoes... " + self.formatNumber(self.rowsCache.length) + " registro(s).", "info"); + + if (self.noPagingMode) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Dados carregados: " + self.formatNumber(self.rowsCache.length) + " registro(s).", "success"); + return; + } + + if (rows.length < self.batchSize) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Dados carregados: " + self.formatNumber(self.rowsCache.length) + " registro(s).", "success"); + return; + } + + setTimeout(function() { + self.loadNextBatch(token); + }, 0); + }); + }, + + fetchDatasetBatch: function(limit, offset, callback) { + var self = this; + if (self.noPagingMode && offset > 0) { + callback(null, []); + return; + } + + try { + if (typeof DatasetFactory !== "undefined" && typeof DatasetFactory.getDataset === "function" && + typeof ConstraintType !== "undefined" && typeof DatasetFactory.createConstraint === "function") { + var constraints = self.noPagingMode ? null : self.buildFactoryPagingConstraints(limit, offset); + var ds = DatasetFactory.getDataset(self.datasetName, null, constraints, null); + var rows = (ds && ds.values) ? ds.values : []; + + if (!rows.length && offset === 0 && !self.noPagingMode) { + var dsNoPaging = DatasetFactory.getDataset(self.datasetName, null, null, null); + var rowsNoPaging = (dsNoPaging && dsNoPaging.values) ? dsNoPaging.values : []; + if (rowsNoPaging.length) { + self.noPagingMode = true; + callback(null, rowsNoPaging); + return; + } + } + + callback(null, rows); + return; + } + } catch (e) { + // fallback REST + } + + this.fetchDatasetBatchViaRest(limit, offset, callback); + }, + + buildFactoryPagingConstraints: function(limit, offset) { + var constraints = []; + constraints.push(DatasetFactory.createConstraint("sqlLimit", String(limit), String(limit), ConstraintType.MUST)); + constraints.push(DatasetFactory.createConstraint("sqlStart", String(offset), String(offset), ConstraintType.MUST)); + constraints.push(DatasetFactory.createConstraint("offset", String(offset), String(offset), ConstraintType.MUST)); + constraints.push(DatasetFactory.createConstraint("sqlOffset", String(offset), String(offset), ConstraintType.MUST)); + return constraints; + }, + + fetchDatasetBatchViaRest: function(limit, offset, callback) { + var self = this; + if (self.noPagingMode && offset > 0) { + callback(null, []); + return; + } + + function readRows(resp) { + if (resp && resp.content && resp.content.values) return resp.content.values; + if (resp && resp.values) return resp.values; + return []; + } + + function request(usePaging, done) { + var constraints = usePaging ? self.buildRestPagingConstraints(limit, offset) : []; + $.ajax({ + url: "/api/public/ecm/dataset/datasets", + type: "POST", + contentType: "application/json; charset=UTF-8", + dataType: "json", + data: JSON.stringify({ + name: self.datasetName, + fields: [], + constraints: constraints, + order: [] + }) + }).done(function(resp) { + done(null, readRows(resp) || []); + }).fail(function(xhr) { + var detail = xhr && (xhr.responseText || xhr.statusText || xhr.status); + done(detail || "falha na API REST de datasets", []); + }); + } + + request(!self.noPagingMode, function(err, rows) { + if (err) { + callback(err); + return; + } + + if (!rows.length && offset === 0 && !self.noPagingMode) { + request(false, function(err2, rows2) { + if (err2) { + callback(err2); + return; + } + if (rows2.length) { + self.noPagingMode = true; + } + callback(null, rows2 || []); + }); + return; + } + + callback(null, rows || []); + }); + }, + + buildRestPagingConstraints: function(limit, offset) { + return [ + { _field: "sqlLimit", _initialValue: String(limit), _finalValue: String(limit), _type: 1 }, + { _field: "sqlStart", _initialValue: String(offset), _finalValue: String(offset), _type: 1 }, + { _field: "offset", _initialValue: String(offset), _finalValue: String(offset), _type: 1 }, + { _field: "sqlOffset", _initialValue: String(offset), _finalValue: String(offset), _type: 1 } + ]; + }, + + buildChunkMarker: function(row) { + if (!row) return ""; + var id = this.pick(row, ["metadata#id", "id", "WKNumProces", "processInstanceId"]); + var state = this.pick(row, ["activity", "WKNumState", "state"]); + return (id || "-") + "|" + (state || "-"); + }, + + render: function() { + var grouped = this.aggregateRows(this.rowsCache); + var filteredGroups = this.filterGroups(grouped); + var shownGroups = this.applyTopN(filteredGroups); + + this.renderChart(shownGroups, this.rowsCache.length); + }, + + aggregateRows: function(rows) { + var map = {}; + var key; + + for (var i = 0; i < (rows || []).length; i++) { + key = this.resolveGroupValue(rows[i]) || this.emptyLabel; + + if (!map[key]) { + map[key] = { + name: key, + count: 0 + }; + } + map[key].count++; + } + + var list = []; + for (var name in map) { + if (map.hasOwnProperty(name)) { + list.push(map[name]); + } + } + + list.sort(function(a, b) { + if (b.count !== a.count) return b.count - a.count; + return String(a.name).localeCompare(String(b.name)); + }); + + return list; + }, + + filterGroups: function(groups) { + var $search = this.$widget.find("[data-role='search']"); + if (!$search.length) return groups.slice(0); + + var search = $.trim(String($search.val() || "")).toLowerCase(); + if (!search) return groups.slice(0); + + var out = []; + for (var i = 0; i < groups.length; i++) { + var g = groups[i]; + if (String(g.name || "").toLowerCase().indexOf(search) !== -1) { + out.push(g); + } + } + return out; + }, + + applyTopN: function(groups) { + var $top = this.$widget.find("[data-role='topN']"); + if (!$top.length) return groups.slice(0); + + var raw = $.trim(String($top.val() || "0")); + var topN = parseInt(raw, 10); + + if (isNaN(topN) || topN < 0) topN = 0; + if (topN === 0) return groups.slice(0); + + return groups.slice(0, topN); + }, + + renderKpis: function(allGroups, shownGroups) { + var totalSolicitacoes = this.rowsCache.length; + var totalGrupos = allGroups.length; + var solicitacoesExibidas = 0; + + for (var i = 0; i < shownGroups.length; i++) { + solicitacoesExibidas += Number(shownGroups[i].count || 0); + } + + this.$widget.find("[data-role='kpiTotalSolicitacoes']").text(this.formatNumber(totalSolicitacoes)); + this.$widget.find("[data-role='kpiTotalGrupos']").text(this.formatNumber(totalGrupos)); + this.$widget.find("[data-role='kpiSolicitacoesExibidas']").text(this.formatNumber(solicitacoesExibidas)); + }, + + renderChart: function(groups, totalRows) { + var html = []; + + if (!groups.length) { + var emptyMsg = this.isIncrementalLoading ? + "Carregando dados..." : + "Nenhum registro para os filtros informados."; + html.push("
" + this.escapeHtml(emptyMsg) + "
"); + this.$widget.find("[data-role='chartBars']").html(html.join("")); + return; + } + var bars = []; + for (var i = 0; i < groups.length; i++) { + var item = groups[i]; + var count = Number(item.count || 0); + var percentTotal = totalRows > 0 ? (count * 100 / totalRows) : 0; + + bars.push( + "
" + + "
" + this.escapeHtml(this.formatPercent(percentTotal)) + "
" + + "
" + + "
" + + "
" + + "
" + this.escapeHtml(item.name) + "
" + + "
" + ); + } + + var minWidth = Math.max(groups.length * 86, 360); + + html.push( + "
" + + "" + + "Participacao (%)" + + "" + + "
" + + "
" + + "
" + + "100%50%0%" + + "
" + + "
" + + "
" + + "
" + + "
" + + "
" + + "
" + bars.join("") + "
" + + "
" + + "
" + + "
" + ); + + this.$widget.find("[data-role='chartBars']").html(html.join("")); + }, + + resolveGroupValue: function(row) { + return this.pick(row || {}, this.groupKeyCandidates); + }, + + pick: function(row, keys) { + for (var i = 0; i < keys.length; i++) { + var value = row[keys[i]]; + if (value !== null && value !== undefined && String(value).trim() !== "") { + return String(value).trim(); + } + } + return ""; + }, + + formatNumber: function(value) { + var n = Number(value || 0); + if (isNaN(n)) return "0"; + return n.toLocaleString("pt-BR"); + }, + + formatPercent: function(value) { + var n = Number(value || 0); + if (isNaN(n)) n = 0; + return n.toLocaleString("pt-BR", { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + "%"; + }, + + renderUpdatedAt: function() { + var now = new Date(); + var stamp = now.toLocaleDateString("pt-BR") + " " + now.toLocaleTimeString("pt-BR"); + this.$widget.find("[data-role='updatedAt']").text("Atualizado em: " + stamp); + }, + + setLoading: function(isLoading) { + this.$widget.toggleClass("is-loading", !!isLoading); + if (isLoading) { + this.setMessage("Carregando dados...", "info"); + } + }, + + setMessage: function(text, type) { + var $msg = this.$widget.find("[data-role='message']"); + $msg.removeClass("is-info is-success is-warning is-danger"); + + if (!text) { + $msg.hide().text(""); + return; + } + + var className = "is-info"; + if (type === "success") className = "is-success"; + if (type === "warning") className = "is-warning"; + if (type === "danger") className = "is-danger"; + + $msg.addClass(className).text(text).show(); + }, + + escapeHtml: function(text) { + return String(text == null ? "" : text) + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/\"/g, """) + .replace(/'/g, "'"); + } +}); + + + + + + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfmotorista/target/wdtransfmotorista.war b/Transferência Ginseng/wcm/widget/wdtransfmotorista/target/wdtransfmotorista.war new file mode 100644 index 0000000000000000000000000000000000000000..251a191c9013782339f8e7e2583b7dda33e86b93 GIT binary patch literal 15215 zcmbVz1#le8mSu~XnI#Kb%*?WwnVFdxEwq>!48j&Ovn^9Pmq8e24w^?IR)zk!MaKt?0@t&Rf#Wxu0YsRGR=gq4mtg9Iu z7{g~7s+pVWb3sG>B8+BqMRwbsCOaf^{ZsPjrTUyVzbGIQ-}?WJ7p4r&m#pUO@M zlw@IGIic4LfM5VXAvge_^e>wo_rGa&b2DoX#LW6LQju43V0k z@liTP=}}pQ8#$1=iqyC?J!7LfEhB>z!!!d7oidH$co?gD&osO>PhsX^Yd>Ww52*F9 zFcS!pfd@uXMz%slibuBe!}i@6N!VJ^E;&0d9YEN_Oust_0~;fhtzrA_PT2eQ|L3rW zwYldXhu1V@9aoqUJ8=#IQR|5sL$W1FAb1CbSCIOU8KCRC<3dbWBAJ)aDR}K~@6Ynh zsT&}uL)xk>l>_BeW>qM8Z}JJ z>-Kapev|p&gz&MBRoNzDsNGMfr6uQL8rs?JlI~=C# zQSCE&#z3hA_wsQo+zX#GaBr7SVUtG@KMQ$yd82#_b0zo%;7e-i*XS{KmJd-vx42xJrTkKKK=hTP9& zyF0GuQd7y#my~${|ON%Ekn|)TOCd@ zX5{;=<&H?R+d$^rhp@~k^wrNWn1dQ8O0C?-6;KP~3*lbz=@)qdbgO)(TrkHX zVo{0`p9j|6f?zNPzO(XVBj_jWew|1b5js_G;{zc+<){Y)$%Q{1=Ao}12GE8CI5`Uy z1`Or12h^db`hDKw!6U9@T|M>vz)<6-xjYEocP*)#~?gGjqEi zL{_REP3CmY&Q;SJN8TNNkF=JX9T}o!ej2{t`r@0_@=k}h`MG%7_lL$CyL1~&pyY_86Gz08+Jm+ayxmkUW zH^}=8#u}i>gm3geeZ*1HLsw^71-_<6=!1G(hF7|AT2DiCoR@xDG50S$Xm1EA5%^-= zIW?*?SjU7aer`mArpEeVUsiKsX`+>R56&3Ye)5uyG#Pm;a|u0QLP*eJHHJXBpI$%o zrN4^4N{weZ?jBCDGL&v#2HzVlczu)k{`>08&2;|_Jd%S)+{BIL&Dr_p`6kMrxI;5O z>STog01goUUEIrS=H_DT;A&y-=;r8R?doRC=;Y$)WbWc-ZSK0W4gP z^!)*8>gvk$UpwLb*N(I?muzO#!Lz(WKIUXuK2?4rQ>TN%s#;OH@{eh_(mxdVyzioz z263IbBes(%7hkMBZ#MM5l+2MLU6D<^U=;J{IIiik!(jG4wOy`?k@}7`&{E2GP-EAG zCK`@~Ph+|th4nA7$v7PeObIxkRWdejycw4S z*`v2nL}7ZWpV6^-Np8v(H*gEGpnn;FMdJ^+LZ;Foo;;yVM(`@&5r8s71-PY-&qoN zI%wo`OQ{(gejVM2ILD7@jwuIuz}F^tj>S$;s+uN6`eJ(|Enyi;<;G2~Yqv54vrG7O zcLD20U$TWiqdmeBp!cQ4kSih9{)T|1o}3N~taoN^?DHq-QMT{hSBAu%6j%}n5*FDj zk%XhM$hd*aGw$QGO99;dc-cd5$M!q2VNz1HH2>gnn(5FAX^I`kwPv*F7II|c=fNAX z43eltY@qJPIiz+@NqA$b!kQrXd?~?e1BQPc1cD}9i@?;|rqtTv%@IHcpkXA<>jY4& z$@;DM_|--zI}3Bot{u#z{kE!YOYUzRXA}4S0Mv)=uXJ9sLAPP2O~vzE}pdLT)n%XufsmL6U$j3$e-N={%s z2|aB?U<&czpQx3z4LyKB~O$W&doj(C^>e z3O+~gJ4jbiX|?x(EUX`_+2{9jI43D>R{((VJwO@B!MqBEJl=oAb`#ff6LT^Dze8A3 zHEVlw05cmCD?1YlOMNsq(fbvIf38q~I1AL@&}GMbx}<#&SG!h$M42yXLmSyptvK;bij7hN3j8?S|6G2c#RdnGom?u~&Y6 zA}4ZkYV!46B_8QT$6kbhu{*C>Wt3%x&T-~MP6|n2&`wKaPr{OzjN>3~eaU}v zzw>1ymmT2Le7xo#Q*(EpYYOZ#d0l)Sh@=-=n0Kx9*%x_7M@A))UZi zA|M1wX;TUO1|pJiW`uj)T1~a^nPz8qxsMHh5>of=UxBlIeB`st<8LsZE7;owRp9wb zn+~7aN@WlYg)W(8hcf^Qds3rn>40eh@L2IC;;rU`BXna4=1~G^#&#@7c`TCzj!*Yl zuT5nyjy&au$7eZBJ_h@#Y`koma@LAfCpPlgxeU_Ftei;F2rI0pqCxXCNHW$b^HPOQ z0^&o7yE4QfORO;AvL`|+yHb_GJJR&3QX|ZH5EpbKsGjS$7jrA?!=3Hs)r|LsC|$No zqqnw-NA^C0qeHP8ioRJzDPhohid!;a#cr^Yz}WfMw}xBFQO7I^QopalOR0$FBiAIu zbyr4liGEOGu=E&|s9jj1tA0<^6ZgM#r;53V=FJTQPW;Ohv#wjjXLQpijvNXoO?PDE z`%|T`fij|d?rrc@$zOE_L*e@64}dXcdaKKNudVo24? zhGOMQ6IY$1BYrvC+mqu&r<3-CPcix1eeG3Xw8e#1C2=rMM|% zL7)Lq$Z7_N1=SP6pS3p)XqV>kq2?OdH!;QsZ@2l1xi<&dQ-ebIX@D$haNPpW7<186?r7=-arXxcm zRfmuPWz24EApRkd%7VlTx`m6!9=>s1M_;3>?E3s;z4%UC=PE=mj z&my8ennDOZ=&xv^fm@Pac=pR23Cal^yl>~D({A(xnu;S$`Vo*kW95~zD(5jnmf#`>=m+I4JtfHSu46a`5DtX)P7(yv^ zUOg{&HrnrT(izV>>YF+~iS{G>jt|CP*=G@ruBs6SqdNb9#ClXhT^I;u#9!#g%_6LFRN@Edhrvui*`(1% z*ieNZyvmqP?BPU8foBIMjd})b@}az*%YSlzNGE>0j^ZKG%$=Qy*`bXxM_EX2&g;GK zQ(tNIOz~SXcQz!TvuILvri`O|3AbK6KS~f{1-~k8tTu6g39F4JkV=f{g9AH6Rk|q+ zE(fE{rvnEj(w6AT5Goqu1&^n(tCUJbT=ZD?8~Sh3p}Z^z!OugzU47zk_08_`9vI8NQ%l(!NXn6Ioo-0=i9s_2xKi9 z6PbL$NT2D7bew_k>h#sI)2abW&5+WO#b#f(X%iUVl2mq@lhUBG3+$oGKibvL(NuIk z_EhnE%@YK>U*M1oyEPQNxj&pB>w$iz>U)rk*I7vr(Cyy`y6QzH!K-$kig`bx`~qaG zFa2DKZgu9D?oZV!G8)N4duOMJn=gWntTWW+G%4+0uV|~)c>$PGiL)gcNJ%V*7X{b$ zdg_nur4$k>paKbC7##?? zX(kT>^&C_*>UwH^*9i979X}rIU2F?VXr);+KMv!kUY{xBLc`VvT8Am&qj@G6KfrYQ zz4^w$9nb&P{n(!zxH6wYn#>AnHW+=oU3b@2GvoG@Mk%a~m{g)^TfJIc zKOdvCPmb1*>v#5t#nQYyM)DQ?LT#L_=W@hO8+W}1ho{Pb^`LbD)?L=5&M^>B&bI}9 zJAQ>J8nSh)hsg=`Rw`DI^61#*dlt>X7>HE9u_oYxmerq}txEG-$ZAyghCR)?+JA#4 z8{&*`bJx0pK6h^1YN&@5$pd-U%TKl*m93*Lac18$iGgRa$mp(zKE4xoscK1Jteo2# zz2!RrcvP9@+)Vs4Bc603PD$y0Q&lMx8Yz+Y3)nU7*JUdKlWz?M_q$gx^YXB=v@dWY znDu6MhVW_>w^P}-1hxdw@pgjUTN%8$bp;WX^Xw0`vc0Tcej@;1lDPW|jz)12mmSNjKjmYT6`h$3D+(a|w}6fax;dB|&#rB!>-Or(&Q zJ)jmq%JdgPocXy8AHO2COCsqNQtNDPgOhLWV)ezCGFG&CyP6XxJ#g)=GpOZ!_W0m$ zzikRzu0U&QdK6URC;TBRR|* zUVe2?UcyR9Q9%8YIGeoF3xX-G7rYBG>o)v6ryZNS!8ZbTIgC3ayynfIBlEM^Wf zdQ1FpC)CB|H@Ta}e#UJM-|{`g8WuVZv*m1wCUCd_(US4RqJFdN__ibenX#y{Y){_8 z!x5w9J4UG{$7yugUUMTb2w&RVojsK!@l(o9A0A8&nE)34BWl|8rA#3O+{l+h#0?$! zX0%vA^(n=rV5BO-y~2za9S%p<_Yo_lrknHe=lpaFhl$jq0o%fs~SeDk^9I3qQ^{@t{ zb8P;VMIPx4j{l8aVyWF0%8uzhl(&1Tq5E8-T@rq)089Eb*o0~ zv5jzDeS5Ywe(mk_NE@}I)^w6u!B%YN?q2Vq@n}D}77PuFIt~k3ZB`pJ?cIFqB$_ck zp(*?bR3{fP-Gr>Gp$*2^g9!-P@;t96Gn02hDcy&e zML#Ufuo(~|P=~PMpTkE%ZgBF$WZ_Vksfz2FjxG~Riiz~-_@ast;yr~a)lid0*}OBP z|IL#LQqOyjzTkSN%4BFKj@m<9n3uI&d$E7YFEiA>dMmZhZUbkjaYW-Tkr^uPc&?F} z5X>BxZvc!)w_zYc6@?}*Wj-2gw2x?Co|f;jj+D1PJk)w}(dg;)6FfFfisQBUxv%?+ zqIK*nZ@uYPyzw+3AF-^3JowiNmLaFcUb-qG%G}yT4(8!@>k7BVBCrh3mPAP|64+wD zxV_ z`|*-T^XnqjbXhLMfjPrLGW&Smfi z&K2YzG>^oLr~MEYorEL}{j@_XL{-j65n7}5TnY`E8){f&ubyvKxlERPMHQ@SVEJChxEWVk-^*W6^b{^cB>R|KL(c%bn!S$RkOM@3n%Qzx}$$5O{ z<*vb^iVcTeP>)6|>_4BVA}*ngG%Px*9`4@1cm`$RcoJSxWk@=7HADM7)Bw*T6x^<7>^7AI5qZ+CN|)aX|8!;%Zg3=y8S>BSxnRVN>f| z^h+tU0upyhBR={bdLL{5w$lY`#ttxLjajLpR5Nx^Z)fN!h@VLiW0MK>`DBVnE&a>1 zbhNC-7^!Z#k#6u&XIE@#< zsWS&QvZ|F{TB1&tqv{7Xwnk&$i7zSB!wZJO(@~NT+8_OP!Nr z!N*?y5Fz>Di2_+SmayvX=!kj~hA1gA@sV{lewDNZ_>vqheCTPL@AvzrR{&|QjFw(| zX}rl&A({2X_P9vnwPanU4_ZBkaC7V-m7N$lnE-F`XYvM9WK`7jxGQ9-=Uc=)}`Zu~Z z`(wTA<~{-=E5WBbP4Qo6vQq48P0y4$JJIp3y14f#iWD6Rlsu%hs5V|7sF33^^J6K6 z#fGreZA^b|iuRO&t^yBt*mcU5Ktj>3<>LPFY zymro*EKyn$+*CyAUE%8!tQ_vh57N>BetVxDOeO}h@cC$zn#rzUSa*0+T))P46D+#l;>n2;Yj3N;6MT&~YRo?CREH`21@w-MzLCWyAmK@rnVU4r<@! zNku4E!>>@s6_uk9sNAo50scCJ<_slyr1{O1TxeIP5cXk6j=G}SJx@)IFy5|`aF)FH zrKrd_L1uQ&b@cU1^R*l-O;9oreqnOM1FYh)@F7KNw|AV^3N~gUhD@%-O;dC8 z!o1eX^uC0+!&feEsJb3VEID+^(o2gy0kb>77yxc%?i+XbK4Bg#B^NQ+5%fo3mD+WE zN?IJ=g-t1UQmDPtUXsDMpgHY(=~nh~3X{X$CnTfJXW?tBcXC2YqG3gDykH=g*HKSRCFND;^^uDcFD_2#E1sG;6?{~sV)-VGtLPIa=@JK}4-9jor8T}} z|G~LwaGe+!z`3^6G41eEi3rPllWO$D!D4F^8MWG%bYv^>L!Mf_S<-0s)PS~ZvCCyl z9198`bH+Z5XV;H>rV~o*?9mf@CARtQP=EDll(AqM zk%)mMhru)xI?WoANnF{PqKHh(W7@1zrzzB%ZFz9^YB&1nUP#D4@7omm7*ZrYmu!5# zM-|Mz)`KW6_YzvY?&Gm<;Q0m9LbuO?JJ%R3pNp@UW;`W*c2T{&>9WPS74W(~qz`>I zUPni)ayLO*+wc04Qm@tGHY4JUVD!SXNuWQ@pS+&4kjlFgoVsgW6hC!JJ`^r7=IuT6>`|sxwelrm3e>7d&Zp)Y?LYBA{x-{ zxHgvkn+Ii8RAZ`0ung*s1eGsN|vOGVKF zvCBj|YYNBB0s2rWlCiT51b*a&=GuXG&bBR69{O?b&5J~uNIwWj1AwRlwVVM(e!)O^v5%2UC*<>cY1YNY<|T(5ij5G4_{GHv&M3SUpD88R!CDb7%Z`k zHm>#Mw79{0xV@qTJ@^yl)Y;)z7BBkJj7;g_fkH6KYFyqQ{HLFk^ENoUOT#+Yi!eBD zMsw%KGmGVRCY?U{N7N$5r-4T-2>E;nCU+C*o5bh;^`(n3g(x(LO)+!4ZJamq^+j^2 zc89sh`a`s~lFRXzuBTB&hA%5b5c)92YmeFMzj;q5RP2+hO~`j@9%4{j*bR-R%BB4d zmmAnE2Ru2Dk#M}W?|i)-Rsg=x&muqE%}-`azn*x}XD{@pSMvGx`n(gdm&=s_r=5WC z+iO1ISgP2d_6~_rHA6^IIHW3XwiZiQgsaB*=DWXVuTQQg0x5+o$sf~XoBNgRMtsin zH@aSnFDzqxJ@&WDI@?4LYG?&O1jboA3f_bvIfg8qtucFaqgm4f8x@AKo{|>ZPeFP; zTboXKiFTPLONJ$51@_BXGxc1>R*rc;smtWUl16&A`1|rH;VE${IFNwZ^F^3zM6vad zg4=gzUZ1}3S7VK^OH(qWq%^mnK|Z#;2U3md@i7t3y!paf`!bMEF%!fNx>X<<{}^OI zoq{S{c`&(@wO1wN0*w&TzrdAr8sGvW6zD{7{APz&mM-Vtcf)`COzhC+iqQrmVLeWP z7QUfU#T?~9w+QzXv$5*8rh0QH??ro(Wb4o_?X%txS%iI3q*0%wyazX+15TsCFDG_h z)1}ozxzmh2DAV=yVi54SlJ4z1_%*OrwwvQjXW(hTnISGU&;J4N7VxI=XD_`%k&39G z3;T%{=X_XPZsz$_plQ82p#6zD^d?VnEpNyILAODLEy&eHts$m==jnT8cjx)XPs0V?Jz59I< zWFla-^Kk(2YIStF2O%_Ra$K;tJ+4)8F#VqJ=Z>*h5R}l%_}s(A5$~RNpZl?+&hM7> zui<&o%2NSw%hp0K%>w^J3PJ&c=QjQZ~9*a24SGI z(!6i=oAmDPKaK^i^<}0Txb74S0K0&pq)W@6GNtBY5*%lB=a)BpvGRx!wA3Uk3hW2s zj#SvjRNoK>Q+s}D+NVpvezM1>u*2y4EUWMSDjoWYsbiY4XL;6g^XNzz-S3=h*0Gy) zwnkOhDg!H0TS%0TtmVH$E$95DxRZ?I0TONQ;}H>)-W%|!Ty#~l9Q#59q=J=l(dX;X zu~iyLK)mYFKEBtl8F=PUF-r;XaHZ2I1rzA$wN&$F-{&;|UEBiYQogtIeh-@8Q5cP3 zDFpXZa)8oiymvJSzv%90T65Y8MTsli5xiYloAW7Tj)?%QzQ3y#Jm!*}9rT=|Yy4Ec ztflWeM{ggyGa{~e)2v%Pi|xg#6Ae(ipVTsd{3+yvKC8s|LDpNC9C0VHa)?2bkSPR% z*Z=K{;9J#DpO|Few}wtNy0A<+V@n;>qC;8j+~*keib%{dgHoHqpA)=bhj13+y*i!%q8M$+J z8;@k=$K)W&-4j6-rviB#fIJLDCye=lx(#!;>d`khI5oFy*@317_|tQi1uBMBj5PQj z@N{dRtL+T!2S9hR-4|C!`1)h-qtYxAVHM(GV19?uNDFF4`2Ffy)B5=h#(|C689^A7 z)6!%1_-#R}x~%{VQG3Hje6}UjA1SE6`Kq992D?F36{V+hXN#iJDY_!wSY51!zddw{ zYF@eC@15H~9C?n8{p2Q&{j1a}nu;oz^KW>#9_ZwWAGOjph$^Uwr)>jc%T-4QViAfT zb&Wb2E+-A3e({h|0LXsG$7b&01l;D9y}50;U@9KZZ+JDPJf1boTLP4yt+Zk3BCFA1 z-_*=@#bUwS=;umX@jrYAy$~_#v|1g0HFtXD4gHZ^Wc)n#hX$v(^5Y#Jx#}vO4r0%e zWdap!I|#qp%%DQ|GWXP@6@@V)k`SB3T+hlV@XvUX*S|H8by5KFt}sNUm(8*U7EW7# zwY~{;WmX7Q=mzfmQYpRBaV6_{G>avM|AY#y134Lbh8E^gT$-&;B3EX#`5B4$!!sCZ z*k-^CvqQ`A)56n~LaL@sMb%^$mRb+kENJ_%`lU*A^X-y1xqf=5bmiYLuzM*0Xz_>UT=1k!MH>mnNsjQhh^wT%1l}Dlvbaf5{G`y z`37Kn$c&XGgtdz?{=f|^#B$%_b9z<3S}i3;l!c>9mJ7=UIa^lhD8P*Q)`1hk$Jfkc zOK^-S(<*{hr!-%jl5s=Ddx)Z1{fZ^sTitKMA+AJ9! zX!T2PDZRlfZO(k`6PE~VMG>b*b9zn*Q|0KY{jO;7^b|HdBfDGf`AZSb*XsEPU&w3i z_gVnq{V5#^l24~HyT`wI zvu93hk)3L)OZkrMPqVW=Y1=)Oa64Uc+{uPG9f%@_L%oo-GpR)@ofR*jxdLg7Tx{%5 zDn>Cku=GkO^umKdGfd$HyHx@2aYamOJJ~?L$6dlq2^kb8)}f4yvi>i6dQ7B~X|dIt zWoXGP{D^%=%{m4E#*ijwtl#U6V1yc?O6lHuan}!YWrvvhhx?H@C=;{Jv;(|!d4*|p zk%{SbLk}fP{%70?mS&>F0xk(YLMYj6o8I+8EvM_MQsoDjF+_yM_In?@6+Kcdv8seI zyDX@qWE!$vC0xNKVWgpU`(7*=Gy?c!52WvIw2JYB&kPC$)zzO}9*AmUyvE zevSxb>s@?2Hx@za{W0BuAZ#e3g64%a!(qJ>F$-}@QvT$!2E_6DhPgU{WcmIN-( zl065dL0J8kT+SN|2>O#JJVV5*F?I9|ZTLk^k>k{h0Sz#jBbW%Omiv{11lku|(yl$N zlZ@Kh_v?x705(HN4Yg zu3j6EWrS1fVNAs1IQ%%dBAFX>d0g+?D1~f8!t#y9W4_erj9TB44+l)d<5r6zj%Q*# zhpxtIPFin^Whfj|i-ooh-J~pAox{x3_`jvUuio*ZXa&s-AB+bE*xR;&y4c0(i>V^h z#%Bh8;Sio+2oEkk0ocS*^^iJB0msD?Otw#0^g$ zN?dlOskc_IrHHDs;eMTd6@VM_NtvI6FR_!tzgJh?4tBP$^7Ck_y||$Wm%mn1O)irr%oBUt0k(b$*)B0e`ycH27W9>gPnTM|3%&YbXeWE@OmU_-$3LrJvS0iR z&#@mC2XGkA^QNO?`mq-m>0G$(#y5{h;7`H|H)y&XcYY2xbWG!1C1F=Dtng`~r=JWg zlj_Atm&Yon&u#5=&jM`T)-YLMH`Z@EIE-w};9hwqDl^tWf;vUC0~3;;B}3ePHwe#d zft~w6-;ayclw|geT~oFF00cwUvgpeJ*?DkU4(X$o*_gch!wpWqoep z3F#<;@ffL2%>vAsi>;j21uvjl6Q0(@GVez={Fa!qN-24k4;b4;+lBFiu z{Gp679G5BDn#bM^cne49UDy->OJIkt3{Fe8G>XLpkW*cBJ zn%dXD*^~-~m0YfdH$p@FhXd69s z4M~rj`qTP8!H|*0XPV&cRM)|;J@_F9U|}y<-Z=|T zF#Bm%ntpfH755DA)ilh0JcAT4X&&wu8X)+zlOU=Q&wOlWfYUuHi_nh#bqNNY5h9ES zQ=_NaZ7#MxmX@#*17CoTl_zefEk){NXqGA_mj?0*eG+M!f{iqbwwE z<3`zxA0=h(a^DSzL=LVosvvI+zKj0$d+K2#;l_S7&%`)gsp0U89b(XS=}DivOl7aa zH$3MV)Y+I}(K{4`w%p_mDZZ#urU_`gd&HVUOEkTtTjcP7&wY~6U)0`iApWY;h&GM^ zI2^k#0tBDDP1ka#W6NaXn9rg1ME)e zbY(xdb*^U}y>u+EdDPE#W0cr!Sn{D>$PRc(#2vkf0yLdJY4i|0Nq&#_(2(?GF2{!( zAtTBag^T3jB|N|w{h5Ur5UI&?y{FuM zWBzxu5UlrE$bSgDY)l+oT^T&hO&GoG?d)Uukb9X?Kl*;@b#X)_>K{1d1|#hLg2d|5 zp5!U+;)gB*hCVay%f?*kI;VJ|SAw+X#*H7#pv?GNFk|J$WWwSao;We%ckmQl2NXI- zkGdT-`dJ#i0DGPV`cW8V&=c6Y0wbY`c=luG4cId#EqU`>A^6?RGx#6Z`Eye&yxtwF zc;Ei@1PbMEuKz!$!{P-{dPz~kEg!H#JAyn|Q-d{m!U}3o! z*!SN&mB*2HFGO(_J0>+%WyIt7x;7-5ShMDVH@5VFngVGL7t~r*ft*n@{lts5{hc^! zhp5>j)ruT!k&rbEB(cegXAf~zjz(wK z$(iWm0%{d<#678ZNU_6QvG*$H1e`s!cnDE+eMlVx^gWiBE}rL|>9jn(r1CSnOYMTW*3qA^Sz3Z?`kn6Suk)+z+V!*zpKbd->>=4_8yPs6 zFY|ma`=4n4p+oy8%HIVm{~3kmJ^A~eDE}c2`zOlZg(>uZIr4t=73#mD{8yF5Us9KU zhx|tq@|V5-PmuqM%;n$V{}HwPWhUi?|&fAQSV{O=N%e+T}bo$vb}f&Ww9@=yG~ z=ji_tv;1Y$Fn?dB_?Oa_e**q}4dhR1|6gYFp1}Xty2n2f{r?H`cM|)vVDgvg0{;&4 zFP2aK3HNtm`NMpF*%rrNee|Dr@ShNW56eFc^q1wlD+2zboBtmlDak^;cMkx7`2J~z Lc;{lSKWG03Qo6Z( literal 0 HcmV?d00001 diff --git a/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/application.info b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/application.info new file mode 100644 index 0000000..1a11a57 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/application.info @@ -0,0 +1,19 @@ +application.type=widget +application.code=wdtransfreg +application.title=wdtransfreg +application.description=wdtransfreg +application.fluig.version=null +application.category=SYSTEM +application.renderer=freemarker +developer.code=Andrey Cunha +developer.name=Andrey Cunha +developer.url=http://www.fluig.com +application.uiwidget=true +application.mobileapp=false +application.version=${build.version}-${build.revision} +view.file=view.ftl +edit.file=edit.ftl +locale.file.base.name=wdtransfreg +application.resource.js.1=/resources/js/wdtransfreg.js +application.resource.css.2=/resources/css/wdtransfreg.css +hash=4a16315e9e66fa7d797b3f6b1fb365b69f9a4ce2 diff --git a/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/edit.ftl b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/edit.ftl new file mode 100644 index 0000000..960b2aa --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/edit.ftl @@ -0,0 +1,5 @@ +
+ +
+ + diff --git a/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/view.ftl b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/view.ftl new file mode 100644 index 0000000..c0538ae --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/view.ftl @@ -0,0 +1,11 @@ +
+
+
+

Transferencias por UF de Origem

+
+
Carregando dados...
+
+
+
+
+ diff --git a/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/wdtransfreg.properties b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/wdtransfreg.properties new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/wdtransfreg.properties @@ -0,0 +1,2 @@ + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/wdtransfreg_en_US.properties b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/wdtransfreg_en_US.properties new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/wdtransfreg_en_US.properties @@ -0,0 +1,2 @@ + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/wdtransfreg_es.properties b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/wdtransfreg_es.properties new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/wdtransfreg_es.properties @@ -0,0 +1,2 @@ + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/wdtransfreg_pt_BR.properties b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/wdtransfreg_pt_BR.properties new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/resources/wdtransfreg_pt_BR.properties @@ -0,0 +1,2 @@ + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/webapp/WEB-INF/jboss-web.xml b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/webapp/WEB-INF/jboss-web.xml new file mode 100644 index 0000000..3b62310 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/webapp/WEB-INF/jboss-web.xml @@ -0,0 +1,5 @@ + + + /wdtransfreg + false + diff --git a/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/webapp/WEB-INF/web.xml b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..6797e41 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,12 @@ + + + + + + 30 + + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/webapp/resources/css/wdtransfreg.css b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/webapp/resources/css/wdtransfreg.css new file mode 100644 index 0000000..3bddf18 --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/webapp/resources/css/wdtransfreg.css @@ -0,0 +1,181 @@ +.wdtransf-agg-widget .wdtransf-agg-shell { + background: #f4f7fb; + border: 1px solid #d8e3ee; + border-radius: 12px; + padding: 8px; +} + +.wdtransf-agg-widget .wdtransf-agg-chart-wrap { + background: #e8ecf1; + border: 1px solid #d3dde8; + border-radius: 16px; + padding: 10px 12px; +} + +.wdtransf-agg-widget .wdtransf-agg-title { + margin: 0 0 8px; + color: #00507c; + font-size: 18px; + font-weight: 700; + text-align: center; +} + +.wdtransf-agg-widget .wdtransf-agg-chart { + display: flex; + flex-direction: column; + gap: 6px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-legend { + margin-bottom: 4px; + color: #486680; + font-size: 12px; + font-weight: 600; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-legend-item { + display: inline-flex; + align-items: center; + gap: 6px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-legend-swatch { + display: inline-block; + width: 16px; + height: 10px; + border-radius: 2px; + background: #0f678a; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart { + display: grid; + grid-template-columns: 36px 1fr; + gap: 8px; + align-items: end; + min-height: 195px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-axis { + height: 160px; + display: flex; + flex-direction: column; + justify-content: space-between; + color: #57728b; + font-size: 11px; + text-align: right; + padding-right: 2px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-scroll { + overflow-x: auto; + overflow-y: hidden; + padding-bottom: 2px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-plot { + position: relative; + height: 160px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-grid { + position: absolute; + left: 0; + right: 0; + border-top: 1px solid #ced9e4; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-grid.grid-100 { top: 0; } +.wdtransf-agg-widget .wdtransf-agg-vchart-grid.grid-50 { top: 50%; } +.wdtransf-agg-widget .wdtransf-agg-vchart-grid.grid-0 { bottom: 0; } + +.wdtransf-agg-widget .wdtransf-agg-vchart-bars { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + display: flex; + align-items: flex-end; + gap: 10px; + padding: 0 6px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-item { + width: 64px; + display: flex; + flex-direction: column; + align-items: center; + gap: 4px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-value { + color: #1e4e71; + font-size: 11px; + font-weight: 700; + line-height: 1; + min-height: 12px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-bar-wrap { + width: 30px; + height: 120px; + display: flex; + align-items: flex-end; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-bar { + width: 100%; + border-radius: 4px 4px 0 0; + background: #0f678a; + min-height: 2px; +} + +.wdtransf-agg-widget .wdtransf-agg-vchart-label { + color: #3c5c75; + font-size: 11px; + font-weight: 600; + text-align: center; + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + transform: rotate(-12deg); + transform-origin: center top; +} + +.wdtransf-agg-widget .wdtransf-agg-chart-empty { + color: #4f6880; + font-size: 12px; + padding: 8px 0; +} + +@media (max-width: 767px) { + .wdtransf-agg-widget .wdtransf-agg-chart-wrap { + padding: 8px; + } + + .wdtransf-agg-widget .wdtransf-agg-title { + font-size: 16px; + } + + .wdtransf-agg-widget .wdtransf-agg-vchart { + grid-template-columns: 1fr; + min-height: 170px; + } + + .wdtransf-agg-widget .wdtransf-agg-vchart-axis { + display: none; + } + + .wdtransf-agg-widget .wdtransf-agg-vchart-plot { + height: 145px; + } + + .wdtransf-agg-widget .wdtransf-agg-vchart-bar-wrap { + height: 108px; + } + + .wdtransf-agg-widget .wdtransf-agg-vchart-label { + transform: none; + } +} diff --git a/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/webapp/resources/images/icon.png b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/webapp/resources/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..102160cdd282b0d62712b3c7e6bef86fcd538496 GIT binary patch literal 7845 zcmV;W9$MjvP)002t}1^@s6I8J)%00004b3#c}2nYxW zdGoaJPGV z+#buq5*FA42W;@M+%8Kn2Apv=4w8eAEm@Y4G?EoY(u`&_FTd`ts{Nz;b@zKSBTL3M zSNilk%~W-D)wh4YU;Ta+p3qwJr%J6K`dQEX-sUAIO=-T=lX^iz(p)`Sa2p({NLeO5 z?I{c)HkgKZ_Gr<$J7b%hzje*Zfj?Dy#oGyM`uaO(o;)uiU+sjV4%Nn^_HYe<+K z$%NTtn}#g_rNNbovMVW;Jqi_%Vnw=T$IC0tkY$QJmSJo$4W2R38*lsgn*O(|{cky} z>Fe*Dw|ZXZl`}dsS4?S7uk30~o1HC5+A=l`NekOD5JG^~C=E(!l-5Y4a6LuIk>pAq zgV{0%hD+=}QshXkg5yanQ%K7&o&)hK%Mf?o_VLx*-panbWw0*zUk|@)+06E9PwH)Y z$IQu%R!@7Hrj&&STuX9@n+$`m{ohZn{kJ!> zZ*Ll`GynT<&%SV3&p)h~-LZOZPZJ4CP;?|x#-V`H3avq_Dhwi6HL4htA%LmILIkia z1J_gR9LTcuwGr}VkA!7boAr!g=>PVkPo4GXo6*NV8kSh_t>#aBcI{WrJh}7wMbleJ zS_Z|6td$xSNl#V1l+tJ-FunxEp~a<-5LEQ(w_7P+O>N5{Uv}BtKg^!NJhmw?ga8df zh?@+HFWml#wWEJBSm*wa2hY9i)Ty_uncq35vpGqj;)OP-#{MW`Qc)`*5g=6qN~xIC z;oqZ!dkH=@gsQ2u#x%eXf*k`{w(c24qcIHOe`>MQG{pMb|I6Bk-*#9Z{MJ*SxoBDM z*O$*~M`=aHQ{jkK1>kxLga9J-ic3b^UR43b^K~7hDxm0h9bH8E3Cmz$q{yZn!ziT# zI|iT;LVw{$pE>8NZyT%|Zh7|Bi;Q+vK>C`BPh%(w^ppUBe6v7qKiOQcG&3tm-C&fNJ2?m1R6B zqXwkbV3~r!Y?&?nBM2dUArI;kg8P~q6My!->(3~^>9EA~FDF0tHy7NqZspYTCbuLh zIx=jyD-}}u;$D>)sT3MGe@Qn<+hlY9Fx&QJu`L6LIz^pSsCb7ND@ABfL3wHbvzwYom3^cW*fBxPTeQMGCm)^XL5Xf>XNBYi~}FExWi<;dmOy zRm|^grnSK)UvhCgiQ`E;smPaIHuVn!uykfSOZr+VRXjY;hbt9$O5;h5Cl#JlNGXv@ z;VJ)jPx;QPR2nHkN>H9gc^c^{WN@FW{L54R-;~rSsVSEwlUvesG$-+-s(Ddb>vNCh z++R^TJ_g4H>o33l#BFOAc3<4toFZ3r@jQ*|DLg4DlwI;=msKZCVpdlp`LajFQ@BcF z2*J*Q9Q%(H0a!4tm6dZkd|)!_s3)a=1zx2SqtA&3di%9 z(viV74U`HrDU!^0e&9O~{_stKb@`Vb`t*u99ao*y(~RRPie(SilenJ3@qAU=x_6X( z*=2EG8!KkFQ*kAZEB%IP*zoF*KQaRIr?#+SZU=?3iyKIhjKc{5=@3x$s)DQmDx)g` zDUm9uTS^>HVHtwXmNZhTNQd#kX~kcC;42UP*FOr@1^@GbHFJBLzj?~cHb(Llmd*`?x2-&QG2*^xZI;|KtAdYU=&<(P1$dz4oAI`IAMjI>V_VL@)J55mc+w9^9(i$qV#N!eao*A%lD0wF zm16+KjdW;(lnf1cq@uCU8rAgw=1L!wCw;TgkTfxc4+pB32BFbfPb-x4H%|!Gd;amU z)0@(XYv)gGp;+z*l~|=D1-grM^AAGebkd#C26@bWI_6Z7|RFeSSRJ*^=U&%Y8Sv>?mx@ zVB6lKyt+S%S5KMM&fF=@~#~&PFOuU_-(V zC=3BlZ$C`FVH(fI`XRu`LI~`=)ecICn`8rLu?6P$;|H^W5I>%_VJ< zi&jjNF~j^xX*=Q!N$wSn&bCtG87(#(u0j;Rg23^AtjZ z;peY4&-=zOSBL(y|aVLQ%)fBOG@8;jWyka9=)-4Mjk^p%c)^Q{jC>^h;eDPC-HEEN<_0ey1Qfxkxd4>X zpBxv~)!%x2rd0ABN!uW4n>b$Vp>;#FrxZ$PDxTz5&+NeoymQkKtUGNQ0{`u5rMdH| z-BeuPoiGf+<)`)efwt6mp5m8J_J``)khHjPz? z93-SC{gKp@+>}Is!tLyf?qx>$WuB+xvW_E8AxuO%Q zS2ga7tLC`2DS#SDWpy-_HIadob8{++WtY1I9yT)C(Vs#&uDX0X&_Aj334})pjGPwNo8I&9k&>YE@ z`OVY2!+U4L$vam}BU^N^48d!MbKL*@ zYhnJvzIK+(Y$sQ6NZS@qyg0z#!6IW$s?q;Jhk3`5{aMal8F8hA& z#zPxb186+e8V?S&aC{UoHC0Nlj=|E4t3#5EiFUo8Qxk)E(G*Cvv6dycWYEc11usGOStH#nF73gl(|lmBVb`7umMUR`-!G1&-_0wkI3`Wf(ig z0UcYl#)nf6D4vwoivi5T9p_CdJMyz2I<$s_Y0%hU`|g1X78jIn^kwjSb^T9ijnq1{ zW1tz%mMJ?POJ+?1psg{ih`r+kj)%B)@N z$D2(J3HA@=*|ui{%kpPA{dLJY$)UdUI{K-jxrOQ#hci*C%aadm-19TzXx?3@HSK<; zqT)&4KzB1`usXLu@xqb zh6dMFiwvd3>1Yx@EZ_64E}Z&tR|F;=s49tHrs}ZDz~}M&shSse9pUMhBWLrXQ>W9} zlA=_05x_4V+Y#oqH6=NFX)mLNGUSnxuhss>IC zIFz;;66O-aGR5L>@iLg>DU{tXP_3$0jmKQ$$@_pjFFq6CFA)6f(H&HmpVCQ-OIFPw zTdZJPg3Y^z*sv{{xwvf2ESl2^(Ej$MyPl5Rkj~Zyf4xzim}(uD^bi9S!HIUT__vuY zjmh^LquF9dh*BsFp(&MJTrYAJ!V$45K`~z|9>~W19n%oJx^I++Uf375@q(4p=xR$- zu6S5NaA(X_=xS?V&7vOiC6|Vz$%dB?k_){0e9=LA{^G}pz^Rp@Rn}#94G7N^ZWnKvk{iZ)0#;fz4URSb$sh4BIc^yFU`pSheM$!O+ zy;A<=7bujRNV>fEq*^ShuTIxiBYPEv7*Z*J-fCc!M>j>%b>XSg>1a;jN0BV4-F~nn4K9bJuwC+0B0h1!ZI|*q~@fjs(XE^h7;d8%@-?y zn(3NR&>h!dt$NrBt+an>f0p#uPwfh4MVm88-mzjDxq?Gu%I2Au2iO?cu1w0Nsli4{ zMLJ=jl;&&y_AH}$KV&)~)lzXlCl05ktWtEhH(-hL2*!-@o9+jd*O; zL@9}`0@A)?8vfIolx?zO?@>0s5*hQqIOim$Pi~}8c1c(!-~Ra~4v!S0jU_-s%HsBW zx3cl&gJe=x;CUa1-Kk2?9|NbRtUzle3;EJ7%mphhp5>a!(+tZt$9V<8UMdys+Edk$ zv--w#&0W>eD()>Str-}~bJ1yifG=$eXLj(!=6w_^9u-Hj=?{mP+}6NTTMpoQ{=U;< z*(GTk^{t9r^BP?n+v(#?$0{oT?RoC#(2;*JJ9<{CWJ}u>W-8gBl^VBj)k}`X*Qkx- z!KrVAZ5r$w%2O!0teoEkKznnF^H)sgwL@8sjFvf?ukgg?eJG`=Zqzf3SdDQ&C)nW= zDjVd5eG&%Bt>i^1dy{2n4{w!D->}xYqgq~sjf;$aT;#_CbF4;apeb#0=My{FH<;tR z<1M=b}CLMF0yxOLv1;Dq^P_{5^;hG@@Ac&{{Kfaw7}+I+#7B zmClwl$%ILvO(r?=77)<8OG zQ7n5L7|Qc<{}5Yt4KbW6lS$dw!G6@^f)fBZQ8@K=3d2A-6;N_R2+I=sDX&!Yw3L>P z8S!eWIFf{IaORR;&OT)-3;H@}ZA?zk%6aS`%yI9A-Q4#~KiNWsrgXxeB6cK(AvpEq zZq8jkoyD^!(b1Bgu%5#sMIPAL&s|UMWN@TJQzkK?Nf=Lhjz@Bi1zjnHbSf%g@-)OY z;9m5Re||RI*}c+k$WR>>W#A^v>~3b^%nlH+dmzi%isps{bEdVicIi}3nLBw*Jx4}M z+O3xdFQN{UB8yf#1J-Hh# z{XSFKyb^seSHjkx#eUEKT3E~L^7 z9W61OEn}GmmT3epMNx4irXg5%(qyh$w}g2!+Q-!M;G>98($uvr7`J;W=i|EvFdfa0m<@1Jbx(=1j=)9vcoc!Fz4NQ({(!m%rAcNivYZD z-O7<4|8m0_TI)G>Lk6uiBe^n4X)MDCx8zLF1X2kTDK(G1u$NrXVby}3ni9>KBp04G zlY_$rw(J_hGL5k#oz^6669d7MoA+~ID97oGdNGY?OGYMb^Nv$zk}FpD{q{q6O3~es zA(OJnmz)V5(-BbyIMAc1@M!*Ul?{Pl@C~{ zG)jwcS3r){0K*U@lNOs^J;a`aqnxpLN=-*i(_rl>(`ao>^3u*BM)PHC)4&w9j;qg>UfDCu zw%x;=xpWG4bp8*3`F$Onvuql!r`UTa%h6mJse==%v2y8z#qNPop5HdWs)fBYrV};w z%$?TGnWs$S&~Sl$hq4ThmI8;@KYAj9BXmK-&>B4DpT91Y9fW{0PnpiU&N_+y{YTld z<1nUaB8yp2a_gVJ`^--*pW7V+T?b*^`kUVEI_}R>ZIiHKBjd68j1O`&Ut!U#Nqp(r zwKQkOcQpqLucSmO8`+!`* z;oxwdk!+b_*+2mC)@9e-yxJ){PnoGSsrF7E&P0G- zCzKFCuISL&n&z)Ras~^7#n(5I?tXFyKYwr=>;G&StCviD!}UD&{2p$*a}&D#t48(zPVzHJWn0YO` zoUvpo?>>J%OXqe?*s=YCIi7iGKMy_I&nvr+V4D8yMAfg#7adm2@8-SlT)>L?J(%YB z=N}FoDX?+tejePgiu*}^ zx!#k2NVQGENT$$IPFVhUf?EybOD?7%m_41ZUKv?!E)7hvc95%vs>GMcXh z5@6NLu~k!{tIS}6AfvbQpMx&kpjE+kI;W$gpq6+JD3U*BEJ7!pgqS2 z1z47O_FcDJ_xME3f8E2GmtJ$@r#&gZDTE-|+JTu!){KyE)LYit-+L9F9t&7hN3Eo7 z#*XSzGtE=~49Ath$X9KbMhJmz8YFBJ!-z{=b^b|&{uEkcnC55ix%K*Q9E-(qon*b_ zn(y5vrMgN8L9(SCqYhYo<0njUpQpYdHTeV))kNwYFI@jA>a0TCSF9HCL8(#|l<~uR zZoT2Ei5ni=cD&B!#aDmtZmrZM0CsaLR;mF#!NO-$c{JxbUa9f+DNK~2ygH(Q*5gjh zj4`DGd{Ax$SuXf+P;e-#4rQ<&K+uhZAr7(<#0Nm^dPCn~5OVr1A)ho7v ztlC&zd(|v$jpNHjSM|7Cu+$cKGFpoORQS+XUIfTLdJ@!7E+R{LKqCy}k*>)tR~#>c z6FPnWpFaPu$-_fOf1$O$R4avt6r*VrO3}Z0qF^5MZ#Ky z0Hsis0(gEbD1^9YQb+TZ|MHI?th`>o!@5rdRyAF6&G&9qN?(mu2*bo|Xu?RQgPDor z_x6tsXnZejLO8*PCXP}B>wXT(DH0rv#1P^K_uO{F)yL7*+Go8HSOAw^bK_^EQeUqw zC>nMOE8U2&Y+r50srQY*@$>2$UCkc@r z*Y3LIy8l1FnXNvpTYux_QmXY@b0NX{WQ`sQfe;2-1ki-<5ruZAs+(0GOsinvhz%Yh z`~e_^;C|CEZn^9G*Z=CR=+j&NZIV}9fAc)ol~-!5uh5zmRKWq%sp9LVS~vinfaiq} zzqW1jj$hq$?JI9an&w*t+49TM?U}K?rgraxa_!#Ez_LaJ*nwKM~)UU#ga=p zWz#jO$s0V9|52&pY)vGrms%QATYmV}5C6%&0rx)u*MA@6R*rOt00000NkvXXu0mjf D*xqLB literal 0 HcmV?d00001 diff --git a/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/webapp/resources/js/wdtransfreg.js b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/webapp/resources/js/wdtransfreg.js new file mode 100644 index 0000000..259481a --- /dev/null +++ b/Transferência Ginseng/wcm/widget/wdtransfreg/src/main/webapp/resources/js/wdtransfreg.js @@ -0,0 +1,447 @@ +var WdTransfRegWidget = SuperWidget.extend({ + datasetName: "transferenciav2", + batchSize: 1000, + rowsCache: [], + isIncrementalLoading: false, + loadOffset: 0, + batchToken: 0, + lastChunkMarker: "", + noPagingMode: false, + groupKeyCandidates: ["ufOrigem", "UF_ORIGEM", "UF", "uf"], + emptyLabel: "Nao informado", + + bindings: { + local: {}, + global: {} + }, + + init: function() { + this.$widget = $("#MyWidget_" + this.instanceId); + this.bindEvents(); + this.loadData(); + }, + + bindEvents: function() { + var self = this; + + self.$widget.on("click", "[data-action='reload']", function() { + self.loadData(); + }); + + self.$widget.on("change", "[data-role='topN']", function() { + self.render(); + }); + + self.$widget.on("input", "[data-role='search']", function() { + self.render(); + }); + + self.$widget.on("keypress", "[data-role='search']", function(e) { + if (e.which === 13) { + e.preventDefault(); + self.render(); + } + }); + }, + + loadData: function() { + this.batchToken++; + this.rowsCache = []; + this.loadOffset = 0; + this.lastChunkMarker = ""; + this.noPagingMode = false; + this.isIncrementalLoading = true; + + this.setLoading(true); + this.setMessage("Carregando solicitacoes...", "info"); + this.render(); + this.loadNextBatch(this.batchToken); + }, + + loadNextBatch: function(token) { + var self = this; + if (token !== self.batchToken) return; + + self.fetchDatasetBatch(self.batchSize, self.loadOffset, function(err, rows) { + if (token !== self.batchToken) return; + + if (err) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Erro ao carregar dataset: " + err, "danger"); + return; + } + + rows = rows || []; + if (!rows.length) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Dados carregados: " + self.formatNumber(self.rowsCache.length) + " registro(s).", "success"); + return; + } + + var chunkMarker = self.buildChunkMarker(rows[0]); + if (self.loadOffset > 0 && chunkMarker && chunkMarker === self.lastChunkMarker) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Paginacao do dataset nao evoluiu (sqlStart/offset). Verifique suporte no ambiente.", "warning"); + return; + } + + self.lastChunkMarker = chunkMarker; + self.rowsCache = self.rowsCache.concat(rows); + self.loadOffset += rows.length; + self.render(); + self.setMessage("Carregando solicitacoes... " + self.formatNumber(self.rowsCache.length) + " registro(s).", "info"); + + if (self.noPagingMode) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Dados carregados: " + self.formatNumber(self.rowsCache.length) + " registro(s).", "success"); + return; + } + + if (rows.length < self.batchSize) { + self.isIncrementalLoading = false; + self.setLoading(false); + self.render(); + self.setMessage("Dados carregados: " + self.formatNumber(self.rowsCache.length) + " registro(s).", "success"); + return; + } + + setTimeout(function() { + self.loadNextBatch(token); + }, 0); + }); + }, + + fetchDatasetBatch: function(limit, offset, callback) { + var self = this; + if (self.noPagingMode && offset > 0) { + callback(null, []); + return; + } + + try { + if (typeof DatasetFactory !== "undefined" && typeof DatasetFactory.getDataset === "function" && + typeof ConstraintType !== "undefined" && typeof DatasetFactory.createConstraint === "function") { + var constraints = self.noPagingMode ? null : self.buildFactoryPagingConstraints(limit, offset); + var ds = DatasetFactory.getDataset(self.datasetName, null, constraints, null); + var rows = (ds && ds.values) ? ds.values : []; + + if (!rows.length && offset === 0 && !self.noPagingMode) { + var dsNoPaging = DatasetFactory.getDataset(self.datasetName, null, null, null); + var rowsNoPaging = (dsNoPaging && dsNoPaging.values) ? dsNoPaging.values : []; + if (rowsNoPaging.length) { + self.noPagingMode = true; + callback(null, rowsNoPaging); + return; + } + } + + callback(null, rows); + return; + } + } catch (e) { + // fallback REST + } + + this.fetchDatasetBatchViaRest(limit, offset, callback); + }, + + buildFactoryPagingConstraints: function(limit, offset) { + var constraints = []; + constraints.push(DatasetFactory.createConstraint("sqlLimit", String(limit), String(limit), ConstraintType.MUST)); + constraints.push(DatasetFactory.createConstraint("sqlStart", String(offset), String(offset), ConstraintType.MUST)); + constraints.push(DatasetFactory.createConstraint("offset", String(offset), String(offset), ConstraintType.MUST)); + constraints.push(DatasetFactory.createConstraint("sqlOffset", String(offset), String(offset), ConstraintType.MUST)); + return constraints; + }, + + fetchDatasetBatchViaRest: function(limit, offset, callback) { + var self = this; + if (self.noPagingMode && offset > 0) { + callback(null, []); + return; + } + + function readRows(resp) { + if (resp && resp.content && resp.content.values) return resp.content.values; + if (resp && resp.values) return resp.values; + return []; + } + + function request(usePaging, done) { + var constraints = usePaging ? self.buildRestPagingConstraints(limit, offset) : []; + $.ajax({ + url: "/api/public/ecm/dataset/datasets", + type: "POST", + contentType: "application/json; charset=UTF-8", + dataType: "json", + data: JSON.stringify({ + name: self.datasetName, + fields: [], + constraints: constraints, + order: [] + }) + }).done(function(resp) { + done(null, readRows(resp) || []); + }).fail(function(xhr) { + var detail = xhr && (xhr.responseText || xhr.statusText || xhr.status); + done(detail || "falha na API REST de datasets", []); + }); + } + + request(!self.noPagingMode, function(err, rows) { + if (err) { + callback(err); + return; + } + + if (!rows.length && offset === 0 && !self.noPagingMode) { + request(false, function(err2, rows2) { + if (err2) { + callback(err2); + return; + } + if (rows2.length) { + self.noPagingMode = true; + } + callback(null, rows2 || []); + }); + return; + } + + callback(null, rows || []); + }); + }, + + buildRestPagingConstraints: function(limit, offset) { + return [ + { _field: "sqlLimit", _initialValue: String(limit), _finalValue: String(limit), _type: 1 }, + { _field: "sqlStart", _initialValue: String(offset), _finalValue: String(offset), _type: 1 }, + { _field: "offset", _initialValue: String(offset), _finalValue: String(offset), _type: 1 }, + { _field: "sqlOffset", _initialValue: String(offset), _finalValue: String(offset), _type: 1 } + ]; + }, + + buildChunkMarker: function(row) { + if (!row) return ""; + var id = this.pick(row, ["metadata#id", "id", "WKNumProces", "processInstanceId"]); + var state = this.pick(row, ["activity", "WKNumState", "state"]); + return (id || "-") + "|" + (state || "-"); + }, + + render: function() { + var grouped = this.aggregateRows(this.rowsCache); + var filteredGroups = this.filterGroups(grouped); + var shownGroups = this.applyTopN(filteredGroups); + + this.renderChart(shownGroups, this.rowsCache.length); + }, + + aggregateRows: function(rows) { + var map = {}; + var key; + + for (var i = 0; i < (rows || []).length; i++) { + key = this.resolveGroupValue(rows[i]) || this.emptyLabel; + + if (!map[key]) { + map[key] = { + name: key, + count: 0 + }; + } + map[key].count++; + } + + var list = []; + for (var name in map) { + if (map.hasOwnProperty(name)) { + list.push(map[name]); + } + } + + list.sort(function(a, b) { + if (b.count !== a.count) return b.count - a.count; + return String(a.name).localeCompare(String(b.name)); + }); + + return list; + }, + + filterGroups: function(groups) { + var $search = this.$widget.find("[data-role='search']"); + if (!$search.length) return groups.slice(0); + + var search = $.trim(String($search.val() || "")).toLowerCase(); + if (!search) return groups.slice(0); + + var out = []; + for (var i = 0; i < groups.length; i++) { + var g = groups[i]; + if (String(g.name || "").toLowerCase().indexOf(search) !== -1) { + out.push(g); + } + } + return out; + }, + + applyTopN: function(groups) { + var $top = this.$widget.find("[data-role='topN']"); + if (!$top.length) return groups.slice(0); + + var raw = $.trim(String($top.val() || "0")); + var topN = parseInt(raw, 10); + + if (isNaN(topN) || topN < 0) topN = 0; + if (topN === 0) return groups.slice(0); + + return groups.slice(0, topN); + }, + + renderKpis: function(allGroups, shownGroups) { + var totalSolicitacoes = this.rowsCache.length; + var totalGrupos = allGroups.length; + var solicitacoesExibidas = 0; + + for (var i = 0; i < shownGroups.length; i++) { + solicitacoesExibidas += Number(shownGroups[i].count || 0); + } + + this.$widget.find("[data-role='kpiTotalSolicitacoes']").text(this.formatNumber(totalSolicitacoes)); + this.$widget.find("[data-role='kpiTotalGrupos']").text(this.formatNumber(totalGrupos)); + this.$widget.find("[data-role='kpiSolicitacoesExibidas']").text(this.formatNumber(solicitacoesExibidas)); + }, + + renderChart: function(groups, totalRows) { + var html = []; + + if (!groups.length) { + var emptyMsg = this.isIncrementalLoading ? + "Carregando dados..." : + "Nenhum registro para os filtros informados."; + html.push("
" + this.escapeHtml(emptyMsg) + "
"); + this.$widget.find("[data-role='chartBars']").html(html.join("")); + return; + } + var bars = []; + for (var i = 0; i < groups.length; i++) { + var item = groups[i]; + var count = Number(item.count || 0); + var percentTotal = totalRows > 0 ? (count * 100 / totalRows) : 0; + + bars.push( + "
" + + "
" + this.escapeHtml(this.formatPercent(percentTotal)) + "
" + + "
" + + "
" + + "
" + + "
" + this.escapeHtml(item.name) + "
" + + "
" + ); + } + + var minWidth = Math.max(groups.length * 86, 360); + + html.push( + "
" + + "" + + "Participacao (%)" + + "" + + "
" + + "
" + + "
" + + "100%50%0%" + + "
" + + "
" + + "
" + + "
" + + "
" + + "
" + + "
" + bars.join("") + "
" + + "
" + + "
" + + "
" + ); + + this.$widget.find("[data-role='chartBars']").html(html.join("")); + }, + + resolveGroupValue: function(row) { + return this.pick(row || {}, this.groupKeyCandidates); + }, + + pick: function(row, keys) { + for (var i = 0; i < keys.length; i++) { + var value = row[keys[i]]; + if (value !== null && value !== undefined && String(value).trim() !== "") { + return String(value).trim(); + } + } + return ""; + }, + + formatNumber: function(value) { + var n = Number(value || 0); + if (isNaN(n)) return "0"; + return n.toLocaleString("pt-BR"); + }, + + formatPercent: function(value) { + var n = Number(value || 0); + if (isNaN(n)) n = 0; + return n.toLocaleString("pt-BR", { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + "%"; + }, + + renderUpdatedAt: function() { + var now = new Date(); + var stamp = now.toLocaleDateString("pt-BR") + " " + now.toLocaleTimeString("pt-BR"); + this.$widget.find("[data-role='updatedAt']").text("Atualizado em: " + stamp); + }, + + setLoading: function(isLoading) { + this.$widget.toggleClass("is-loading", !!isLoading); + if (isLoading) { + this.setMessage("Carregando dados...", "info"); + } + }, + + setMessage: function(text, type) { + var $msg = this.$widget.find("[data-role='message']"); + $msg.removeClass("is-info is-success is-warning is-danger"); + + if (!text) { + $msg.hide().text(""); + return; + } + + var className = "is-info"; + if (type === "success") className = "is-success"; + if (type === "warning") className = "is-warning"; + if (type === "danger") className = "is-danger"; + + $msg.addClass(className).text(text).show(); + }, + + escapeHtml: function(text) { + return String(text == null ? "" : text) + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/\"/g, """) + .replace(/'/g, "'"); + } +}); + + + + + + + diff --git a/Transferência Ginseng/wcm/widget/wdtransfreg/target/wdtransfreg.war b/Transferência Ginseng/wcm/widget/wdtransfreg/target/wdtransfreg.war new file mode 100644 index 0000000000000000000000000000000000000000..0b828d6036ebda15d2820b6b141ab57e17e0654d GIT binary patch literal 15116 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 + + volume + + + Default + + + mecanismoGrupo @@ -710,6 +718,203 @@ + + camposFormulario, documentoId = 43582 + + + activity + + + categoriaItem + + + centroCusto + + + chaveNfe + + + codigoItem + + + codigoProdutoItem + + + currentUserId + + + currentUsermail + + + currentUserName + + + dataAbertura + + + dataColeta + + + dataEmissaoApiNfe + + + dataEmissaoNfe + + + dataEntradaNfeConsulta + + + dataEntrega + + + dataValidacaoGestor + + + descricao + + + emailSolicitante + + + estabelecimento + + + excelUpload + + + fdAnexo_Coleta + + + fdAnexo_Entrega + + + fdAnexo_recebimento + + + fnAnexo_Nfe + + + formMode + + + fornecedorNfeConsulta + + + gestorEmail + + + gestorEmailE + + + gestorNome + + + gestorNomeE + + + gestor_cc + + + gestor_cce + + + invoiceIdNfeConsulta + + + itensNfeConsulta + + + itensNfeJson + + + justificativa + + + justificativaDecisaoGestor + + + justificativaDecisaoItens + + + lojaNfeConsulta + + + motoristaColetaLogin + + + motoristaColetaNome + + + motoristaEntregaLogin + + + motoristaEntregaNome + + + motoristaEntregaSelecionado + + + nomerecebedor + + + numeroNfeConsulta + + + operacaoNfeConsulta + + + productIdItem + + + qtdDivergenciasNfe + + + quantidadeItem + + + requesterId + + + requesterMail + + + requesterName + + + serieNfeConsulta + + + situacaoNfeConsulta + + + storeIdNfeConsulta + + + tipoMotoristaEntrega + + + ufDestino + + + ufOrigem + + + userValidacaoGestor + + + usuarioEmissorNfe + + + validacaoItens + + + valorNfeConsulta + + + WKNumProces + + + mecanismo @@ -835,5 +1040,543 @@ + + forms + + + + + FLUIGADHOC + + + FLUIGADHOC + + + 3 + + + + + + + FLUIGADHOCPROCESS + + + FLUIGADHOCPROCESS + + + 4 + + + + + + + totvsflow_dataset_tipo_ocorrencia + + + totvsflow_dataset_tipo_ocorrencia + + + 14 + + + + + + + totvsflow_abertura_chamado + + + totvsflow_abertura_chamado + + + 15 + + + + + + + DSFormulariodeAberturadechamado + + + Formulário de Abertura de chamado + + + 20 + + + + + + + Abertura_de_chamados + + + Solicitação de abertura de chamados + + + 21 + + + + + + + DSvistoriadeServico + + + vistoriadeServico + + + 24 + + + + + + + DSFormulariodeReservadesala + + + Formulário de Reserva de sala + + + 34 + + + + + + + totvsflow_dataset_centrocusto + + + totvsflow_dataset_centrocusto + + + 103 + + + + + + + totvsflow_dataset_cadastro_item + + + totvsflow_dataset_cadastro_item + + + 104 + + + + + + + totvsflow_dataset_estabelecimento + + + totvsflow_dataset_estabelecimento + + + 105 + + + + + + + totvsflow_solicitacao_compras + + + totvsflow_solicitacao_compras + + + 165 + + + + + + + aberturadechamado_manutencao + + + aberturadechamado_manutencao + + + 400 + + + + + + + Solicitacao_transferencia + + + Solicitacao_transferencia + + + 590 + + + + + + + recrutamento + + + recrutamento + + + 823 + + + + + + + kit_aniversariantes + + + Aniversariantes + + + 7690 + + + + + + + kit_cardapio + + + Cardápio do Dia + + + 7695 + + + + + + + kit_convenios + + + Convênios + + + 7703 + + + + + + + kit_news + + + Notícias + + + 7709 + + + + + + + compras_digital + + + compras_digital + + + 9305 + + + + + + + dpf_di_formulario_processo_admissao + + + Digte_Public_Form_Di_Formulario_Processo_Admissao_Protheus + + + 9626 + + + + + + + dpf_cadastro_status + + + Digte_Public_Form_Status + + + 9627 + + + + + + + dpf_configuracoes + + + Digte_Public_Form_Configuracoes + + + 9628 + + + + + + + dpf_cadastro_jornada + + + Digte_Public_Form_Jornada + + + 9629 + + + + + + + dpf_tipo_documento + + + Digte_Public_Form_Tipo_Documento + + + 9630 + + + + + + + dpf_dataset + + + Digte_Public_Form_Dataset + + + 9631 + + + + + + + dpf_di_configuracao + + + Digte_Public_Form_Di_Configuracoes + + + 9632 + + + + + + + dpf_di_beneficio + + + Digte_Public_Form_Di_Beneficios + + + 9633 + + + + + + + dpf_di_compl_contrato + + + Digte_Public_Form_Di_Comp_Contrato + + + 9634 + + + + + + + dpf_di_funcao_jornada + + + Digte_Public_Form_Di_Funcao_Jornada + + + 9635 + + + + + + + dpf_dataset_estrutura + + + Digte_Public_Form_Di_Dataset_Estrutura + + + 9636 + + + + + + + dpf_grupo_tipo_contrato + + + Digte_Public_Form_Grupo_Tipo_Contrato + + + 9637 + + + + + + + dpf_tipo_contrato + + + Digte_Public_Form_Tipo_Contrato + + + 9638 + + + + + + + dpf_di_traducao_campo_valor + + + Digte_Public_Form_Di_Traducao_Campo_Valor + + + 9639 + + + + + + + dpf_di_restricoes_cpf + + + Digte_Public_Form_Di_Formulario_Restricao_CPF + + + 9640 + + + + + + + dpf_di_compl_vt + + + Digte_Public_Form_Di_Compl_VT + + + 9641 + + + + + + + dpf_di_traducao_campo + + + Digte_Public_Form_Di_Traducao_Campo + + + 9995 + + + + + + + desligamento + + + desligamento + + + 12959 + + + + + + + checklist + + + checklist + + + 40213 + + + + + + + totvsflow_lancamento_documento + + + totvsflow_lancamento_documento + + + 41254 + + + + + + + transferência + + + transferência + + + 43582 + + + + + diff --git a/Transferência Ginseng/workflow/.resources/Solicitação de transferência.ecm30.xml b/Transferência Ginseng/workflow/.resources/Solicitação de transferência.ecm30.xml index 538ae9c..3997177 100644 --- a/Transferência Ginseng/workflow/.resources/Solicitação de transferência.ecm30.xml +++ b/Transferência Ginseng/workflow/.resources/Solicitação de transferência.ecm30.xml @@ -29,10 +29,10 @@ 1 Transferência Ginseng - 46 + 49 - 590 + 43582 true true false @@ -826,7 +826,7 @@ 1 Transferência Ginseng 1 - 46 + 49 2 hAPI.getCardValue("gestor_cce") != "" @@ -840,7 +840,7 @@ 1 Transferência Ginseng 2 - 46 + 49 2 true @@ -854,7 +854,7 @@ 1 Transferência Ginseng 1 - 46 + 49 46 hAPI.getCardValue("validacaoItens") == "entregue" && hAPI.getCardValue("dataEntradaNfeConsulta") != "" @@ -866,7 +866,7 @@ 1 Transferência Ginseng 2 - 46 + 49 46 true @@ -878,7 +878,7 @@ 1 Transferência Ginseng 1 - 46 + 49 107 hAPI.getCardValue("ufOrigem") == "AL" @@ -892,7 +892,7 @@ 1 Transferência Ginseng 2 - 46 + 49 107 hAPI.getCardValue("ufOrigem") == "BA" @@ -906,7 +906,7 @@ 1 Transferência Ginseng 3 - 46 + 49 107 hAPI.getCardValue("ufOrigem") == "SE" @@ -920,7 +920,7 @@ 1 Transferência Ginseng 4 - 46 + 49 107 hAPI.getCardValue("ufOrigem") == "" @@ -929,6 +929,34 @@ Pool Grupo 0 + + + 1 + Transferência Ginseng + 5 + 49 + 107 + + hAPI.getCardValue("ufOrigem") == "VDC" + 31 + <AssignmentController><Group>motoristaBA</Group></AssignmentController> + Pool Grupo + 0 + + + + 1 + Transferência Ginseng + 6 + 49 + 107 + + hAPI.getCardValue("ufOrigem") == "SE" + 31 + <AssignmentController><Group>motoristaSE</Group></AssignmentController> + Pool Grupo + 0 + @@ -1378,7 +1406,7 @@ function notifyTemplate(templateCode, destinoEmail, requesterId, params, process } function buildProcessLink(processNumber) { - var BASE_URL_FALLBACK = "https://comerciode188007.fluig.cloudtotvs.com.br"; + var BASE_URL_FALLBACK = "https://comerciode188006.fluig.cloudtotvs.com.br"; var baseUrl = safeTrim(getValue("WKServerURL")); var companyId = safeTrim(getValue("WKCompany")); if (baseUrl === "") baseUrl = BASE_URL_FALLBACK; @@ -1640,7 +1668,7 @@ function onlyDigits(value) { 1 Transferência Ginseng - 46 + 49 5 1 @@ -1651,7 +1679,7 @@ function onlyDigits(value) { 1 Transferência Ginseng - 46 + 49 5 2 @@ -1662,7 +1690,7 @@ function onlyDigits(value) { 1 Transferência Ginseng - 46 + 49 7 1 @@ -1673,7 +1701,7 @@ function onlyDigits(value) { 1 Transferência Ginseng - 46 + 49 26 1 @@ -1684,7 +1712,7 @@ function onlyDigits(value) { 1 Transferência Ginseng - 46 + 49 61 1 @@ -1695,7 +1723,7 @@ function onlyDigits(value) { 1 Transferência Ginseng - 46 + 49 85 1 @@ -1751,6 +1779,24 @@ function onlyDigits(value) { Justificativa 5 + + + 1 + Transferência Ginseng + motoristaColetaNome + + Motorista Coleta + 6 + + + + 1 + Transferência Ginseng + motoristaEntregaNome + + Motorista Entrega + 7 + 1 @@ -1758,7 +1804,7 @@ function onlyDigits(value) { requesterName requesterName - 6 + 8 @@ -1780,7 +1826,7 @@ function onlyDigits(value) { 0 0 Transferência Ginseng - 46 + 49 4 approval title @@ -1790,7 +1836,7 @@ function onlyDigits(value) { 0 0 Transferência Ginseng - 46 + 49 4 approval description @@ -1800,7 +1846,7 @@ function onlyDigits(value) { 0 0 Transferência Ginseng - 46 + 49 4 approval highlight @@ -1810,7 +1856,7 @@ function onlyDigits(value) { 0 0 Transferência Ginseng - 46 + 49 4 approval approve @@ -1820,7 +1866,7 @@ function onlyDigits(value) { 0 0 Transferência Ginseng - 46 + 49 4 approval reject @@ -1830,7 +1876,7 @@ function onlyDigits(value) { 0 0 Transferência Ginseng - 46 + 49 6 approval title @@ -1840,7 +1886,7 @@ function onlyDigits(value) { 0 0 Transferência Ginseng - 46 + 49 6 approval description @@ -1850,7 +1896,7 @@ function onlyDigits(value) { 0 0 Transferência Ginseng - 46 + 49 6 approval highlight @@ -1860,7 +1906,7 @@ function onlyDigits(value) { 0 0 Transferência Ginseng - 46 + 49 6 approval approve @@ -1870,7 +1916,7 @@ function onlyDigits(value) { 0 0 Transferência Ginseng - 46 + 49 6 approval reject @@ -1880,7 +1926,7 @@ function onlyDigits(value) { 0 0 Transferência Ginseng - 46 + 49 24 approval title @@ -1890,7 +1936,7 @@ function onlyDigits(value) { 0 0 Transferência Ginseng - 46 + 49 24 approval description @@ -1900,7 +1946,7 @@ function onlyDigits(value) { 0 0 Transferência Ginseng - 46 + 49 24 approval highlight @@ -1910,7 +1956,7 @@ function onlyDigits(value) { 0 0 Transferência Ginseng - 46 + 49 24 approval approve @@ -1920,7 +1966,7 @@ function onlyDigits(value) { 0 0 Transferência Ginseng - 46 + 49 24 approval reject diff --git a/Transferência Ginseng/workflow/.resources/Solicitação de transferência.png b/Transferência Ginseng/workflow/.resources/Solicitação de transferência.png index 51df293ea3a14d879deeb0d04d257b391daec1dc..d5bc181d6cf4de942b855d1262a31021eac14646 100644 GIT binary patch literal 50256 zcmdqJWmuHk7dMPY1rY}j107NU0ZApLl~PirTcn0A=@^t01Vjnx5|Hjr83d(=&KZVo zhVGf?COk(y|8u?X*XQBl1I&Hzz1LoQv_+Y z;-?JM#Ds4i_BfmPJ!F3-Hre@C%3qH{#m;elzlBdv^YEqAL-zOQC~5yX@9EvO_k}zR zZ2G9arjUcbu&~LDyRdvFZdWUQ1@F$s$U)Nx-4DAn?bSaUYC_}ge*1}XeX#8vU~ z96uk%-&fRB5rh5y(z6_<|C`CmP=ce2`?ZIIe&?BgfrH!rFtX%6SUG4QYE+NPY5Vo| z89-Q$ezHm9rbs|%PyX?MUH<#e1>*lF{^Vr=Bi_dgG1t0ozy7B8ycb-mx+8t*WV<-_ z6IqZlTFC%Up2@Vdd9GBkgUp|gO2)rHRAs$v{Ru;72<4SXUG;o>A2y8ZKu(9|5z$M) zlsJ5M(>_pxaZlNIf&3b1pFR}bL6aCrA=i;jg1!5bv)Q~%U?H?SoR{kcrI4*BU-r2x zKlv-dn2G${Ixmuq0n#w70YZ3-ob=}Cw!+{aj{Y4thyyEIO{gk^Vw0=y&SD_ zlQnU=zBUV?-fLB$oy`1^@Px`bA3vWnrnBW%2CyHwZJ}I$FF__L4hy*x%1-x9qzh7x z?lTXgC&ONmQhK98==c1lF8J~@Ak@rA3`yBfTac1A0;Ow2L8=8(SKN@piDwN!! zIN_CtEbm>g@(j40@qXWzb?JAEm$7$Y={=fdEq&(E^4xvjL@zKV{5!5;qtRh)b7R7&(mrs5L zwC^RyaE8`5j=+*{(DC-Y=9-_oBmVvjpb=L+p5T-ZozA%|YKIHU9|hxN8lE_nYkz0C zjv>O^w^HTQjN^|f_X!a*VRa3NB7nl3PbZy%=v8pzI5!J{pCCMW5xdyzQbOFTDj(CjUoPt>J*ESvRC0+B96y)`GSe#rVRyvr8l0FK7=TZHC3J`quN8t@&k#KHqMFs`}`z}}&f?5y-TJ(uUs zG$-4x8(Yfp)N9BMi?o?~)95ISfsvH&DT^Vla5T!9)&p__*H;`iRSpxSC!02( zCD!QA;mOuep%vH-^zE7f#q#4rza0}t90UP2mOb+Y;wb9w3}Khyd^gR^rZrT&AS)TX zY+|yP7RyM1=q&%(m5o+8F%~F+xYi-q=3^W<`z1j7Z2iS*Q{M;05w4h-@ImCIEGO%a zXTEWImi|5tDsAN9QE?h{7z6KDJ+I2v;mK5-T!%1V=ij}Lm6Ltl@%}bNj^we_DRZ`J z!XW1bDRPWW_+C&+37<~rMSa4ayI{i{-J%a{6g9=`a6SGgxuw#xDOYU%VKx;-`pHb% zoMx5fJ`RhStPIh@=`RjMyD7^Yx~SXoe#|vTIi>7sY%5+^AvWB4;``%-4nLp2xpCwP z7CHN^9u6Mpe(dHK9@2)yW zY)yj8ijfP8O9Xi*YtO5l#^k0Fp4h!FON_zNr&C?(lYn)1uRVVrE{C*GFR#w9l+u<` z?@cWWvU)7|Xz=+aOqMNdcT4ui!hVG>20wg&Y4x)UC+6G2wv5bmBB#D zI!h09!=o5$Nh=VnCpLn4B*?8dxXn?28JRszR~3 zs1x()8AVM6_yqT982Uorp1^)$_HLGhbElT#xUMRDp}-CoW_)j~7h%<4xO>)gYp@v|S0}eca1N zWUq6>v8+p(po>Bo!Gv3EkkI6t3x~dKUBbgW`>;b@CWWr%4R*fC9WmJBi}Yf!c>$6d zhxjY}i4A%jl#wb?!aw-aHzlaZW4BzPhT(Z{Oa76P_@<9eV~}d^yV}Y|?;UsFufR&1 zHw>`EV@VX7c=kIHOs>P3EsWAei=FnuoT6=30q^8@c?dM(4-*S&ZcpyaH;++>23gW2 z=>j^Eea~Q(s<91fpW%?9Bw6;IU(D53L0HV-+!vfF$QLjP%y%&7<*FbDe( zL1?@Sg%!gC3N}@_-=n~*`PciS^hS1)bT^->S&B=gAor{!?A3Iz11Pj7F^EPjh8RS! zZEx@d5CYk4xzaul9^6)KA<>;ePYHS7Ou5)0J-~6C>e-Rw*bUa(4BxZ*9Nua|V5}4! z+-vFXlrF?CR`&>CW9yd=a#n|sJCtIj2a_)gI2-k$2$i*TR zmw<&eS*>4n{1O*tY-bQL*tgeB3a#LpQBDoZBU0cy;K_VXa2!^=_n;Mn4ZT2Bg$!as z>TAL>Wm`}WY^0NPm!2lVtvaRFgT!DE0>DE$L`)V%U}JJ zK8N0H3Nn9SXQJ{l)a}$%Jyx|z(p5R~PS4<0!_n)8%U23HwAX9G1!{HH_pR6CuVG|T zxXt?}9k|2PU1S6)5U%q*?cvY2Zl9=k0vBM$p_G;)M>h9p?Pso~A+s2k|W`P1>3L$Ol=KY62V0B6e1d!t--J-Y&K=@*3-+>iA zj6_%tOl}A-A54&}e3<;f|G~kfeF@lzlQ~jjx6RUBLE2Yd_;7;?GiyU2NxU$Jc1f$^ zT76n_YIqVhk0^6Pc$_+SUS3iQ&sSyJh1E7h)7PB>J{UcLeITQ(e7N)WcJX?Ri#ET4 z9d9yB(73vECA(;H%!F@bZeUe5t&0CBmOR;Q9f=qWkRU-IMx7t-Oqo%hGtDq0lwKR| z9K|#&o!7a_yv-_~QOL$uNf8!PFv;mhPf@~7svOkamFBccN6P48Oxfbfi!B~$jtWd- zUr9pO^URZymy)nm>Wh0xZBT*-Dz?Ze4lC4|zGu(hZD=qutTM)7Xp zmp`N;?4rkg+G7!WEf)!>9!dKKQz2(JYpCSZ*zBv&{LxaR%#oQ+%_nmEwWJ1>t9tN@|7A2)x-UtMqDLZ!J2NTXC))2BP_` z7|EAkKa{6CjN13g=M-_%;T^4;0CE(F#O^zZe&`K)o{XCB+TG^w`gk?s#0by=!Bl_`twJ*DOmA=E0#P-uNFd}RLgYDR1Q5^wXJ@|Rog^Hn z%9qrt5iS6AT?r;)aeTbP5jK={F!wPv5Nf1gOePQ>MVLk|T!UB`O+7GP*HkTZvot8B zbYNl&IZc}U6kOqX;Y;Cx&5Sb7u0OvhnSC#pZPAD}o8MGt!}4RlrO2j#?8D018x<~A zVwsElB1j&|jt~dsZH2x`#ptbUimBliS8}A`p48@RdkN?3fDQBvHrcWULRUb{vI}%2 zcSn=mm6loL;~sM0v8bs~A4J}ESLdsOVxyk}wrk0SDa?X2*HO!n{`gcIU=u$MCIft? zzYJPPA--_=3hj<}GVA21^O~mRYin=|F>9o|mK7?GW|=yW} zF@7;?nTj{HMDt5Y;`xSDH(QfT*{1ZMovTHgrp*UU?^esKPmM$aKHZ0V!Cq>?F-YcJ z{U3ZQ75WUO43%{2;efOCj%R>`Or=P()lA-2v(aq>BoPpjiLL6edj8`OEkTXN&nK|; zm24#ViljDDc%_p*kxF8C^ePB%MI%;aHaNJLmp6?&3uK#>wOo*DuPmnq1>8^FUY_B& zizZ+o&cUrrtDkP9Wu>T*Rgrzrb=`HG8Uu`WSwrVOo>4FbT@~n<8&Ok0kh>=?YHK2y z8M(;4Bq}HeQmbu?$ea$;PF}fYz|p-YTG;DnA68>|0hzb~;mr!HtEt(Xe>@3yDjv4a z7~bi}JGXtkX@VOY1-QOCz&w7*h=e`2_5W~iad|++ZTpK(_U_BJJ1cigvn^GjD(za) z4(7z};dOL?Qu?>Bt}y(hB+QC4YdQ^nA32?@Yv-U)MOKh|D-ObIRhJij>0wjw#PNv- z1^Ey$Q+_;n2J;6(N}`&z7v81y>K~iw1o=M!vhqW=TR@v+|P3&MOu3S;Ncr!Bz~&n(56-V0RlRnc=FX0Ec4pjc0X3 z_h4~vN^(ow7MlWr6zbSZ$uK0AV^j9mOJ>YhE%KW)n(Y>%t+k*%Q|~%nm0E# z)32q5UCZ2OARVd6>=#EE1XM_`)^|=ph6hM(rH;A&`6#upPfC2C?ykOt$L)03Tg5fLoQ&-2!%I>%N5ao;s8QgC?r!%cqw;(Sh8)5$346&mD54;~ z&%rI}l%tCijX;Kin&xpYa*V57eLy6`-rp+xY#O7cQJ#2Ea}NlxoanYkwT}QL0t8 zRc3Q>_nDJpy3qahHFpkfmaEL(K(SnIyo~pjek+UyY*=xe7I<6*T#6{b_=#YjQl8qB zfTOgr=qTl>;Pdpd4A<2O)EEiRogNOOtG=_Lz6CE>LM**iTYt-@!#bcweb8!EI>tN@ zb5$ja60U+Z2(0<$tV-_IlUD+S-|@`mO?7*Zo78yfw^0jjJuKb=+kns2cKsoqqys$> zX;gp@cC?dR5NzQtO?nIP*=lgBCqdWoqK(3DD0HQ=&Grdi^TY}`)<<6{=`l}V?Q5{q zfRz|eb??b9*KU0*u9qh`*GBzJF^eq|Zr;ad$C-b9!h|LuSsa#X?(g6GZlFl0-nwT> z74~uX&7tJ%u{8w_loGT32}0uGKD6=P)lBixpvMkRVWn+-hl7{f(N zj3#Dg2{i2B?7+P+wXLmO0(GA2RybB8U zlx=w}vwMifr@KwjM1F-pl=C><$rIM$JeWFJ_iy-%_zK9Bdu0gS$~35TzfxeMOVnv) zDqFB@%Mwu=$!I#Q(gs}&YYH`wQ$;uUP`um|yE=q}827%F?A-hIjzp_!X-@sX*dYX- z$Gzbw7GhsF25$%nK3z~m6F6KNoj9>m%wjSAX}xf;7q>mHV5!vPLZzOL9gxJ)8yamy zcG6EJUga=oo5&Rq0#b{GxQnQnGxh17-s=+j*L+)<6D6yyWf(4-11@yp6xt+?xGn+n z)d44rghhn;1sN^xFgyesI1Tqmx}T?90G~4p5Cy?= zvcy&F3wBWLky6JDOSNcEUUkl_4z-vM{q&}r7rOTtnr@w-iPWq$kg{d{kqt=M`O1OD zxcMR=GB5&WqXuRZgW3&vARm4-cTfH`TLeK01;}b$`v{(V<5#|NKkN1iPGP`zl**5=aM;O$`?SqvB1{ z#d)|>dz>le2?J=1>gbQM-DFg6jRDtdx73nGRm!Ins&b63PV%2O=eM{_TU=i+GWjM` ziUs(D;SK3AlN#nKl@b}h5Gk&ZB?rwW`vjjafd}cBIzMMQ!G}Dk4|I+Nc|ZpM+~cE) zi`j$~!l$X;lZ6iSd70%lejPNWA?L1tSg$w2fTy@_ut}YJRiZgrb~rltW|ifvFA(qD z`jbjWfJ%zE!yWa*|iD0q9wi8aywKAQO%rA3-%EkHI(tk=wv=9sTSB`Ghcb zUVntJM# zQOvJLPMZT6h?ocCDcY-WjH?bW1gFr~?}?`Et{Wuj(tiJmnT6jzkyQ}^Ku7{|0G zi-5vyFGpK7F`I~zOEceDOy`hPV(+?qHZkVa?Nh{k;3!!i&-`dE9*yef8HVMQxOD0t znP32Pey<2m(zSDw%4fTrqiW>u*#^(6knO9m%MYTV#P%Pb$JPvBx@}30U_ij1K|&Zp zES}|C=AqxQ=u-K#b5-R)Mticxg)sRr`xwtpSkse3JO%P@ft8VNtR?^;ou@bnaU8vb zR3xGC-{1;KM%m4qk>mz{%D2$+7HU>K;J7IM(|Q7ILSi4hJxYE6MJRgABmv4~+T8hs zPj@``WAbANwgVq-CDPlfJ6#$_uuGgL!ZZz5PDX`h*;Q^nYkYTV9_|6aQ-n_ZPs5l+ zNJaS8=O))BQ{&54#Ml=oe>;Uj?d{yT%AttM`z1tCrjCg<52cVV?I!xulrKOf5>E}+ zmLw;D3-;Lp0CFWQz3Zd5_vprT49ZkzhdT$U;KvwD9i|6TcKH}BRfD5ncfR_hc_S&^ zQqZX7fp_w$xjH%uH5H`aab8yjxseBQdxYxWERFkk_9wSb7NP;;5_|pRC7=+s8J5R; z0FLyZ&rf&^)S@obW4Vr4<8cT8typ8o|KC@2csOq#VX}bc{xij8&=pYfCi!(x1W?fd zr2`sXuk*WhE|7skaQ;>-A`pOBzrKDd6^(}S4|s_t=^_P4p81#mLu*2q z^Y)T4hTYt%7RYM69nO0JDX>|TChzAi+suaAW)HDb5rU+=k6s91tC=&IgTUR&FmU%JUX-?gICtkL!LPRxxX7cdS~KsZoLB7wun+Xh!>9GPT>i z7Qv!=U&Yb4&cat5hQX&hSbq%B^X)$7iWOOUw^Dlaac*5lSQNbgpb8k?9bXE0{zFcK zL{VSD(pQJyiqt-OJ6u?_SLbvcJ4~`RVHa?n#3oQLRWNe>DLPd_wH za4M^?y=tCbCGIe`FpO))ZChZf1Hce~0!|)&+EMB7v0KI8R3?mS))uC3060W=1glc` zQPMXhiV8eqDCg(X%jn~FMe++l;x_<=clmW8FQg{2v;2y}C71Vs)#0GHr-wM<)eukIaSJK}ogGJc(Y#q4f1 zfHEA544_Dh62C6t$J0MzeM+I&utpZ)ZDpaWKvmQHvz$tb1?8~}@%uU29*%rA>cZW=f*^ZwRJN<6 zl??Rp^daIf`S--Txl@R)O~a$re}<)jq}l?F@t1(N|N2!nkG7j#n^m^B7F6$Y_Bh<+ zf4}$YZ^fVfxXE}i)k`wZQ->>@i5Lhg6o2Z?V zU&_(NqwyIWy?i#H>2vCg@>{4H%H~(86ss%;UNf0J^z<&pg8)X2Bk`QsqhF5*P>`Pq z3<9%VShhkNz0f4p1m_-#SBav6NI7mDkkg*S*`i<7=-~00MNPstrhjr=Z=lwujXWbdM{Qsg;d8T0;Y9%Cq>dDcca5@!O;8 zh-_9;1idC;I(}afc#K`FFui^R7sguwp7Qr?0<(^0H;r~1%3lAE(ZW0559I~IZdJ*b z0ih!x`|>J(yPl}(a(9a^4r9-K{FN)Ll7CueL(80XotA1q80+`FT7XdNHzp`e4T3!!YpU>=*Fg|z-Lax>F=iz_i&03Pj_X~ps9z8Y+8-2j!; z)UHtckH@jj{pNsL6Ifoe_?Js@w8-&A2=lruGN7{S+x~S<9c^}71J6WPsFzJdJMA~AGcgF?G^vgb7dpvom!cVZv`VVQeu>(thE7Apa1oE#;eMORz65`7|sx^ zT+abAgx?(}uVqf|j#Jt#J^Bm(^|-duCD@mW6v3hiq;|gxmNh~X`9NPa!e#HjCf^Ti z#TZBA)K_|&{(1J)?a>Q(X)?7N&6!>f1pPqx`#Y0jc>0rP*!UJkj!NSHetZDkNvNqz@o3J_P{6*EcRdGgl)4^#=Nm@uN85GS<(NwsiN8G zD1K`{ASC+z^sbL;#@j8I18gEeaA^AdxmlKq@*04d~LN34yn5zR$msv*SdM5`=mG zx#7;F=!JKKyE9rg>Hjr)pk67h)ROIguI+5=));9dbSROJEYV|msid? z|MfW7vdZ{HyDG{YX8teIx}q1Noj3M2(MWttG7G@b{Lb`nz?wSmtXRy$r5%T@$o|FE zjcMl>?E_Ru$B+NDcyhNb+oEISe?9KDyc%yk9a%r@GyE^7^E!H=d$^QJqfE+i#_HOi zYtvfUx*_Ny3|ret5f3!I|C9&(5lx-dbve;SIpY6%40YJ1Bobz=vMsy#r#z4VF@^2- zJl5@v|C)T8Eb_3MRm0q1s@Af1c#~fi}CQ%-oyY*8b>e6y={{@_2E2uVQ#* zF*by*%Bc+R*Zq39R98%Hg;rga-77d3gnnF6<0AEyraoS-N*Od4-ft?kBYg|5fD^-* z|I;E+E(1u^KY}v$T;ZaOQw|%8xf5SimP&Kgtz3Wi+bq`^!E(6ch6&yzmF3H^A$Frn z4i_!|94gh~oN}%yxrV&Z`$29NoE{)d;q9m?PL} z`F)c(ZnuV|WaUWuiZb`kv5VUY5mF)(=vt>;rK^xC{NR~HS&`3ex--mGH=Q>(!J`=a8HKX2k0PUy8vJU#Er) z;096$QG&=sU$(7ti)nC+IVW`H)PvbqZmixEAGu$42FX9S>x=7~`XeObilbYS{a@6N z>v{T(VqKPJcLTh(i6VeL%c|MeuhVb!u0O!=CuaYhf{ZXU*7YX5<9bdxB*RHAU@5u? z8Q?tcW!z)+x$zO%cWHbCoRfi9Kev%%q~!HWy#0J)O|sHT6$pGg9hw_!_tu5a%QeQ;7+=9X`cZ55?<;mMt(O#9m42< zZeAmO04Sj9P{O;+MCA_+LvjC|95}26hJ)e`Zq70esJYcPPYmTG=Ue7Q zH@->@(>?1&(|*THMwcA;aP`wO9V*)`mQ_udI;&=NaRo}>bB%tE{R1s3dI7KnwYJ~c zj}`@zrr`LvLGJR1*D&V^u^T=5Jm&`a zoPpA>mQcGxA#tD9)pqo!7s8-O+Wmc0a(*~!lCi~P8UaX`56x=uUAew`ZE2ioV22`$dcE^KjLz`!bz66sE zm0QbnUokdB^p4@{Cbw6Dr@qM~7~!mS+M-zK$!h&&2Yp`M$iBzEKWMMpyP76U_KBlJ zyy?M2D~Go*X_=R4lCD9(+_;WKnb)a|zfgDx^9uZ$kqU390lg{g7m2z#V7BqaiLq^w z%(^aXYx>#igFX85);-DgN2edda{M_M6)M+@4Nz8H0_2;YYf`G*>)Z_6}AhOrWo}A z@xT>~<`@ZpPDS$w(r|GV&)5cd)s9%Y>=EZyCg!G%x z@SIjfizm&syx}Hnv+v!!OjSAv;T=zW*_us0z=Sbub@3Kf?)CdLHP2wN1wtv-v+NnVI2eA%}1 zUesHN4XZ$4VJQ1qrQ_4qEpdFdFqFmJJz7w{px&jPitn z6H`fNhjYQT_su5iCNHJlE4)mpBCQx0mdeS^Pyyoa34Ifa4tp4Eu{`qW$E`;kUvqVL z!rKG~AIskji90h87Da#r`qFiZDCgKoIGi!Jr>6Pz?A>2h3iAo7>?n9hA4iNQTm!22 z%LkLDv?5M(UfA_BA`3t*`4Uch%1k|(Jh!{WwJFGF*kch>i<}3@PD8+cOGZ7d550QU zT>MxXFM9&L{|iUG{{XVSMgz9LgAn&{xGZu(kkox!f5O_7v5A(Vgx*&RKeufBs}6QA zM;DgU@}s-~J?7cJF>Ada40RP&c|;4~=(<$v!<``nqL+?UP4W`uQMVt?vN-3WNL2vN z%54u~b=E5LVV}lEy&nnWk*@|UVqVdWtZ&z5-QDdq&DAL@IjD(>Vx@wPH07E0o0IWq zSEB=|nAKf-@m#{K>AZ>ok9T(b$uW%b5-kopY3e_VW9H{@c}(lvi||F@SO?-_tm#JV z^6bT*bRPC!`L(0ki~+{yo)qSmgyY>tCJe z<>D8-A3RcIe*J2M>V8TpW>P1f5mD1sd1^L$R`uSPKp8O!Xc(MJWj%A7aVX>3bl5!~F zw3MH+%|FmP4KC1#G1&hY2g!W~U?&o9eEW66O#K2lny^@K%KC|~H$gcG7{9B`dcr>- zAk14XmM<(kXYje2)7SH)3{*9{)6vZ!OHonJlE^v&IQGD8Wju*&e!id@@#I!$7_j8k z{cR#bY*uPPL1w|%k@B=$&E0C2O5_x<-+!>Wqy5&-6ase=ETeI7xWzbQ*lP;-J);P) zFNaHNIl0~L_^-`=hQ0I#D$ee^2K?2Sz5d#}(3<__O6*S4*KT=Xw>B_x)WXTBd~F7v zELr_188y!1vW$er_w#d&7SLCVT@k_N~W6o z&fv(^D?XFCHf3o4-TR5}67{6i?4~nzGZ)HOT4Z3bLN4U0sy2(P#U{dh$>ie5`8I^6 zV4iqbr}2i`FmJd0Ek?3{ii_2y6KzRh4o=nGG1WG_OlCBePf++=41F12Kg&m=T?dG&1&4HcJ0_lfe9m+^<>;98I-6IAnoM&-jypH8z3WtLFbM6UTL*Y0#42SI?!z9EbZ#OsR$kI zidX6Hr91ccg~8{eaXh1>6M z0o;OzYpqz(iM{+M*?al4W(#_BrDbgR4vq(CRaD1)cHxmT>w%nJH+Cqn>)M>v@R67n zUdmO?A4j8Tn(G01Es`-FZ+P46TU=bcFSPf4K;}CgL~AOmw3%|vS?BGS&y&qnRrW4h zmlVSLbFtohiD-&u8?DhI@c@j*?o(;sfB-hGm0~xScrGZ#w=m+j)|#AEFCKL$>TJ4N zJZqe&5k9Ii-a0jSN3~iU9Qs>exf?ozbScyIJm$m7eLWlbf{fK6gr)gt$PQA+-N5Vd zXoa1riAk4`;&ogQSYKax=pF14>q92xZDi?+gZ4_5m7QI8@gVK|f)NuH<%9d}J9%Y0 zF3mPieke&tIEQ+_r*Ykz<6u(JZa<<(nKNsq-h?w|zfNRo@jpePd%z{8qw6;( zYE8AbCaR+Xw?!4p%3=#RQbfB@C0A|eIDO8p46gG`bu5ooMkk}bdg3uL1yf-)ho|S# z;;-A_-_^vl0H?C*tV2+0+V2K*BM4__x>$F_;e~QF7Zju>jMat;N3d=#4sZKy>FP~r zt_RV}9XP?0)&X(42Xx05#*>9cMTO+s1PW>MIy}95*7ugjN!)=uWeQz7x`cGB@C`(6 zyNS7(ua=yTNoRPHBfK<0{fW>LOWIT;z4gB|NB#MbUie7~|>6z7v& zD`bruzr*r8qI#b`-Zd%fstvv~AZ+wa;sok!z|E@DDsY1c(9LiO$BLw;U_ES9i83~B__y0m zN7SWgoYIF~4TfHN?u!exKR{~dZilJNFt$`XZ&u92xrBPZy+VJNsrH~CN2AmNdx*qV zn-6o}iby!0tMyccr)fcpu@EH+lm*MnUn;PllJ&55lYrW61( zbpyyNr}61FUOvLVa8gw|wiPQ@KW)YBQ_)L<@kd7y4t?w*E4Ly8l%lVvhhe)gP-Z~qfe(J(X}gqvQq=j|#N;lz8aUkIqF8p_n8gFcGmk8V z$p%$IYD2f-Tn$_SC<;ICusq@f5Djc%wZf;P_8@pIefarG+18LLzy0DDSNk0_su>LM zbc#-Jdj;COphcPVdD4XCvNF!nUt&0(z&U5ZOibk0S6+uc&l{g~h&;3n7d!IAT}6@%eVFje*d z*G^K?=RDjP4&M_HT&4s;cc&seafvVsI#_4S?hJM**|Vv3t(IqWM#ufoy)B1;wM=Bt zaC5%bmxyZXqQ4K)$)U9``)n0L$r*g%If2cHfsru6Wq$~ZlAoH0MGEt%H0?boX*kdv?J#*oO#0lk08 z=2S~NEaIHZ$tC+GbG>w>zV4#W(SCk~=W$*@T@50}nD{@yA_$Q~yR-QevT0kxueFIOXrHC$|a{*DcyR$kmWaH%I1cW{LkzX?3@5#Li zs6uf0eE49xkxrX)PdPloL5ZGpx!6cPoNp6tFs*edFfbE{#17FPJIY9WqRa9a^z*E~ zSwdaL;gZ#AYVaN-{Y5Zu-dJjME6f-BiAQJ0_6ZO~*EzGk^NE(1a~sTGsW3sbM$AMR z#$RZa)b&c+)4s@Jplm;PSXYn6XL^&QtGDJG>Ma_`z@2rbcqXNKlZ6UoTIcxuwUBIO zv|$JPeQO;sWl2G#`@6Jovk{RyGA}sEb%DmuyEO&U=rD>ON7p-mdxVt?&B-4L0_f(# z(7DlRN{Sn+&Mlmqn=P^mPp;lr2qt$@(@@iNEicG}VtFSN47s?7m?S5pZdi1^5ob%m zl{nKOMdo;$2Daa$u=<7SfsJXcdt;5QMb#=%;kvhQGOhI^PV&4LkL1@iI=o#k6kQ{g zfVEvB-ZDsD_i0xMkJ#K|`!e`NxE1t{jS#H3Kp-zmmf2z=MRs3cke(QXM=9N*AGR3+ zW~XTG_XyvOB4eK!9kO{5XdGH(NlG)ch1d7`ti&>XmxAb6u6j3TgMGY7icFI z%4C7N%n|ROoyV-Gc17$u%qe$fM%Spl_~7p(sttOOP~f7S%V^pt&&cln^ztq>&}4~X zsywGN7@}{&=Q;t`8;+K9JHA{@dR?xI2_@-UqpI#Y5kljnZCU=ZBktKA(6v`|Bm(iq z@pl<^Y6AmPZpAAxFp;uUSasAA+R$CPmsr*ypzXMy@DOoNPu&EGM%m`pB5v>tSnGzM zXTpy9^m|dTTX3Mw>z2oGGOCVR4XR1@z%uaaTM22yrs(>?0oyaatpf?!!H%lyiSNR! z0pk5Xm+jf^I-aVQ3K;cy5<>h^`X>&a_ zC7%Uum*-J@ccB|8nThS{A_J2lx19SK3FZ|^`tP>f+FGH?6^C(g1$#r4^R4xQwJPJr z0J)g%d__Zwz@lLY>j@HDS|(HXnRd)g|NV_?n5qxJtu*w`+)dOKsY_9;7$u+KGIns# z4GY|F#nX`^n_oCx<$P|y^S06+ zB7d!V5WCy%fcwt<&ZI(fMA})&g%F%3yxSJZX|Ulax!w}cRQ`8w^GEYcsKyL6G9FCd z!YI3gg^S(Yw<*mwW#R#>ib5JXwR{H(z^+vkH;&W*aDsnLc>5A=%0=~n@t|0j2}rk1 z+%?Q1^Gp`R(E!2+T+qCwc>^TrOjhxQ#tFtL91q(;Gg6GZWQlN+_lYnip=O_z37xem zdIr0kjN&HaVm_#(dh+%r7x{e)9!{XJdU-$H-xN@Ey%65ut-)(KqFTlgWAgqW4zPgzTi$X&Ma9Y6jc|QZVpQ1Z1!6p&m=3X&G&=)d;4!UdOjSo zNpmuPEtS3XI_qAw=uX-}QXrUnrUj)J*e~!w$nyJD7HYzq)Mk`iW@?;SuIrpfj$A*` z*}Aj3aDSth0hz*RnkppxBb~$kj7WgMp~R~BS=@MsA1O;4d@~0GIY1ql1G^AopSq{K zza?Bdp`u6NR=b|)>a^FC@4Vp3`+S#`ZXcFF)Sbbt;o{0f^oiF9?{-cvH*l{rZ&cNe zZscI?`P8!A`YW`1^C_ zcwLr_*r7q~FH9p`zFSrqnr$+e^y@*|}9sK~Urv9(mZA1L-IRpG)- zG4fAcx7fYoUq|=eX^MI>t-2HjR>Zm&Mub8%;a-T!8Sp{6*YFjO|CakeQNWdIiNC z=#wVng!=Yy8<*%&zzh4*WvKI()6C%x1P*k}U4j_sM#DJ$M-V#$N+>4&YYse4mU>sCv=&Lc4{to0}_+)fz8{i%p9P z^4I89>LG?eXgO-2c!^>@R&e;Pi^MxL5qZt7A*uteeww{@Jiz|7zH+zzUKXXs>G4a8$e%F562(R!?>T#ae75PmT50 zZK##$Pyztrn}b39J?)Q~Hn4GaC5(vdbV}m`OmV*DWMDC*%uJ$WE4@A>lWcsTCNGyV zR&__8g4|E!*ZbAn`fXuWc9DGgyv;^orivx*fl`^Q8E@TW`L7NPK$SSLFPMq(qQl(? zYInYE_)_l4KKu%eh(Hz_b=XP}&9$39!Ght1eX-VByWNEs#SL4cHOmyo*V6FMZ zIMV^jJ69uGtFT|u)?dQ}U6!c?b|&_hIn0)NGdF_xACPbb~2R_f$GH7{}`|P!8gf&C=y*8B+(NvmG;lf{*)3oJ? z$OWINakw4sQGWZTGCfty!K}6CxwfXWG{~_WuCbO~aktr>Zjt9c|M;hp^bYwoq{qhG zg4@(JQ*-kBV*EP6aSMR*%w%=G@ zonm$nM$y;VjcQg%voDRaA-B;TE|`@1@~tdUrSNe-XSeUPsUr1cFJagRU z{Qry*Q}KDu)TOJh)9ij0gPE`=ijy5~yswXcbwER?uaWT? zvFY;Pd*%1tx)P8@Yr#@mRJ)#aF+M{)8X>`R;gA6dK%qW05m-`je&;uokzOJba$Vl+ zCqr7wYO2y6IGqt$dly$bn`PS}>*xSzO0AG(UJ#gXvL~Zui1a0rR0rwne3hgkfHKu9 z_g&uV4CZO_eSIWvY3Ws+L9Iu!zPZBoW-aLol}8mBfKk`A@Y_i1KJ^#X0a6f(oi-@1 zQJHEVihM8+3R?LDFX3caQB2m&ew`ql>7)~o>tCRQAI6q2?O<~Fw|7)&Tkg}UjOM-X zR^fnp)N*s1zh37I0g&4F+3IqE+udFytZf7JO26ZJv?T0i;d%$4`U-yBD>lsYZP<7U_Ixy6E6G(V!m#x6c?7%JS66 z5B(lJHlEY1k0-^Um9GsM1Zv`3sL?Psc`7L41qJl}IQD4^XaAuB|5(fU&w}+_M^cgCEKhRVqas^ym z$lc6!*J|l`aPo3lw{QjBZ1eS3#-Pe^W0e=1HW@4`yU^U*j4I+cbG=}9_n%a6FDZ|UX~#MIAZfXFuofW(Yr`wc9u(XPiFUgWGzv(`wtZJE zm!M*c;b#bY4I>trhd2tXh|N4b;uw@R2OAVtP$eMQX5`RFPJY$cttTF~?{2d!9}`Fw ztP$|g5E5COejtrzumrk6Dd^sL2JTNfEW=(q^A$9YeywLAx% zd9RDV5;p?bS@*g2z)3=2b+tV~Cq!9K6Z*z1Yb8Qqfr$CGWtLk$tING6?1EUc!+9#6 zT0wYTfS8Lyy7F2Ytcgj^N!TyGK(IW|t$~+^xr#(NEPRvWjs{UhXYV{ID{_TbqCz54 z6e0RL&~}6Ale@k_+ec#{IGOs8nO4UiXfP3Fd@((i1Qacb0GjYhK{w2vVis<;176z} zV~XhkYK9hB!Ykv_HQN(d2i>NYy?2iH*Z0VZpx-8JryT?QnR&K-upNl%x)!BtTjMhs z9^pcHO3r89{7Q!wYKy4uJ>E#YO{;F!aHF2)44I$b8oSt~U}DG@T+Re9Vrtsgv<;MP z0V00Xw2T+8i;33xeNT?jo=f3jx$|_A@yCyuIBe@;z^Y z_95FXMB#LVT_2w&r+}3Q|EJM?Hm5qz^mjhCv3}yPOVub!5O!&%eFvRJ!j-{i%XbYF zfn8NpYu8}=i}n9-_TBMR_W#32io{8g=*Vb@GP5@&gpdl^A$#vVN{$sOd+$+J+4G2F zWN)$^vg6pB^L&of-TnRkp4apGJ%8P=Zr63L_vgL$M@=i5NjdZ#VKmRU($4mlYn1n^ zlH!Bw7-Ep5Q{CKKnoUS>`sjR!%!r4PmCmKmRGE%a z)ev7uBt2TYK_i5!3{V{tT3_9usUDLhbj@#kED|CO)x1V^)P-3*bh^Q=*6cl%g0Vry zvF*fJu3SSW=?ZI>D;vGqJd&E2L}$17)Ou_*-oVUQaA26-<26NAcjjE`wszNDEGlxU z>~qwkFdx{RZC7Mc0!hG0&NC=HCt|n znA;Tx2}OieaFg7Q!!*Udp1IZ3$?A}Z%TE;K@C7cP!H{q6>^BS`zNE4_jF{NWZt26c zr{kl!nb#M(iQQLrWmuUtFl%}dqX#Hr1I=dB$6s3Foz}}Gf`k0yJhu31f-feL;&I@Q z#xh)RGU8!gX`&W8d~~Ppa+&SUXN>deE6l*YA%=bUo40Nn_S~NX9cpQ>S(vb=Rp}+T zjjg{zvWM+{v!d5Lh_kDYxE#B+J10{&6_rO#$z3=Q&=Nk4kD%Ocnuw5~q+^7&H=n+NAZkaG+ntxoKWnn?QQBRH1xZvd5Zap%wJ16~thxVI&0-^0$0&?%?E+CH9n4&M zRcnSua5{8sF)weWHv;kOz`-j_lDcehAuDCmPHYioVB4oe! zcA>eof);k(=!aWI!kEi!+)|O*Ol#)KnT$u!qw|FdYsuPYS+8W6%;0|gOoEidOj#Bk z=DqX3XKB^efB*RbP4zM&(e+_Xt$x>Dj#|Lio(R+IwSb$1(;{A_m@ zHtQX?ivUlMv$AaVzP&gF8Olxf*tH={v`!<(WMreN4Jr!bBg2D0N zjb#0P>OD8!_3%j6rSiFC+nsuHGh1Wm`6kmWZ!l-D|6l4 zoA4QwAn=1{$Y)*EEiH|N2PH*B8uIEkr$sDze5Il0+U0;#2UP>u!vf&+7NaodOF43H zkzw422U$oiEnY@rYO@&b9EaVtC&USMN^J)vG{o`tszwCEtQAbE)hj(muW=qG)@;Mv zmw)jL(I&^oXTxOOD4MOUBhC*_Oyog1M;%ay`wq3n%JLZN4LY6CyNy2wOTTQ#yA0{{ z+|GDVuj#TjenzBWOZp+Fx^UfRqq(z8Qe7*tBR;DNAtE8WTWj&eV8oH*Ql)e+X@*rP zcH$Xxb6Kkw|6_uOU8#Aulmg-WAfJtM^=8hw4t3}GHq4?27s)wRp@S8VsvjTxN3{^k z<#T$HmTxQtn@W)SA2<4Dc75DmyKogYNI{pY? z9UBhWZjpALzj2JG)eV$m&p;sza95_E2PSN9{{~G-!B2Tj#XvVf}ttg?2ZF~`m z%2{(nnIm_rhPBO#u4!J~1EfkAuCypEK>++lMD8ftbazW~lN7$ltx&x=at~9kNW-1Z zyELqE;YsPl?vo*DHe9{7-PtlSvzD131AB4`6{^5N-ACwCE_bi5&u#+`zE87qYlw@k zr>(Ehx;4_dg1m&_=scuwbRq?%RaIFbYu&Z-BS$1KUYMG$evlzGt$R-=$enwCz9EO4 zW!`-J8t1i|SKmG>Sv>i8-me>F5WkzN&U>`S$1~(i&*YnoQjr}=#B&fcnTwy7`yQI5 z-xh>;z(mbuyuUVGC31jzQCaEkrmRg8YJ#v-T1hdfsQPdTD)xw1gP@*Qoys51!Q6#& zV^ltl&+Mxq?_S^rntA^x$BRyp7uOVMFh_^LJW;G9`r{r@Z5W`LbH1u=52HOrjzU_A z?;Lp@w8(^SynJ

zx};r)Y4*m?$vG7PrG4!rm|O4Do%S+4X|5+U2OL#d>DnMETI(h z5^e|k+bDTi3O1egSaIB$UIl^q`uYGDi?X!%1T9DHD#INVtJ}u}st9U#Ffjb^Q;j52 zKyz^P)~=zWns!?;rA^mL`lO7Bd@CLKcw6P(gYDXY0SSjyQhJNSWm50^@!v26TYlsg zRi8_(RGI`X&kRTsUq1{jOR<=)A6*jo&g-6!n_~nx@W5PYs+e@NlbhUJ*2IRV$)8en zQ;4ISZl-ZTh4-sa!O_-I_>KT-Kq*_D)7e&-N_Zi2mP3n$+V!(ap4rIrRxq6l<8r8h z)&ysfo_c`fdX3^1N0#BxJwU#phu!k6d5bL4R?6u$S8^C`EOdU^G~-HX*c3D)IbrPd zF7F<6B5X&$$8&F2*=LcSnkJ5Ac(wywwNz~EVqP{KfBWek&10ROCVI4LS-$glYx6;M zM=&+jfh@$Z0*eo=d83f!s9gxp_J-d`kExu3qtTBcZ~0KuD5rV9pZeaJC6#YvyA0g= z_LS|n%(NbA?%n3_&oD4waOupQ+H5-S*VQkeT|=s<3!SylN!vz#h*1lqRNWO?pIk<}H`T<{%LKjL3nrQCNdtA+xxY66BMl;`Qi@%#I))t;1n`>Za@$JaU#AG$s z(D5<$_-8WQgpKbAxzDFnQF1?X+*KP_yoT4HC3r!j^gUd8VKHhxx#~! zxHNPDT0PWrOCek#+RIdP=Vg;jNQrqs@kk-xKDvTuX+&kU(A4ePsoasOmxm$VH`Cms zhRvHdTVg8hXVT+_hwM{Tga@zP#fm6H)jh@WJNwm1iX$90#byg&Q^E`>J-PE`<*{vP zbd+5&+B0;7Ag^+5L1!HG)-K^_qkvIq!+dn8dH{hrbZO^J*|51=Q??SzhAV9vrTq5I zuux)MZAfFh>z@CL1>uAYf zVpJ(J-HdDce4f=-=hmDcxKqexNrfO3}6!xlgN8b<-drUL3x}#mHf(4%}6uF??4i>V| z{F}Yqf#iYIalKYI{c9hIDWCNzz;rO1{p2zgC8#BZl8P~lBlX1e^ynoVD^2IJYU`$V z6-sgw6e;XXbdw5Iysw=q=wW}L;c%l&s)GiNaJRPda(6criBZIK=1a#%CY(=pHTM~k zyaqEDPft@c(}t? z818s0y9}l7C##3A&UvzuSr3!ni4V^iFJsvL;$kqpOt(lVCGDX%6ED2?ayuEUnl+rV zUulXbBG>#ZXruGC?1h+!NwXiEG&9Gc_H{Sqv(bI+I7-zVml^SxPxg60cuL&xQy1hM zfzPGfQTk#vQ-Q16Ys9^lKxVPBa3b`hU#vs!{Yb;oBCND@vE99fWt5oYYdit>$C)_G zcDMwdDK+){>{KQzXbv^+FG28n$@V?tR+EwWCdak@psE`-l5Omk`(Zd)q_^BkvZ<2i z@T$0Th9N~N);t^Y3E8x9RmJc`l%ol?G7U9y4!$?qn|=R0n_JOOW%Edn<-nUYba{U* znyWs7J+N%ThoI9Q$qoyO4;pcu4H04$9Mljv)$Vq5xnDVrK5aPS)@?;S;pipB68o-@ zU8?3R5*5k{@Aa}laM-r1ajnoE;Rxo5oxm}OLxa|91-8zv1M zam(E&SGB5-8Yb+hVSfJbYqw%^>mDz5Svpy(@@*(i>$_bu4LutiTe(#$D`0%-d&KaJ zf19~_+&Xuuiqu-nurRrpGL^E`(D*UIyZU;nV=*n+x+X5|)oz!GKK)E|&scT=_6$fj-6LG#H&q4-bAGwq15h~8|q0M~qa zai`1b(U(}&gpzm%Yf5wPKUc3Fuq;G>qti{75ZKDeQ*6&6&6ke|zIeS+R1N(m%%R}P zV0@+CHu65Fx|3K|rNL#*=A$B=<@jRzuBV5i9E;}T<{zs_HH(*nEL@i;3FY<=Hm8JD zR!tDvKO5P#gb;lDSw?fW)s5$pQ6t}K2d{a{_)wT{KSy35lvCEp{4(g`a5)*Jx*k^j zgko=@VcD$DCPG$0ZC7I#D4n5FFaw#o*pu)a@w3{Qky&@a>x z&WFjt?wot0rZLCfSEl87lz~Lv(PE!+MDDnIkL<4cPAdnaz0>kcOh7fdOve1Y`&$S$ z81>j3Y{@fq+HP&^@u=z-1K}&Z#Nb&HWqUH}+2rAmB{R;Xl6TE}3raOP)$`lJG|JwV zzH|$;whrE3jBo9DBY*u;J_mF5lvVIBwG|^T>?XeB5LF2Fiij=w!)546(H?87Bitqh>we_$v)NY|##dkV6;|Fb z=}j7MTgXNSgfXU|RDmj^4)some}`$e{qdgF;(O=*SKORIn{l_rhTvd-)s3#;^rhf3 z&u3R$IS(dHgs{Qo>jzYh744tq`eG;zb!yL)XqIM|){Jf@qcRs)-!P_}YH=YQ05iT< zZ!EuAenX_0Xz18dd0zz8n(}46nDg11Cw@o_+c?t?V$9@v{j`lvdZtkNOvy1XlE?HNp}`R7c#q>qq-2 zd-=|Ftt7gd)i;Z$NY3`4Qi7b1!quE<{@Z6FOtirRc5!c$T6H2sNXk0SJK|BKYWF(N z0Ac9`korn|P^F2q0|Us7z5+=C*SyHD!`jnpbk|>5y4(8UG=>=7hPB&W2La8-17zJ} zNqw{|ep@{9Bt~kM)=;kzJ{&c(tNWiC_5>3i3= zlsQd->=!rBQoj)OTl)gvFV0f~Tbm?C2u2C6R6@EeS)eRS46%X!!yNsVO@PAno+PKi zK595WyNd{|}$3|J^3t`QqBHE9Db zhOgweUi!hE87OH1Q?;y{`CDl`%@0nw>$@n9^u8M)$#R9mZu8BDO}plQ4txj3;`f>{ zVSu^pi`cIO1`{w9Fa7bJauNmRu^u*hOL`=8&T8;z*CMrcn*+u{Q|67}Q0JvF7nn3A+p> zj%rcPt9EWU1H|S|n`?l%2qw2L7EFV#kU;}v|kk2?{(Ol|?hyGWbfhu{($ppirReFFt zb@9c!U*x6jvSjpv2EeaKVA*G;05g!c-Fd3*7K9%KVn`8?lL>d|a22fDlOP7Usq=oQ zU!eNJO->`te%mkb+A(qUNg;8aL57alN9FvWPaBx8@Z~RNuW%)i{gOMdX?-kwM&|sH z{yi^X_}&>l=Ohx%CK86Zn+;&$1_@MgB)MjpGZ0~T?j5dQ6uO5O`kmckLbH}j+I;Sv zk~%knEvRn8NFs!m2;c}yF5C-XP1>uocRNKnD}i74UPeNW4BGhqm^2aDICSUAELmWh zj(bv3m;|g(ie@(gE0o~u35Unbz!?LXdjmKl4?TqC3}TNGIf}BEKT2~6o<;<>3R0B0 z)`q1mMg-qZuWB)m`!KHG6ls;!p{m4iP1=QnF(Ws=lN>5pk%wU0FQvGGjk3a}&i*=Z zGO$pbwmli+?hZ-SE43lAVv=V8As8s3m~@}ZhTJ%v1i+*9C~(1|O!#1$edN8&E%mab zcPN&G{OnR;XLZ-1FjkX4mNkKmNs=+zO!Xa8V&A2i*8IgcUe}kBdh6ePahMO4hS37 za!F`rT&;QMQs%ZmkPQSqSH7tGk8C5V~)+BU=_iA|2-M73Neo3tc zm@JEpUwo*&(zTL1daOE7dCu9W1=Hr7hZ!c5B?&uLh&${-oo1ZzV-G^5U_4=SGRq* zJEfFR1n@5H9`QD+-1)vyWlTa?uJxhH?)`IqmTl|=HOF#AS#HR?z$j=TW1+_x>mod7 z$SV+3*R;+-tQ7D5WZaizCh-QyE&OIpN!g=E5-ka1FCfT zUYtb~n-DXDnHj)8Z{dv|N9C*u+i?aZ82@y2o27pxrm()a(v*?s8^0xvv;lHC7D^b1Dlyv3>=pMKI z3X({?0=BJb*^}YpZX?AE2+65aS7!0&GuKm40o4V|%r0muaiqnV z3mO;Gm~bYK1kxFN^N|?7)fC{k2S_j}q(k?rurcT~i&G0lYMbRH$-@zX@ZQnt*x!Np>WsDaK< z+k9^LMPQ^t1K}=P|Ge0vb@1d8KFvx7`i=w=eJ~}m`*T_u@A&=yQNm6zu-hBeBfR4$ zkC!Jw>9)M6ytLk5g3aV2?5Yphmr&y%HOR3w?BN06t5eD}nwv43Ut-=MZ$GGJ?&-Xz zjuq8yYWBs5j-TI03w+W+f`HOvgMRi5W)tU~AmCW5xyWGrJP8+&Ohdh;RBpXp=))1r zVe)$593+z-5Aa`^VdPD#auTsA5s%S`j{Ww6VGr@Axn=fKlEP_uq>!bEZ-%80T__-M z@2|Mh8&D=~Q38^>d1=AG80RG*1>K=f<*HU`%y%_c#;G7pVB!SwnvfH!VSd4{!3L$- z#fJ3nA&U;1KsP`hhk(hYv*u@0P^Pe0D#_&O4_?(OowON@oGpsDqC;RR!*c@80&72i zmSQ6&rOP@n{ttEY=i03MAn&*Vk!eelu9}oK zY}h1glQjMF|IaRaCG7k-rXrrGC{B73N8)L}SzB-YGGoX?$}YCk$5n-?2C|wgoC`oI zN_isA&(@-9DM+EMav5edY?FUIOAo_4dl4%6YNe7n4fhcd#d#AoHlQezRB~aEZheq` zubRd6Ig=;hv-8s6InWBHVUMpi3VubZELygY3WJim|P)ygeMO z^b{>MER7@zfJ@FBtke_l!C96y?hy!Tkv|| zla^1=?#`DUgVVLjHO}t| z^k}F1?<4WK9MxjnS1P=eQ^Z{JGZflz=#sOGDW=BUx4p@kSl_b0*HC$AQBboQNyz;` z#j;SZkR8JtgV8Vk$w(i8(Qp3vJw1|^oN&GaTiv*Ll!JSg{+lNWbNJPRw%2%kzgeUq zka0_7g827G`Z#R|GfU8E-OI=_ND1d`;PojGpBBH>%&Ag#FBsW!n^q20SAAFwFp#Wm zDDn?uNJV$wEJ+?W*E3eX0c+pdr2_cuzMsssyGBSkD?m7lm-1Xm!*R2e^bqWz@r5TH z{=+V}jP9HooLo8I$2#4&$fX|5s=UpG*auNShWeE=b!1d;WL%&;m!KZ5%?2XYBYww- zdJWRa5|n>4FpwOnr#9KB58B@Q4QJae!YNI7tM6%loA?y9*xU$X5oUR-q>wMXKNbBJ z9vmk;1)Nx7Oh3*WT^Rqr&jEX7%00~7`XIt(geSUgbhpycSb6Yk9hvtA^s)lKy=8jl zBzKp(y#hhW7L*@s1u=Yd?7U853W)PDl%M~TXP)G_W}_|ue1UM{J9{1l!6MhA>%Y-2 z!TD&x4~|ny$N|;3cD4OTq-2ikQSv`b|7gKG7%t+n8-`D_rkpg6@A}hSs`)>)*EL=s$(di^_|)p9<^Kkb+{0iL)I?Yvx%lho1(0BCBdvNKYOS8r z_NL#7dh;eZSdEwvyCKycU%gUIbFe(o2RZwYlW6I;!b&>raX`1z`S8Qb;Kfs&zDeNf zBR|U!T%w4Gzkz(hP($NEAk6szG?0O%v414z@oSMI5?8~UU?B!r>-yh6N@$_EI}D}< zR*WI1IqSMCN9&&>{|h$l*ep>HQ2k-4+o2P|)u(A-1XJo~p0s|7&c9fHKZ8oI8kf&3EER#^EuRS?y#RW1lvyk=Reea_JePadtj=VE(g@> ze0l!Yf4YOFbM}{%qn6L#`Z}7W3p|H$%uy#g>^~mU`Et|X<0A)r(g`JUWtTz3^3N}W z)1c5)(%N!V^8SOz)`l4y(+O`qnfvN>zI1V{z9y@SKzQ&9%Xvz>Z{4|kSeqja9D{d+ zv&kstGJ0Ge{_Z`#n=E+`f%KGf-}&som0QhA)KuHLz--fP+omvW>L9_#Y4cmxBI-jQd0k z@1cG&$rJt=o4+I2V^esHhzCf~<}ccTp&sT ziL>=$B6aH(9zxiU6GIP1Bu?|p`WsEr2N7WLdH(^jDr|nmv&=HjFjBkzH=BVT2w*)^ z)q!7__Af1f#W&Cb@4($Se^lKu4FG`z7j#pw=LUD!0nhVi24F?m)E7?l&7Ds8Nkoq2kN-pyrgY1{+8N`5^&3JTcddjw=?1h^G6()klRd!_ zebf#;iA&5+iI%w4Kx?fz%X|E(6V zY>A~tJuvV%A=^3$4Dm8I14rK@m?$`XoW|hrGO&<)@6m z?%6*Y?VTaT|@-G($3k=Y! zse_LtkZLp2A0~cc2;YC!MBe=H7p3t%ju2i0rjg`;3GWeEamEIF5~3`(FlFL-+9ZE} z&kHF*m0xHghgHTGU&6{S{};-6frn{ynE^J&p2zm)K@zSN?!Sc-sE@0@@K>CK7ooF0 z@4ua?-Cc#_Up0Qt*=qUQ4+Xql2X=}-EclaNr1aYPS+Fnf`yU#HmqNskVE2 zwE1wMG;eBU%Wi!^|34-7*EjDbJ`g5k(MV2x&iUy6UwQ`I1cTSj)X8ZJT4lcCLbv_l zSCmeiliRjU${oC@)D++zkpdO|_89m}(2{5WlFuYQ5XdU+ ze@MdBn~sL$o;d%(mcQ_J6P7DLtbzHzpzH#4;4FxQZwCBLI&zQ&GDxQ;#ggugKYZ5g z_L0aw?S3`Rf0O3nO4wPp#0w{N*iG22_rDJrIw9H&%>TpJc@I2syrbZ`7tR}C64W+e zw-o;8NBrPwjQ`@Z$FFg31JS>s+?ufJCx2vj%psQ9DCdsFf4Q4j3Ag%OXwt5oavrP6 zXyKeNmLM91Dhd;9wD-#|@2pKLkfgCPJi+G0V=f2rl_sy?3w9=$KJV`be}9z#L4t#K z$qR=L_HXY0_4m3FvUP)(?cHwMqq8034l4-dZK0>l$4QlI)7^2Xo=x8c|BcG2NomA`+i4d~LF zCnrAK1R)6X7E^nAx%btw>|je_Ef#yxc0q=DPxWG1m1~FCP#bFvmRE=mr$L>K+JNbu zDh^ot15+PT;H4y^JmxDB8HIrf>)q5+CRjWDw=^qDMe?bi4ZH2NWi`-8^R+R0JhQYn^P2KCX43N| z)-zJ!7qnyF$EHepjDvR7_%lYz7?Z!yt|?fEe;Vd_{=kSYD}B?fhv!B87v-D< zN?YKaLhMHVSXurWdI7S_%+;%NR$7BQULH=UA|XzOb^ExjT?@BqlL2hTh5)E^^N%O7 zL$l>m;r^A!WjaT1TkG@Di2Z}z{qyaDj*SB2@w;d&7wrW`S3^=?8%AzW9KNp}-$?P; zpC+s@YVN=+rHQz7?ACa=iN5}&0f~6DlTlgZ?IR$!HQ{qU$^+TjX>k@p1hNnFcR^~c zdZ&ZO@ZL-g;n5;4i7BY+PMX?q!C~A`s-{U>y;1^FsD+bhoACZmjcCH^Z4bmE6?z17 z{92Pspxj7-Y7O>~@z0^-rF3z#Qiua89)m^%JDPF*YH%HnQ523m28 z4`Q8QM;f=xIKBNc(llCvsJFu&O?|-A8_Ts|DZRGCdfqd&9D~Xo-yJ=C4Qybc&&PL0 zDu*pW8pnrz1|r{0XnfKdXbUm2mFN(kYn`?%DQN=?p83d&5c9M4^Z4p7)RPS}>#6xV+mRPaD$8BELc zn?ynYa7kS>yZf>tdnHR9bNX4SKr$aib?h$e};>^XS7E^{es~0l$B<_uO zpp(xGC5uWz%{XHz^+1p}GKIKCH^iOzKuLw4iToB3AS|{_weVlq=wnS77bh$fe-#9) z1-a>cb#8*(Sif9ZkP#NdW`rNbtbNp4NUT1yPmajm864T4Um6B1qvg4SUW4-H7nev&p31x za#$tL4I3*9IH7dlW3V6!KW~r?q*#1|w*i8ThRvs-tI5pzGQ z#qQ;>XcBU>?3($BxDj!+dTzdZ^KKF#a_iwc?kaOHAjx8Scr2qWu<8b2NG5tN)m#}A;*=qZumSFOnCb}|#J(Zrk`<$_E2OCah zk9Hfw7N_oGxi~2hj<0Mj;`7DWe)Ay-uv^&Pt6z0gF{wa!qx@A45Ql=<0M{SMs8O@^ z^_(){S~ZVYEmHAvle}Fg!Zf=CWu<374FgV5g}pP}F_701%CcvVrSjt4sdxl(>Bmf< z<*@vl2~tpheCG=^Wtyy+qXw!Ho&CLqE7=6D*mlvGTldKj=&u z(RTl&%x>GKey!d(6-wN zcL877T=i_nR+Bh5x)fM|bZwJ6l=SGT$$v{LjA|^=3=P)9RJ}t<4F8y%8rdVS=wJo+ z97OD0pID2K?w|GN$K=99_UIk#SW6Ap33d_4KJUUPEZ;Tx!v{R>`g?(_!g>H!UHqc{ z!Sp&{%o$!X_q`qF?cCV?sxmE2mxiXS^ha;AcSro9xG=UoB7z%_l~-V=fWx1HB4iO> z;&>VioN=Ax!!FCv2K|sh#B=TiY4vO5Xl^Q~q`0Cua&&eUFQ3=LYFnO~Q3)73B3;m+ zMu;oTq-8nueZUlM^nSG? zW64B|j2oZcGf{(Ym9e zHOHl{BsbXHO~u%3L66nbA1I(AY%a#`3NshhVS=c>317-9K56BI5JAGlxj%S5lF zo*{k%jCIWE?V}ev%@Rn~pIA=6z1`DjQD)X))OYy0?8K<(;|zHIj^3{ciS~>XHC9KV|~l4U9T=j92u2d zd^vz$Tgjmiy{BRl;H?$o2DYk6^DLrfyv%Rqdfn|MI;T&lJLQV2=h62CQ(5;VOTpa z2uM-!TF~`#o6n4v_%v17xtUt?RTFGOui=3lG^t zHSnWcd8B)8@0@%Gg-W@~yk?h-p8m+-eKX2zKf_3NHTOc-disW~xR(h6tJCv6E(YzU zb-C;9E<0~X{rATn7N_jp3rVg{4r(t&}NM5YDVe2v6t9Vw^M&9F~%BNjz!*+9T zFJ72cx`XA@7~^(#s*k(i_aW}*Aw!&vJ@XmC<4=aP9EY3ew~r3Tc^0)qw#(9J4qkjg zuZR)P-^G6>EyWpYg+Xc<#BWZqP$n8bLn@yUqpP$Ia>*lcdEPL%~VrZLb_GE>{Xd{k`ofN|P3L75_S zGdcmy;%7z3Dm%0{RdW>D%^s7^7caM%E_-`SE1qw?bu7;{jjN+0(rVpD_)=JbadX{7 z+m2b>k_s5DF z2Yd|!x-6f)0u}!*ePF>ny873pJ(fEv@}fc$L~gD>(L*I`$0L@;!ff{U2otQO(E|u> zijH_2xi5u*1L~I!=0M$Djq{N)w%#u)2;zeq@aadk$lLU7_G-CAuhlX!mi#|zfD4!4 zX62v}Y$lYXvoR*6=Fwf^zMd0IMw2Im&ZX)=P@JiYv1nUH=-ykkDr^%U?NG}0xZCV8 zz~Y#_2i6*tXYPZhRp_TJf8*|lW?2D&{o_S^9+&7AZ6u#%99RQc?d7skw{k^|S-9%1 zPz!JNW`2!nq+SIAOyKS*>go%Z@&j&1S%iJhFPD)FI&k%I?PrqHRyFk*Zu$#%K}J2+ zna?QK! zbSqC-%QAT~lK%M1!i~0UKJ)s*spgg|@xb-;@Bk;0)lP*=+W5T!|6S$0r__BOFXB+NDbC|OrwLf zGZpmvcvMIQGY9AJtt8^Y2QRf2QF;#^6y7`&#Ld9n%&3`TE)>D}k%RKbaFLtYo~$x6 zqlSuOETLISFL<&3pzI6t{Tu9XOVZCmr?j46HGz%>xcspCS7qA$zjOM(6N;u1gws^ zaQTM}E%h)r*G(oWpDWf;O77`7G?g$}u*oThNIqr8sO<>GMVUwEWJ0Rf@1p*g8aliG z^peYdKZ{3Vbni%(KAVsr@GLRg0~L#V;w+|deWU0-*T)rf`@A&8V@j)~ru*Gy(%U)j zTy76dlh?n$zBihsX(mJFjIRtx>L$k7_;mWc8DjuX=)g<|TBEWwP>I^<<+C-Babc02 z_oqOwd@iGL3{=>T3ejbmRd2qheU;we@^Op>{FPWxVg(%oek*HdGW_5K6F?(CGqmZ9 zi-lY6f7g*#BN^C&)_zV^%0mrHH<)FX$ynv-C!@-#VgsDa?RGbfpD<+1fDMl|zIl-% zQy@t_;Cj0!edK6y)Q+sS-+f@#Yse=**g-vpP;Ee2xP7*A7>viF)sk!@Mi&jHQ&2}+ zpOl9ebW+@at1TY2=%Jv1Eaz+_{Ww;?CeL#yW_vC-n*Gamdd$$`(e0=(OkPlr#e74@EA`B3a*q3AZ>9X2ywi~7<-J02fjS2hb z%g)dUyH8Y^y5fTj(7v1nfamC*&MNG+u!lMVHtv#mgl=TR=n6{DLr-=RbX0v=FYy0uJ z)#BDY23UK<6(P--EQ#$_e>c|UF{LN%#WmE{;U`{iLhd6Uz&XV&E8ho|@jddSa=c{> zXdF9nfc?F_EJj?y)^9l;ZTQUR(~Pc>y}EAZAwrHO*{sMB}m5m=<@P!>k#zvuO@O&UnE?btV&G2c6I{VF3d< zbP1wQlU2(>10gm*-++fj9Z1V7UB-_%Pssg(bL0S`b9gx7j>ot-E7`j*R{m+V8J4~4 zITg=^xYu??U=QO}$$cmXRA-iu*VAumDH$=`vpSPQi}IC5v+d0poA#^^kc#`}6}JVn zR%_{9?1isv!j^MCNi-q4SYpb_H7j@PT*py}O)qR<_-ry++cyp5lKIzTrSPe3zs}t_ z-zMlgp8!<~LOwpLx!+H&=A(B*<`Q=<$D;Uj!lw8qOle+|;m&-1g61Z@Mc?#5wiM#c zr}r$z#RWdE94gnBT*8?45q1f>@;l#wzi`0h57!!!1<@~7JiCEev?X_RKROt*@Tgew z-_D*uLoR@e300ei9pC#8zTGEuT?`I??C||d<(ga#?s+Ap$0h7V4VorNGhB>p6IOkD z_n=$O%MPDQFYCdcbyN>=fL&##TShDmakf3}{+nfjJTbe%<7j=lMTfC>0S;(}pK90C zdPCIcr;|~ij5n5IG!hp51lQA-&E#iXSjO*u7i;eZ-Y0Ob#0*+=O)dl95L9uog>22s zEuAdD>+?Vq#$0|m#y?>CDSR$q;@8CIsJ({dRnWH~?FTo>JSy2mod1j~fjomtOsmxL zwF-{^$#Rssu1MPC^9=6!{r(-i!)=(k@#oT80BF`q0Q4yNH2a`rN=BLKcCu{IfPA^p zEMb`Z;u69}fn}_!zx+ld6De8j(#N1>60}$@;32 zk#2h#ViB-mER+PQ%qS`RCaR2h$Csr(gy47rq}7JBafQ z00(lelvD&HfkDCLk`}m=9)5daR!0Sx<4dFF2_n_o#lu4;1I=LysAFp^3(*0H%CRSZ z<7%uTJg(~gyud=9QAT&4N;G@svu@hC8+U&AGslD`A8FEwB;WaxbJZnB(_(xfdVtzI zd92jn(EPE%H{a+G4RBLjYa--Ds+S)_u0e7p&xBk^vD|$zrJgxqfyK1oW%rL9 z2Vq5*ZByd$pL_Q!)xK{hH+gs6yk*gj-hajdL!?$LG=?p?7@&MEyGwroYuQfJx65T& zn1DUVVoz8ujb_# z+pei<`BAbOKcsj6Ije(>{<>-ef6Z_nFJKV&c96YFe#CRO&dab=>ag|xy==f@m`&A= zi60z;3B<**+7ciq!vNZMtg&^cnZ;?1ZI)d3+mz7i%8DND)=$x#w{*emtVib!8SaEg z#)CRK0e-i~(Njf5cN?I0$8`bsmt`XK!t*aQyx!H;bP$o6Gk1D*-6 z?@9T(+909|_khurfvITOp4HLTX!>H!=j_#uwe-?F!<8$O2P3rP=66EFwF-XJ1yrni z&yp4wdAkWbw5cp!_yRZiQR)4l)S_YigI`wxV+*}R9vKgLdMesroST^6sWH}O4Jmxp zrZqm0(gj_X!OR_JEq#)AD6d56c*$j-58$;MJ(z~7Lnitdq7%52;xv8%Ze5oNIn+9rNgBtSSRWG-Q z!H;tVX9uCl#ro1={f_0s8e%+jS&Rh>e2)02C;9lxCrt&S8Ccy_1)8CcDPYeTOQl}R zX$uhvNJc5Uz@@Lj+C`XemeCEH4)<2AOt#U_>|@N2%%}CsNURr2Mnf0b1)Y{!Wd-(c zf41RlG%+z1^&{(}jIiTb26wgw-Bx)|xLshOW>z_qJZCThBK8tit+9P1&H09w#Q_H@ z;F?Y>afr|yIpEiUh(GijXQrlm6_{}Vxf41V-a~J|ZMy)B=61?+pz+s8>qCr3bfDWn zd*w%$;SdFRRGY&y^KizbQpC#*Kg#%Qmd^!PAedn+i$8`f@=%Do4AL^W)nJcHte`Oe zQhAWz+BB5XnZ_}Z%VoL3Vsyt_n5GT@g=jBi+R>&iS+6^d)kzvX|Ym0^-Ooos*s< zpw1kD#&!Rxn8hAk!0}CSxw}Mm@cYF>^e_&_b^kyI8Xg4O+~KJn+z(0MTrN}0Di7lS z^t`sggykGY4R;cB{!4>waNYrS%mkahdSkc~FCNm+uLYpMa>Ri1ACB;bE?2%Zv-0#6 zkNELnJmU^G;{#;ZRP9y>i=So=)8`bBA^8d7`2aT`j()ejo{rq-T@`jF7|s2oZ8YE1 z+ip`e7NXvNAM>5j)1v_}nkQ-_IPLB_E{oauSbe+AX+Sn|WkngWHo1)$*#CATO|xQq ztT7L(Kz)qt|t34c`B19-53JZLR_a_@LN43w2pA8;Q}$zb&e2^2T= zJ}6NwP-3YG^4wU-LW^u9YY7+VI&@G+uQg{`9Ly)QpT!n$!E*U`=gP1XVA$CdaAWI} z$=3n19=nxj!HPp=&gp0q9=W5|0WZv+=V@>iLu&2cqb%U@?kSmBtvDm4uH(l3B&`wH zfdl?caOnsw8I}PcV1$hba{Bl*7jLw?VbKeUorz!>IYd+xdvJ=s2SVEa^q4>(^VpZp z91ng_s19+>epc`SP2-Sva=+i=!J-0u0-)yP6DLmt3_w6D56%;9P+xUeIvF+rm(?D( z$i6!_Xjp3S=e!VFT42fVRAM><+;>}pMul7q!E_{IHN%7d#!eowXX>9{L;YV619^A{ z^aor3%^|eR2-~ARQ16s^D#y3k;Nxy(f*o^^0_qfU3jEH6u^m6%*I=p!4i*O<10(8a zz6MD>o^$|+`t`4#Xz2P8s84}5v*Xi3YHdRBY2$!%vkDqPKsPHylpmb#Y=W<78QB!5uFwKKN5`b3Wdleunu$3N!FDcseg!Y2Mp^JfL>T}H zPXX3?r;nJ2V4Fd4&H|C}vJ-n2TGt*N$bHbNe&IXlF$+xK zy#@OAXwQz@LOdU1LAV8;Z~OBMU_(#Nbyzc?H0J$nobz z`#&9JxRBT19mcCl1dFl1jqQ&C9|H;h=Chhm$l1w1{kb^D{Xi!N!IJaOH?S8r97BG5 zWB}4Hh>xMcUT5;p8L_B4hMU`cG7?nWKx-Q0EVdKmfBE|HvCq42-vfaPwqFq2F>``O zD(;1MX&N@5m-M*r2~b@ci(Ig0`xuRpd3Ase9e^c{k@EllM=IcOJB(KF9@7IW5C2g4 z|Am|@U^V*DKDs*MzZ$2X4}CdkM=$@cTC4|h>7K6TsP%(^rsWk#>Yzg7RW7qFa?s*> zf`Bq4;5EPtzfQdA;Da$AC&cD*6*cK2=sbAUt?g~Q;&TA*@*h<4M*h_LLk`5DBu+wGcBtlG70 z8FHD_N!JU|`Rl9|Wu{XS(wSq4$+c;e+ks(UejcFpxt}{35B9v0#-+Xe`&;)_?FYIK zF)uLXAWAeTrD&1xTM1_nuW~ZKgg^f5yVd=HKsRkGZpXIj&{1CU>KW;8c}yY91}~d} z$`aUL5EOA|@`v+Nk|QT|9tu4+g4_gmwfPlJoy*@5;lW?Ee1rs8m85Ba$|hea&PWC6BTe zm8_Fw$u?o^%y<+Y*^(_nj3kvcjCCeUNfNS$VeI=5W(H&CJ)@_7J-+YW8b3%GbOu zC!co*99`QqLd+#Vd)U&-LHS?Gd%RSQKiUr29CO~n0&%2O>8YSnr&D>`Yn;pkIY_v3 zAY-AZQ^2Vl#Z`&c{hfyZkj_sDb-mNI$dQoiw7TwKS0P-{>0>*;?a2C=ALp|`59^IC z+}Udv@;Jp}vL}4@zwcE-TySmtwPv}uez3=<_$W|TE4brMPF035StO) zbgf0lcwpf&s9(|p-h)-&{X^M~znA0R8I<{}+hgFLSnYo((PiMHKK=9v4_3yT3G^Nz zAyy4K%a;BTT8ABG>7`9HcxS%##Sceu3fS8jYDh8y<~K656(m7*5#++wv(@+fBdM_s z&}cGi-#<6Pa|6PD{d2|J9y8Hv9K-qV`*sxnPCd(Gf@K&#O#2ZSB5OItKeq$VGXhoa zztO{rIzN~r8yB-Smz1*;#50y(`|+*OMDx7~aW@biG)`kMEy7`F8q32&Shc7cmsq!R z{emrEyk}>yR(Jex!~YwXUDG-8Z;t*> z`K^~N<@Dy{s&yjRb2FccpT(g!z>haZWf?VuTkxMx*-<;Y6QcRk!{2&o=`+5=|GH#Y zq-sM3UW{%q6Om40H z#W=ns$@Jw!T=h7iW}2`Gm{)fiP?h*oOfneX-sAq{8Y&`Sn8{&v@HZWLV(Tp#xcqd8 z&fSCHuNHa793l=vnoN6q|L|_@c-_@6nV2YZ9 z^#|KceCII;h&OvbR-F1-`t`!wnwMm*&? zc;VDOTRHh;|8?IN{^@7|JLSP;6m@y6E9YhUp9EMus$vsEn359 zmr`lSN)iqW9KDJ8&}YA$sZWoEXn=KS5Dg>naq3n*+blS}XQebS zP!vzSI1Q2zRzzlXx|I(&x|mPO%F@2i)CmLW08s8ntT^Z)_Bq5*fVfI)Z;!on&s-Vg zNi4%;QSwBk!h%+mm4$5BVg4NO)_9RX@MaKI4r2Izgxx16uS!)rQEjqp2$DR`NnC7? z4Akc!kZ|DnWS}ovL$X1qWNsCR#tA@Pr==7WjY7>Sb#O$-f~IGGHobzdmZH~MR$*Yu zUUx)-PqKPF{MG9!=yeA*x0=im&3eGmU%jLOaisR59y@WEE}&Y6R>%f91riDk%Q1J7 zP-L`VzQMhG6v&Det=S=$z@n$1Zz>Fno1m%RuclEU6^rb37PPKWQNf)V<7+=}Avx|& zBF98;R^AA12O}?$5%PirT?8z7nQS3NZ_Tm^a}?(@R^Gc>_`OUqCy*AAtOu1pq-yz$ zu<$yZS$lQIV1EC$pcBB}98Z1<@g_5fy}jbA`ywR-L%*$$NUE{AP|;LT_LxXn&Dsvn zrJQc*nu&=9ChZB&R#zid*9>AsA&PH?^qh(a9IA&i`)ad3e~N=+R%00U-XoZR&ktRD z<{=tqfD{|WffNU8HZqHf?yvF=M4x@+132Ob~>})Qw4J6RW_F7sU#uB#VTO-Y}>^edNe|$V|7j! zd1Z&SX~z%xyTGOplQRwri{Az6E;rQ1G{Ku8d8d*%;4)_!MkjY24M*|4isNiXukO6Q zFHuqO2QwvkIFUnbhXKUi5!S-L^JV5uDSGpV$+Hbvp!W3qwQuKHaHIhs#{xd0?xr{iCCkR=t3777UiE zu4;-8<;nOLT%1ApS*VdW;Y5|<;o7xDZQ;wy_}*Ir+XRL>LE9Cvns-?fc1?4B5dxe@o_jD5a!Szkoat<6O;{nde3t(6?zu z+|6^K6}h}l3aedw?9?67taH=(oL%<plK>%T7$N7&=A zJ8vInnC@PCX!I`Rp`=p4N3kR>@=uQU>a&wAo|x&cf2wl2a23W1Q4Q2&)rR|{=J?l2VC+%+iGQls*HfBH`#lSXkyG=^- zg94=Km?4ZYWf+_?&u(4H-E8+XQUUQ;&P8E>FUfe+mAN!J3ANvRiu8-)Lf*iV5)W42 z@>lL|D7%Ar?zu5PGh3>)_sBf;Kfk++9hl+@0(oB z;<(|OqAEurAHRLxe!ILQHDYL79n@Mv*XV}={P zQJa2FA0Tb%Yh^}q=`{t_b52_pnFl$80+zo#+3G)@K(c8>8*$fu1bobskx(%c@=vn8 z|F-7sIbk7A6ZMHE(z3mpvt_3Qzf@es*!=_yzWQ z&Fe!{yhEyIM5`{nG9wp^t2$6KhvyXJ08n_a_tRX(w>=-?IW${rIkxbP}Hy3>*kNYf4wBitJ;&e5kjx5X|N=7c7V<0SYiece-K z60AyWtpiHTUe}t{8+R<}$R&*gDL#7|A7Od>t}c>KHVkLaQ~N+X>O=95%cvkyP zigwQ{;HR;q^4i{lfDyvC-H0+<_A}_Bq-se$I4p1B3vu?v1c$V#+|szTPz)4o6aPKS z#iCSo>Gk~y5IYKi0Um(rhCR#UsgUWsyon`gBZrL6@pG}gDa&*|k*eSD{Vx+${^$$& zq^T!Ul&tr@17i(i+BS`bgRcFLo115_FW!dgvc^_A7WBrV&}d&EupIRn4ts>+0gjvkP2a39dt3?fW^)Cn7t_ z;MM1rI39?AG$i8#aHBSj(P|#_V7IZlE26;fNplJ2g`MVKAey=&`P?O|12Ii8#^8h^ zS&~EFyIE*OfXhs@*Fw$Or_7Lu7cUMlN7{%B7B_F?yx!1?$|4=M&mF&=R2L+|`~Ay_ z;4^=RipmdR$It67U>DK$M>vxNUY)6`dCuc8G7oi{4j$z&FEPSFontr^C)1?)UC(6` zG(WkVq3!ruQZTFZOwpovNuNC@n-lF~Yq(G~8vVvh(QPzJE8V~9ZLNR} zQiAw~;W^=6o+DRKpL#i!_NMwdD$IqpA`)qe7vezp;0xM$^)>3I)Lzf)1P7Q-DX7SO zpX*lP08@T(i4upBb3u* zhEivuqspH?`vuC0OV8E1RSXZ+{d7@!viHHr^|X!_ekoHY7=PXr&Nze&K`O%}T?R*% zu}bCIi4w`>tKBDB11WFUyx-NXEoh%Sp63|KDX#=r>Tus2`BYlKu4mz;jcMGC~E z=O$LZE4@W(UAw;|aA;ZrBV#gVvsU-NxMngh`Bpq>M-m-&7#*0k@}xSaK0uQHY?8X+ z;2@UN_z>BnyO~8QjyMMl=u^I;YSk_g-n~2znmeTTS%Ca!B+52tk4RbfJxTv##E02w z@IG`=q7)2Ys3q>{UrQM=X|(XdJCrLXpp9*BlzjIwq~$%iABTj=)4cZsVbCQ`9Ur>F z5oZ*#x+6l7Q>kWpSP##ytXSd5L`ctYn}?o={Hd$e;eu!Yzzjq|^!v{=so%!um3iCTf zzV)0ujb5gff29=6iQbMNG)1919gba9 z4w!1Af~iOLwZfXvihDAh=J7_z8!dc^ihmF1E~|G~WcPbk897GJx*#$AWF~G1)5=`0 zZzYghv!*C*^EgB2L9?c~<|LDcq29nHb)=Si5y9s3*XAW9q2Rq-Ifx2yLp{~~P-j^L z-^`dGb5(GS`|h#<{4Q~NIXJ0b@+p!?OkF-L@W3}d>N1#B96Jw`sYg;>`k^az&}Xzk z34hhmdA6Hfov}0xjV~u>2?-uPBB7?#%O}{jQEPk|L`AAayg2U%ynu+UVnCPT?X>eD;m<7z9ph6zk!#d0fVxPVzXmp>d& z+f^IePAM2FIk999Nx9k#j*xiIp#y1qmoHS#0HbdTIey+_KN$IXR=Q-ZcG)N|~iurDqQ(s>Swyzlh{Z90bSvjR(sxzwMt3 zv?H4k3WeA8ylY2Df~{jaeMLSKf};?8R_XBaTVtDuw1K08f9t8(>F@plBWMJl4X~cR z6XZ|nv!N1Imfo=eiu~>}23_WxLMd#DIH zs_nU%G=Fq~g!N8Yh=vwWx4(M+baEl{#KqpAjmnc^`uN0guU(o=o`nk@p7Rs&2Uv#K z5fVO=28~rK`o1keZHYQ=7Wt7g<{>>cZ`6;ql?_)yR#8(jEg<+O60y_04Gq z^0E?v$%mJf5wx@MJx-a^5!az#n$lQYso3M}cy zmcJT~sKBo~JNJx`M6oBy0-p>#Ej)%b+GBR~dt}~Rnl74eov16m`{B*1?Vf-5QG7Pv zOnuGD_j`5VY`1;@*iX2@8q{POn|*4mkoD-R@o>a`g{uF!`Ipb?Bw*=>$b3@{t(zfvHE<}eNxI^Z zwEph58S=_*j{X&HJ5`F|6v4qFU=X zPTTZmEB19*LF69=4jX}*wzwhrb04pGJZi&)WK#8yyf1J6JOXB7b59gEt^YjI zZ)KOdNI`YP{gn)mC#!REIzN%83^(VBD*Jh+nt1xMs}pi)6^HSk>K{t)tx;L{c%OU0 zw8qa~Tbn*iRW%!}t3KgBnGp&= z1TI2g{_Qn><)F%Nkwr>@SW1_GltO!vd!e^BBgiEIOLCZTYfN!?SJ&4t-ngGrvjt$3 zVbPIBKQT}TuunaLfS%T}JvnRy5<%SEj+St^or5f3&?~3`@51y{WDA|se%mCLcv#}} z)w|vI-n)S)E)UeR03-h!OVp};7oEgea1em14!y5+YE^#A9N|#1!jvY10GJ2m+?Y8R zbnej3^4KOmrEdrF<@UGiLdWe8-qXXMu8bdnVXa>twoWdTQ2PgU11F8=%6Q*2+Iz*M z-H3Y!$M%Amxu>5a`ZucH;<6O~76&`oDn|7C@uIj;4P_>LpqNDwV0Sg^Pqz}5f6!$! zQGTgnKcMXp$P4gaK}O5z-=N&QgPbO2Zsk8Bwg%g$P+Ni^D;RHiI)EbcV66dI3ISN) zKQh@CWCRA1ByraHJUFY_9e9Txw8}3gKr%o{735g<@37+@AbiMmfNoh~Y~ufe46|T% z4V@6{KEB_`0X%=)S!I`DGk$A?o9!!r!IkCY{`{$RTXzo{10Y;mcSrXb{?I$W0p6f! zTtkh8mz9)KB^}6jon{d{&V91IgMB@`&d#%@ZR&-N+V?)cSePSTLVecIM(g@xsL>4t zf0%)2wfZzx_BZ^Q^?C*D(u7+b9~qo#WH_Iwwkh-%la6lX=Zcv=GS@QXDm10fxR8;+ zis5R?|3#qR>Caw0EB2xs1p_5DQ;m;z2>bQy_41}jJH+S<@0|JbH&(K8;LKzE3zo^2 zI#?ThS0p&_N5(=QTL2h9jvkO09h2T}W(w&0(Ei`_)z8^;h6#8q73~ndCH3EYIAmMJ z)6M@SPdZgiBr-Iszg@!SZRpmFEH=yLH((dMntB=b_%1;Om}AyEoc;NYcdwcXa{9|& z$tV3m{y4;CFvrdP1rs571=?5WjEekk@okdfHQ()}=iti9AKp|`)&mJQ`#t0rEE3P!?PVVC%q|$_h-eR|2RRGCB9$D!o5+608WW{xr{gjxu zoJKHSpA)xUA%N|IAmGxN0U##p7b8~D7PuZM1MYzYs?!43F;5^r)|Jb8 z#|N%Ug8zSu|LeTS`Ov<&TQqf%H#^=)=giNKC`&TE#=BdN|Hgm5(>c=>Dg3W5ayt_o yZvN^6S{j*Pt$*Hv)ltVXJT&3A+lqOvGPl)Bnb)!LwK%af7!RC+h`j!2V|#JxdK5Ks}2t{}YyLT}Na zp!85f7wHg)KnNv-+(`iS?0e30e_wtH$@k67ns>cx&AZn4?2d-&q5Yiu85kH2-MV@G z9s>i@ZU%*C$pK$B?741jy_`yT*Iv#&3!_CHL=JWCCXb+T~n^CcD zDZ-)n%}Cnadrl+vw&(WSotm*`3p=qlIG7n9Y;aR;|EuIT3I~;vkK8h2i?|KNV+U#gG2>GaZ8s`2Crit@4#=C| z#(YX_vc>%Vg7-EzSOk81!C#6J{~t`@wh9E7u1uL${I!(#6-#=EWxa%Dd8?x@EmM;P zgnf3;<+v6NELA{S0Rk8p?v&?|P4b@Jj8tXWOZ&a8)(&(149*rq`-Q>h5-`-CT#ysA zUoJDJGqJq9pF%?r1H;q^F!C`+Nhs|X2E}-=1^EH-;sani zCh1sl+AoiJG=OD4-uVAuuvdctA~6>&r(UbfN;jYAkclXeFjr2dErLOti)NO%Gcr&& zRh#~Neyu=avsKf;DzhN{V;vRR8U;Q=^wSu)OiJyr@1ZaW=5~qNi&~$)E9Y&!f|>q` zF&Sv%*~3m%qRHE)`;-3XKV_hyda909=gd8=aW8H)jw)wtJ;k~+a9m<0SKRc+K#1|H z@*Bx~375VFOts=vX}-?DPv6%w)lBNcT*A><4_97|eQn@N z%hMe;Gpz`?C4uiXeJ{1o?u-FuHfMC)>cpU+k$>(ZpU+_l^2y4PzkdnLQ$6kAbidb^ z_v7XKG3JiIS_Qn?`>v<$C1ZlqqY1cjMIoP@gEYjv-M@{jwTWsQg ze(Uk8^v7?xVBQ*y+auFGyQ$?)Sh)r|;<5s0$b|e8hirmjZuE>tTZ%?qvUc8JWcA6q zeaN$^Lnvv$0G+FtEVaF|-Sp*Omxg*+gb1JSbblzI zqx_a7OZNup{u9@1@rvttdwtDqC`odHeQF#uce-3fpYyT4fK*m9?xPhqz!&^%DE;Hl zN_6OpI>NWJ-))Bk^FPve;7)nJjS_KrG%qtVGc_SutVdIz`5A>vb-9h^Rkz$(N^IN3 zSC~=`SlJ^}B&2Xgky^BOUG{b^AN@O@*Q;5KUAffCNOA5sth_~mOv)G7y2JIsGiOZhixR|&@gQ# z`Xt}WK<8O*M1SeJA3mQm+*h6q6Qr5{?KOLQ`<|*rQLCpl?ga>P#<88v>~@O1kVc@x zH@L0V(g7JM6y4c_?qy9@6rw*#p*>jxo@@(vN#~Y`ZvstSN2m9jY;Wz`6iH~TxZpPL z_zT2v;+KTjX zm9MX`+(_IesrH9bxcphJp(zcl#MT;|V#OgRBDXg55le~R_qG9*qqB7tl7Cq>blne` z0lE{jYIa7YW@E1{rO>ULbCbV zP4`IQgu1S6eXXmrQ)y-0^FO9wegx`DrBXJ*1Sm*;-7@N?vtJ#x>XLx>D(>^{0*y@+(i4B<3> z?NSAkk))meLMSFs!{9ji$`kwU^wzr}>^+}N-HTNvTljo=kCOFhuryC+>Ik?iyW=N- zZ_dwul!W3zI$^y$?baD3;=skZSsAOsr%8Pv<=%AmtrpFtVD^R?QB92#J7vpDJ*1OBD z7+lNeI3`l=G4wjUM=TT;a6BvV;_X8;uF1s)*kLm0ahS$-9&y&sGt_8l|v+GKl#;vn(A|lv%(OmjK_` zczXK@>H5N={kt8P2EiMj2!nq1?n#m-m8jRhuX{cDT(xBtY=LH;$uY76)I^J;q!8K@ zIDb?znv(`pPocp8r`{pEM5p*&r0b)vdbn(!DH_!cJ%s3=J)Ey)w~a$=K;(2UyDrV# zMw1YZI8LKyOJ)kneXXx-EXp$YM8+GC>0F+Q!(GWXcj?CWb$`gBs|{mivuIUPhTivq z>-z-bGW^hyxs}$3zG$rVy^14ut)3F;xZD(OFe+*`3m)+1)hs; zaeo!y{=1(}M?}^8d3>U6d$+e%U22`qd~&oX=cCW(MI-e2E7A{Y(T63|%+*&|%_35L z-c9yXoT(;a^&4hjw2sNtqt$ts=r}r>I=w6r?%Q0k*^8gZH%rRQnORJ-H_rXMc(+xx zF`8{o8HHR6R3Q^?$BHj*XN%(}lt-28hCHW>Gacj`*RorbCo53q$|qlWv{o6IZG3;} zQd4f;lQ&s$wa7+_7G{gg(q*7=g-ai9DDo=iaYZ`3ixtfFGm3Ib-*1#nl7hyVgg!!Q zGp&4E>IpZz^w!l{zcIlUGbKp(=C2MI^A&(m&8i}5KxaUU$BdXp^+MvT1;WD;*m=Ct zGnZhDRocSjX&SF1+7f;W!5Unl3H0Z|c>!kB4S*$@hd0 ztz+3$5m>2X*{WAKNc}CzbaY;HzrqrguwQx&b2oJ9L;C?Nq6T$bS-Kse zBZ0Bv75+QPjE9@5*JS9&!Zfj}IY12+vL0@FCoVdC(VT$;Hho!T%u(Xlljji`LQ2_s zy=5$tJ3+WZeOv%;#qRt?@}AI)F5z58acq=wZ<&)rlD(C8&HYBD(Tqb_jl?QD&(W@< z>Ugxo4r*^bU}0;7VQPT0v$mSJs?S8_i7(_ntKazc2FDzHd?sg`g{)}7z-~6IC2Bh9 zqDSZ8+7oo|gOLvdsYe+_tH?5Y91a^VXph?GYo2^Fob^NNNn?sh?ia$$*j=u|{vkzs zPxvHDN4SmV2BeYVC9o4EW08j+`B2&|0(spWX1ep-2Bhj0e|#D&;AKDm`h2Ytc_L18 zuCKU60b62E%lXb3^+-am{FYPXkOwzDyg%T467D-g%3GqW4fFc;rxu{w$13In9eCh= zrs)J}y+Flsho0E5;F5cE{PP3Oqx#Ms{uw84uypU@bE)}J=bML?@UZDApD1?#_PB%3 zmwY!NQsWYSduXL*#RSpekx;o*chPaS-6V6k$gHS_&JKd_e}%CC+QEU{l+(3oAWzZo zV72uZMBZ9!OlFLU&Emw@`YTp#CN-=U>MM~;%oL|-_b_we+<8npZ({+UT; z*WA(EO!~$)05{zn370?jGebBd18sIdI-jf60H}W-Ezp%ZQ_<4IEfKCj_<{=$`C3dJ z#-mlQkTx5u(Xu~2>9mT>=1^=JkbFY}>#KR4D5sF_E#gUU`;Ul1JLb&MvYUZd<19g> zIeGVn9k4S{(*duA=mVv!6I~o>N&iNqoFv zB@J@<_q`2qSqTYL3j1yTnw&@UTz*=!#OeBz~hnr@?i7!R6cP*u_US{)!u` zRdy2T)(Lv#gcPzLJc$|4a%ej6Jc~JXFD<5VRHQQX|L`}B@I7Q)Q1xhSR+;-!xnBO0 z6;H2cU9zp&zeNIT4gKut;IGhOPMN8?NoPOt<@-G`HQwvdst8%yPKg*%^hq=W2hMOmim=E&%%{6$=Eeii`g4PoX6(UGpd43pDf*3pbY`8Jtk{EMwcok zr!QLR=jR&n-b&TIfzb6n6jeM^Zbb>B8WMGaVQ0X2Z5ne9m_nUy%*zy;m0%uXtl~rX z$YSr=$&gejE_h#A%UFb_i7O%2I*wZOXlWu;yJ#-6+(~uP9wjBD5f=5_^e%EP@a1&w z{*?$*ky7!c>keww!T7w3^1S8!lU)JWqjZJ`)S$nJPtFhB=uyd3F|ld;bVY()Gn^9H z4)49_I9kVe?5@8R@FWAtK8}^4qvV@lW^WaNYnypH)X!UH<(NjOwjd~xrKaf9CVb5` zPzcU$X`|C8AHE(OnLB9SV zR!4cC+TedEIp@}n6*f+aIS$xxwe}z033|r{0wSyA%=L_q7qkH=J52~lu&1+mJ$WL} z#$)13M2Y1*rIg(a8jx`59)^$A-pc$~2q_7Kk*Kn5D=RowxxFiR!i74CJ~YrjQDvVaFnyzuhoE z)YLv&3JtQS`i=MVs(jX=`mYSzS@VqDt%{Zah5z~exddZ)g`*{&b~JlDm<4!zIhVT< zHIjULPw_=EG*3~`u;!u(AEd?>?wqZwE2O`<9vX9FW^$Q4ZWrD)sn?UZlOk!^Nc9?5%STOZ~bN@f+~$@ zNk*60U_f=Xg;ya&l7cCx%2Df@y9`I(L-aIO#*K7!tjAUxvs`N z#{gs93;=x5Gc;5n-&H{f`xH$*sa0=^_ z>_>ZXTKv|}q&gC#gn&A0^aL#U#Xb-j^3h;lIOC8ym1YvBc3f&pn>z#2QX)5|okKoF zo|y-2EL}>~p%CB;^E#P2<1tjV3XQlLYacu#1}T+avp=LDl{rEAl-Ky*yWAcQ>d(4i z3j0a1e(g{3fsjV^Ih%#GX=cKu^C)ZKe9B1uBn6P_$(0^nupCdm!2pU~{rp%gaxkCc z$WB&r%Na8f)>2~jB>L7#iBh9*Ud?W%C-FbcQ!Q@$u@`=}b z@`ayL&fP>cp6+h`s@Ni_!^dVb5o~3Yjjt-`jz#|CF*9K)Sn$s{KPkd{pnD88e}}Rp z2CVQlEsYeaJoou9PoZT`@rxYcGB~)^Zm`~H3X@)Uxv$Sz@u08}_ zWnZ5ql_^!}(ZM34GHa$V`+dAWsvf@YjEH=+!>8|43kiI&#abb=Y-aN2Ew@4?Dhx}^ z_Jqd?7TFk@au;;M_Zt;#>A)HAX#spf!q4+PWHAm2G5~2)_6vyu!n43vMa!)^FBI3u zFQME7lrMOHR6hWZTX%YA`_-w@MV=6~lo!qtN6gS_Zzk4Y4O8w~dZ+91wp0Xp6^Dehc7`?+@7D^5el_MRh;uo1 zBmC8Lb|EL&w^vR4EU2YwPdATG6Dv#(hUhK|T{nMg0^&<)6$&*tRCc~2KoR#hBzVFuG;_2Xs;Zaj= zIj#}ysGorFn+Z;l6r$W2fW5MnD2VTiO_BnJ$ua|C zOShAJ|6FLC#OL-Z;wYY&)0^Vl`y*~SR4a!w+9o(-SkjCtGo2| zTKiWFCE67IAnCLJS1Bm>+C5v0Z8BX`{UPAE_URq0gG0{h?jVksRKR=plmQ)E+GyY_ z11Iy@taOA_v{B1(I(NWi!vu1c*X>sz`U@pM-2}xcAli=!2!B4!d&@`^&JjaIH3s^OYO1!=Yv z%y^6wqXsOcD`CtqTe-v{XsNq&^SVeh`@Do9k5eW5+DAF=pUUM&2=3MSYwIL#lhWy! z0Y@Z<#d<8;jY&g4I8ml$7qf^nVO`Ti{?xkBbiDj1ueYxqtuB-SAD4k5hGYq^29}vL zjUKtJFW}>PO7C7zCFf$(rA+G{eBi6_JFx3(}YRiMG^SWddHQ_tyP%k@(>R%|5B$lwBc^NQvf!-JG1U zWr@si)( z$wym9%OtUs5Z^5^j^)9{@3$1ITOefl>CT%02SLY$>TToobtpjyHjODBTzPMzvg5Sv zz-jO00@-1_dgA>7WNOHPzI=>;FskM0=aBwB&5doi0-2XO|BJFEp>2V>oH-S;)0y{s zl)JvyekTWr%Zx(-t@f*CLGp%@lK2FGyKjw#`B;i zRigwm`Ls0qP+d(18X^&WqiS?xmR-y=Htrf5RY)+6R-JphPCFD%BfNeI&9UOP*Y>z! zE*@}mipk~!6`{*(zohkuDuJA@i_fl+562W$MKZr*(SDGGyv@=LqJ&4etmOo)x^&qa zklL`f*V*4SKw$~loD3$3v(H;1ovLE(;`f)hFBAhRGrsukojZS&DY_SinQzK%bNCS7 z)Zk@YDM`}PzD=wBU0&|^kFzC^GfJ!EzP~A70M#RXlz{NjZTGp&qO18!G%jcA*ESB! z{P?v0`x2w}H06UKy&6ehuXDfYZ{Mt9^3Qr%$${gZ?D?$xhO|vqzXk=R%6}$o4uMQ} zMo&wNJUO@gGraxw(J$#4)Ik4iZspwZMub=AFQGm5C$%K~(t9PLM--3mnq@%i9jbdef4S1$F2y|CXTM8;~j%j8hvpdr*#UD~8BRt{<45@E$(tx0p2< z^;t>K_7=T7^Ae)}G4x~b#jV233y?+9NbEW`W?7YaeM%WN6Va%v%trn|lj}jL@M;{g z=sWNc?sS@UAFCZtFhEl&1m9L5#;jR{1;g&&xxQWC#Z}zqh$=s6?i>t+zF(|==NU#~ z)?j6@TvY(E^pS#iu&}2f{LohY^GrEYoV;8=+)5xw%9>s?{*!+?n%YhGG5-CnIn

PG3U(}c=h(x(~gYH%1UA+=xYeQ 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 diff --git a/Transferência Ginseng/workflow/.resources/Solicitação de transferência.processimage.svg b/Transferência Ginseng/workflow/.resources/Solicitação de transferência.processimage.svg index de42702..c285733 100644 --- a/Transferência Ginseng/workflow/.resources/Solicitação de transferência.processimage.svg +++ b/Transferência Ginseng/workflow/.resources/Solicitação de transferência.processimage.svg @@ -1,2 +1,2 @@ -MotoristaAnalista de suprimentosLogisticaGerente de lojaSolicitação de TransferênciaValidarLojaAprovarTransferênciaEmitir NFEde TransfReceberProdutosVerificarproblemaColetarProdutoValidarprodutoEntregarProdutoConsultarEntradaVerificarproblema delançamentoValidarrotaGestor IdentificadoLoja sem GestorAjuste de transferênciaAprovarConfirmar recebimentoReprovarReprovarCancelarValidar produtosrecebidosFinalizarEntregar produtoEnviar para rota +MotoristaAnalista de suprimentosLogisticaGerente de lojaSolicitação de TransferênciaValidarLojaAprovarTransferênciaEmitir NFEde TransfReceberProdutosVerificarproblemaColetarProdutoValidarprodutoEntregarProdutoConsultarEntradaVerificarproblema delançamentoValidarrotaGestor IdentificadoLoja sem GestorAjuste de transferênciaAprovarConfirmar recebimentoReprovarReprovarCancelarValidar produtosrecebidosFinalizarEntregar produtoEnviar para rota diff --git a/Transferência Ginseng/workflow/diagrams/Solicitação de transferência.process b/Transferência Ginseng/workflow/diagrams/Solicitação de transferência.process index 1444688..116949b 100644 --- a/Transferência Ginseng/workflow/diagrams/Solicitação de transferência.process +++ b/Transferência Ginseng/workflow/diagrams/Solicitação de transferência.process @@ -4405,7 +4405,7 @@ - + @@ -4430,7 +4430,7 @@ - + \ No newline at end of file diff --git a/Transferência Ginseng/workflow/scripts/Solicitação de transferência.beforeTaskSave.js b/Transferência Ginseng/workflow/scripts/Solicitação de transferência.beforeTaskSave.js index 0220c19..9501070 100644 --- a/Transferência Ginseng/workflow/scripts/Solicitação de transferência.beforeTaskSave.js +++ b/Transferência Ginseng/workflow/scripts/Solicitação de transferência.beforeTaskSave.js @@ -126,7 +126,7 @@ function notifyTemplate(templateCode, destinoEmail, requesterId, params, process } function buildProcessLink(processNumber) { - var BASE_URL_FALLBACK = "https://comerciode188007.fluig.cloudtotvs.com.br"; + var BASE_URL_FALLBACK = "https://comerciode188006.fluig.cloudtotvs.com.br"; var baseUrl = safeTrim(getValue("WKServerURL")); var companyId = safeTrim(getValue("WKCompany")); if (baseUrl === "") baseUrl = BASE_URL_FALLBACK;