1
0
mirror of https://github.com/PanJiaChen/vue-element-admin.git synced 2025-08-13 07:04:21 +08:00

Bugfix/unnecessary field calls (#628)

* add complete order from collection

* call the edit line fields only when they are displayed

* unnecessary calling of customer fields

* minimal changes

Co-authored-by: Elsio Sanchez <elsiosanche@gmail.com>
This commit is contained in:
Elsio Sanchez 2021-03-04 21:33:42 -04:00 committed by GitHub
parent 383cd42a70
commit 472ffc523a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 483 additions and 208 deletions

View File

@ -9,8 +9,8 @@
class="create-bp" class="create-bp"
> >
<el-row :gutter="24"> <el-row :gutter="24">
<field-definition <field
v-for="(field) in fieldsList" v-for="(field) in metadataList"
:key="field.columnName" :key="field.columnName"
:metadata-field="field" :metadata-field="field"
/> />
@ -39,14 +39,21 @@
<script> <script>
import { requestCreateBusinessPartner } from '@/api/ADempiere/system-core.js' import { requestCreateBusinessPartner } from '@/api/ADempiere/system-core.js'
import formMixin from '@/components/ADempiere/Form/formMixin.js'
import fieldsList from './fieldsListCreate.js' import fieldsList from './fieldsListCreate.js'
import BParterMixin from './mixinBusinessPartner.js' import BParterMixin from './mixinBusinessPartner.js'
import {
// createFieldFromDefinition,
createFieldFromDictionary
} from '@/utils/ADempiere/lookupFactory'
import Field from '@/components/ADempiere/Field'
export default { export default {
name: 'BusinessPartnerCreate', name: 'BusinessPartnerCreate',
components: {
Field
},
mixins: [ mixins: [
formMixin, // formMixin,
BParterMixin BParterMixin
], ],
props: { props: {
@ -59,6 +66,11 @@ export default {
fieldsList fieldsList
} }
} }
},
showField: {
type: Boolean,
default: true
} }
}, },
data() { data() {
@ -67,6 +79,7 @@ export default {
isLoadingRecord: false, isLoadingRecord: false,
fieldsList, fieldsList,
isCustomForm: true, isCustomForm: true,
metadataList: [],
unsubscribe: () => {} unsubscribe: () => {}
} }
}, },
@ -79,10 +92,19 @@ export default {
return field return field
} }
}, },
watch: {
showField(value) {
if (value && this.isEmptyValue(this.metadataList)) {
this.setFieldsList()
}
}
},
beforeDestroy() { beforeDestroy() {
this.unsubscribe() this.unsubscribe()
}, },
// created()
methods: { methods: {
createFieldFromDictionary,
// TODO: Get locations values. // TODO: Get locations values.
createBusinessParter() { createBusinessParter() {
let values = this.$store.getters.getValuesView({ let values = this.$store.getters.getValuesView({
@ -188,6 +210,23 @@ export default {
value: undefined value: undefined
}] }]
}) })
},
setFieldsList() {
const list = []
// Product Code
this.fieldsList.forEach(element => {
this.createFieldFromDictionary(element)
.then(response => {
const data = response
list.push({
...data,
containerUuid: 'Business-Partner-Create'
})
}).catch(error => {
console.warn(`LookupFactory: Get Field From Server (State) - Error ${error.code}: ${error.message}.`)
})
})
this.metadataList = list
} }
} }
} }

View File

@ -17,8 +17,8 @@
size="small" size="small"
> >
<el-row> <el-row>
<field-definition <field
v-for="(field) in fieldsList" v-for="(field) in metadataList"
:key="field.columnName" :key="field.columnName"
:metadata-field="field" :metadata-field="field"
/> />
@ -72,17 +72,22 @@
<script> <script>
import CustomPagination from '@/components/ADempiere/Pagination' import CustomPagination from '@/components/ADempiere/Pagination'
import formMixin from '@/components/ADempiere/Form/formMixin.js' import {
// createFieldFromDefinition,
createFieldFromDictionary
} from '@/utils/ADempiere/lookupFactory'
import fieldsList from './fieldsListSearch.js' import fieldsList from './fieldsListSearch.js'
import BParterMixin from './mixinBusinessPartner.js' import BParterMixin from './mixinBusinessPartner.js'
import Field from '@/components/ADempiere/Field'
export default { export default {
name: 'BusinessPartnersList', name: 'BusinessPartnersList',
components: { components: {
CustomPagination CustomPagination,
Field
}, },
mixins: [ mixins: [
formMixin, // formMixin,
BParterMixin BParterMixin
], ],
props: { props: {
@ -103,6 +108,10 @@ export default {
isShowList: false isShowList: false
} }
} }
},
showField: {
type: Boolean,
default: true
} }
}, },
data() { data() {
@ -110,6 +119,7 @@ export default {
isLoadedRecords: false, isLoadedRecords: false,
activeAccordion: 'query-criteria', activeAccordion: 'query-criteria',
fieldsList, fieldsList,
metadataList: [],
unsubscribe: () => {} unsubscribe: () => {}
} }
}, },
@ -130,6 +140,11 @@ export default {
if (isToLoad) { if (isToLoad) {
this.searchBPartnerList({}) this.searchBPartnerList({})
} }
},
showField(value) {
if (value && this.isEmptyValue(this.metadataList)) {
this.setFieldsList()
}
} }
}, },
created() { created() {
@ -143,6 +158,7 @@ export default {
this.unsubscribe() this.unsubscribe()
}, },
methods: { methods: {
createFieldFromDictionary,
keyAction(event) { keyAction(event) {
switch (event.srcKey) { switch (event.srcKey) {
case 'refreshList': { case 'refreshList': {
@ -192,6 +208,23 @@ export default {
.finally(() => { .finally(() => {
this.isLoadedRecords = true this.isLoadedRecords = true
}) })
},
setFieldsList() {
const list = []
// Product Code
this.fieldsList.forEach(element => {
this.createFieldFromDictionary(element)
.then(response => {
const data = response
list.push({
...data,
containerUuid: 'Business-Partner-List'
})
}).catch(error => {
console.warn(`LookupFactory: Get Field From Server (State) - Error ${error.code}: ${error.message}.`)
})
})
this.metadataList = list
} }
} }
} }

View File

@ -3,14 +3,47 @@
<el-form-item> <el-form-item>
<template slot="label"> <template slot="label">
{{ $t('form.pos.order.BusinessPartnerCreate.businessPartner') }} {{ $t('form.pos.order.BusinessPartnerCreate.businessPartner') }}
<i <el-popover
v-popover:businessPartnerCreate placement="right"
class="el-icon-circle-plus" width="400"
/> trigger="click"
<i @hide="showFieldCreate = !showFieldCreate"
v-popover:businessPartnersList >
class="el-icon-search" <business-partner-create
/> :parent-metadata="parentMetadata"
:show-field="showFieldCreate"
/>
<el-button
slot="reference"
type="text"
@click="showFieldCreate = !showFieldCreate"
>
<i
class="el-icon-circle-plus"
/>
</el-button>
</el-popover>
<el-popover
placement="right"
width="800"
trigger="click"
@hide="showFieldList = !showFieldList"
>
<business-partners-list
:parent-metadata="parentMetadata"
:shows-popovers="showsPopovers"
:show-field="showFieldList"
/>
<el-button
slot="reference"
type="text"
@click="showFieldList = !showFieldList"
>
<i
class="el-icon-search"
/>
</el-button>
</el-popover>
</template> </template>
<el-autocomplete <el-autocomplete
@ -45,32 +78,7 @@
</template> </template>
</el-autocomplete> </el-autocomplete>
</el-form-item> </el-form-item>
<el-popover
ref="businessPartnerCreate"
v-model="showsPopovers.isShowCreate"
placement="right"
width="400"
trigger="click"
>
<business-partner-create
v-if="showsPopovers.isShowCreate"
:parent-metadata="parentMetadata"
:shows-popovers="showsPopovers"
/>
</el-popover>
<el-popover
ref="businessPartnersList"
v-model="showsPopovers.isShowList"
placement="right"
width="800"
trigger="click"
>
<business-partners-list
:parent-metadata="parentMetadata"
:shows-popovers="showsPopovers"
/>
</el-popover>
</div> </div>
</template> </template>
@ -81,6 +89,7 @@
*/ */
import { requestGetBusinessPartner } from '@/api/ADempiere/system-core.js' import { requestGetBusinessPartner } from '@/api/ADempiere/system-core.js'
import BusinessPartnerCreate from './businessPartnerCreate' import BusinessPartnerCreate from './businessPartnerCreate'
// import FieldListBusinessPartner from './fieldBusinessPartners/index'
import BusinessPartnersList from './businessPartnersList' import BusinessPartnersList from './businessPartnersList'
import BParterMixin from './mixinBusinessPartner.js' import BParterMixin from './mixinBusinessPartner.js'
const { setBusinessPartner } = BParterMixin.methods const { setBusinessPartner } = BParterMixin.methods
@ -92,6 +101,7 @@ export default {
components: { components: {
BusinessPartnerCreate, BusinessPartnerCreate,
BusinessPartnersList BusinessPartnersList
// FieldListBusinessPartner
}, },
props: { props: {
parentMetadata: { parentMetadata: {
@ -111,7 +121,9 @@ export default {
data() { data() {
return { return {
controlDisplayed: this.displayedValue, controlDisplayed: this.displayedValue,
timeOut: null timeOut: null,
showFieldCreate: false,
showFieldList: false
} }
}, },
computed: { computed: {

View File

@ -33,18 +33,33 @@
width="800" width="800"
trigger="click" trigger="click"
@show="seeOrderList" @show="seeOrderList"
@hide="showFieldListOrder = !showFieldListOrder"
> >
<orders-list <orders-list
:parent-metadata="metadata" :parent-metadata="metadata"
:show-field="showFieldListOrder"
/> />
<p <p
slot="reference" slot="reference"
:style="blockOption" :style="blockOption"
>
<el-button
type="text"
@click="showFieldListOrder = !showFieldListOrder"
>
<svg-icon icon-class="list" />
<br>
{{ $t('form.pos.optionsPoinSales.salesOrder.ordersHistory') }}
</el-button>
</p>
<!-- <p
slot="reference"
:style="blockOption"
> >
<svg-icon icon-class="list" /> <svg-icon icon-class="list" />
<br> <br>
{{ $t('form.pos.optionsPoinSales.salesOrder.ordersHistory') }} {{ $t('form.pos.optionsPoinSales.salesOrder.ordersHistory') }}
</p> </p> -->
</el-popover> </el-popover>
</el-card> </el-card>
</el-col> </el-col>
@ -286,7 +301,8 @@ export default {
data() { data() {
return { return {
activeName: '', activeName: '',
processPos: '' processPos: '',
showFieldListOrder: false
} }
}, },
computed: { computed: {

View File

@ -12,75 +12,75 @@ export default [
handleActionPerformed: true, handleActionPerformed: true,
handleActionKeyPerformed: true handleActionKeyPerformed: true
} }
},
{
elementColumnName: 'QtyEntered',
columnName: 'QtyEntered',
tabindex: '2',
isFromDictionary: true,
overwriteDefinition: {
size: 24,
sequence: 8,
handleActionPerformed: true,
handleContentSelection: true,
handleActionKeyPerformed: true
}
},
{
elementColumnName: 'PriceEntered',
columnName: 'PriceEntered',
tabindex: '3',
isFromDictionary: true,
overwriteDefinition: {
size: 24,
sequence: 9,
isReadOnly: true,
handleActionPerformed: true,
handleContentSelection: true,
handleActionKeyPerformed: true
}
},
{
elementColumnName: 'Discount',
columnName: 'Discount',
tabindex: '4',
isFromDictionary: true,
overwriteDefinition: {
size: 24,
sequence: 10,
isReadOnly: true,
handleActionPerformed: true,
handleContentSelection: true,
handleActionKeyPerformed: true
}
},
{
tableName: 'C_Order',
columnName: 'C_Currency_ID',
isFromDictionary: true,
overwriteDefinition: {
size: 24,
handleActionKeyPerformed: true,
handleActionPerformed: true,
validationCode: 'C_Currency.C_Currency_ID = 100',
isActiveLogics: false,
isMandatory: true
}
},
// TenderType
{
tableName: 'C_Payment',
elementColumnName: 'TenderType',
columnName: 'TenderType',
isFromDictionary: true,
overwriteDefinition: {
defaultValue: 'X',
handleActionKeyPerformed: true,
handleContentSelection: true,
handleActionPerformed: true,
size: 24,
isActiveLogics: false,
isMandatory: true
}
} }
// {
// elementColumnName: 'QtyEntered',
// columnName: 'QtyEntered',
// tabindex: '2',
// isFromDictionary: true,
// overwriteDefinition: {
// size: 24,
// sequence: 8,
// handleActionPerformed: true,
// handleContentSelection: true,
// handleActionKeyPerformed: true
// }
// },
// {
// elementColumnName: 'PriceEntered',
// columnName: 'PriceEntered',
// tabindex: '3',
// isFromDictionary: true,
// overwriteDefinition: {
// size: 24,
// sequence: 9,
// isReadOnly: true,
// handleActionPerformed: true,
// handleContentSelection: true,
// handleActionKeyPerformed: true
// }
// },
// {
// elementColumnName: 'Discount',
// columnName: 'Discount',
// tabindex: '4',
// isFromDictionary: true,
// overwriteDefinition: {
// size: 24,
// sequence: 10,
// isReadOnly: true,
// handleActionPerformed: true,
// handleContentSelection: true,
// handleActionKeyPerformed: true
// }
// },
// {
// tableName: 'C_Order',
// columnName: 'C_Currency_ID',
// isFromDictionary: true,
// overwriteDefinition: {
// size: 24,
// handleActionKeyPerformed: true,
// handleActionPerformed: true,
// validationCode: 'C_Currency.C_Currency_ID = 100',
// isActiveLogics: false,
// isMandatory: true
// }
// },
// // TenderType
// {
// tableName: 'C_Payment',
// elementColumnName: 'TenderType',
// columnName: 'TenderType',
// isFromDictionary: true,
// overwriteDefinition: {
// defaultValue: 'X',
// handleActionKeyPerformed: true,
// handleContentSelection: true,
// handleActionPerformed: true,
// size: 24,
// isActiveLogics: false,
// isMandatory: true
// }
// }
] ]

View File

@ -137,49 +137,18 @@
placement="right" placement="right"
trigger="click" trigger="click"
:title="$t('form.pos.tableProduct.editQuantities')" :title="$t('form.pos.tableProduct.editQuantities')"
width="600"
@hide="showFieldLine = !showFieldLine"
> >
<el-row> <field-line
<el-col :span="8"> :data-line="scope.row"
<el-form label-position="top" label-width="10px" @submit.native.prevent="notSubmitForm"> :show-field="showFieldLine"
<template />
v-for="(field) in fieldsList" <el-button
> slot="reference"
<field-definition type="text"
v-if="field.columnName === 'PriceEntered'" @click="showFieldLine = !showFieldLine"
:key="field.columnName" >
:metadata-field="field"
/>
</template>
</el-form>
</el-col>
<el-col :span="8">
<el-form label-position="top" label-width="10px" @submit.native.prevent="notSubmitForm">
<template
v-for="(field) in fieldsList"
>
<field-definition
v-if="field.columnName === 'QtyEntered'"
:key="field.columnName"
:metadata-field="field"
/>
</template>
</el-form>
</el-col>
<el-col :span="8">
<el-form label-position="top" label-width="10px" @submit.native.prevent="notSubmitForm">
<template
v-for="(field) in fieldsList"
>
<field-definition
v-if="field.columnName === 'Discount'"
:key="field.columnName"
:metadata-field="field"
/>
</template>
</el-form>
</el-col>
</el-row>
<el-button slot="reference" type="text">
<i class="el-icon-edit" /> {{ $t('form.pos.tableProduct.editQuantities') }} <i class="el-icon-edit" /> {{ $t('form.pos.tableProduct.editQuantities') }}
</el-button> </el-button>
</el-popover> </el-popover>
@ -310,6 +279,7 @@ import orderLineMixin from './orderLineMixin.js'
import fieldsListOrder from './fieldsListOrder.js' import fieldsListOrder from './fieldsListOrder.js'
import posMixin from '@/components/ADempiere/Form/VPOS/posMixin.js' import posMixin from '@/components/ADempiere/Form/VPOS/posMixin.js'
import BusinessPartner from '@/components/ADempiere/Form/VPOS/BusinessPartner' import BusinessPartner from '@/components/ADempiere/Form/VPOS/BusinessPartner'
import fieldLine from '@/components/ADempiere/Form/VPOS/Order/line/index'
import ProductInfo from '@/components/ADempiere/Form/VPOS/ProductInfo' import ProductInfo from '@/components/ADempiere/Form/VPOS/ProductInfo'
import convertAmount from '@/components/ADempiere/Form/VPOS/Collection/convertAmount/index' import convertAmount from '@/components/ADempiere/Form/VPOS/Collection/convertAmount/index'
@ -318,7 +288,8 @@ export default {
components: { components: {
BusinessPartner, BusinessPartner,
ProductInfo, ProductInfo,
convertAmount convertAmount,
fieldLine
}, },
mixins: [ mixins: [
formMixin, formMixin,
@ -328,7 +299,8 @@ export default {
data() { data() {
return { return {
fieldsList: fieldsListOrder, fieldsList: fieldsListOrder,
seeConversion: false seeConversion: false,
showFieldLine: false
} }
}, },
computed: { computed: {
@ -461,9 +433,9 @@ export default {
if (!this.isEmptyValue(this.$route.query.action)) { if (!this.isEmptyValue(this.$route.query.action)) {
this.$store.dispatch('reloadOrder', { orderUuid: this.$route.query.action }) this.$store.dispatch('reloadOrder', { orderUuid: this.$route.query.action })
} }
setTimeout(() => { // setTimeout(() => {
this.currencyDisplaye() // this.currencyDisplaye()
}, 1500) // }, 1500)
}, },
methods: { methods: {
changePos(posElement) { changePos(posElement) {
@ -532,34 +504,34 @@ export default {
if (!this.seeConversion) { if (!this.seeConversion) {
this.seeConversion = true this.seeConversion = true
} }
}, // },
tenderTypeDisplaye() { // tenderTypeDisplaye() {
if (!this.isEmptyValue(this.fieldsList)) { // if (!this.isEmptyValue(this.fieldsList)) {
const tenderType = this.fieldsList[5].reference // const tenderType = this.fieldsList[5].reference
if (!this.isEmptyValue(tenderType)) { // if (!this.isEmptyValue(tenderType)) {
this.$store.dispatch('getLookupListFromServer', { // this.$store.dispatch('getLookupListFromServer', {
tableName: tenderType.tableName, // tableName: tenderType.tableName,
query: tenderType.query // query: tenderType.query
}) // })
.then(response => { // .then(response => {
this.$store.dispatch('tenderTypeDisplaye', response) // this.$store.dispatch('tenderTypeDisplaye', response)
}) // })
} // }
} // }
}, // },
currencyDisplaye() { // currencyDisplaye() {
if (!this.isEmptyValue(this.fieldsList)) { // if (!this.isEmptyValue(this.fieldsList)) {
const currency = this.fieldsList[4].reference // const currency = this.fieldsList[4].reference
if (!this.isEmptyValue(currency)) { // if (!this.isEmptyValue(currency)) {
this.$store.dispatch('getLookupListFromServer', { // this.$store.dispatch('getLookupListFromServer', {
tableName: currency.tableName, // tableName: currency.tableName,
query: currency.query // query: currency.query
}) // })
.then(response => { // .then(response => {
this.$store.dispatch('currencyDisplaye', response) // this.$store.dispatch('currencyDisplaye', response)
}) // })
} // }
} // }
} }
} }
} }

View File

@ -0,0 +1,40 @@
export default [
{
elementColumnName: 'PriceEntered',
columnName: 'PriceEntered',
isFromDictionary: true,
overwriteDefinition: {
size: 24,
sequence: 8,
isReadOnly: true,
handleActionPerformed: true,
handleContentSelection: true,
handleActionKeyPerformed: true
}
},
{
elementColumnName: 'QtyEntered',
columnName: 'QtyEntered',
isFromDictionary: true,
overwriteDefinition: {
size: 24,
sequence: 9,
handleActionPerformed: true,
handleContentSelection: true,
handleActionKeyPerformed: true
}
},
{
elementColumnName: 'Discount',
columnName: 'Discount',
isFromDictionary: true,
overwriteDefinition: {
size: 24,
sequence: 10,
isReadOnly: true,
handleActionPerformed: true,
handleContentSelection: true,
handleActionKeyPerformed: true
}
}
]

View File

@ -0,0 +1,132 @@
<template>
<div class="wrapper">
<el-row
v-if="!isEmptyValue(metadataList)"
>
<template
v-for="(field, index) in metadataList"
>
<el-col :key="index" :span="8">
<el-form label-position="top" label-width="10px" @submit.native.prevent="notSubmitForm">
<field
:key="field.columnName"
:metadata-field="field"
/>
</el-form>
</el-col>
</template>
</el-row>
<div
v-else
key="form-loading"
v-loading="isEmptyValue(metadataList)"
:element-loading-text="$t('notifications.loading')"
:element-loading-spinner="'el-icon-loading'"
element-loading-background="rgba(255, 255, 255, 0.8)"
class="view-loading"
/>
</div>
</template>
<script>
import {
// createFieldFromDefinition,
createFieldFromDictionary
} from '@/utils/ADempiere/lookupFactory'
import fieldsListLine from './fieldsListLine.js'
import Field from '@/components/ADempiere/Field'
export default {
name: 'FieldLine',
components: {
Field
},
props: {
dataLine: {
type: Object,
default: () => {}
},
showField: {
type: Boolean,
default: true
}
},
data() {
return {
metadataList: [],
panelMetadata: {},
isLoaded: false,
panelType: 'custom',
fieldsListLine
}
},
watch: {
showField(value) {
if (value && this.isEmptyValue(this.metadataList)) {
this.setFieldsList()
}
if (value) {
this.fillOrderLineQuantities({
currentPrice: this.dataLine.price,
quantityOrdered: this.dataLine.quantity,
discount: this.dataLine.discountRate
})
}
}
},
methods: {
createFieldFromDictionary,
notSubmitForm(event) {
event.preventDefault()
return false
},
setFieldsList() {
const fieldsList = []
// Product Code
this.fieldsListLine.forEach(element => {
this.createFieldFromDictionary(element)
.then(metadata => {
const data = metadata
fieldsList.push({
...data,
containerUuid: 'line'
})
}).catch(error => {
console.warn(`LookupFactory: Get Field From Server (State) - Error ${error.code}: ${error.message}.`)
})
})
this.metadataList = fieldsList
},
fillOrderLineQuantities({
currentPrice,
quantityOrdered,
discount
}) {
const containerUuid = 'line'
// Editable fields
if (!this.isEmptyValue(quantityOrdered)) {
this.$store.commit('updateValueOfField', {
containerUuid: 'line',
columnName: 'QtyEntered',
value: quantityOrdered
})
}
if (!this.isEmptyValue(currentPrice)) {
this.$store.commit('updateValueOfField', {
containerUuid,
columnName: 'PriceEntered',
value: currentPrice
})
}
if (!this.isEmptyValue(discount)) {
this.$store.commit('updateValueOfField', {
containerUuid,
columnName: 'Discount',
value: discount
})
}
}
}
}
</script>

View File

@ -9,15 +9,15 @@
Ver Histórico de Órdenes Ver Histórico de Órdenes
</template> </template>
<el-form <el-form
v-if="isLoaded" v-if="!isEmptyValue(metadataList)"
label-position="top" label-position="top"
label-width="10px" label-width="10px"
@submit.native.prevent="notSubmitForm" @submit.native.prevent="notSubmitForm"
> >
<template <template
v-for="(field) in fieldsList" v-for="(field) in metadataList"
> >
<field-definition <field
:key="field.columnName" :key="field.columnName"
:metadata-field="field" :metadata-field="field"
/> />
@ -26,7 +26,7 @@
<div <div
v-else v-else
key="form-loading" key="form-loading"
v-loading="!isLoaded" v-loading="isEmptyValue(metadataList)"
:element-loading-text="$t('notifications.loading')" :element-loading-text="$t('notifications.loading')"
element-loading-spinner="el-icon-loading" element-loading-spinner="el-icon-loading"
element-loading-background="rgba(255, 255, 255, 0.8)" element-loading-background="rgba(255, 255, 255, 0.8)"
@ -109,22 +109,23 @@
</template> </template>
<script> <script>
import formMixin from '@/components/ADempiere/Form/formMixin.js'
import CustomPagination from '@/components/ADempiere/Pagination' import CustomPagination from '@/components/ADempiere/Pagination'
import fieldsListOrders from './fieldsListOrders.js' import fieldsListOrders from './fieldsListOrders.js'
import {
createFieldFromDictionary
} from '@/utils/ADempiere/lookupFactory'
import { import {
formatDate, formatDate,
formatQuantity formatQuantity
} from '@/utils/ADempiere/valueFormat.js' } from '@/utils/ADempiere/valueFormat.js'
import Field from '@/components/ADempiere/Field'
export default { export default {
name: 'OrdersList', name: 'OrdersList',
components: { components: {
CustomPagination CustomPagination,
Field
}, },
mixins: [
formMixin
],
props: { props: {
metadata: { metadata: {
type: Object, type: Object,
@ -134,12 +135,17 @@ export default {
containerUuid: 'Orders-List' containerUuid: 'Orders-List'
} }
} }
},
showField: {
type: Boolean,
default: false
} }
}, },
data() { data() {
return { return {
defaultMaxPagination: 50, defaultMaxPagination: 50,
fieldsList: fieldsListOrders, fieldsList: fieldsListOrders,
metadataList: [],
isCustomForm: true, isCustomForm: true,
activeAccordion: 'query-criteria', activeAccordion: 'query-criteria',
timeOut: null timeOut: null
@ -177,8 +183,8 @@ export default {
return null return null
}, },
isReadyFromGetData() { isReadyFromGetData() {
const { isLoaded, isReload } = this.tableOrder const { isReload } = this.tableOrder
return !isLoaded || isReload return isReload
}, },
shortsKey() { shortsKey() {
return { return {
@ -187,13 +193,13 @@ export default {
} }
} }
}, },
// watch: { watch: {
// isReadyFromGetData(isToLoad) { showField(value) {
// if (isToLoad) { if (value && this.isEmptyValue(this.metadataList)) {
// this.loadOrdersList() this.setFieldsList()
// } }
// } }
// }, },
created() { created() {
this.unsubscribe = this.subscribeChanges() this.unsubscribe = this.subscribeChanges()
if (this.isReadyFromGetData) { if (this.isReadyFromGetData) {
@ -206,6 +212,7 @@ export default {
methods: { methods: {
formatDate, formatDate,
formatQuantity, formatQuantity,
createFieldFromDictionary,
keyAction(event) { keyAction(event) {
switch (event.srcKey) { switch (event.srcKey) {
case 'refreshList': case 'refreshList':
@ -319,6 +326,23 @@ export default {
value: row.id value: row.id
}] }]
this.$store.dispatch('addParametersProcessPos', parametersList) this.$store.dispatch('addParametersProcessPos', parametersList)
},
setFieldsList() {
const list = []
// Product Code
this.fieldsList.forEach(element => {
this.createFieldFromDictionary(element)
.then(response => {
const data = response
list.push({
...data,
containerUuid: 'Orders-List'
})
}).catch(error => {
console.warn(`LookupFactory: Get Field From Server (State) - Error ${error.code}: ${error.message}.`)
})
})
this.metadataList = list
} }
} }
} }

View File

@ -140,6 +140,13 @@ export default {
if (this.isReadyFromGetData) { if (this.isReadyFromGetData) {
this.loadProductsPricesList() this.loadProductsPricesList()
} }
if (this.isEmptyValue(this.listWithPrice)) {
this.$store.dispatch('listProductPriceFromServer', {
containerUuid: 'Products-Price-List',
pageNumber: 1,
searchValue: ''
})
}
}, },
beforeDestroy() { beforeDestroy() {
this.unsubscribe() this.unsubscribe()