Skip to content

Commit 59c9441

Browse files
fix: Save location address field. (PanJiaChen#2643)
1 parent a80ec63 commit 59c9441

File tree

4 files changed

+105
-12
lines changed

4 files changed

+105
-12
lines changed

src/components/ADempiere/FieldDefinition/FieldLocationAddress/locationAddressForm/countriesListField.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ import { computed, defineComponent } from '@vue/composition-api'
5959
import store from '@/store'
6060
6161
// Utils and Helper Methods
62-
import { isEmptyValue } from '@/utils/ADempiere'
62+
import { isEmptyValue } from '@/utils/ADempiere/valueUtils'
6363
6464
// Components and Mixins
6565
import EmptyOptionSelect from '@/components/ADempiere/FieldDefinition/FieldSelect/emptyOptionSelect.vue'

src/components/ADempiere/FieldDefinition/FieldLocationAddress/locationAddressForm/index.vue

Lines changed: 80 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -104,22 +104,26 @@ import store from '@/store'
104104
105105
// Components and Mixins
106106
import useDisplayedColumn from '@/components/ADempiere/FieldDefinition/useDisplayedColumn.js'
107+
import LatitudeField from './latitudeField.vue'
108+
import LongitudeField from './longitudeField.vue'
109+
import AltitudeField from './altitudeField.vue'
107110
108111
// Constants
109-
import { ATTRIBUTES_BY_CAPTURE } from '@/utils/ADempiere/dictionary/field/locationAddress'
110112
import {
113+
DISPLAY_COLUMN_PREFIX,
114+
UNIVERSALLY_UNIQUE_IDENTIFIER_COLUMN_SUFFIX
115+
} from '@/utils/ADempiere/dictionaryUtils'
116+
import {
117+
ATTRIBUTES_BY_CAPTURE,
111118
URL_BASE_MAP
112119
} from '@/utils/ADempiere/dictionary/field/locationAddress'
113120
114121
// Utils and Helper Methods
115122
import { isEmptyValue, isIdentifierEmpty } from '@/utils/ADempiere/valueUtils.js'
116123
import { setDefaultComponentSequence } from '@/utils/ADempiere/dictionary/field/locationAddress'
117-
import { formatCoordinateByDecimal, removeDecimals } from '@/utils/ADempiere/dictionary/field/locationAddress'
118-
119-
//
120-
import LatitudeField from './latitudeField.vue'
121-
import LongitudeField from './longitudeField.vue'
122-
import AltitudeField from './altitudeField.vue'
124+
import {
125+
generateDisplayedValue, formatCoordinateByDecimal, removeDecimals
126+
} from '@/utils/ADempiere/dictionary/field/locationAddress'
123127
124128
export default defineComponent({
125129
name: 'LocationAddressForm',
@@ -129,6 +133,7 @@ export default defineComponent({
129133
LongitudeField,
130134
AltitudeField
131135
},
136+
132137
props: {
133138
containerManager: {
134139
type: Object,
@@ -139,8 +144,10 @@ export default defineComponent({
139144
default: () => ({})
140145
}
141146
},
147+
142148
setup(props) {
143149
const { columnName, containerUuid, parentUuid } = props.metadata
150+
144151
function openCoordinatesMap() {
145152
let baseUrlMap = URL_BASE_MAP
146153
if (!isEmptyValue(coordinates.value)) {
@@ -271,6 +278,7 @@ export default defineComponent({
271278
parentUuid,
272279
columnName
273280
})
281+
274282
if (isEmptyValue(id)) {
275283
return store.dispatch('newLocation')
276284
.then(response => {
@@ -309,14 +317,76 @@ export default defineComponent({
309317
* set context values to parent continer
310318
* @param {object} values
311319
*/
312-
function setParentValues(rowData) {
313-
displayedValue.value = rowData.display_value
320+
function setParentValues(recordRow) {
321+
const { columnName, elementName, isSameColumnElement } = props.metadata
322+
const { uuid, id } = recordRow
323+
const displayValue = generateDisplayedValue(recordRow)
324+
displayedValue.value = displayValue
325+
326+
store.commit('updateValueOfField', {
327+
parentUuid,
328+
containerUuid,
329+
columnName,
330+
value: id
331+
})
332+
// set display column (name) value
333+
store.commit('updateValueOfField', {
334+
parentUuid,
335+
containerUuid,
336+
// DisplayColumn_'ColumnName'
337+
columnName: DISPLAY_COLUMN_PREFIX + columnName,
338+
value: displayValue
339+
})
340+
// set UUID value
341+
store.commit('updateValueOfField', {
342+
parentUuid,
343+
containerUuid,
344+
columnName: columnName + UNIVERSALLY_UNIQUE_IDENTIFIER_COLUMN_SUFFIX,
345+
value: uuid
346+
})
347+
// update element column name (smart browse)
348+
if (!isSameColumnElement) {
349+
store.commit('updateValueOfField', {
350+
parentUuid,
351+
containerUuid,
352+
columnName: elementName,
353+
value: id
354+
})
355+
// set display column (name) value
356+
store.commit('updateValueOfField', {
357+
parentUuid,
358+
containerUuid,
359+
// DisplayColumn_'ColumnName'
360+
columnName: DISPLAY_COLUMN_PREFIX + elementName,
361+
value: displayValue
362+
})
363+
}
364+
365+
// implement container manager row
366+
if (props.metadata.inTable) {
367+
props.containerManager.setCell({
368+
containerUuid,
369+
rowIndex: props.metadata.rowIndex,
370+
rowUid: props.metadata.rowUid,
371+
columnName,
372+
value: id
373+
})
374+
props.containerManager.setCell({
375+
containerUuid,
376+
rowIndex: props.metadata.rowIndex,
377+
rowUid: props.metadata.rowUid,
378+
columnName: DISPLAY_COLUMN_PREFIX + columnName,
379+
value: displayValue
380+
})
381+
return
382+
}
383+
314384
store.dispatch('notifyFieldChange', {
315385
containerUuid,
316386
containerManager: props.containerManager,
317387
field: props.metadata,
318388
columnName,
319-
newValue: rowData.id
389+
newValue: id
320390
})
321391
}
322392

src/components/ADempiere/FieldDefinition/FieldLocationAddress/locationAddressForm/regionsListField.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ import store from '@/store'
6262
import EmptyOptionSelect from '@/components/ADempiere/FieldDefinition/FieldSelect/emptyOptionSelect.vue'
6363
6464
// Utils and Helper Methods
65-
import { isEmptyValue } from '@/utils/ADempiere'
65+
import { isEmptyValue } from '@/utils/ADempiere/valueUtils'
6666
6767
export default defineComponent({
6868
name: 'RegionsListField',

src/utils/ADempiere/dictionary/field/locationAddress.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,29 @@ export const COLUMNNAME_Longitude = 'Longitude'
6262
*/
6363
export const MANDATORY_CHAR = '!'
6464

65+
/**
66+
* Generate displayed value from values
67+
* @param {Object} recordRow
68+
* @returns {String}
69+
*/
70+
export function generateDisplayedValue(recordRow) {
71+
const { display_value } = recordRow
72+
const displayValue = display_value
73+
if (!isEmptyValue(displayValue)) {
74+
return displayValue
75+
}
76+
77+
// TODO: Generate displayValue with display sequence
78+
// let displaySequence = store.getters.getDisplaySequence
79+
// const country = this.currentCountryDefinition
80+
// if (!isEmptyValue(country)) {
81+
// displaySequence = country.displaySequence
82+
// }
83+
// const locationDisplayedSequence = getSequenceAsList(displaySequence)
84+
85+
return displayValue
86+
}
87+
6588
/**
6689
* Use this function for get a list of sequence of capture for locations
6790
* TODO: Evaluate capture sequence by Germany "@A1@ @A2@ @A3@ @A4@ D-@P@ @R@ @C@ @CO@" with "D-" suffix in postal code

0 commit comments

Comments
 (0)