mirror of
https://github.com/PanJiaChen/vue-element-admin.git
synced 2025-08-10 20:39:48 +08:00
273 lines
7.6 KiB
JavaScript
273 lines
7.6 KiB
JavaScript
// ADempiere-Vue (Frontend) for ADempiere ERP & CRM Smart Business Solution
|
|
// Copyright (C) 2017-Present E.R.P. Consultores y Asociados, C.A.
|
|
// Contributor(s): Elsio Sanchez esanchez@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/>.
|
|
|
|
import {
|
|
createOrder,
|
|
getOrder,
|
|
updateOrder,
|
|
createOrderLine,
|
|
listOrders
|
|
} from '@/api/ADempiere/form/point-of-sales.js'
|
|
import { isEmptyValue, extractPagingToken, convertValuesToSend } from '@/utils/ADempiere/valueUtils.js'
|
|
import { showMessage } from '@/utils/ADempiere/notification.js'
|
|
|
|
/**
|
|
* Order Actions
|
|
*/
|
|
export default {
|
|
/**
|
|
* Create Sales Order
|
|
* @param {string} posUuid Current POS Uuid
|
|
* @param {string} customerUuid Customer Uuid
|
|
* @param {string} salesRepresentativeUuid Sales Representative Uuid
|
|
*/
|
|
createOrder({ commit, dispatch }, {
|
|
posUuid,
|
|
customerUuid,
|
|
salesRepresentativeUuid
|
|
}) {
|
|
return createOrder({
|
|
posUuid,
|
|
customerUuid,
|
|
salesRepresentativeUuid
|
|
})
|
|
.then(order => {
|
|
commit('setOrder', order)
|
|
dispatch('fillOrde', { attribute: order })
|
|
|
|
commit('setIsReloadListOrders')
|
|
return order
|
|
})
|
|
.catch(error => {
|
|
console.error(error.message)
|
|
showMessage({
|
|
type: 'error',
|
|
message: error.message,
|
|
showClose: true
|
|
})
|
|
})
|
|
},
|
|
/**
|
|
* Update Sales Order
|
|
* @param {string} posUuid Current POS Uuid
|
|
* @param {string} posUuid Order Uuid
|
|
* @param {string} customerUuid Customer Uuid
|
|
*/
|
|
updateOrder({ commit, dispatch }, {
|
|
orderUuid,
|
|
posUuid,
|
|
customerUuid
|
|
}) {
|
|
updateOrder({
|
|
orderUuid,
|
|
posUuid,
|
|
customerUuid
|
|
})
|
|
.then(response => {
|
|
dispatch('reloadOrder', { orderUuid: response.uuid })
|
|
})
|
|
.catch(error => {
|
|
console.error(error.message)
|
|
showMessage({
|
|
type: 'error',
|
|
message: error.message,
|
|
showClose: true
|
|
})
|
|
})
|
|
},
|
|
|
|
/**
|
|
* Create order line from order uuid and product
|
|
* @param {string} orderUuid Order Uuid
|
|
* @param {string} productUuid Product Uuid
|
|
* @param {string} description Product description
|
|
* @param {number} quantity Quantity Producto
|
|
* @param {number} price Price Producto
|
|
* @param {number} discountRate DiscountRate Producto
|
|
*/
|
|
createOrderLine({ commit, dispatch }, {
|
|
orderUuid,
|
|
warehouseUuid,
|
|
productUuid,
|
|
chargeUuid,
|
|
description,
|
|
quantity,
|
|
price,
|
|
discountRate
|
|
}) {
|
|
createOrderLine({
|
|
orderUuid,
|
|
productUuid
|
|
})
|
|
.then(orderLine => {
|
|
dispatch('updateOrderLines', orderLine)
|
|
this.reloadOrder(true, orderUuid)
|
|
})
|
|
.catch(error => {
|
|
console.warn(error.message)
|
|
showMessage({
|
|
type: 'error',
|
|
message: error.message,
|
|
showClose: true
|
|
})
|
|
})
|
|
},
|
|
/**
|
|
* Reload Order
|
|
* @param {string} orderUuid Order Uuid
|
|
*/
|
|
reloadOrder({ commit, dispatch, rootGetters }, { orderUuid }) {
|
|
if (isEmptyValue(orderUuid)) {
|
|
orderUuid = rootGetters.posAttributes.currentPointOfSales.currentOrder.uuid // this.currentOrder.uuid
|
|
}
|
|
if (!isEmptyValue(orderUuid)) {
|
|
getOrder(orderUuid)
|
|
.then(orderResponse => {
|
|
dispatch('fillOrde', {
|
|
attribute: orderResponse,
|
|
setToStore: false
|
|
})
|
|
dispatch('currentOrder', orderResponse)
|
|
// dispatch('listOrderLinesFromServer', orderResponse.uuid)
|
|
})
|
|
.catch(error => {
|
|
showMessage({
|
|
type: 'error',
|
|
message: error.message,
|
|
showClose: true
|
|
})
|
|
})
|
|
}
|
|
},
|
|
/**
|
|
* Fill Order
|
|
* @param {object} attribute Attributes of the Order
|
|
* @param {boolean} setToStore set To Store
|
|
*/
|
|
fillOrde({ commit, dispatch }, {
|
|
attribute,
|
|
setToStore = true
|
|
}) {
|
|
const orderToPush = {
|
|
uuid: attribute.uuid,
|
|
id: attribute.id,
|
|
businessPartner: attribute.businessPartner, // description, duns, id, lastName, naics, name, taxId, uuid, value
|
|
documentNo: attribute.documentNo,
|
|
dateOrdered: attribute.dateOrdered,
|
|
documentStatus: attribute.documentStatus, // value, name, description
|
|
documentType: attribute.documentType, // name, printName
|
|
salesRepresentative: attribute.salesRepresentative, // id, uuid, name, description,
|
|
totalLines: attribute.totalLines,
|
|
grandTotal: attribute.grandTotal
|
|
}
|
|
// if (setToStore) {
|
|
dispatch('setOrder', {
|
|
...orderToPush
|
|
})
|
|
// }
|
|
},
|
|
/**
|
|
* Set page number of pagination list
|
|
* @param {number} pageNumber
|
|
*/
|
|
setOrdersListPageNumber({ commit, dispatch }, pageNumber) {
|
|
commit('setOrdersListPageNumber', pageNumber)
|
|
dispatch('listOrdersFromServer', {})
|
|
},
|
|
listOrdersFromServer({ state, commit, getters }, {
|
|
posUuid
|
|
}) {
|
|
if (isEmptyValue(posUuid)) {
|
|
posUuid = getters.posAttributes.currentPointOfSales.uuid
|
|
}
|
|
|
|
let { pageNumber, token } = state.listOrder
|
|
if (isEmptyValue(pageNumber)) {
|
|
pageNumber = 1
|
|
}
|
|
let pageToken
|
|
if (!isEmptyValue(token)) {
|
|
pageToken = token + '-' + pageNumber
|
|
}
|
|
let values = getters.getValuesView({
|
|
containerUuid: 'Orders-List'
|
|
})
|
|
values = convertValuesToSend(values)
|
|
const { documentNo, businessPartnerUuid, grandTotal, openAmount, isPaid, isProcessed, isAisleSeller, isInvoiced, dateOrderedFrom, dateOrderedTo, salesRepresentativeUuid } = values
|
|
listOrders({
|
|
posUuid,
|
|
documentNo,
|
|
businessPartnerUuid,
|
|
grandTotal,
|
|
openAmount,
|
|
isPaid,
|
|
isProcessed,
|
|
isAisleSeller,
|
|
isInvoiced,
|
|
dateOrderedFrom,
|
|
dateOrderedTo,
|
|
salesRepresentativeUuid,
|
|
pageToken
|
|
})
|
|
.then(responseOrdersList => {
|
|
if (isEmptyValue(token) || isEmptyValue(pageToken)) {
|
|
token = extractPagingToken(responseOrdersList.nextPageToken)
|
|
}
|
|
|
|
commit('setListOrder', {
|
|
...responseOrdersList,
|
|
isLoaded: true,
|
|
isReload: false,
|
|
posUuid,
|
|
token,
|
|
pageNumber
|
|
})
|
|
})
|
|
.catch(error => {
|
|
console.warn(`listOrdersFromServer: ${error.message}. Code: ${error.code}.`)
|
|
// showMessage({
|
|
// type: 'info',
|
|
// message: error.message,
|
|
// showClose: true
|
|
// })
|
|
})
|
|
},
|
|
setOrder({ commit, dispatch }, order) {
|
|
dispatch('listOrderLinesFromServer', order.uuid)
|
|
commit('setOrder', order)
|
|
},
|
|
currentOrder({ commit }, findOrder) {
|
|
commit('findOrder', findOrder)
|
|
},
|
|
findOrderServer({ commit }, orderUuid) {
|
|
if (typeof orderUuid === 'string' && !isEmptyValue(orderUuid)) {
|
|
getOrder(orderUuid)
|
|
.then(responseOrder => {
|
|
commit('findOrder', responseOrder)
|
|
})
|
|
.catch(error => {
|
|
console.warn(`findOrderServer: ${error.message}. Code: ${error.code}.`)
|
|
showMessage({
|
|
type: 'info',
|
|
message: error.message,
|
|
showClose: true
|
|
})
|
|
})
|
|
}
|
|
commit('findOrder', {})
|
|
}
|
|
}
|