From b13b19b5009d6b5e3a9462c11c29c3390012e7f9 Mon Sep 17 00:00:00 2001 From: Edwin Betancourt Date: Thu, 26 Jan 2023 10:55:28 -0400 Subject: [PATCH] fix: Field accouting combination undo changes. (#787) --- src/store/modules/ADempiere/persistence.js | 78 +++++++++++++--------- src/themes/default | 2 +- 2 files changed, 46 insertions(+), 34 deletions(-) diff --git a/src/store/modules/ADempiere/persistence.js b/src/store/modules/ADempiere/persistence.js index 5f46a6d4488..7e106e27a9e 100644 --- a/src/store/modules/ADempiere/persistence.js +++ b/src/store/modules/ADempiere/persistence.js @@ -35,6 +35,7 @@ import { import { isEmptyValue, isSameValues } from '@/utils/ADempiere/valueUtils.js' import { showMessage } from '@/utils/ADempiere/notification.js' import { getContextDefaultValue } from '@/utils/ADempiere/dictionaryUtils.js' +import { isSupportLookup } from '@/utils/ADempiere/references' const persistence = { state: { @@ -96,11 +97,10 @@ const persistence = { // clear old values clearPersistenceQueue(state, { containerUuid, - recordUuid, - logs = {} + recordUuid }) { const key = containerUuid + '_' + recordUuid - Vue.set(state.persistence, key, logs) + Vue.set(state.persistence, key, {}) // state.persistence[containerUuid] = { // [recordUuid]: new Map() @@ -138,6 +138,27 @@ const persistence = { oldValue = defaultValue } + if (isSupportLookup(field.displayType)) { + let displayedValue + if (!isEmptyValue(currentRecord)) { + displayedValue = currentRecord[field.displayColumnName] + } + if (isEmptyValue(currentRecord) || oldValue === value) { + const defaultValue = getContextDefaultValue({ + ...field, + columnName: field.displayColumnName + }) + displayedValue = defaultValue + } + commit('addChangeToPersistenceQueue', { + containerUuid, + recordUuid: getters.getUuidOfContainer(field.containerUuid), + columnName: field.displayColumnName, + oldValue: displayedValue, + value: undefined + }) + } + commit('addChangeToPersistenceQueue', { containerUuid, recordUuid: getters.getUuidOfContainer(field.containerUuid), @@ -367,45 +388,34 @@ const persistence = { recordUuid }) - // set old value as current value - const LastChange = valuesChanges[valuesChanges.length - 1] - const { columnName, oldValue } = LastChange + valuesChanges.forEach(changes => { + const { columnName, oldValue } = changes - commit('updateValueOfField', { - parentUuid, - containerUuid, - columnName, - recordUuid, - value: oldValue - }, { - root: true + commit('updateValueOfField', { + parentUuid, + containerUuid, + columnName, + recordUuid, + value: oldValue + }, { + root: true + }) }) dispatch('clearPersistenceQueue', { containerUuid, - columnName, - recordUuid, - logs: valuesChanges + recordUuid }) }, // clear old values clearPersistenceQueue({ commit }, { containerUuid, - recordUuid, - columnName, - logs + recordUuid }) { - let changeLogs - if (!isEmptyValue(logs)) { - changeLogs = logs.filter(log => log.columnName !== columnName) - } - commit('clearPersistenceQueue', { containerUuid, - recordUuid, - columnName, - logs: changeLogs + recordUuid }) } }, @@ -413,9 +423,10 @@ const persistence = { getters: { getPersistenceAttributes: (state) => ({ containerUuid, recordUuid }) => { const key = containerUuid + '_' + recordUuid + const changes = state.persistence[key] - if (!isEmptyValue(state.persistence[key])) { - return Object.values(state.persistence[key]) + if (!isEmptyValue(changes)) { + return Object.values(changes) // only changes .filter(attribute => { const { value, oldValue } = attribute @@ -438,8 +449,9 @@ const persistence = { recordUuid }) => { const key = containerUuid + '_' + recordUuid + const changes = state.persistence[key] - if (!isEmptyValue(state.persistence[key])) { + if (!isEmptyValue(changes)) { if (isEmptyValue(recordUuid)) { const defaultRow = rootGetters.getTabParsedDefaultValue({ parentUuid, @@ -448,7 +460,7 @@ const persistence = { formatToReturn: 'object' }) - return Object.values(state.persistence[key]) + return Object.values(changes) // only changes with default value .filter(attribute => { const { value, columnName } = attribute @@ -456,7 +468,7 @@ const persistence = { }) } - return Object.values(state.persistence[key]) + return Object.values(changes) // only changes .filter(attribute => { const { value, oldValue } = attribute diff --git a/src/themes/default b/src/themes/default index 178ea55b9e0..63f927088b9 160000 --- a/src/themes/default +++ b/src/themes/default @@ -1 +1 @@ -Subproject commit 178ea55b9e0976e90bd02f18f5be0e8c8301cf82 +Subproject commit 63f927088b97121c343ecdcf27a4e22468738962