diff --git a/src/store/modules/ADempiere/data/getters.js b/src/store/modules/ADempiere/data/getters.js index 95812b91..45c4718e 100644 --- a/src/store/modules/ADempiere/data/getters.js +++ b/src/store/modules/ADempiere/data/getters.js @@ -50,42 +50,52 @@ const getters = { * selectionValues: [{ columnName, value }] * }] */ - getSelectionToServer: (state, getters, rootState, rootGetters) => ({ containerUuid, selection = [] }) => { + getSelectionToServer: (state, getters, rootState, rootGetters) => ({ + containerUuid, + selection = [] + }) => { const selectionToServer = [] const withOut = ['isEdit', 'isSendToServer'] - if (selection.length <= 0) { + if (isEmptyValue(selection)) { selection = getters.getDataRecordSelection(containerUuid) } - if (selection.length) { - const { fieldsList, keyColumn } = rootGetters.getPanel(containerUuid) - // reduce list - const fieldsListSelection = fieldsList.filter(itemField => { + + if (isEmptyValue(selection)) { + return selectionToServer + } + + const { fieldsList, keyColumn } = rootGetters.getPanel(containerUuid) + // reduce list + const fieldsListSelection = fieldsList + .filter(itemField => { return itemField.isIdentifier || itemField.isUpdateable }) - - selection.forEach(itemRow => { - const records = [] - - Object.keys(itemRow).forEach(key => { - if (!key.includes('DisplayColumn') && !withOut.includes(key)) { - // evaluate metadata attributes before to convert - const field = fieldsListSelection.find(itemField => itemField.columnName === key) - if (field) { - records.push({ - columnName: key, - value: itemRow[key] - }) - } - } - }) - - selectionToServer.push({ - selectionId: itemRow[keyColumn], - selectionValues: records - }) + .map(itemField => { + return itemField.columnName }) - } + + selection.forEach(itemRow => { + const records = [] + + Object.keys(itemRow).forEach(key => { + if (!key.includes('DisplayColumn') && !withOut.includes(key)) { + // evaluate metadata attributes before to convert + if (fieldsListSelection.includes(key)) { + records.push({ + columnName: key, + value: itemRow[key] + }) + } + } + }) + + selectionToServer.push({ + selectionId: itemRow[keyColumn], + selectionValues: records + }) + }) + return selectionToServer }, getContextInfoField: (state) => (contextInfoUuid, sqlStatement) => { diff --git a/src/store/modules/ADempiere/process/actions.js b/src/store/modules/ADempiere/process/actions.js index bbf93284..b429847f 100644 --- a/src/store/modules/ADempiere/process/actions.js +++ b/src/store/modules/ADempiere/process/actions.js @@ -47,17 +47,17 @@ export default { // } // additional attributes to send server, selection to browser, or table name and record id to window - let selection = [] + let selectionsList = [] let allData = {} let tab, tableName, recordId if (panelType) { if (panelType === 'browser') { allData = getters.getDataRecordAndSelection(containerUuid) - selection = rootGetters.getSelectionToServer({ + selectionsList = rootGetters.getSelectionToServer({ containerUuid, selection: allData.selection }) - if (selection.length < 1) { + if (isEmptyValue(selectionsList)) { showNotification({ title: language.t('data.selectionRequired'), type: 'warning' @@ -89,7 +89,10 @@ export default { } } // get info metadata process - const processDefinition = !isEmptyValue(isActionDocument) ? action : rootGetters.getProcess(action.uuid) + const processDefinition = !isEmptyValue(isActionDocument) + ? action + : rootGetters.getProcess(action.uuid) + let reportType = reportFormat if (isEmptyValue(parametersList)) { @@ -193,22 +196,22 @@ export default { } if (isProcessTableSelection) { const windowSelectionProcess = getters.getProcessSelect - windowSelectionProcess.selection.forEach(selection => { + windowSelectionProcess.selection.forEach(selectionWindow => { Object.assign(processResult, { - selection: selection.UUID, - record: selection[windowSelectionProcess.tableName] + selection: selectionWindow.UUID, + record: selectionWindow[windowSelectionProcess.tableName] }) const countRequest = state.totalRequest + 1 commit('setTotalRequest', countRequest) if (!windowSelectionProcess.finish) { + // TODO: Add backend support to selectionsList records in window requestRunProcess({ uuid: processDefinition.uuid, id: processDefinition.id, reportType, parametersList, - selectionsList: selection, tableName: windowSelectionProcess.tableName, - recordId: selection[windowSelectionProcess.tableName] + recordId: selectionWindow[windowSelectionProcess.tableName] }) .then(runProcessResponse => { const { instanceUuid, output } = runProcessResponse @@ -394,7 +397,7 @@ export default { id: processDefinition.id, reportType, parametersList, - selectionsList: selection, + selectionsList, tableName, recordId })