237 lines
7.1 KiB
Vue
237 lines
7.1 KiB
Vue
<!--
|
|
ADempiere-Vue (Frontend) for ADempiere ERP & CRM Smart Business Solution
|
|
Copyright (C) 2017-Present E.R.P. Consultores y Asociados, C.A.
|
|
Contributor(s): Yamel Senih ysenih@erpya.com www.erpya.com
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <https:www.gnu.org/licenses/>.
|
|
-->
|
|
<template>
|
|
<el-card class="box-card">
|
|
<div slot="header" class="clearfix">
|
|
<span>
|
|
<b>
|
|
{{ $t('form.pos.collect.convertAmount') }}:
|
|
{{ formatPrice(amount / dayRate.divideRate, dayRate.iSOCode) }}
|
|
</b>
|
|
</span>
|
|
</div>
|
|
<div class="text item">
|
|
<el-row>
|
|
<el-col :span="24">
|
|
<el-form
|
|
label-position="top"
|
|
label-width="10px"
|
|
style="float: right; display: flex; line-height: 10px;"
|
|
>
|
|
<el-form-item :label="fieldsList[0].name">
|
|
<el-select
|
|
v-model="currentFieldCurrency"
|
|
:placeholder="fieldsList[0].help"
|
|
@change="changeCurrency"
|
|
>
|
|
<el-option
|
|
v-for="item in listCurrency"
|
|
:key="item.id"
|
|
:label="item.name"
|
|
:value="item.key"
|
|
/>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-col>
|
|
</el-row>
|
|
</div>
|
|
</el-card>
|
|
</template>
|
|
<script>
|
|
import formMixin from '@/components/ADempiere/Form/formMixin'
|
|
import { formatPrice } from '@/utils/ADempiere/valueFormat.js'
|
|
import fieldsListConvertAmountCollection from './fieldsListConvertAmountCollection.js'
|
|
|
|
export default {
|
|
name: 'ConvertAmount',
|
|
mixins: [
|
|
formMixin
|
|
],
|
|
props: {
|
|
isAddTypePay: {
|
|
type: Array,
|
|
default: undefined
|
|
},
|
|
currency: {
|
|
type: Object,
|
|
default: undefined
|
|
},
|
|
amount: {
|
|
type: Number,
|
|
default: undefined
|
|
},
|
|
convert: {
|
|
type: Number,
|
|
default: undefined
|
|
},
|
|
metadata: {
|
|
type: Object,
|
|
default: () => {
|
|
return {
|
|
uuid: 'Collection-Convert-Amount',
|
|
containerUuid: 'Collection-Convert-Amount'
|
|
}
|
|
}
|
|
},
|
|
isOpen: {
|
|
type: Boolean,
|
|
default: false
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
fieldsList: fieldsListConvertAmountCollection,
|
|
amountConvertionTotal: this.amount,
|
|
currentFieldCurrency: '',
|
|
grandTotalConverted: {
|
|
divideRate: 1,
|
|
currencyTo: {
|
|
iSOCode: this.currency.iSOCode
|
|
}
|
|
}
|
|
}
|
|
},
|
|
computed: {
|
|
listCurrency() {
|
|
return this.$store.getters.getCurrenciesList
|
|
},
|
|
convertionsList() {
|
|
return this.$store.state['pointOfSales/point/index'].conversionsList
|
|
},
|
|
displayCurrency() {
|
|
return this.$store.getters.getValueOfField({
|
|
containerUuid: 'Collection-Convert-Amount',
|
|
columnName: 'DisplayColumn_C_Currency_ID'
|
|
})
|
|
},
|
|
typeCurrency() {
|
|
return this.$store.getters.getValueOfField({
|
|
containerUuid: 'Collection-Convert-Amount',
|
|
columnName: 'C_Currency_ID'
|
|
})
|
|
},
|
|
currencyUuid() {
|
|
return this.$store.getters.getValueOfField({
|
|
containerUuid: 'Collection-Convert-Amount',
|
|
columnName: 'C_Currency_ID_UUID'
|
|
})
|
|
},
|
|
currentPointOfSales() {
|
|
return this.$store.getters.posAttributes.currentPointOfSales
|
|
},
|
|
pointOfSalesCurrency() {
|
|
// const currency = this.currentPointOfSales
|
|
if (!this.isEmptyValue(this.currentPointOfSales.priceList)) {
|
|
return {
|
|
...this.currentPointOfSales.priceList.currency,
|
|
amountConvertion: 1
|
|
}
|
|
}
|
|
return {
|
|
uuid: '',
|
|
iSOCode: '',
|
|
curSymbol: '',
|
|
amountConvertion: 1
|
|
}
|
|
},
|
|
dayRate() {
|
|
if (this.isEmptyValue(this.currentFieldCurrency)) {
|
|
return {
|
|
currencyTo: this.currentPointOfSales.currentPriceList.currency,
|
|
divideRate: 1,
|
|
iSOCode: this.currency.iSOCode
|
|
}
|
|
}
|
|
const currency = this.listCurrency.find(currency => currency.key === this.currentFieldCurrency)
|
|
const convert = this.convertionsList.find(convert => {
|
|
if (!this.isEmptyValue(currency) &&
|
|
!this.isEmptyValue(convert.currencyTo) &&
|
|
currency.id === convert.currencyTo.id &&
|
|
this.currentPointOfSales.currentPriceList.currency.id !== currency.id
|
|
) {
|
|
return convert
|
|
}
|
|
})
|
|
if (!this.isEmptyValue(convert)) {
|
|
return convert
|
|
}
|
|
return {
|
|
currencyTo: this.currentPointOfSales.currentPriceList.currency,
|
|
divideRate: 1,
|
|
iSOCode: this.currency.iSOCode
|
|
}
|
|
}
|
|
},
|
|
created() {
|
|
this.defaultValueCurrency()
|
|
},
|
|
methods: {
|
|
formatPrice,
|
|
formatDate(date) {
|
|
let month = '' + (date.getMonth() + 1)
|
|
let day = '' + date.getDate()
|
|
const year = date.getFullYear()
|
|
if (month.length < 2) {
|
|
month = '0' + month
|
|
}
|
|
if (day.length < 2) {
|
|
day = '0' + day
|
|
}
|
|
return [year, month, day].join('-')
|
|
},
|
|
defaultValueCurrency() {
|
|
this.$store.commit('updateValueOfField', {
|
|
containerUuid: this.containerUuid,
|
|
columnName: 'DisplayColumn_C_Currency_ID',
|
|
value: this.currency.iSOCode
|
|
})
|
|
this.$store.commit('updateValueOfField', {
|
|
containerUuid: this.containerUuid,
|
|
columnName: 'C_Currency_ID',
|
|
value: this.currency.id
|
|
})
|
|
},
|
|
amountConvert(currency) {
|
|
this.$store.dispatch('searchConversion', {
|
|
conversionTypeUuid: this.currentPointOfSales.conversionTypeUuid,
|
|
currencyFromUuid: this.currentPointOfSales.priceList.currency.uuid,
|
|
currencyToUuid: currency.uuid
|
|
})
|
|
},
|
|
changeCurrency(value) {
|
|
this.currentFieldCurrency = value
|
|
const currency = this.listCurrency.find(currency => currency.key === value)
|
|
const convert = this.convertionsList.find(convert => {
|
|
if (!this.isEmptyValue(currency) && !this.isEmptyValue(convert.currencyTo) && currency.id === convert.currencyTo.id && this.currentPointOfSales.currentPriceList.currency.id !== currency.id) {
|
|
return convert
|
|
}
|
|
})
|
|
this.grandTotalConverted = convert
|
|
if (!this.isEmptyValue(currency) && this.isEmptyValue(convert) && currency.uuid !== this.currentPointOfSales.currentPriceList.currency.uuid) {
|
|
this.$store.dispatch('searchConversion', {
|
|
conversionTypeUuid: this.currentPointOfSales.conversionTypeUuid,
|
|
currencyFromUuid: this.currentPointOfSales.priceList.currency.uuid,
|
|
currencyToUuid: currency.uuid
|
|
})
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|