diff --git a/src/components/ADempiere/DataTable/index.vue b/src/components/ADempiere/DataTable/index.vue index b01e79e7..158e6f9b 100644 --- a/src/components/ADempiere/DataTable/index.vue +++ b/src/components/ADempiere/DataTable/index.vue @@ -2,7 +2,7 @@ - + { + if (index === 0) { + sums[index] = 'Σ' + return + } + const field = this.fieldList.find(field => field.columnName === column.property) + if (field.componentPath !== 'FieldNumber') { + sums[index] = '' + return + } + const values = data.map(item => Number(item[column.property])) + if (values.every(value => isNaN(value))) { + sums[index] = '' + } else { + const total = values.reduce((prev, curr) => { + const value = Number(curr) + if (!isNaN(value)) { + return prev + curr + } + return prev + }, 0) + sums[index] = this.formatNumber({ referenceType: field.referenceType, number: total }) + } + }) + + return sums + }, + formatNumber({ referenceType, number }) { + let fixed = 0 + if (['Amount', 'Costs+Prices', 'Number'].includes(referenceType)) { + fixed = 2 + } + return new Intl.NumberFormat().format(number.toFixed(fixed)) + }, handleChangePage(newPage) { this.$store.dispatch('setPageNumber', { parentUuid: this.parentUuid, @@ -913,7 +957,7 @@ export default { text-overflow: ellipsis; white-space: nowrap; word-break: break-all; - line-height: 50px; + line-height: 23px; padding-left: 10px; padding-right: 10px; } diff --git a/src/components/ADempiere/Field/FieldNumber.vue b/src/components/ADempiere/Field/FieldNumber.vue index a01ddbe0..8df188c3 100644 --- a/src/components/ADempiere/Field/FieldNumber.vue +++ b/src/components/ADempiere/Field/FieldNumber.vue @@ -51,7 +51,7 @@ export default { .join('-').toLowerCase() }, precision() { - if (['Number', 'Amount'].includes()) { + if (['Amount', 'Costs+Prices', 'Number'].includes(this.metadata.referenceType)) { return 2 } return undefined