From 73b375ca74185397da26e636c80f718467260520 Mon Sep 17 00:00:00 2001 From: elsiosanchez <45974454+elsiosanchez@users.noreply.github.com> Date: Tue, 3 Dec 2019 15:04:33 -0400 Subject: [PATCH] Support Documents Pendings (#189) * Support Documents Pendings * Bugfix syntax * route getters according to the role * add send criteria from list of documents pendings * change translations --- src/api/ADempiere/data.js | 3 + src/components/ADempiere/Panel/index.vue | 21 ++- .../ADempiere/PendingDocuments/index.vue | 130 ++++++++++++++++++ src/components/ADempiere/Tab/index.vue | 3 + src/components/ADempiere/Tab/tabMixin.js | 2 +- src/lang/ADempiere/en.js | 1 + src/lang/ADempiere/es.js | 1 + src/store/getters.js | 2 + src/store/modules/ADempiere/data.js | 43 ++++++ src/store/modules/ADempiere/windowControl.js | 11 +- src/utils/ADempiere/zoomWindow.js | 6 + src/views/dashboard/admin/index.vue | 7 +- 12 files changed, 221 insertions(+), 9 deletions(-) create mode 100644 src/components/ADempiere/PendingDocuments/index.vue diff --git a/src/api/ADempiere/data.js b/src/api/ADempiere/data.js index 7cacaae5..331c145f 100644 --- a/src/api/ADempiere/data.js +++ b/src/api/ADempiere/data.js @@ -322,6 +322,9 @@ export function getContextInfoValueFromServer({ uuid, query }) { export function getFavoritesFromServer(userUuid) { return Instance.call(this).requestFavorites(userUuid) } +export function getPendingDocumentsFromServer(userUuid, roleUuid) { + return Instance.call(this).requestPendingDocuments(userUuid, roleUuid) +} export function requestReportViews({ tableName, processUuid }) { return Instance.call(this).requestReportViews({ tableName: tableName, processUuid: processUuid }) diff --git a/src/components/ADempiere/Panel/index.vue b/src/components/ADempiere/Panel/index.vue index 75c0a964..a298fce1 100644 --- a/src/components/ADempiere/Panel/index.vue +++ b/src/components/ADempiere/Panel/index.vue @@ -365,7 +365,8 @@ export default { isLoadAllRecords: true, isReference: false, isNewRecord: false, - isWindow: true + isWindow: true, + criteria: {} } if (this.isPanelWindow) { // TODO: use action notifyPanelChange with isShowedField in true @@ -399,7 +400,14 @@ export default { parameters.referenceWhereClause = referenceInfo.whereClause } else if (route.query.action && route.query.action === 'create-new') { parameters.isNewRecord = true - } else if (route.query.action && route.query.action !== 'create-new' && route.query.action !== 'reference' && route.query.action !== 'advancedQuery') { + } else if (route.query.action && route.query.action === 'criteria') { + route.params.isReadParameters = true + Object.keys(route.params).forEach(param => { + if (!this.isEmptyValue(route.params[param])) { + parameters.criteria[param] = route.params[param] + } + }) + } else if (route.query.action && route.query.action !== 'create-new' && route.query.action !== 'reference' && route.query.action !== 'advancedQuery' && route.query.action !== 'criteria') { parameters.isLoadAllRecords = false parameters.value = route.query.action parameters.tableName = this.metadata.tableName @@ -462,7 +470,8 @@ export default { isReference: parameters.isReference, referenceWhereClause: parameters.referenceWhereClause, columnName: parameters.columnName, - value: parameters.value + value: parameters.value, + criteria: parameters.criteria }) .then(response => { if (response.length && !parameters.isNewRecord) { @@ -494,8 +503,8 @@ export default { this.$router.push({ name: this.$route.name, query: { - action: this.dataRecords.UUID, - ...this.$route.query + ...this.$route.query, + action: this.dataRecords.UUID } }) this.$store.dispatch('notifyPanelChange', { @@ -606,7 +615,7 @@ export default { dataTransfer.setData('Text', '') }, changePanelRecord(uuidRecord) { - if (uuidRecord !== 'create-new' && uuidRecord !== 'reference' && uuidRecord !== 'advancedQuery') { + if (uuidRecord !== 'create-new' && uuidRecord !== 'reference' && uuidRecord !== 'advancedQuery' && uuidRecord !== 'criteria') { var recordSelected = this.$store.getters.getDataRecordsList(this.containerUuid).find(record => record.UUID === uuidRecord) if (recordSelected) { this.dataRecords = recordSelected diff --git a/src/components/ADempiere/PendingDocuments/index.vue b/src/components/ADempiere/PendingDocuments/index.vue new file mode 100644 index 00000000..2e4aa4b4 --- /dev/null +++ b/src/components/ADempiere/PendingDocuments/index.vue @@ -0,0 +1,130 @@ + + + + + {{ $t('profile.PendingDocuments') }} + + + + + + + + + + + {{ row.name }} + + + + + + + + + + + + diff --git a/src/components/ADempiere/Tab/index.vue b/src/components/ADempiere/Tab/index.vue index df361eff..1ec1e7fa 100644 --- a/src/components/ADempiere/Tab/index.vue +++ b/src/components/ADempiere/Tab/index.vue @@ -58,6 +58,9 @@ export default { query: { ...this.$route.query, tabParent: String(newValue) + }, + params: { + ...this.$route.params } }) this.$route.meta.tabUuid = this.tabUuid diff --git a/src/components/ADempiere/Tab/tabMixin.js b/src/components/ADempiere/Tab/tabMixin.js index ac26147f..14dd3629 100644 --- a/src/components/ADempiere/Tab/tabMixin.js +++ b/src/components/ADempiere/Tab/tabMixin.js @@ -37,7 +37,7 @@ export const tabMixin = { // Current TabChildren currentTabChild(newValue, oldValue) { if (newValue !== oldValue) { - this.$router.push({ query: { ...this.$route.query, tabChild: String(newValue) }}) + this.$router.push({ query: { ...this.$route.query, tabChild: String(newValue) }, params: { ...this.$route.params }}) } }, // Load parent tab context diff --git a/src/lang/ADempiere/en.js b/src/lang/ADempiere/en.js index 1dd16e61..85444562 100644 --- a/src/lang/ADempiere/en.js +++ b/src/lang/ADempiere/en.js @@ -244,6 +244,7 @@ export default { aboutMe: 'About Me', recentItems: 'Recent Items', favorites: 'Favorites', + PendingDocuments: 'Pending Documents', recentItemsName: 'Name Recent Items', role: 'Role', availableRoles: 'Available roles', diff --git a/src/lang/ADempiere/es.js b/src/lang/ADempiere/es.js index 3d02e82c..ed21beaf 100644 --- a/src/lang/ADempiere/es.js +++ b/src/lang/ADempiere/es.js @@ -219,6 +219,7 @@ export default { aboutMe: 'Sobre Mi', recentItems: 'Artículos Recientes', favorites: 'Favoritos', + PendingDocuments: 'Documentos Pendientes', recentItemsName: 'Nombre Ítems Recientes', role: 'Rol', availableRoles: 'Roles disponibles', diff --git a/src/store/getters.js b/src/store/getters.js index 2a0207be..c713b3a3 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -9,8 +9,10 @@ const getters = { token: state => state.user.token, avatar: state => state.user.avatar, name: state => state.user.name, + router: state => state.permission.addRoutes, introduction: state => state.user.introduction, currentRole: state => state.user.currentRole, + getRoleUuid: state => state.user.rol.uuid, roles: state => state.user.roles, permission_routes: state => state.permission.routes, errorLogs: state => state.errorLog.logs diff --git a/src/store/modules/ADempiere/data.js b/src/store/modules/ADempiere/data.js index 465a6419..9e586001 100644 --- a/src/store/modules/ADempiere/data.js +++ b/src/store/modules/ADempiere/data.js @@ -7,6 +7,7 @@ import { convertValueFromGRPC, getContextInfoValueFromServer, getFavoritesFromServer, + getPendingDocumentsFromServer, requestPrintFormats } from '@/api/ADempiere' import { convertValuesMapToObject, isEmptyValue, showMessage, convertAction } from '@/utils/ADempiere' @@ -18,6 +19,7 @@ const data = { recordDetail: [], recentItems: [], favorites: [], + pendingDocuments: [], inGetting: [], contextInfoField: [], printFormatList: [] @@ -67,6 +69,9 @@ const data = { setFavorites(state, payload) { state.favorites = payload }, + setPendingDocuments(state, payload) { + state.pendingDocuments = payload + }, setPageNumber(state, payload) { payload.data.pageNumber = payload.pageNumber }, @@ -645,6 +650,41 @@ const data = { }) }) }, + getPendingDocumentsFromServer({ commit, getters, rootGetters }) { + const userUuid = rootGetters['user/getUserUuid'] + const roleUuid = getters.getRoleUuid + return new Promise((resolve, reject) => { + getPendingDocumentsFromServer(userUuid, roleUuid) + .then(response => { + const documentsList = response.getPendingdocumentsList().map(document => { + return { + formUuid: document.getFormuuid(), + name: document.getDocumentname(), + description: document.getDocumentdescription(), + criteria: { + type: document.getCriteria().getConditionsList(), + limit: document.getCriteria().getLimit(), + orderbyclause: document.getCriteria().getOrderbyclause(), + orderbycolumnList: document.getCriteria().getOrderbycolumnList(), + query: document.getCriteria().getQuery(), + referenceUuid: document.getCriteria().getReferenceuuid(), + tableName: document.getCriteria().getTablename(), + valuesList: document.getCriteria().getValuesList(), + whereClause: document.getCriteria().getWhereclause() + }, + recordCount: document.getRecordcount(), + sequence: document.getSequence(), + windowUuid: document.getWindowuuid() + } + }) + commit('setPendingDocuments', documentsList) + resolve(documentsList) + }) + .catch(error => { + reject(error) + }) + }) + }, /** * TODO: Add support to tab children * @param {object} objectParams @@ -934,6 +974,9 @@ const data = { getFavoritesList: (state) => { return state.favorites }, + getPendingDocuments: (state) => { + return state.pendingDocuments + }, getLanguageList: (state) => (roleUuid) => { return state.recordSelection.find( record => record.containerUuid === roleUuid diff --git a/src/store/modules/ADempiere/windowControl.js b/src/store/modules/ADempiere/windowControl.js index 87c7b68d..5359413f 100644 --- a/src/store/modules/ADempiere/windowControl.js +++ b/src/store/modules/ADempiere/windowControl.js @@ -534,7 +534,8 @@ const windowControl = { isReference = false, referenceWhereClause = '', columnName, - value + value, + criteria } = parameters const tab = rootGetters.getTab(parentUuid, containerUuid) @@ -564,6 +565,14 @@ const windowControl = { } } + if (!isEmptyValue(criteria)) { + if (!isEmptyValue(parsedWhereClause)) { + parsedWhereClause += ' AND ' + criteria.whereClause + } else { + parsedWhereClause += criteria.whereClause + } + } + var conditions = [] if (tab.isParentTab && !isEmptyValue(tab.tableName) && !isEmptyValue(value)) { conditions.push({ diff --git a/src/utils/ADempiere/zoomWindow.js b/src/utils/ADempiere/zoomWindow.js index 96a33d19..983054ae 100644 --- a/src/utils/ADempiere/zoomWindow.js +++ b/src/utils/ADempiere/zoomWindow.js @@ -16,6 +16,12 @@ const ROUTES = { action: undefined, tabParent: '0', tabChild: undefined + }, + DOCUMENTS_WINDOW: { + uuid: '8e50d7c8-fb40-11e8-a479-7a0060f0aa01', + action: undefined, + tabParent: '0', + tabChild: undefined } } diff --git a/src/views/dashboard/admin/index.vue b/src/views/dashboard/admin/index.vue index 3e2d7593..3b70f99d 100644 --- a/src/views/dashboard/admin/index.vue +++ b/src/views/dashboard/admin/index.vue @@ -39,6 +39,9 @@ + + + @@ -55,6 +58,7 @@ import TodoList from './components/TodoList' import BoxCard from './components/BoxCard' import RecentItems from '@/components/ADempiere/RecentItems' import Favorites from '@/components/ADempiere/Favorites' +import PendingDocuments from '@/components/ADempiere/PendingDocuments' const lineChartData = { newVisitis: { @@ -88,7 +92,8 @@ export default { TodoList, BoxCard, RecentItems, - Favorites + Favorites, + PendingDocuments }, data() { return {