This commit is contained in:
Andrey Cunha 2026-05-22 02:17:22 -03:00
commit 77a46711c0
614 changed files with 121170 additions and 12462 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
/.metadata/
Lançamento de documentos/.metadata/.plugins/org.eclipse.m2e.logback.configuration/0.log

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,4 @@
description.autobuilding=false
eclipse.preferences.version=1
encoding=UTF-8
version=1

View File

@ -1,3 +1,3 @@
eclipse.preferences.version=1
org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\r\n<launchPerspectives/>\r\n
preferredTargets=default\:default|default,org.eclipse.wst.jsdt.chromium.debug.ui.toggleTargetId\:default|
preferredTargets=default\:default|default,org.eclipse.wst.jsdt.chromium.debug.ui.toggleTargetId\:default|org.eclipse.wst.jsdt.chromium.debug.ui.toggleTargetId\:org.eclipse.wst.jsdt.chromium.debug.ui.toggleTargetId|

View File

@ -1,3 +1,3 @@
browsers=<?xml version\="1.0" encoding\="UTF-8"?>\r\n<web-browsers current\="0">\r\n<system/>\r\n<external location\="C\:\\Program Files\\Internet Explorer\\iexplore.exe" name\="Internet Explorer"/>\r\n<external location\="C\:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" name\="Chrome"/>\r\n</web-browsers>
eclipse.preferences.version=1
internalWebBrowserHistory=file\:///C\:/Users/andrey.cunha/eclipse-workspace.new/Ginseng_chamados/wcm/layout/TIginseng_layoutblocado/src/main/webapp/resources/images/icon.png|*|file\:/C\:/Users/andrey.cunha/eclipse-workspace.new/Ginseng_chamados/wcm/layout/TIginseng_layoutblocado/src/main/webapp/resources/images/icon.png|*|file\:///C\:/Users/andrey.cunha/eclipse-workspace.new/Ginseng_chamados/wcm/widget/widget_code_compras/src/main/webapp/resources/images/icon.png|*|file\:/C\:/Users/andrey.cunha/eclipse-workspace.new/Ginseng_chamados/wcm/widget/widget_code_compras/src/main/webapp/resources/images/icon.png|*|
internalWebBrowserHistory=file\:///C\:/Users/andrey.cunha/eclipse-workspace.new/Auditoria_checklist/wcm/widget/helloWidget/src/main/webapp/resources/images/dev.png|*|file\:/C\:/Users/andrey.cunha/eclipse-workspace.new/Auditoria_checklist/wcm/widget/helloWidget/src/main/webapp/resources/images/dev.png|*|file\:///C\:/Users/andrey.cunha/eclipse-workspace.new/Auditoria_checklist/wcm/widget/helloWidget/src/main/webapp/resources/images/icon.png|*|file\:/C\:/Users/andrey.cunha/eclipse-workspace.new/Auditoria_checklist/wcm/widget/helloWidget/src/main/webapp/resources/images/icon.png|*|file\:///C\:/Users/andrey.cunha/eclipse-workspace.new/Ginseng_chamados/wcm/layout/TIginseng_layoutblocado/src/main/webapp/resources/images/icon.png|*|file\:/C\:/Users/andrey.cunha/eclipse-workspace.new/Ginseng_chamados/wcm/layout/TIginseng_layoutblocado/src/main/webapp/resources/images/icon.png|*|file\:///C\:/Users/andrey.cunha/eclipse-workspace.new/Ginseng_chamados/wcm/widget/widget_code_compras/src/main/webapp/resources/images/icon.png|*|file\:/C\:/Users/andrey.cunha/eclipse-workspace.new/Ginseng_chamados/wcm/widget/widget_code_compras/src/main/webapp/resources/images/icon.png|*|

View File

@ -1,5 +1,5 @@
PROBLEMS_FILTERS_MIGRATE=true
eclipse.preferences.version=1
platformState=1741352421210
platformState=1776269138561
quickStart=false
tipsAndTricks=true

View File

@ -1,6 +1,6 @@
eclipse.preferences.version=1
fontPropagated=true
org.eclipse.jface.textfont=1|Courier New|10.0|0|WINDOWS|1|0|0|0|0|0|0|0|0|1|0|0|0|0|Courier New;
org.eclipse.jface.textfont=1|Consolas|10.0|0|WINDOWS|1|0|0|0|0|0|0|0|0|1|0|0|0|0|Consolas;
org.eclipse.wst.jsdt.internal.ui.navigator.layout=1
org.eclipse.wst.jsdt.ui.editor.tab.width=
org.eclipse.wst.jsdt.ui.formatterprofiles.version=11

View File

@ -1,2 +1,2 @@
eclipse.preferences.version=1
jspIndexState=1
jspIndexState=4

File diff suppressed because one or more lines are too long

View File

@ -183,3 +183,8 @@
2026-02-23 10:29:20,949 [Worker-4: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update.
2026-02-24 10:35:56,560 [Worker-3: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update.
2026-02-27 16:07:17,391 [Worker-3: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update.
2026-03-05 14:13:17,734 [Worker-6: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update.
2026-03-06 09:35:04,306 [Worker-6: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-11 10:42:23,819 [Worker-6: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update.
2026-04-15 13:08:08,894 [Worker-4: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-04-15 13:16:26,886 [Worker-5: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.

View File

@ -1,2 +1,2 @@
#Cached timestamps
#Tue Feb 24 10:53:12 BRT 2026
#Wed Apr 15 14:30:03 BRT 2026

View File

@ -21,6 +21,7 @@
<item key="SmartImportRootWizardPage.STORE_NESTED_PROJECTS" value="true"/>
<item key="SmartImportRootWizardPage.STORE_CONFIGURE_NATURES" value="true"/>
<list key="org.eclipse.ui.internal.wizards.datatransfer.SmartImportRootWizardPage.knownSources">
<item value="C:\Python\Python\Python\Fluig geral\fluig"/>
<item value="C:\Users\andrey.cunha\ComprasDigital"/>
</list>
</section>
@ -40,4 +41,14 @@
<item key="DIALOG_FONT_NAME" value="1|Segoe UI|9.0|0|WINDOWS|1|-15|0|0|0|400|0|0|0|1|0|0|0|0|Segoe UI"/>
</section>
</section>
<section name="org.eclipse.ui.internal.ide.dialogs.ProjectContentsLocationArea">
</section>
<section name="ChooseWorkspaceDialogSettings">
<item key="DIALOG_X_ORIGIN" value="857"/>
<item key="DIALOG_Y_ORIGIN" value="404"/>
</section>
<section name="WORKBENCH_SETTINGS">
<list key="ENABLED_TRANSFERS">
</list>
</section>
</section>

View File

@ -1,13 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<section name="Workbench">
<section name="org.eclipse.ui.texteditor.FindReplaceDialog">
<item key="selection" value="DATASET_PRODUTOS"/>
<item key="selection" value="impeditivo"/>
<item key="wrap" value="true"/>
<item key="casesensitive" value="false"/>
<item key="wholeword" value="false"/>
<item key="incremental" value="false"/>
<item key="isRegEx" value="false"/>
<list key="findhistory">
<item value="impeditivo"/>
<item value="DATASET_PRODUTOS"/>
<item value="hasnext"/>
<item value="23665"/>
@ -22,7 +23,6 @@
<item value="endpoint"/>
<item value="Cotação 000001 não encontrada"/>
<item value="processID"/>
<item value="numeroSC"/>
</list>
<list key="replacehistory">
<item value=""/>

View File

@ -1,22 +1,21 @@
INDEX VERSION 1.4+C:\Users\andrey.cunha\eclipse-workspace.new\.metadata\.plugins\org.eclipse.wst.jsdt.core\indexes
3963123655.index
3049976914.index
1889139231.index
2056597484.index
1252593962.index
160423874.index
3477032517.index
3528551409.index
17091598.index
4202715187.index
3974601650.index
1053469344.index
3371662347.index
INDEX VERSION 1.4+C:\Python\Python\Python\Fluig geral\fluig\.metadata\.plugins\org.eclipse.wst.jsdt.core\indexes
3537614094.index
1338284093.index
1604404410.index
2070855566.index
1999126708.index
707046764.index
223663271.index
1180771715.index
1478047577.index
3128569756.index
1860298949.index
2822718276.index
2568227984.index
4052977093.index
1053469344.index
3974601650.index
1034765801.index
1357543591.index
1408135880.index
1600244917.index
2317861947.index
2276237669.index
3963123655.index
7156200.index
2333158432.index
457859505.index
1268003346.index

View File

@ -111,6 +111,8 @@ com.fluig.sdk.api.task.TaskKindEnum = function() {};
com.fluig.sdk.api.task.TaskKindEnum.prototype = {};
com.fluig.sdk.api.task.TaskStatusEnum = function() {};
com.fluig.sdk.api.task.TaskStatusEnum.prototype = {};
com.fluig.sdk.api.task.TaskTransferVO = function() {};
com.fluig.sdk.api.task.TaskTransferVO.prototype = {};
com.fluig.sdk.api.workflow.AssumeProcessTaskResultVO = function() {};
com.fluig.sdk.api.workflow.AssumeProcessTaskResultVO.prototype = {};
com.fluig.sdk.api.workflow.AssumeProcessTaskVO = function() {};
@ -217,6 +219,8 @@ com.fluig.sdk.filter.FilterOrderVO = function() {};
com.fluig.sdk.filter.FilterOrderVO.prototype = {};
com.fluig.sdk.filter.FilterResultVO = function() {};
com.fluig.sdk.filter.FilterResultVO.prototype = {};
com.fluig.sdk.filter.FilterUpdateNameVO = function() {};
com.fluig.sdk.filter.FilterUpdateNameVO.prototype = {};
com.fluig.sdk.filter.FilterVO = function() {};
com.fluig.sdk.filter.FilterVO.prototype = {};
com.fluig.sdk.holiday.HolidayVO = function() {};
@ -1524,6 +1528,13 @@ com.fluig.sdk.service.SecurityService.prototype = {
*/
"getCurrentTenant": function() {},
/**
* Get the current tenant
* @memberOf fluigAPI
* @param {long} tenantId
* @returns {com.fluig.sdk.tenant.TenantVO}
*/
"getCurrentTenantById": function(tenantId) {},
/**
*
* @memberOf fluigAPI
* @param {long} companyId
@ -1623,6 +1634,13 @@ SecurityService.prototype = {
*/
"getCurrentTenant": function() {},
/**
* Get the current tenant
* @memberOf fluigAPI
* @param {long} tenantId
* @returns {com.fluig.sdk.tenant.TenantVO}
*/
"getCurrentTenantById": function(tenantId) {},
/**
*
* @memberOf fluigAPI
* @param {long} companyId
@ -3888,6 +3906,7 @@ com.fluig.sdk.service.GroupService.prototype = {
* @memberOf fluigAPI
* @param {String} groupCode
* @param {List} logins
* @returns {List&lt;String&gt;}
*/
"addUsers": function(groupCode, logins) {},
/**
@ -3955,6 +3974,7 @@ GroupService.prototype = {
* @memberOf fluigAPI
* @param {String} groupCode
* @param {List} logins
* @returns {List&lt;String&gt;}
*/
"addUsers": function(groupCode, logins) {},
/**
@ -11785,7 +11805,19 @@ com.fluig.sdk.api.workflow.ProcessDefinitionVO.prototype = {
* @memberOf fluigAPI
* @param {String} processDescription
*/
"setProcessDescription": function(processDescription) {}
"setProcessDescription": function(processDescription) {},
/**
* Recupera valor do icon
* @memberOf fluigAPI
* @returns {String}
*/
"getIcon": function() {},
/**
* Atribui valor para icon
* @memberOf fluigAPI
* @param {String} icon
*/
"setIcon": function(icon) {}
};
ProcessDefinitionVO.prototype = {
/**
@ -11811,7 +11843,19 @@ ProcessDefinitionVO.prototype = {
* @memberOf fluigAPI
* @param {String} processDescription
*/
"setProcessDescription": function(processDescription) {}
"setProcessDescription": function(processDescription) {},
/**
* Recupera valor do icon
* @memberOf fluigAPI
* @returns {String}
*/
"getIcon": function() {},
/**
* Atribui valor para icon
* @memberOf fluigAPI
* @param {String} icon
*/
"setIcon": function(icon) {}
};
com.fluig.sdk.api.workflow.ResumeProcessTaskVO.prototype = {
/**
@ -18889,6 +18933,322 @@ ResumedTasksVO.prototype = {
*/
"setChildren": function(children) {}
};
com.fluig.sdk.api.task.TaskTransferVO.prototype = {
/**
* Recupera valor do userTo
* @memberOf fluigAPI
* @returns {String}
*/
"getUserTo": function() {},
/**
* Atribui valor para userTo
* @memberOf fluigAPI
* @param {String} userTo
*/
"setUserTo": function(userTo) {},
/**
* Recupera valor do userFrom
* @memberOf fluigAPI
* @returns {String}
*/
"getUserFrom": function() {},
/**
* Atribui valor para userFrom
* @memberOf fluigAPI
* @param {String} userFrom
*/
"setUserFrom": function(userFrom) {},
/**
* Recupera valor do transferActiveDocuments
* @memberOf fluigAPI
* @returns {boolean}
*/
"getTransferActiveDocuments": function() {},
/**
* Atribui valor para transferActiveDocuments
* @memberOf fluigAPI
* @param {boolean} transferActiveDocuments
*/
"setTransferActiveDocuments": function(transferActiveDocuments) {},
/**
* Recupera valor do transferMyDocumentsInApproval
* @memberOf fluigAPI
* @returns {boolean}
*/
"getTransferMyDocumentsInApproval": function() {},
/**
* Atribui valor para transferMyDocumentsInApproval
* @memberOf fluigAPI
* @param {boolean} transferMyDocumentsInApproval
*/
"setTransferMyDocumentsInApproval": function(transferMyDocumentsInApproval) {},
/**
* Recupera valor do transferPendingWorkflow
* @memberOf fluigAPI
* @returns {boolean}
*/
"getTransferPendingWorkflow": function() {},
/**
* Atribui valor para transferPendingWorkflow
* @memberOf fluigAPI
* @param {boolean} transferPendingWorkflow
*/
"setTransferPendingWorkflow": function(transferPendingWorkflow) {},
/**
* Recupera valor do transferOpenWorkflow
* @memberOf fluigAPI
* @returns {boolean}
*/
"getTransferOpenWorkflow": function() {},
/**
* Atribui valor para transferOpenWorkflow
* @memberOf fluigAPI
* @param {boolean} transferOpenWorkflow
*/
"setTransferOpenWorkflow": function(transferOpenWorkflow) {},
/**
* Recupera valor do transferApprovers
* @memberOf fluigAPI
* @returns {boolean}
*/
"getTransferApprovers": function() {},
/**
* Atribui valor para transferApprovers
* @memberOf fluigAPI
* @param {boolean} transferApprovers
*/
"setTransferApprovers": function(transferApprovers) {},
/**
* Recupera valor do transferApprovals
* @memberOf fluigAPI
* @returns {boolean}
*/
"getTransferApprovals": function() {},
/**
* Atribui valor para transferApprovals
* @memberOf fluigAPI
* @param {boolean} transferApprovals
*/
"setTransferApprovals": function(transferApprovals) {},
/**
* Recupera valor do transferDocumentSecurity
* @memberOf fluigAPI
* @returns {boolean}
*/
"getTransferDocumentSecurity": function() {},
/**
* Atribui valor para transferDocumentSecurity
* @memberOf fluigAPI
* @param {boolean} transferDocumentSecurity
*/
"setTransferDocumentSecurity": function(transferDocumentSecurity) {},
/**
* Recupera valor do instanceIdInitial
* @memberOf fluigAPI
* @returns {int}
*/
"getInstanceIdInitial": function() {},
/**
* Atribui valor para instanceIdInitial
* @memberOf fluigAPI
* @param {int} instanceIdInitial
*/
"setInstanceIdInitial": function(instanceIdInitial) {},
/**
* Recupera valor do instanceIdFinal
* @memberOf fluigAPI
* @returns {int}
*/
"getInstanceIdFinal": function() {},
/**
* Atribui valor para instanceIdFinal
* @memberOf fluigAPI
* @param {int} instanceIdFinal
*/
"setInstanceIdFinal": function(instanceIdFinal) {},
/**
* Recupera valor do documentIdInitial
* @memberOf fluigAPI
* @returns {int}
*/
"getDocumentIdInitial": function() {},
/**
* Atribui valor para documentIdInitial
* @memberOf fluigAPI
* @param {int} documentIdInitial
*/
"setDocumentIdInitial": function(documentIdInitial) {},
/**
* Recupera valor do documentIdFinal
* @memberOf fluigAPI
* @returns {int}
*/
"getDocumentIdFinal": function() {},
/**
* Atribui valor para documentIdFinal
* @memberOf fluigAPI
* @param {int} documentIdFinal
*/
"setDocumentIdFinal": function(documentIdFinal) {}
};
TaskTransferVO.prototype = {
/**
* Recupera valor do userTo
* @memberOf fluigAPI
* @returns {String}
*/
"getUserTo": function() {},
/**
* Atribui valor para userTo
* @memberOf fluigAPI
* @param {String} userTo
*/
"setUserTo": function(userTo) {},
/**
* Recupera valor do userFrom
* @memberOf fluigAPI
* @returns {String}
*/
"getUserFrom": function() {},
/**
* Atribui valor para userFrom
* @memberOf fluigAPI
* @param {String} userFrom
*/
"setUserFrom": function(userFrom) {},
/**
* Recupera valor do transferActiveDocuments
* @memberOf fluigAPI
* @returns {boolean}
*/
"getTransferActiveDocuments": function() {},
/**
* Atribui valor para transferActiveDocuments
* @memberOf fluigAPI
* @param {boolean} transferActiveDocuments
*/
"setTransferActiveDocuments": function(transferActiveDocuments) {},
/**
* Recupera valor do transferMyDocumentsInApproval
* @memberOf fluigAPI
* @returns {boolean}
*/
"getTransferMyDocumentsInApproval": function() {},
/**
* Atribui valor para transferMyDocumentsInApproval
* @memberOf fluigAPI
* @param {boolean} transferMyDocumentsInApproval
*/
"setTransferMyDocumentsInApproval": function(transferMyDocumentsInApproval) {},
/**
* Recupera valor do transferPendingWorkflow
* @memberOf fluigAPI
* @returns {boolean}
*/
"getTransferPendingWorkflow": function() {},
/**
* Atribui valor para transferPendingWorkflow
* @memberOf fluigAPI
* @param {boolean} transferPendingWorkflow
*/
"setTransferPendingWorkflow": function(transferPendingWorkflow) {},
/**
* Recupera valor do transferOpenWorkflow
* @memberOf fluigAPI
* @returns {boolean}
*/
"getTransferOpenWorkflow": function() {},
/**
* Atribui valor para transferOpenWorkflow
* @memberOf fluigAPI
* @param {boolean} transferOpenWorkflow
*/
"setTransferOpenWorkflow": function(transferOpenWorkflow) {},
/**
* Recupera valor do transferApprovers
* @memberOf fluigAPI
* @returns {boolean}
*/
"getTransferApprovers": function() {},
/**
* Atribui valor para transferApprovers
* @memberOf fluigAPI
* @param {boolean} transferApprovers
*/
"setTransferApprovers": function(transferApprovers) {},
/**
* Recupera valor do transferApprovals
* @memberOf fluigAPI
* @returns {boolean}
*/
"getTransferApprovals": function() {},
/**
* Atribui valor para transferApprovals
* @memberOf fluigAPI
* @param {boolean} transferApprovals
*/
"setTransferApprovals": function(transferApprovals) {},
/**
* Recupera valor do transferDocumentSecurity
* @memberOf fluigAPI
* @returns {boolean}
*/
"getTransferDocumentSecurity": function() {},
/**
* Atribui valor para transferDocumentSecurity
* @memberOf fluigAPI
* @param {boolean} transferDocumentSecurity
*/
"setTransferDocumentSecurity": function(transferDocumentSecurity) {},
/**
* Recupera valor do instanceIdInitial
* @memberOf fluigAPI
* @returns {int}
*/
"getInstanceIdInitial": function() {},
/**
* Atribui valor para instanceIdInitial
* @memberOf fluigAPI
* @param {int} instanceIdInitial
*/
"setInstanceIdInitial": function(instanceIdInitial) {},
/**
* Recupera valor do instanceIdFinal
* @memberOf fluigAPI
* @returns {int}
*/
"getInstanceIdFinal": function() {},
/**
* Atribui valor para instanceIdFinal
* @memberOf fluigAPI
* @param {int} instanceIdFinal
*/
"setInstanceIdFinal": function(instanceIdFinal) {},
/**
* Recupera valor do documentIdInitial
* @memberOf fluigAPI
* @returns {int}
*/
"getDocumentIdInitial": function() {},
/**
* Atribui valor para documentIdInitial
* @memberOf fluigAPI
* @param {int} documentIdInitial
*/
"setDocumentIdInitial": function(documentIdInitial) {},
/**
* Recupera valor do documentIdFinal
* @memberOf fluigAPI
* @returns {int}
*/
"getDocumentIdFinal": function() {},
/**
* Atribui valor para documentIdFinal
* @memberOf fluigAPI
* @param {int} documentIdFinal
*/
"setDocumentIdFinal": function(documentIdFinal) {}
};
com.fluig.sdk.service.TasksService.prototype = {
/**
* Busca os documentos para aprovação
@ -19009,6 +19369,13 @@ com.fluig.sdk.service.TasksService.prototype = {
*/
"transferTasks": function(transferOptions) {},
/**
* Transfer tasks from one user to another
* @memberOf fluigAPI
* @param {com.fluig.sdk.api.task.TaskTransferVO} tasksTransfer
* @returns {String}
*/
"transferTasks": function(tasksTransfer) {},
/**
* Return users pendent to approve a document
* @memberOf fluigAPI
* @param {int} documentId
@ -19136,6 +19503,13 @@ TasksService.prototype = {
*/
"transferTasks": function(transferOptions) {},
/**
* Transfer tasks from one user to another
* @memberOf fluigAPI
* @param {com.fluig.sdk.api.task.TaskTransferVO} tasksTransfer
* @returns {String}
*/
"transferTasks": function(tasksTransfer) {},
/**
* Return users pendent to approve a document
* @memberOf fluigAPI
* @param {int} documentId
@ -23558,7 +23932,19 @@ com.fluig.sdk.filter.FilterResultVO.prototype = {
* @memberOf fluigAPI
* @param filterOrder
*/
"setFilterOrder": function(filterOrder) {}
"setFilterOrder": function(filterOrder) {},
/**
*
* @memberOf fluigAPI
* @returns {int}
*/
"getPermission": function() {},
/**
*
* @memberOf fluigAPI
* @param {int} permission
*/
"setPermission": function(permission) {}
};
FilterResultVO.prototype = {
/**
@ -23679,7 +24065,19 @@ FilterResultVO.prototype = {
* @memberOf fluigAPI
* @param filterOrder
*/
"setFilterOrder": function(filterOrder) {}
"setFilterOrder": function(filterOrder) {},
/**
*
* @memberOf fluigAPI
* @returns {int}
*/
"getPermission": function() {},
/**
*
* @memberOf fluigAPI
* @param {int} permission
*/
"setPermission": function(permission) {}
};
com.fluig.sdk.filter.FilterVO.prototype = {
/**
@ -23995,7 +24393,43 @@ com.fluig.sdk.filter.FilterGroupResultVO.prototype = {
* @memberOf fluigAPI
* @param {String} roleDescription
*/
"setRoleDescription": function(roleDescription) {}
"setRoleDescription": function(roleDescription) {},
/**
*
* @memberOf fluigAPI
* @returns {long}
*/
"getGroupParticipantsCount": function() {},
/**
*
* @memberOf fluigAPI
* @param {long} groupParticipantsCount
*/
"setGroupParticipantsCount": function(groupParticipantsCount) {},
/**
*
* @memberOf fluigAPI
* @returns {String}
*/
"getUserEmail": function() {},
/**
*
* @memberOf fluigAPI
* @param {String} userEmail
*/
"setUserEmail": function(userEmail) {},
/**
*
* @memberOf fluigAPI
* @returns {int}
*/
"getPermission": function() {},
/**
*
* @memberOf fluigAPI
* @param {int} permission
*/
"setPermission": function(permission) {}
};
FilterGroupResultVO.prototype = {
/**
@ -24141,7 +24575,43 @@ FilterGroupResultVO.prototype = {
* @memberOf fluigAPI
* @param {String} roleDescription
*/
"setRoleDescription": function(roleDescription) {}
"setRoleDescription": function(roleDescription) {},
/**
*
* @memberOf fluigAPI
* @returns {long}
*/
"getGroupParticipantsCount": function() {},
/**
*
* @memberOf fluigAPI
* @param {long} groupParticipantsCount
*/
"setGroupParticipantsCount": function(groupParticipantsCount) {},
/**
*
* @memberOf fluigAPI
* @returns {String}
*/
"getUserEmail": function() {},
/**
*
* @memberOf fluigAPI
* @param {String} userEmail
*/
"setUserEmail": function(userEmail) {},
/**
*
* @memberOf fluigAPI
* @returns {int}
*/
"getPermission": function() {},
/**
*
* @memberOf fluigAPI
* @param {int} permission
*/
"setPermission": function(permission) {}
};
com.fluig.sdk.filter.FilterGroupVO.prototype = {
/**
@ -24191,7 +24661,19 @@ com.fluig.sdk.filter.FilterGroupVO.prototype = {
* @memberOf fluigAPI
* @param {List} rolesCode
*/
"setRolesCode": function(rolesCode) {}
"setRolesCode": function(rolesCode) {},
/**
*
* @memberOf fluigAPI
* @returns {Map&lt;String,&gt;}
*/
"getEntityPermissions": function() {},
/**
*
* @memberOf fluigAPI
* @param {Map} entityPermissions
*/
"setEntityPermissions": function(entityPermissions) {}
};
FilterGroupVO.prototype = {
/**
@ -24241,7 +24723,47 @@ FilterGroupVO.prototype = {
* @memberOf fluigAPI
* @param {List} rolesCode
*/
"setRolesCode": function(rolesCode) {}
"setRolesCode": function(rolesCode) {},
/**
*
* @memberOf fluigAPI
* @returns {Map&lt;String,&gt;}
*/
"getEntityPermissions": function() {},
/**
*
* @memberOf fluigAPI
* @param {Map} entityPermissions
*/
"setEntityPermissions": function(entityPermissions) {}
};
com.fluig.sdk.filter.FilterUpdateNameVO.prototype = {
/**
*
* @memberOf fluigAPI
* @returns {String}
*/
"getName": function() {},
/**
*
* @memberOf fluigAPI
* @param {String} name
*/
"setName": function(name) {}
};
FilterUpdateNameVO.prototype = {
/**
*
* @memberOf fluigAPI
* @returns {String}
*/
"getName": function() {},
/**
*
* @memberOf fluigAPI
* @param {String} name
*/
"setName": function(name) {}
};
com.fluig.sdk.service.FilterAPIService.prototype = {
/**
@ -24252,9 +24774,10 @@ com.fluig.sdk.service.FilterAPIService.prototype = {
* @param {String} pattern
* @param {int} limit
* @param {int} offset
* @param {String} orderBy
* @returns {List&lt;com.fluig.sdk.filter.FilterResultVO&gt;}
*/
"getProcessFilters": function(onlyMyFilters, findPublicFilters, pattern, limit, offset) {},
"getProcessFilters": function(onlyMyFilters, findPublicFilters, pattern, limit, offset, orderBy) {},
/**
*
* @memberOf fluigAPI
@ -24314,7 +24837,15 @@ com.fluig.sdk.service.FilterAPIService.prototype = {
* @param {long} applicationInstanceId
* @param {Map} filtersSequence
*/
"updateFilterSequence": function(applicationInstanceId, filtersSequence) {}
"updateFilterSequence": function(applicationInstanceId, filtersSequence) {},
/**
*
* @memberOf fluigAPI
* @param {long} filterId
* @param {com.fluig.sdk.filter.FilterUpdateNameVO} filterUpdateNameVO
* @returns {com.fluig.sdk.filter.FilterResultVO}
*/
"updateFilterName": function(filterId, filterUpdateNameVO) {}
};
FilterAPIService.prototype = {
/**
@ -24325,9 +24856,10 @@ FilterAPIService.prototype = {
* @param {String} pattern
* @param {int} limit
* @param {int} offset
* @param {String} orderBy
* @returns {List&lt;com.fluig.sdk.filter.FilterResultVO&gt;}
*/
"getProcessFilters": function(onlyMyFilters, findPublicFilters, pattern, limit, offset) {},
"getProcessFilters": function(onlyMyFilters, findPublicFilters, pattern, limit, offset, orderBy) {},
/**
*
* @memberOf fluigAPI
@ -24387,7 +24919,15 @@ FilterAPIService.prototype = {
* @param {long} applicationInstanceId
* @param {Map} filtersSequence
*/
"updateFilterSequence": function(applicationInstanceId, filtersSequence) {}
"updateFilterSequence": function(applicationInstanceId, filtersSequence) {},
/**
*
* @memberOf fluigAPI
* @param {long} filterId
* @param {com.fluig.sdk.filter.FilterUpdateNameVO} filterUpdateNameVO
* @returns {com.fluig.sdk.filter.FilterResultVO}
*/
"updateFilterName": function(filterId, filterUpdateNameVO) {}
};
com.fluig.sdk.api.workflow.CardIndexAPIVO.prototype = {
/**
@ -25467,7 +26007,19 @@ com.fluig.sdk.api.cardindex.CardFieldVO.prototype = {
* @memberOf fluigAPI
* @param {String} value
*/
"setValue": function(value) {}
"setValue": function(value) {},
/**
*
* @memberOf fluigAPI
* @returns {String}
*/
"getTableId": function() {},
/**
*
* @memberOf fluigAPI
* @param {String} tableId
*/
"setTableId": function(tableId) {}
};
CardFieldVO.prototype = {
/**
@ -25493,7 +26045,19 @@ CardFieldVO.prototype = {
* @memberOf fluigAPI
* @param {String} value
*/
"setValue": function(value) {}
"setValue": function(value) {},
/**
*
* @memberOf fluigAPI
* @returns {String}
*/
"getTableId": function() {},
/**
*
* @memberOf fluigAPI
* @param {String} tableId
*/
"setTableId": function(tableId) {}
};
com.fluig.sdk.api.cardindex.CardChildrenVO.prototype = {
/**

View File

@ -1,3 +1,3 @@
#
#Tue Nov 04 13:44:50 BRT 2025
task-tag-projects-already-scanned=Desligamento,compras_digital,Ginseng_chamados,Transfer\u00EAncia Ginseng,Recrutamento e Sele\u00E7\u00E3o
#Wed Apr 15 13:27:51 BRT 2026
task-tag-projects-already-scanned=Desligamento,Auditoria_checklist,lan\u00E7amentos,compras_digital,Ginseng_chamados,Auditoria,diagrams,Recrutamento e Sele\u00E7\u00E3o,datasets,forms,Lan\u00E7amento de documentos

View File

@ -202,5 +202,5 @@
<system systemId="http://www.w3.org/2001/xml.xsd" uri="jar:file:/C:/Users/andrey.cunha/Downloads/eclipse-jee-2019-09-R-win32-x86_64/eclipse/plugins/org.eclipse.xsd_2.16.0.v20190625-1130.jar!/cache/www.w3.org/2001/xml.xsd"/>
<uri name="http://www.w3.org/2001/XMLSchema" uri="jar:file:/C:/Users/andrey.cunha/Downloads/eclipse-jee-2019-09-R-win32-x86_64/eclipse/plugins/org.eclipse.xsd_2.16.0.v20190625-1130.jar!/cache/www.w3.org/2001/XMLSchema.xsd"/>
<uri id="org.w3c.xinclude" name="http://www.w3.org/2001/XInclude" uri="jar:file:/C:/Users/andrey.cunha/Downloads/eclipse-jee-2019-09-R-win32-x86_64/eclipse/plugins/org.eclipse.wst.xsl.core_1.2.100.v201907231732.jar!/xslt-schemas/xinclude.xsd"/>
<uri name="http://www.omg.org/spec/BPMN/20100524/MODEL" uri="jar:file:/C:/Users/andrey.cunha/Downloads/eclipse-jee-2019-09-R-win32-x86_64/eclipse/plugins/com.totvs.tds.ecm.designer.eclipse_1.8.2.4.jar!/xsd/BPMN20.xsd"/>
<uri name="http://www.omg.org/spec/BPMN/20100524/MODEL" uri="jar:file:/C:/Users/andrey.cunha/Downloads/eclipse-jee-2019-09-R-win32-x86_64/eclipse/plugins/com.totvs.tds.ecm.designer.eclipse_2.0.0.6.jar!/xsd/BPMN20.xsd"/>
</catalog>

View File

@ -1,3 +1,3 @@
#Fri Feb 27 16:07:04 BRT 2026
#Wed Apr 15 13:16:19 BRT 2026
org.eclipse.core.runtime=2
org.eclipse.platform=4.13.0.v20190916-1045

18
Auditoria/.project Normal file
View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Auditoria</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
<nature>com.totvs.tds.ecm.designer.nature</nature>
</natures>
</projectDescription>

View File

@ -0,0 +1,118 @@
function createDataset(fields, constraints, sortFields) {
var dataset = DatasetBuilder.newDataset();
dataset.addColumn("PDV");
dataset.addColumn("LOJA");
dataset.addColumn("RESPONSAVEL_LOJA");
dataset.addColumn("REGIONAL");
dataset.addColumn("UF");
dataset.addColumn("CIDADE");
dataset.addColumn("STATUS");
dataset.addColumn("CANAL");
dataset.addColumn("ID");
dataset.addColumn("LOGIN_LOJA");
dataset.addColumn("COLLEAGUE_ID");
try {
var clientService = fluigAPI.getAuthorizeClientService();
var data = {
companyId: String(getValue("WKCompany") || "1"),
serviceCode: "GINSENG API",
endpoint: "/base_pdvs",
method: "get",
timeoutService: "60000",
params: {}
};
var vo = clientService.invoke(JSON.stringify(data));
var response = String(vo.getResult() || "");
var obj = JSON.parse(response);
var list = (obj && obj.data && obj.data.length) ? obj.data : [];
if (!list.length) {
dataset.addRow(["", "Sem lojas retornadas", "", "", "", "", "", "", "", "", ""]);
return dataset;
}
var filter = getSearchFilter(constraints);
for (var i = 0; i < list.length; i++) {
var item = list[i] || {};
var pdv = clean(item.PDV);
var loja = clean(item["PDV DESC"] || item.DESCRICAO);
var responsavel = clean(item.GESTAO);
var regional = clean(item.SUPERVISOR || item["REGIAO 2"] || item.REGIAO);
var uf = clean(item.UF || item["UF 2"]);
var cidade = clean(item.CIDADE);
var status = clean(item.STATUS);
var canal = clean(item.CANAL);
var id = clean(item.id);
var loginLoja = pdv ? (pdv + ".ginseng") : "";
var colleagueId = resolveColleagueId(loginLoja);
if (!matchesFilter(filter, [pdv, loja, responsavel, regional, uf, cidade, status, canal, loginLoja, colleagueId])) {
continue;
}
dataset.addRow([
pdv,
loja,
responsavel,
regional,
uf,
cidade,
status,
canal,
id,
loginLoja,
colleagueId
]);
}
} catch (e) {
dataset = DatasetBuilder.newDataset();
dataset.addColumn("ERRO");
dataset.addRow([String(e)]);
}
return dataset;
}
function resolveColleagueId(login) {
try {
var c1 = DatasetFactory.createConstraint("login", login, login, ConstraintType.MUST);
var c2 = DatasetFactory.createConstraint("active", "true", "true", ConstraintType.MUST);
var ds = DatasetFactory.getDataset("colleague", null, [c1, c2], null);
if (ds && ds.rowsCount > 0) {
return clean(ds.getValue(0, "colleaguePK.colleagueId"));
}
} catch (e) {}
return "";
}
function getSearchFilter(constraints) {
if (!constraints || !constraints.length) return "";
for (var i = 0; i < constraints.length; i++) {
var c = constraints[i];
var field = String(c.fieldName || "").toUpperCase();
if (field === "SEARCH" || field === "LOJA" || field === "PDV") {
return normalizeSearch(c.initialValue);
}
}
return "";
}
function matchesFilter(filter, values) {
if (!filter) return true;
for (var i = 0; i < values.length; i++) {
if (normalizeSearch(values[i]).indexOf(filter) > -1) return true;
}
return false;
}
function normalizeSearch(text) {
var t = clean(text).toUpperCase();
t = t.replace(/[%*_]/g, "");
return t;
}
function clean(value) {
return String(value || "").trim();
}

Binary file not shown.

View File

@ -0,0 +1,585 @@
body { background: #ffffff; }
.audit-shell {
background: #f4f8fd;
border: 1px solid #dbe4ee;
border-radius: 14px;
box-shadow: 0 4px 14px rgba(15, 23, 42, 0.06);
padding: 10px 10px 14px 10px;
margin: 14px auto 0 auto;
max-width: 1140px;
}
.audit-section {
border: 1px solid #e2e8f0;
border-radius: 14px;
background: #ffffff;
padding: 12px;
margin-bottom: 10px;
box-shadow: 0 2px 6px rgba(15, 23, 42, 0.05);
}
h1.audit-main-title {
margin: 2px 0 10px 0;
font-size: 18px !important;
line-height: 1.2;
font-weight: 700 !important;
color: #ffffff !important;
background: #0b556b;
border-radius: 10px;
padding: 8px 12px;
}
.section-title {
margin: 0 0 10px 0;
font-size: 20px;
font-weight: 700;
color: #1e293b;
}
.audit-status {
display: none;
}
.progress-section {
padding: 5px 10px 5px 10px;
margin-top: 2px;
}
.progress-section .section-title {
font-size: 16px;
margin-bottom: 6px;
}
.audit-context-card .section-title {
font-size: 17px;
}
.progress-inline {
display: grid;
grid-template-columns: 1fr auto;
gap: 16px;
align-items: center;
}
.progress-track {
width: 100%;
height: 5px;
border-radius: 999px;
background: #e6ebf2;
overflow: hidden;
}
.progress-fill {
width: 0%;
height: 100%;
background: linear-gradient(90deg, #3ea9c8 0%, #3ea9c8 100%);
transition: width .18s ease-in-out;
}
.progress-percent {
font-size: 14px;
line-height: 1;
color: #0f172a;
font-weight: 700;
min-width: 42px;
text-align: right;
}
.progress-meta {
margin-top: 3px;
font-size: 9px;
color: #52637b;
font-weight: 600;
}
.instruction-section {
display: block;
background: #ffffff;
}
.intro-data-section {
padding: 0;
overflow: hidden;
background: linear-gradient(90deg, #f4f8fd 0%, #edf3fa 100%);
}
.intro-data-section .instruction-section {
padding: 12px;
border-radius: 14px 14px 0 0;
background: #ffffff;
}
.intro-divider {
height: 1px;
background: #dfe7f0;
}
.instruction-head {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 6px;
}
.instruction-icon {
width: 34px;
height: 34px;
border-radius: 999px;
background: #3ea9c8;
color: #fff;
font-size: 22px;
font-weight: 700;
line-height: 34px;
text-align: center;
}
.instruction-title {
font-size: 16px;
color: #1f2f46;
font-weight: 700;
margin-bottom: 0;
}
.instruction-steps {
display: grid;
grid-template-columns: repeat(3, minmax(160px, 1fr));
gap: 6px 16px;
font-size: 10px;
color: #334155;
line-height: 1.3;
}
.instruction-steps span {
display: inline-block;
border: 1px solid #b9d4ea;
background: #f4f9ff;
color: #0f3f66;
border-radius: 999px;
padding: 4px 9px;
width: fit-content;
}
.status-pill {
background: #eef5fb;
border: 1px solid #d9e8f6;
color: #0b556b;
border-radius: 999px;
padding: 6px 10px;
font-size: 12px;
font-weight: 600;
}
.audit-context-card {
background: #ffffff;
padding: 12px;
border-radius: 0 0 14px 14px;
}
.audit-context-row > div {
margin-bottom: 8px;
}
.audit-label {
font-size: 12px;
letter-spacing: 0.3px;
color: #16486a;
margin-bottom: 4px;
font-weight: 700;
}
.label-icon { opacity: 0.8; margin-right: 4px; }
.audit-input {
height: 32px;
font-size: 12px;
border-color: #c9d7e7;
border-radius: 7px;
padding: 5px 9px;
}
.audit-input:focus {
border-color: #74a5d3;
box-shadow: 0 0 0 2px rgba(34, 93, 143, 0.12);
}
.audit-card { margin-top: 12px; }
.audit-score { font-size: 22px; font-weight: 700; }
.audit-score small { font-size: 12px; font-weight: 400; color: #7f8c8d; display: block; }
#pilaresContainer {
display: grid;
grid-template-columns: repeat(4, minmax(220px, 1fr));
gap: 14px;
background: #f4f8fd;
border: 0;
border-radius: 10px;
padding: 8px 12px 10px 12px;
}
h2.section-title.pilares-title {
margin-top: 4px;
margin-bottom: 10px;
font-size: 17px !important;
}
.audit-send-wrap {
margin-top: 10px;
text-align: right;
padding: 10px 12px 2px 12px;
border-top: 1px solid #dbe5f0;
}
.audit-send-btn {
min-width: 120px;
height: 38px;
border-radius: 8px;
font-size: 14px;
font-weight: 700;
background: #0b556b;
border-color: #0b556b;
}
.audit-send-btn:hover,
.audit-send-btn:focus {
background: #0a4b5f;
border-color: #0a4b5f;
}
.pilar-panel {
border: 1px solid #d6e1ee;
border-radius: 12px;
background: #ffffff;
padding: 8px;
min-height: 108px;
box-shadow: 0 6px 14px rgba(15, 23, 42, 0.08);
transition: box-shadow .18s ease, transform .18s ease;
}
.pilar-panel:hover {
box-shadow: 0 10px 20px rgba(15, 23, 42, 0.12);
transform: translateY(-1px);
}
.pilar-panel.is-open {
grid-column: 1 / -1;
box-shadow: 0 12px 24px rgba(15, 23, 42, 0.14);
}
.pilar-summary-card {
grid-column: span 3;
border: 1px solid #d6e1ee;
border-radius: 12px;
background: #ffffff;
padding: 10px 12px;
box-shadow: 0 6px 14px rgba(15, 23, 42, 0.08);
}
.summary-title {
font-size: 13px;
font-weight: 700;
color: #000000;
margin-bottom: 8px;
}
.summary-item {
font-size: 12px;
line-height: 1.45;
color: #000000;
margin-bottom: 6px;
}
.summary-item:last-child {
margin-bottom: 0;
}
.summary-name {
color: #000000;
font-weight: 700;
}
.pilar-head {
background: #ffffff;
border: 0;
padding: 6px;
display: grid;
gap: 6px;
cursor: pointer;
border-radius: 10px;
transition: background .15s ease, border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.pilar-head:hover {
background: #f8fbff;
box-shadow: none;
transform: none;
}
.pilar-head.is-open {
background: #f4f8fd;
box-shadow: none;
}
.pilar-title-row {
display: flex;
align-items: center;
gap: 10px;
}
.pilar-state-dot {
width: 18px;
height: 18px;
border-radius: 999px;
background: #94a3b8;
border: 1px solid rgba(148, 163, 184, 0.25);
display: inline-flex;
align-items: center;
justify-content: center;
color: #ffffff;
font-size: 11px;
font-weight: 700;
line-height: 1;
}
.pilar-state-dot.state-pending { background: #dc2626; border-color: rgba(220, 38, 38, 0.4); }
.pilar-state-dot.state-progress { background: #d18a2f; border-color: rgba(209, 138, 47, 0.35); }
.pilar-state-dot.state-done { background: #2f9d78; border-color: rgba(47, 157, 120, 0.35); }
.pilar-title {
font-size: 13px;
font-weight: 700;
color: #000000;
letter-spacing: 0.2px;
}
.pilar-photo-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
color: #243549;
}
.pilar-photo-count {
font-size: 10px;
font-weight: 700;
color: #000000;
}
.pilar-missing {
font-size: 10px;
color: #000000;
font-weight: 600;
}
.pilar-mini-track {
height: 5px;
border-radius: 999px;
background: #e4eaf1;
overflow: hidden;
}
.pilar-mini-fill {
display: block;
width: 0%;
height: 100%;
border-radius: inherit;
background: #5d8fbe;
transition: width .18s ease;
}
.pilar-foot {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
}
.pilar-count {
font-size: 10px;
color: #000000;
font-weight: 600;
}
.pilar-open-cta {
font-size: 10px;
color: #000000;
font-weight: 700;
}
.pilar-body { padding: 8px 0 0 0; }
.audit-row {
border: 1px solid #d4e0ee;
border-radius: 12px;
padding: 10px;
margin-bottom: 8px;
background: #f9fcff;
}
.audit-row-main {
display: flex;
flex-direction: column;
gap: 8px;
}
.audit-row-top {
display: grid;
grid-template-columns: 1fr 1.3fr;
gap: 10px;
align-items: start;
}
.audit-row[data-max-fotos="1"] .audit-row-top,
.audit-row[data-max-fotos="2"] .audit-row-top {
grid-template-columns: 1fr;
}
.audit-info {
min-width: 0;
}
.indicador-cell { font-weight: 700; color: #143653; font-size: 15px; line-height: 1.25; }
.indicador-help {
margin-top: 5px;
font-size: 12px;
color: #5c6f82;
line-height: 1.35;
background: #f7fbff;
border: 1px solid #dce8f5;
border-radius: 8px;
padding: 7px 9px;
}
.indicador-help ul {
margin: 0;
padding-left: 18px;
}
.indicador-help li {
margin: 2px 0;
}
.indicador-help .indicador-group {
list-style: none;
margin-top: 6px;
margin-left: -18px;
font-weight: 700;
color: #36597b;
}
.meta-grid {
display: grid;
grid-template-columns: repeat(5, minmax(100px, 1fr));
gap: 10px;
}
.meta-box {
border: 1px solid #d7e2ef;
border-radius: 10px;
background: #fff;
padding: 8px 10px;
min-height: 62px;
}
.meta-label { font-size: 11px; color: #64748b; text-transform: uppercase; }
.meta-value { font-size: 20px; color: #1f2937; margin-top: 4px; font-weight: 600; }
.meta-value .form-control {
font-size: 14px;
height: 34px;
padding: 4px 10px;
}
.anexo-wrap, .resultado-wrap, .just-wrap { margin-top: 0; }
.penalidade-badge {
font-size: 10px !important;
font-weight: 700;
padding: 2px 8px !important;
border-radius: 999px;
letter-spacing: 0.2px;
text-transform: uppercase;
}
.penalidade-badge.label-danger { background: #f7dada; color: #9f2d2d; }
.penalidade-badge.label-warning { background: #fff0c7; color: #8a5a00; }
.penalidade-badge.label-info { background: #dceefe; color: #1f5f9b; }
.penalidade-badge.label-success { background: #dff5e4; color: #1f7a3d; }
.penalidade-badge.label-default { background: #eceff3; color: #5f6b7a; }
.anexos-cell {
background: #edf4fb;
border: 1px solid #cfe0f3;
border-radius: 10px;
padding: 8px;
}
.anexo-auto-hint { font-size: 11px; color: #5f7d9a; margin-top: 5px; }
.anexo-progress {
margin-top: 7px;
font-size: 12px;
color: #2d4f70;
font-weight: 600;
}
.anexo-progress-count {
display: inline-block;
min-width: 40px;
text-align: center;
border-radius: 999px;
background: #d9e9fa;
color: #1d4f7c;
padding: 1px 8px;
margin-right: 4px;
}
.anexo-multi-list {
display: grid;
grid-template-columns: repeat(2, minmax(220px, 1fr));
gap: 7px;
}
.audit-row[data-max-fotos="1"] .anexo-multi-list,
.audit-row[data-max-fotos="2"] .anexo-multi-list {
grid-template-columns: 1fr;
}
.anexo-slot {
background: #ffffff;
border: 1px solid #c9dbef;
border-radius: 8px;
padding: 5px;
}
.audit-row[data-max-fotos="1"] .anexo-slot,
.audit-row[data-max-fotos="2"] .anexo-slot {
max-width: 100%;
}
.anexo-slot.slot-filled {
border-color: #8fc1a3;
box-shadow: inset 0 0 0 1px rgba(79, 161, 109, 0.2);
}
.anexo-slot.extra-slot { display: none; }
.anexo-multi-list.expanded .anexo-slot.extra-slot { display: block; }
.anexo-slot-label {
font-size: 11px;
color: #4b5f74;
margin-bottom: 3px;
font-weight: 600;
text-transform: uppercase;
}
.anexo-toggle-wrap {
margin-top: 8px;
text-align: right;
}
.anexo-toggle {
font-size: 12px;
font-weight: 600;
color: #24557d !important;
border-color: #b5cbe3;
background: #f4f8fd;
padding: 3px 10px;
}
.anexos-cell .fluigFormAttachmentComponent {
width: 100%;
}
.anexos-cell .fluigFormAttachmentComponent input {
height: 34px;
border-color: #c7d8ec;
background: #fff;
}
.anexos-cell .fluigFormAttachmentComponent .btn {
height: 34px !important;
min-width: 40px;
}
.just-wrap input {
border-radius: 10px;
}
.audit-row-target { background: #fff8e6 !important; }
.nc-box {
border: 1px solid #f5d0d0;
background: #fff6f6;
border-radius: 10px;
padding: 10px 12px;
margin-top: 10px;
}
.nc-title {
font-weight: 700;
color: #9f2d2d;
margin-bottom: 6px;
}
.nc-list {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.nc-item {
background: #fff;
border: 1px solid #f1b7b7;
color: #7f1d1d;
border-radius: 999px;
padding: 4px 10px;
font-size: 12px;
cursor: pointer;
}
.anexo-view { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.anexo-thumb-inline {
width: 34px;
height: 34px;
object-fit: cover;
border: 1px solid #ddd;
border-radius: 4px;
background: #fff;
}
.anexo-file {
font-size: 11px;
max-width: 170px;
display: inline-block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
border: 1px solid #e0e0e0;
border-radius: 4px;
padding: 4px 6px;
background: #fafafa;
}
.anexo-text {
background: #fff;
font-size: 12px;
}
@media (max-width: 900px) {
.section-title { font-size: 22px; }
.progress-percent { font-size: 14px; min-width: 38px; }
.progress-meta { font-size: 14px; }
.instruction-title { font-size: 16px; }
.instruction-steps { grid-template-columns: 1fr; font-size: 14px; }
.audit-label { font-size: 13px; }
.audit-input { height: 40px; font-size: 15px; }
.audit-row-top { grid-template-columns: 1fr; }
.meta-grid { grid-template-columns: repeat(2, minmax(100px, 1fr)); }
.anexo-multi-list { grid-template-columns: 1fr; }
#pilaresContainer { grid-template-columns: repeat(2, minmax(180px, 1fr)); }
.pilar-panel.is-open { grid-column: auto; }
.pilar-summary-card { grid-column: span 2; }
.audit-send-wrap { padding: 8px 0 0 0; border-top: 0; }
.audit-send-btn { width: 100%; }
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,423 @@
/**
* Plugin JQuery para trabalhar com anexos nos formulários dentro do processo
*
* @author Bruno Gasparetto
* @see https://github.com/brunogasparetto/fluig-form-attachment
*/
/**
* Configurações
*
* @typedef AttachmentSettings
* @property {boolean} showActionButton Exibe o botão de upload/delete. True por padrão.
* @property {boolean} filename Nome que será salvo como descrição do Anexo.
* @property {boolean|string} prefixName Adiciona prefixo ao anexo. False por padrão, True para prefixo aleatório, String para prefixo fixo.
* @property {string} accept Tipos de arquivos aceitos. Segue a regra do accept do input tipo file.
*/
;(function ($) {
"use strict";
const pluginName = "fluigFormAttachment";
const deleteFileClassName = "BtnDeleteFile";
const uploadFileClassname = "BtnUploadFile";
const viewerFileClassname = "BtnViewerFile";
const compressedExtensions = [
'.7z', '.zip', '.rar', '.gz', '.tar', '.tbz2', '.tgz', '.bz2', '.lz', '.lz4','.txz',
'.xz', '.z', '.zst', '.zstd', '.war', '.ear', '.jar','.apk', '.arj', '.ace', '.cab',
];
const isString = item => typeof item === "string";
/**
* Procura o índice do anexo de acordo com sua descrição
*
* @param {string} filename
* @returns {number} -1 se não encontrar
*/
const attachmentFindIndex = (filename) => parent.ECM.attachmentTable.getData().findIndex(attachment => attachment.description === filename);
/**
* Configuração padrão
*
* @type {AttachmentSettings}
*/
const defaults = {
showActionButton: true,
filename: "Anexo",
prefixName: false,
accept: "*",
};
class Plugin {
/**
* @type {AttachmentSettings}
*/
#settings;
/**
* Elemento do arquivo. Pode ser um input ou span (no modo leitura).
*
* @type {JQuery<HTMLElement>}
*/
#input;
/**
* @type {JQuery<HTMLElement>}
*/
#container;
/**
* @type {string}
*/
#attachmentFilename;
/**
* @param {HTMLElement} element
* @param {AttachmentSettings} options
*/
constructor(element, options) {
// Garantir um ID para o Input
if (!element.id && element.nodeName.toLowerCase() === "input") {
element.id = FLUIGC.utilities.randomUUID();
}
this.#settings = $.extend({}, defaults, options);
this.#input = $(element);
this.#attachmentFilename = this.#input.val() || this.#input.text().trim();
this.#input
.prop("readonly", true)
.on("change", () => {
this.#attachmentFilename = this.#input.val();
this.#changeButtonsState();
})
.wrap(`<div class="${pluginName}Component"></div>`)
.after(`<div class="${pluginName}Component_buttons">${this.#getButtonsTemplate()}</div>`);
this.#container = this.#input.closest(`.${pluginName}Component`);
this.#container
.on("click", `.${pluginName}${deleteFileClassName}`, () => this.#confirmDeleteAttachment())
.on("click", `.${pluginName}${uploadFileClassname}`, () => this.#uploadAttachment())
.on("click", `.${pluginName}${viewerFileClassname}`, () => this.#viewAttachment())
;
}
/**
* Indica que o campo está válido
*
* Caso o campo possua algum valor é obrigatório que o anexo
* esteja na tabela de anexos.
*
* @returns {boolean}
*/
isValid() {
return this.#attachmentFilename.length
? this.hasAttachment()
: true
;
}
/**
* Indica se o anexo está na tabela de anexos
*
* @returns {boolean}
*/
hasAttachment() {
const filename = this.#attachmentFilename || this.#input.val() || this.#input.text().trim();
return filename.length > 0 && attachmentFindIndex(filename) !== -1;
}
/**
* Remove o anexo
*
* Método útil para excluir anexos em tabela Pai x Filho.
*/
deleteAttachment() {
const attachmentIndex = parent.ECM.attachmentTable.getData().findIndex(
attachment => attachment.description === this.#attachmentFilename
);
setTimeout(() => this.#input.val("").trigger("change"), 500);
if (attachmentIndex === -1) {
return;
}
parent.WKFViewAttachment.removeAttach([attachmentIndex]);
}
showActionButton() {
this.#settings.showActionButton = true;
this.#input.trigger("change");
}
hideActionButton() {
this.#settings.showActionButton = false;
this.#input.trigger("change");
}
filename(fileName, prefixName) {
if (fileName === undefined) {
return this.#input.data("filename") || this.#settings.filename;
}
this.#settings.filename = fileName;
this.#input.data("filename", fileName);
if (prefixName !== undefined) {
this.prefixName(prefixName);
}
}
prefixName(prefixName) {
if (prefixName === undefined) {
return this.#settings.prefixName;
}
this.#settings.prefixName = prefixName;
}
#getButtonsTemplate() {
const hasFileSelected = this.#attachmentFilename.length !== 0;
const canShowActionButton = this.#canDisplayActionButton();
return `<button type="button" class="${pluginName}BtnAction ${pluginName}${deleteFileClassName} btn btn-danger btn-sm ${(canShowActionButton && hasFileSelected) ? '' : 'hide'}" title="Remover Anexo"><i class="flaticon flaticon-trash icon-sm"></i></button>`
+ `<button type="button" class="${pluginName}BtnAction ${pluginName}${uploadFileClassname} btn btn-success btn-sm ${(canShowActionButton && !hasFileSelected) ? '' : 'hide'}" title="Enviar Anexo"><i class="flaticon flaticon-upload icon-sm"></i></button>`
+ `<button type="button" class="${pluginName}${viewerFileClassname} btn btn-info btn-sm ${hasFileSelected ? '' : 'hide'}" title="Visualizar Anexo"><i class="flaticon flaticon-view icon-sm"></i></button>`
;
}
#canDisplayActionButton() {
const element = this.#input.get(0);
return this.#settings.showActionButton
&& parent.ECM.workflowView.userPermissions.indexOf("P") >= 0
&& location.href.includes('ManagerMode')
&& !location.href.includes('token')
&& element.nodeName.toLowerCase() === "input"
&& !element.disabled
;
}
#changeButtonsState() {
const hasFileSelected = this.#attachmentFilename.length !== 0;
if (this.#canDisplayActionButton()) {
if (hasFileSelected) {
this.#container.find(`.${pluginName}${uploadFileClassname}`).addClass("hide");
this.#container.find(`.${pluginName}${deleteFileClassName}`).removeClass("hide");
} else {
this.#container.find(`.${pluginName}${deleteFileClassName}`).addClass("hide");
this.#container.find(`.${pluginName}${uploadFileClassname}`).removeClass("hide");
}
} else {
this.#container.find(`.${pluginName}BtnAction`).addClass("hide");
}
if (hasFileSelected) {
this.#container.find(`.${pluginName}${viewerFileClassname}`).removeClass("hide");
} else {
this.#container.find(`.${pluginName}${viewerFileClassname}`).addClass("hide");
}
}
#confirmDeleteAttachment() {
if (!this.#canDisplayActionButton()) {
return;
}
FLUIGC.message.confirm({
message: `Deseja remover o anexo <b>${this.#attachmentFilename}</b>?`,
title: 'Confirmação',
labelYes: 'Sim, quero remover',
labelNo: 'Não, quero cancelar',
}, result => {
if (!result) {
return;
}
this.deleteAttachment();
});
}
#uploadAttachment() {
if (!this.#canDisplayActionButton()) {
return;
}
let filename = this.#input.data("filename") || this.#settings.filename;
if (this.#settings.prefixName === true) {
filename = FLUIGC.utilities.randomUUID().substring(0, 9) + filename;
} else if (this.#settings.prefixName !== false && isString(this.#settings.prefixName)) {
filename = `${this.#settings.prefixName}-${filename}`;
}
// Evitar conflito de descrição do anexo
if (attachmentFindIndex(filename) !== -1) {
FLUIGC.toast({
title: "Atenção",
message: "Já existe um anexo com essa descrição",
type: "warning",
})
return;
}
parent.$("#ecm-navigation-inputFile-clone")
.attr({
"data-on-camera": "true",
"data-file-name-camera": filename,
"data-inputid": this.#input.attr("id"),
"data-filename": filename,
"multiple": false,
"accept": this.#input.data("accept") || this.#settings.accept,
})
.trigger("click")
;
}
#viewAttachment() {
const attachmentIndex = parent.ECM.attachmentTable.getData().findIndex(
attachment => attachment.description === this.#attachmentFilename
);
if (attachmentIndex === -1) {
FLUIGC.toast({
title: "Atenção",
message: "Anexo não encontrado",
type: "warning"
});
return;
}
const attachment = parent.ECM.attachmentTable.getRow(attachmentIndex);
const physicalFileName = String(
attachment.physicalFileName || attachment.fileName || attachment.name || ""
).toLowerCase();
const isCompressedFile = compressedExtensions.some(extension => physicalFileName.endsWith(extension));
if (attachment.documentId && !isCompressedFile) {
parent.WKFViewAttachment.openAttachmentView(parent.WCMAPI.userCode, attachment.documentId, attachment.version);
} else {
parent.WKFViewAttachment.downloadAttach([attachmentIndex]);
}
}
}
/**
* Instancia o Plugin ou executa algum método do plugin
*
* @param {AttachmentSettings|string} options
* @returns {undefined|boolean|void}
*/
$.fn[pluginName] = function (options) {
if (!parent.WKFViewAttachment || !parent.ECM || !parent.ECM.attachmentTable) {
console.error(`Plugin ${pluginName} executado fora de um processo.`)
return this;
}
// Executa o Método
if (isString(options)) {
const methodName = options;
const methodArgs = Array.prototype.slice.call(arguments, 1);
let returnedValue = undefined;
this.each(function () {
let pluginData = $.data(this, pluginName);
if (!pluginData) {
pluginData = new Plugin(this, {});
$.data(this, pluginName, pluginData);
}
if (!pluginData[methodName]) {
return;
}
returnedValue = pluginData[methodName](...methodArgs);
if (returnedValue !== undefined) {
return false;
}
});
return returnedValue !== undefined
? returnedValue
: this
;
}
return this.each(function () {
if (!$.data(this, pluginName)) {
$.data(this, pluginName, new Plugin(this, options));
}
});
};
if (!parent.WKFViewAttachment || !parent.ECM || !parent.ECM.attachmentTable) {
return;
}
const loading = FLUIGC.loading(window, {
title: "Aguarde",
textMessage: "Enviando arquivo",
})
$(() => {
// Oculta aba anexos
$("#tab-attachments", parent.document).hide();
parent.$("#ecm_navigation_fileupload")
.on(`fileuploadadd.${pluginName}`, function(e, data) {
// Impede abrir o Loading caso tenha erro no arquivo
const file = data.files[0];
if (parent.ECM.maxUploadSize > 0 && file.size >= (parent.ECM.maxUploadSize * 1024 * 1024)) {
return;
}
if (parent.ECM.newAttachmentsDocs.length
&& parent.ECM.newAttachmentsDocs.findIndex(attachment => attachment.name === file.name) !== -1
) {
return;
}
loading.show();
})
.on(`fileuploadfail.${pluginName}`, () => loading.hide())
.on(`fileuploaddone.${pluginName}`, function() {
// Atualiza o campo do arquivo caso o upload tenha ocorrido
loading.hide();
const btnUpload = parent.document.getElementById("ecm-navigation-inputFile-clone");
const filename = btnUpload.getAttribute("data-filename");
if (attachmentFindIndex(filename) === -1) {
return;
}
$(`#${btnUpload.getAttribute("data-inputid")}`).val(filename).trigger("change");
});
parent.$(document).on(`fileuploadstop.${pluginName}`, () => loading.hide());
});
$("head").append(`<style>
.${pluginName}Component { display: flex; align-items: center; flex-wrap: nowrap; }
.${pluginName}Component input { border-top-right-radius: 0 !important; border-bottom-right-radius: 0 !important; }
.${pluginName}Component_buttons { display: flex; align-items: center; justify-content: flex-end; }
.${pluginName}Component_buttons .btn { outline: none !important; outline-offset: unset !important; border-radius: 0 !important; height: 32px; }
</style>`);
}(jQuery));

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,144 @@
<html>
<head>
<link type="text/css" rel="stylesheet" href="/style-guide/css/fluig-style-guide.min.css" />
<script type="text/javascript" src="/portal/resources/js/jquery/jquery.js"></script>
<script type="text/javascript" src="/portal/resources/js/jquery/jquery-ui.min.js"></script>
<script type="text/javascript" src="/portal/resources/js/mustache/mustache-min.js"></script>
<script type="text/javascript" src="/style-guide/js/fluig-style-guide.min.js" charset="utf-8"></script>
<script type="text/javascript" src="./fluigFormAttachment.js"></script>
<link type="text/css" rel="stylesheet" href="./assets/css/checklist.css" />
</head>
<body>
<div class="fluig-style-guide">
<form name="form" role="form">
<div class="container-fluid audit-shell">
<div class="audit-status">
<span class="status-pill" id="profileBadge">Perfil: Loja</span>
<span class="status-pill" id="progressBadge">Evidências: 0/0</span>
</div>
<h1 class="audit-main-title">Checklist de Auditoria dos Pilares</h1>
<section class="audit-section intro-data-section">
<div class="instruction-section">
<div class="instruction-copy">
<div class="instruction-head">
<div class="instruction-icon">i</div>
<div class="instruction-title">Envie as fotos dos pilares</div>
</div>
<div class="instruction-steps">
<span>1. Clique em um <strong>PILAR</strong></span>
<span>3. Clique em <strong>ANEXAR</strong> para enviar a foto solicitada</span>
<span>5. Envie para concluir</span>
<span>2. Verifique as <strong>INSTRUÇÕES</strong></span>
<span>4. Confira em <strong>VISUALIZAR</strong></span>
</div>
</div>
</div>
<div class="intro-divider"></div>
<div class="audit-context-card">
<div class="section-title">Dados da Auditoria</div>
<div class="row audit-context-row">
<div class="col-md-2 col-sm-6">
<label class="audit-label" for="loja">Loja</label>
<input type="text" class="form-control audit-input" name="loja" id="loja" />
</div>
<div class="col-md-2 col-sm-6">
<label class="audit-label" for="responsavelLoja">Responsavel da Loja</label>
<input type="text" class="form-control audit-input" name="responsavelLoja" id="responsavelLoja" />
</div>
<div class="col-md-2 col-sm-6">
<label class="audit-label" for="auditor">Analista</label>
<input type="text" class="form-control audit-input" name="auditor" id="auditor" />
</div>
<div class="col-md-2 col-sm-4">
<label class="audit-label" for="dataAuditoria">Data</label>
<input type="date" class="form-control audit-input" name="dataAuditoria" id="dataAuditoria" />
</div>
<div class="col-md-2 col-sm-4">
<label class="audit-label" for="ciclo">Ciclo</label>
<input type="text" class="form-control audit-input" name="ciclo" id="ciclo" placeholder="Ex: 2026-03" />
</div>
<div class="col-md-2 col-sm-4">
<label class="audit-label" for="regional">Regional</label>
<input type="text" class="form-control audit-input" name="regional" id="regional" />
</div>
</div>
</div>
</section>
<div class="nc-box" id="naoConformeBox" style="display:none;">
<div class="nc-title">Pendências para correção</div>
<div class="nc-list" id="naoConformeList"></div>
</div>
<section class="audit-section progress-section">
<h2 class="section-title">Progresso da Auditoria</h2>
<div class="progress-inline">
<div class="progress-track">
<div class="progress-fill" id="globalProgressFill"></div>
</div>
<div class="progress-percent" id="globalProgressPercent">0%</div>
</div>
<div class="progress-meta" id="globalProgressMeta">0 de 0 fotos enviadas</div>
</section>
<div class="row audit-card">
<div class="col-md-3">
<div class="panel panel-default">
<div class="panel-body">
<div class="audit-score" id="scoreFinal">0%</div>
<small>Score final</small>
</div>
</div>
</div>
<div class="col-md-3">
<div class="panel panel-default">
<div class="panel-body">
<div class="audit-score" id="pontosObtidos">0</div>
<small>Pontos obtidos</small>
</div>
</div>
</div>
<div class="col-md-3">
<div class="panel panel-default">
<div class="panel-body">
<div class="audit-score" id="pontosPossiveis">0</div>
<small>Pontos possíveis</small>
</div>
</div>
</div>
<div class="col-md-3">
<div class="panel panel-default">
<div class="panel-body">
<div class="audit-score" id="classificacao">-</div>
<small>Classificação</small>
</div>
</div>
</div>
</div>
<h2 class="section-title pilares-title">Pilares Analisados</h2>
<div class="row">
<div class="col-md-12" id="pilaresContainer"></div>
</div>
<div class="audit-send-wrap">
<button type="button" class="btn btn-primary audit-send-btn" id="btnEnviarForm">Finalizar</button>
</div>
<input type="hidden" name="auditoriaPayload" id="auditoriaPayload" />
<input type="hidden" name="temNaoConforme" id="temNaoConforme" value="false" />
<input type="hidden" name="qtdNaoConforme" id="qtdNaoConforme" value="0" />
<input type="hidden" name="listaNaoConforme" id="listaNaoConforme" value="" />
<input type="hidden" name="saidaAnalise" id="saidaAnalise" value="CONFORME" />
<input type="hidden" name="usuarioRetorno" id="usuarioRetorno" value="" />
<input type="hidden" name="destinoLoja" id="destinoLoja" value="" />
<input type="hidden" name="destinoLojaId" id="destinoLojaId" value="" />
</div>
</form>
</div>
<script type="text/javascript" src="./assets/js/checklist.js"></script>
</body>
</html>

View File

@ -0,0 +1,208 @@
function beforeTaskSave(colleagueId, nextSequenceId, userList) {
var FORCE_EMAIL_DESTINATION = "";
var currentState = parseInt(getValue("WKCurrentState"), 10);
var nextState = parseInt(nextSequenceId, 10);
try {
// Roteamento para loja na entrada da atividade "Validar Planograma" (task5).
// Usa prioridade: destinoLojaId (colleagueId) -> destinoLoja (login).
if (nextState === 5) {
atribuiResponsavelLoja(userList);
}
} catch (eAssign) {
log.error("[checklist][atribuicao] Falha ao atribuir responsavel da loja: " + eAssign);
throw eAssign;
}
// Notificacao por email so quando sai da atividade de analise (task5).
if (currentState !== 5) {
return;
}
try {
var saidaAnalise = (hAPI.getCardValue("saidaAnalise") || "").trim();
var usuarioRetorno = (hAPI.getCardValue("usuarioRetorno") || "").trim();
var destino = String(FORCE_EMAIL_DESTINATION || "").trim();
var usuarioDestino = "";
if (!destino) {
usuarioDestino = usuarioRetorno || String(colleagueId || getValue("WKUser") || "").trim();
destino = resolveEmailByColleagueId(usuarioDestino);
}
log.info("[checklist][notificacao] saidaAnalise=" + saidaAnalise
+ ", usuarioRetorno=" + usuarioRetorno
+ ", colleagueId=" + colleagueId
+ ", usuarioDestino=" + usuarioDestino
+ ", destinoFinal=" + destino
+ ", nextState=" + nextState);
if (!destino) {
log.warn("[checklist][notificacao] Usuario destino nao informado.");
return;
}
if (!isValidEmail(destino)) {
log.warn("[checklist][notificacao] Email de destino invalido: " + destino);
return;
}
if (nextState === 9 || saidaAnalise === "NAO_CONFORME") {
notificaPorTemplate("CHECKLIST_NAO_CONFORME", destino);
return;
}
if (nextState === 11 || saidaAnalise === "CONFORME") {
notificaPorTemplate("CHECKLIST_CONFORME", destino);
}
} catch (e) {
log.error("[checklist][notificacao] Falha ao disparar notificacao: " + e);
}
}
function atribuiResponsavelLoja(userList) {
var destinoLojaId = String(hAPI.getCardValue("destinoLojaId") || "").trim();
var destinoLojaLogin = String(hAPI.getCardValue("destinoLoja") || "").trim();
var colleagueId = "";
if (destinoLojaId && existsActiveUserByColleagueId(destinoLojaId)) {
colleagueId = destinoLojaId;
}
if (!colleagueId && destinoLojaLogin) {
colleagueId = resolveColleagueIdByLogin(destinoLojaLogin);
}
if (!colleagueId) {
throw "Preencha uma loja valida. destinoLojaId/destinoLoja nao encontrado no colleague ativo.";
}
userList.clear();
userList.add(colleagueId);
hAPI.setCardValue("destinoLojaId", colleagueId);
log.info("[checklist][atribuicao] Responsavel definido. destinoLojaId=" + destinoLojaId
+ ", destinoLoja=" + destinoLojaLogin
+ ", colleagueIdFinal=" + colleagueId);
}
function notificaPorTemplate(templateCode, destinatario) {
var NOTIFIER_SENDER_USER = "admin";
var recipients = new java.util.ArrayList();
recipients.add(destinatario);
var parametros = new java.util.HashMap();
parametros.put("numeroSolicitacao", String(getValue("WKNumProces") || ""));
parametros.put("qtdNaoConforme", String(hAPI.getCardValue("qtdNaoConforme") || "0"));
parametros.put("listaNaoConforme", String(hAPI.getCardValue("listaNaoConforme") || ""));
parametros.put("loja", String(hAPI.getCardValue("loja") || ""));
parametros.put("linkSolicitacao", montaLinkSolicitacao());
notifier.notify(
NOTIFIER_SENDER_USER,
templateCode,
parametros,
recipients,
"text/html"
);
log.info("[checklist][notificacao] Template " + templateCode + " enviado para " + destinatario);
}
function montaLinkSolicitacao() {
var server = String(getValue("WKServerURL") || "");
var companyId = String(getValue("WKCompany") || "");
var processId = String(getValue("WKNumProces") || "");
if (!server || !companyId || !processId) {
return "";
}
return server
+ "/portal/p/"
+ companyId
+ "/pageworkflowview?app_ecm_workflowview_detailsProcessInstanceID="
+ processId;
}
function usuarioPossuiEmailValido(colleagueId) {
try {
var c1 = DatasetFactory.createConstraint("colleaguePK.colleagueId", colleagueId, colleagueId, ConstraintType.MUST);
var c2 = DatasetFactory.createConstraint("active", "true", "true", ConstraintType.MUST);
var ds = DatasetFactory.getDataset("colleague", null, [c1, c2], null);
if (!ds || ds.rowsCount < 1) {
log.warn("[checklist][notificacao] Usuario nao encontrado/inativo no colleague: " + colleagueId);
return false;
}
var email = String(ds.getValue(0, "mail") || "").trim();
log.info("[checklist][notificacao] Email encontrado para " + colleagueId + ": " + email);
return email.indexOf("@") > 0;
} catch (e) {
log.error("[checklist][notificacao] Erro ao validar email do usuario " + colleagueId + ": " + e);
return false;
}
}
function resolveEmailByColleagueId(colleagueId) {
try {
if (!colleagueId) {
return "";
}
var ds = findColleagueByIdOrLogin(colleagueId);
if (!ds || ds.rowsCount < 1) {
log.warn("[checklist][notificacao] Usuario nao encontrado/inativo no colleague: " + colleagueId);
return "";
}
var email = String(ds.getValue(0, "mail") || "").trim();
log.info("[checklist][notificacao] Email encontrado para " + colleagueId + ": " + email);
return email;
} catch (e) {
log.error("[checklist][notificacao] Erro ao buscar email do usuario " + colleagueId + ": " + e);
return "";
}
}
function isValidEmail(email) {
var v = String(email || "").trim();
return v.indexOf("@") > 0 && v.indexOf(".") > v.indexOf("@") + 1;
}
function existsActiveUserByColleagueId(colleagueId) {
var ds = null;
try {
var c1 = DatasetFactory.createConstraint("colleaguePK.colleagueId", colleagueId, colleagueId, ConstraintType.MUST);
var c2 = DatasetFactory.createConstraint("active", "true", "true", ConstraintType.MUST);
ds = DatasetFactory.getDataset("colleague", null, [c1, c2], null);
return ds && ds.rowsCount > 0;
} catch (e) {
log.error("[checklist][atribuicao] Erro ao validar colleagueId=" + colleagueId + ": " + e);
return false;
}
}
function resolveColleagueIdByLogin(login) {
try {
var c1 = DatasetFactory.createConstraint("login", login, login, ConstraintType.MUST);
var c2 = DatasetFactory.createConstraint("active", "true", "true", ConstraintType.MUST);
var ds = DatasetFactory.getDataset("colleague", null, [c1, c2], null);
if (ds && ds.rowsCount > 0) {
return String(ds.getValue(0, "colleaguePK.colleagueId") || "").trim();
}
} catch (e) {
log.error("[checklist][atribuicao] Erro ao resolver colleagueId por login=" + login + ": " + e);
}
return "";
}
function findColleagueByIdOrLogin(value) {
var v = String(value || "").trim();
if (!v) return null;
var c2 = DatasetFactory.createConstraint("active", "true", "true", ConstraintType.MUST);
var cId = DatasetFactory.createConstraint("colleaguePK.colleagueId", v, v, ConstraintType.MUST);
var byId = DatasetFactory.getDataset("colleague", null, [cId, c2], null);
if (byId && byId.rowsCount > 0) return byId;
var cLogin = DatasetFactory.createConstraint("login", v, v, ConstraintType.MUST);
var byLogin = DatasetFactory.getDataset("colleague", null, [cLogin, c2], null);
if (byLogin && byLogin.rowsCount > 0) return byLogin;
return null;
}

View File

View File

@ -0,0 +1,17 @@
!SESSION 2026-03-10 22:22:11.116 -----------------------------------------------
eclipse.buildId=4.13.0.I20190916-1045
java.version=1.8.0_481
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=pt_BR
Framework arguments: -product org.eclipse.epp.package.jee.product
Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product
!ENTRY org.eclipse.egit.ui 2 0 2026-03-10 22:22:42.782
!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git
user global configuration and to define the default location to store repositories: 'C:\Users\Home'. If this is
not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and
EGit might behave differently since they see different configuration options.
This warning can be switched off on the Team > Git > Confirmations and Warnings preference page.
!ENTRY org.eclipse.ui.navigator.resources 4 0 2026-03-10 22:23:03.536
!MESSAGE Could not acquire INavigatorContentService: Project Explorer not found.

View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
version=1

View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\r\n<launchPerspectives/>\r\n

View File

@ -0,0 +1,7 @@
content_assist_proposals_background=255,255,255
content_assist_proposals_foreground=0,0,0
eclipse.preferences.version=1
org.eclipse.jdt.ui.formatterprofiles.version=17
spelling_locale_initialized=true
useAnnotationsPrefPage=true
useQuickDiffPrefPage=true

View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
org.eclipse.jsch.core.hasChangedDefaultWin32SshHome=true

View File

@ -0,0 +1,2 @@
areThereWebServices=false
eclipse.preferences.version=1

View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
org.eclipse.m2e.discovery.pref.projects=

View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
mylyn.attention.migrated=true

View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
org.eclipse.mylyn.monitor.activity.tracking.enabled.checked=true

View File

@ -0,0 +1,4 @@
eclipse.preferences.version=1
migrated.task.repositories.secure.store=true
org.eclipse.mylyn.tasks.ui.filters.nonmatching=true
org.eclipse.mylyn.tasks.ui.filters.nonmatching.encouraged=true

View File

@ -0,0 +1,2 @@
activeuserprofiles=DESKTOP-0E2LAA6;Team
eclipse.preferences.version=1

View File

@ -0,0 +1,5 @@
PROBLEMS_FILTERS_MIGRATE=true
eclipse.preferences.version=1
platformState=1772394940336
quickStart=false
tipsAndTricks=true

View File

@ -0,0 +1,4 @@
//org.eclipse.ui.commands/state/org.eclipse.ui.navigator.resources.nested.changeProjectPresentation/org.eclipse.ui.commands.radioState=false
//org.eclipse.ui.commands/state/org.eclipse.wst.xml.views.XPathView.processor.xpathprocessor/org.eclipse.ui.commands.radioState=xpath10
PLUGINS_NOT_ACTIVATED_ON_STARTUP=;org.eclipse.m2e.discovery;
eclipse.preferences.version=1

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<typeInfoHistroy/>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<qualifiedTypeNameHistroy/>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<section name="Workbench">
<section name="org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart">
<item key="group_libraries" value="true"/>
<item key="layout" value="2"/>
<item key="rootMode" value="1"/>
<item key="linkWithEditor" value="false"/>
<item key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#x0D;&#x0A;&lt;packageExplorer group_libraries=&quot;1&quot; layout=&quot;2&quot; linkWithEditor=&quot;0&quot; rootMode=&quot;1&quot; workingSetName=&quot;Aggregate for window 1773192162956&quot;&gt;&#x0D;&#x0A;&lt;customFilters userDefinedPatternsEnabled=&quot;false&quot;&gt;&#x0D;&#x0A;&lt;xmlDefinedFilters&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.StaticsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.buildship.ui.packageexplorer.filter.gradle.buildfolder&quot; isEnabled=&quot;true&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer_patternFilterId_RemoteSystemsConnections&quot; isEnabled=&quot;true&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.mylyn.java.ui.MembersFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonSharedProjectsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.EmptyInnerPackageFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.m2e.MavenModuleFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.buildship.ui.packageexplorer.filter.gradle.subProject&quot; isEnabled=&quot;true&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ClosedProjectsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.EmptyLibraryContainerFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.PackageDeclarationFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.pde.ui.BinaryProjectFilter1&quot; isEnabled=&quot;false&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.LocalTypesFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.pde.ui.ExternalPluginLibrariesFilter1&quot; isEnabled=&quot;true&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.FieldsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer_patternFilterId_RemoteSystemsTempFiles&quot; isEnabled=&quot;true&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonJavaProjectsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer_patternFilterId_.*&quot; isEnabled=&quot;true&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.SyntheticMembersFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ContainedLibraryFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.HideInnerClassFilesFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.DeprecatedMembersFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ImportDeclarationFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonJavaElementFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.LibraryFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.CuAndClassFileFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.EmptyPackageFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0D;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonPublicFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0D;&#x0A;&lt;/xmlDefinedFilters&gt;&#x0D;&#x0A;&lt;/customFilters&gt;&#x0D;&#x0A;&lt;/packageExplorer&gt;"/>
</section>
</section>

View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<section name="Workbench">
</section>

View File

@ -0,0 +1 @@
2026-03-10 22:22:42,342 [Worker-1: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.

View File

@ -0,0 +1,43 @@
<configuration scan="true">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%date [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>OFF</level> <!-- change to DEBUG to mimic '-consolelog' behaviour -->
</filter>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${org.eclipse.m2e.log.dir}/0.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<FileNamePattern>${org.eclipse.m2e.log.dir}/%i.log</FileNamePattern>
<MinIndex>1</MinIndex>
<MaxIndex>10</MaxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>100MB</MaxFileSize>
</triggeringPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%date [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<appender name="EclipseLog" class="org.eclipse.m2e.logback.appender.EclipseLogAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
</appender>
<appender name="MavenConsoleLog" class="org.eclipse.m2e.logback.appender.MavenConsoleAppender">
</appender>
<root level="INFO">
<appender-ref ref="FILE" />
<appender-ref ref="STDOUT" />
<appender-ref ref="EclipseLog" />
<appender-ref ref="MavenConsoleLog" />
</root>
<logger name="com.ning.http.client" level="INFO" />
</configuration>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<setup:Workspace
xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI"
xmlns:setup="http://www.eclipse.org/oomph/setup/1.0"
name="workspace"/>

View File

@ -0,0 +1,2 @@
#Cached timestamps
#Tue Mar 10 22:40:30 GFT 2026

View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<section name="Workbench">
</section>

View File

@ -0,0 +1,6 @@
#Tue Mar 10 22:22:35 GFT 2026
0.Path=C\:\\Program Files\\Git\\bin\\sh.exe
0.Name=Git Bash
0.Args=--login -i
0.Translate=true
0.Icon=C\:\\Program Files\\Git\\mingw64\\share\\git\\git-for-windows.ico

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<section name="Workbench">
<section name="BasicNewProjectResourceWizard">
</section>
<section name="SmartImportWizard">
<item key="SmartImportRootWizardPage.STORE_HIDE_ALREADY_OPEN" value="false"/>
<item key="SmartImportRootWizardPage.STORE_CLOSE_IMPORTED" value="false"/>
<item key="SmartImportRootWizardPage.STORE_NESTED_PROJECTS" value="true"/>
<item key="SmartImportRootWizardPage.STORE_CONFIGURE_NATURES" value="true"/>
<list key="org.eclipse.ui.internal.wizards.datatransfer.SmartImportRootWizardPage.knownSources">
<item value="C:\Python\Fluig Ginseng\fluig\checklist\fluig\Auditoria_checklist"/>
</list>
</section>
</section>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<state reopen="true"/>

Some files were not shown because too many files have changed in this diff Show More