1
0
mirror of https://github.com/PanJiaChen/vue-element-admin.git synced 2025-08-10 12:01:57 +08:00

- Validate POS options (#1085)

- Fixe Delete Line Service

Co-authored-by: elsiosanchez <elsiossanches@gmail.com>
This commit is contained in:
Elsio Sanchez 2021-08-19 23:19:11 -04:00 committed by GitHub
parent 11aaab3b35
commit 342464d3c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 150 additions and 21 deletions

View File

@ -28,7 +28,6 @@
<el-form> <el-form>
<el-form-item> <el-form-item>
<el-radio v-model="option" :label="1"> {{ $t('form.pos.collect.overdrawnInvoice.returned') }} {{ formatPrice(change, currency.iSOCode) }} </el-radio> <el-radio v-model="option" :label="1"> {{ $t('form.pos.collect.overdrawnInvoice.returned') }} {{ formatPrice(change, currency.iSOCode) }} </el-radio>
<el-radio v-model="option" :label="2"> {{ $t('form.pos.collect.overdrawnInvoice.coupon') }}</el-radio>
<el-radio v-model="option" :label="3"> {{ $t('form.pos.collect.overdrawnInvoice.returnMoney') }}</el-radio> <el-radio v-model="option" :label="3"> {{ $t('form.pos.collect.overdrawnInvoice.returnMoney') }}</el-radio>
<el-radio v-model="option" :label="4"> {{ $t('form.pos.collect.overdrawnInvoice.adjustDocument') }}</el-radio> <el-radio v-model="option" :label="4"> {{ $t('form.pos.collect.overdrawnInvoice.adjustDocument') }}</el-radio>
</el-form-item> </el-form-item>

View File

@ -77,7 +77,7 @@
<el-card shadow="hover"> <el-card shadow="hover">
<p <p
:style="blockOption" :style="blockOption"
@click="generateImmediateInvoice" @click="adviserPin ? validateOption($t('form.pos.optionsPoinSales.salesOrder.generateImmediateInvoice')) : generateImmediateInvoice"
> >
<i class="el-icon-document-add" /> <i class="el-icon-document-add" />
<br> <br>
@ -90,7 +90,7 @@
<el-card shadow="hover"> <el-card shadow="hover">
<p <p
:style="blockOption" :style="blockOption"
@click="adviserPin ? '' : completePreparedOrder" @click="adviserPin ? validateOption($t('form.pos.optionsPoinSales.salesOrder.completePreparedOrder')) : completePreparedOrder"
> >
<i class="el-icon-success" /> <i class="el-icon-success" />
<br> <br>
@ -103,7 +103,7 @@
<el-card shadow="hover"> <el-card shadow="hover">
<p <p
:style="blockOption" :style="blockOption"
@click="adviserPin ? '' : reverseSalesTransaction" @click="adviserPin ? validateOption($t('form.pos.optionsPoinSales.salesOrder.cancelSaleTransaction')) : reverseSalesTransaction"
> >
<i class="el-icon-error" /> <i class="el-icon-error" />
<br> <br>
@ -116,7 +116,7 @@
<el-card shadow="hover"> <el-card shadow="hover">
<p <p
:style="blockOption" :style="blockOption"
@click="withdrawal" @click="adviserPin ? validateOption($t('form.pos.optionsPoinSales.salesOrder.createPos')) : withdrawal"
> >
<i class="el-icon-document-remove" /> <i class="el-icon-document-remove" />
<br> <br>
@ -129,7 +129,7 @@
<el-card shadow="hover"> <el-card shadow="hover">
<p <p
:style="blockOption" :style="blockOption"
@click="adviserPin ? '' : printOrder" @click="adviserPin ? validateOption($t('form.pos.optionsPoinSales.salesOrder.print')) : printOrder"
> >
<i class="el-icon-printer" /> <i class="el-icon-printer" />
<br> <br>
@ -141,7 +141,7 @@
<el-card shadow="hover"> <el-card shadow="hover">
<p <p
:style="blockOption" :style="blockOption"
@click="createNewCustomerReturnOrder" @click="adviserPin ? validateOption('Crear Nueva Orden de Devolución') : createNewCustomerReturnOrder"
> >
<i class="el-icon-refresh-left" /> <i class="el-icon-refresh-left" />
<br> <br>
@ -153,7 +153,7 @@
<el-card shadow="hover"> <el-card shadow="hover">
<p <p
:style="blockOption" :style="blockOption"
@click="copyOrder " @click="adviserPin ? validateOption($t('form.pos.optionsPoinSales.salesOrder.copyOrder')) : copyOrder "
> >
<i class="el-icon-document-copy" /> <i class="el-icon-document-copy" />
<br> <br>
@ -165,7 +165,7 @@
<el-card shadow="hover"> <el-card shadow="hover">
<p <p
:style="blockOption" :style="blockOption"
@click="deleteOrder" @click="adviserPin ? validateOption($t('form.pos.optionsPoinSales.salesOrder.cancelOrder')) : deleteOrder"
> >
<i class="el-icon-close" /> <i class="el-icon-close" />
<br> <br>
@ -219,7 +219,7 @@
<el-row :gutter="24" style="padding-right: 10px;"> <el-row :gutter="24" style="padding-right: 10px;">
<el-col :span="size"> <el-col :span="size">
<el-card shadow="hover"> <el-card shadow="hover">
<el-dropdown trigger="click" style="padding-top: 8px;color: black;display: block;" @command="changePos"> <el-dropdown trigger="click" style="padding-top: 8px;color: black;display: block;" @command="adviserPin ? validateOption($t('form.pos.optionsPoinSales.generalOptions.changePos')) : changePos">
<p <p
style="cursor: pointer;text-align: center !important;color: black;min-height: 50px;margin: 0px;" style="cursor: pointer;text-align: center !important;color: black;min-height: 50px;margin: 0px;"
> >
@ -311,6 +311,29 @@
</el-row> </el-row>
</el-collapse-item> </el-collapse-item>
</el-collapse> </el-collapse>
<el-dialog ref="dialog" :title="$t('form.pos.pinMessage.pin') + attributePin.label" width="40%" :visible.sync="visible">
<el-input
id="pin"
ref="pin"
v-model="pin"
:autofocus="true"
type="password"
:placeholder="$t('form.pos.tableProduct.pin')"
:focus="true"
/>
<span style="float: right;">
<el-button
type="danger"
icon="el-icon-close"
@click="closePin"
/>
<el-button
type="primary"
icon="el-icon-check"
@click="openPin(pin)"
/>
</span>
</el-dialog>
</div> </div>
</template> </template>
@ -327,6 +350,7 @@ import {
createOrder, createOrder,
processOrder processOrder
} from '@/api/ADempiere/form/point-of-sales.js' } from '@/api/ADempiere/form/point-of-sales.js'
import { validatePin } from '@/api/ADempiere/form/point-of-sales.js'
import ModalDialog from '@/components/ADempiere/Dialog' import ModalDialog from '@/components/ADempiere/Dialog'
import posProcess from '@/utils/ADempiere/constants/posProcess' import posProcess from '@/utils/ADempiere/constants/posProcess'
import orderLineMixin from '@/components/ADempiere/Form/VPOS/Order/orderLineMixin.js' import orderLineMixin from '@/components/ADempiere/Form/VPOS/Order/orderLineMixin.js'
@ -351,11 +375,21 @@ export default {
return { return {
activeName: '', activeName: '',
processPos: '', processPos: '',
pin: '',
attributePin: {},
validatePin: true,
visible: false,
showFieldListOrder: false, showFieldListOrder: false,
posProcess posProcess
} }
}, },
computed: { computed: {
infowOverdrawnInvoice() {
if (this.$store.getters.getOverdrawnInvoice.attributePin) {
return this.$store.getters.getOverdrawnInvoice.attributePin
}
return ''
},
allowsReturnOrder() { allowsReturnOrder() {
return this.$store.getters.posAttributes.currentPointOfSales.isAllowsReturnOrder return this.$store.getters.posAttributes.currentPointOfSales.isAllowsReturnOrder
}, },
@ -389,12 +423,9 @@ export default {
} }
}, },
adviserPin() { adviserPin() {
return this.$store.getters.posAttributes.currentPointOfSales.isAisleSeller return this.$store.getters.posAttributes.currentPointOfSales.isPosRequiredPin
}, },
blockOption() { blockOption() {
if (this.adviserPin) {
return 'cursor: not-allowed; text-align: center !important; color: gray;min-height: 50px;'
}
if (!this.isEmptyValue(this.currentOrder.uuid)) { if (!this.isEmptyValue(this.currentOrder.uuid)) {
return 'cursor: pointer; text-align: center !important; color: black;min-height: 50px;' return 'cursor: pointer; text-align: center !important; color: black;min-height: 50px;'
} }
@ -449,10 +480,96 @@ export default {
return this.currentPointOfSales.currentOrder return this.currentPointOfSales.currentOrder
} }
}, },
// watch: {
// visible(value) {
// if (value && !this.isEmptyValue(this.$refs)) {
// setTimeout(() => {
// this.focusPin()
// }, 500)
// } else {
// this.$store.dispatch('changePopoverOverdrawnInvoice', { visible: value })
// }
// }
// },
created() { created() {
this.findProcess(this.posProcess) this.findProcess(this.posProcess)
}, },
methods: { methods: {
closePin() {
this.visible = false
this.$store.dispatch('changePopoverOverdrawnInvoice', { visible: false })
this.pin = ''
},
focusPin() {
this.$refs.pin.focus()
},
openPin(pin) {
validatePin({
posUuid: this.currentPointOfSales.uuid,
pin
})
.then(response => {
this.validatePin = true
this.pin = ''
this.visible = false
this.optionPin(this.attributePin)
this.$message({
type: 'success',
message: 'Acción a realizar',
showClose: true
})
})
.catch(error => {
console.error(error.message)
this.$message({
type: 'error',
message: error.message,
showClose: true
})
this.pin = ''
})
.finally(() => {
this.visible = false
})
},
validateOption(name) {
this.visible = true
this.attributePin = {
type: 'updateOrder',
label: name
}
},
optionPin(action) {
switch (action.label) {
case 'Crear Nueva Orden de Devolución':
this.createNewCustomerReturnOrder()
break
case this.$t('form.pos.optionsPoinSales.salesOrder.completePreparedOrder'):
this.completePreparedOrder()
break
case this.$t('form.pos.optionsPoinSales.salesOrder.generateImmediateInvoice'):
this.generateImmediateInvoice()
break
case this.$t('form.pos.optionsPoinSales.salesOrder.cancelSaleTransaction'):
this.reverseSalesTransaction()
break
case this.$t('form.pos.optionsPoinSales.salesOrder.createPos'):
this.withdrawal()
break
case this.$t('form.pos.optionsPoinSales.salesOrder.print'):
this.printOrder()
break
case this.$t('form.pos.optionsPoinSales.salesOrder.copyOrder'):
this.copyOrder()
break
case this.$t('form.pos.optionsPoinSales.salesOrder.cancelOrder'):
this.deleteOrder()
break
case this.$t('form.pos.optionsPoinSales.generalOptions.changePos'):
this.changePos()
break
}
},
notSubmitForm(event) { notSubmitForm(event) {
event.preventDefault() event.preventDefault()
return false return false
@ -550,11 +667,9 @@ export default {
}) })
}, },
createNewCustomerReturnOrder() { createNewCustomerReturnOrder() {
if (this.isPosRequiredPin) { createNewReturnOrder({
createNewReturnOrder({ orderUuid: this.$route.query.action
orderUuid: this.$route.query.action })
})
}
}, },
showModal(action) { showModal(action) {
this.$store.dispatch('setShowDialog', { this.$store.dispatch('setShowDialog', {
@ -627,7 +742,7 @@ export default {
} }
this.$store.dispatch('updateOrderPos', true) this.$store.dispatch('updateOrderPos', true)
deleteOrder({ deleteOrder({
orderUuid: this.$route.query.action orderUuid: this.currentOrder.uuid
}) })
.then(response => { .then(response => {
this.changePos(this.currentPointOfSales) this.changePos(this.currentPointOfSales)

View File

@ -242,7 +242,7 @@
v-show="isValidForDeleteLine(listOrderLine)" v-show="isValidForDeleteLine(listOrderLine)"
type="success" type="success"
icon="el-icon-bank-card" icon="el-icon-bank-card"
:disabled="allowsCollectOrder" :disabled="!allowsCollectOrder"
@click="openCollectionPanel" @click="openCollectionPanel"
> >
{{ labelButtonCollections }} {{ labelButtonCollections }}

View File

@ -267,6 +267,21 @@ export default {
} }
} else if (action.type === 'addProduct') { } else if (action.type === 'addProduct') {
this.findProduct(action.value) this.findProduct(action.value)
} else if (action.type === 'deleteLine') {
deleteOrderLine({
orderLineUuid: action.uuid
})
.then(response => {
this.$store.dispatch('reloadOrder', { orderUuid: this.$store.getters.posAttributes.currentPointOfSales.currentOrder.uuid })
})
.catch(error => {
console.error(error.message)
this.$message({
type: 'error',
message: error.message,
showClose: true
})
})
} else if (action.type === 'actionPos') { } else if (action.type === 'actionPos') {
switch (action.action) { switch (action.action) {
case 'changeWarehouse': case 'changeWarehouse':