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:
parent
383cd42a70
commit
472ffc523a
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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: {
|
||||||
|
@ -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: {
|
||||||
|
@ -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
|
||||||
|
// }
|
||||||
|
// }
|
||||||
]
|
]
|
||||||
|
@ -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)
|
||||||
})
|
// })
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
132
src/components/ADempiere/Form/VPOS/Order/line/index.vue
Normal file
132
src/components/ADempiere/Form/VPOS/Order/line/index.vue
Normal 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>
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user