From 210443b395bcfef92fa5ccf19adb36228a16a7a4 Mon Sep 17 00:00:00 2001 From: Elsio Sanchez <45974454+elsiosanchez@users.noreply.github.com> Date: Tue, 1 Dec 2020 19:39:39 -0400 Subject: [PATCH] Add product information form (#551) * Add Form The PorductInfo * remove console.log --- .../ADempiere/Form/ProductInfo/fieldsList.js | 12 + .../ADempiere/Form/ProductInfo/index.vue | 173 +++++++++++ .../Form/ProductInfo/productList.vue | 269 ++++++++++++++++++ .../ADempiere/Form/VPOS/ProductInfo/index.vue | 1 + src/components/ADempiere/Form/index.vue | 3 + src/router/modules/ADempiere/staticRoutes.js | 16 ++ src/store/modules/ADempiere/chatEntries.js | 2 +- .../pointOfSales/listProductPrice.js | 87 +++++- 8 files changed, 559 insertions(+), 4 deletions(-) create mode 100644 src/components/ADempiere/Form/ProductInfo/fieldsList.js create mode 100644 src/components/ADempiere/Form/ProductInfo/index.vue create mode 100644 src/components/ADempiere/Form/ProductInfo/productList.vue diff --git a/src/components/ADempiere/Form/ProductInfo/fieldsList.js b/src/components/ADempiere/Form/ProductInfo/fieldsList.js new file mode 100644 index 00000000..b534a725 --- /dev/null +++ b/src/components/ADempiere/Form/ProductInfo/fieldsList.js @@ -0,0 +1,12 @@ +export default [ + // Product Code + { + elementColumnName: 'ProductValue', + columnName: 'ProductValue', + isFromDictionary: true, + overwriteDefinition: { + size: 24, + sequence: 10 + } + } +] diff --git a/src/components/ADempiere/Form/ProductInfo/index.vue b/src/components/ADempiere/Form/ProductInfo/index.vue new file mode 100644 index 00000000..211a3d08 --- /dev/null +++ b/src/components/ADempiere/Form/ProductInfo/index.vue @@ -0,0 +1,173 @@ + + + + + diff --git a/src/components/ADempiere/Form/ProductInfo/productList.vue b/src/components/ADempiere/Form/ProductInfo/productList.vue new file mode 100644 index 00000000..5058c7b6 --- /dev/null +++ b/src/components/ADempiere/Form/ProductInfo/productList.vue @@ -0,0 +1,269 @@ + + + diff --git a/src/components/ADempiere/Form/VPOS/ProductInfo/index.vue b/src/components/ADempiere/Form/VPOS/ProductInfo/index.vue index df845ad0..04d790c5 100644 --- a/src/components/ADempiere/Form/VPOS/ProductInfo/index.vue +++ b/src/components/ADempiere/Form/VPOS/ProductInfo/index.vue @@ -182,6 +182,7 @@ export default { this.timeOut = setTimeout(() => { this.$store.dispatch('listProductPriceFromServer', { + containerUuid: 'Products-Price-List', pageNumber: 1, searchValue: stringToMatch }) diff --git a/src/components/ADempiere/Form/index.vue b/src/components/ADempiere/Form/index.vue index 191ae09a..4702ee2a 100644 --- a/src/components/ADempiere/Form/index.vue +++ b/src/components/ADempiere/Form/index.vue @@ -34,6 +34,9 @@ export default { case 'BarcodeReader': form = import('@/components/ADempiere/Form/BarcodeReader') break + case 'ProductInfo': + form = import('@/components/ADempiere/Form/ProductInfo') + break case 'VPOS': form = import('@/components/ADempiere/Form/VPOS') break diff --git a/src/router/modules/ADempiere/staticRoutes.js b/src/router/modules/ADempiere/staticRoutes.js index 1e13a197..094f2d03 100644 --- a/src/router/modules/ADempiere/staticRoutes.js +++ b/src/router/modules/ADempiere/staticRoutes.js @@ -98,6 +98,22 @@ const staticRoutes = [ } } ] + }, + { + path: '/ProductInfo', + component: Layout, + hidden: false, + children: [ + { + path: '/ProductInfo', + component: () => import('@/views/ADempiere/Form'), + name: 'ProductInfo', + meta: { + title: 'ProductInfo', + isIndex: true + } + } + ] } ] diff --git a/src/store/modules/ADempiere/chatEntries.js b/src/store/modules/ADempiere/chatEntries.js index 7030bd3b..84b94ecf 100644 --- a/src/store/modules/ADempiere/chatEntries.js +++ b/src/store/modules/ADempiere/chatEntries.js @@ -49,7 +49,7 @@ export default { }) }) .catch(error => { - console.warn(`Error getting epale error en guardar: ${error.message}. Code: ${error.code}.`) + console.warn(`Error getting ProductInfo error en guardar: ${error.message}. Code: ${error.code}.`) }) }, listChatEntries({ commit }, { diff --git a/src/store/modules/ADempiere/pointOfSales/listProductPrice.js b/src/store/modules/ADempiere/pointOfSales/listProductPrice.js index cb7de110..2fa46ce3 100644 --- a/src/store/modules/ADempiere/pointOfSales/listProductPrice.js +++ b/src/store/modules/ADempiere/pointOfSales/listProductPrice.js @@ -18,7 +18,8 @@ const listProductPrice = { ...withoutResponse, isShowPopoverField: false, // with field isShowPopoverMenu: false // with menu - } + }, + searchProduct: '' }, mutations: { setListProductPrice(state, productsPrices) { @@ -36,6 +37,9 @@ const listProductPrice = { setIsReloadProductPrice(state) { Vue.set(state.productPrice, 'isReload', true) Vue.set(state.productPrice, 'isLoaded', false) + }, + updtaeSearchProduct(state, searchProduct) { + state.searchProduct = searchProduct } }, actions: { @@ -61,7 +65,6 @@ const listProductPrice = { console.warn(message) return } - commit('setIsReloadProductPrice') let pageToken, token if (isEmptyValue(pageNumber)) { @@ -87,7 +90,6 @@ const listProductPrice = { columnName: 'ProductValue' }) } - return new Promise(resolve => { requestListProductPrice({ searchValue, @@ -120,6 +122,82 @@ const listProductPrice = { }) }) }) + }, + listProductPriceFromServerProductInfo({ state, commit, rootGetters }, { + containerUuid = 'Products-Price-List-ProductInfo', + pageNumber, // 1 + searchValue + }) { + const posUuid = rootGetters.getPointOfSalesUuid + if (isEmptyValue(posUuid)) { + const message = 'Sin punto de venta seleccionado' + showMessage({ + type: 'info', + message + }) + console.warn(message) + return + } + commit('setIsReloadProductPrice') + let pageToken, token + if (isEmptyValue(pageNumber)) { + pageNumber = state.productPrice.pageNumber + if (isEmptyValue(pageNumber)) { + pageNumber = 1 + } + + token = state.productPrice.token + if (!isEmptyValue(token)) { + pageToken = token + '-' + pageNumber + } + } + + const { priceList, templateBusinessPartner } = rootGetters.getCurrentPOS + const { uuid: businessPartnerUuid } = templateBusinessPartner + const { uuid: priceListUuid } = priceList + const { uuid: warehouseUuid } = rootGetters['user/getWarehouse'] + + if (isEmptyValue(searchValue)) { + searchValue = rootGetters.getValueOfField({ + containerUuid, + columnName: 'ProductValue' + }) + } + return new Promise(resolve => { + requestListProductPrice({ + searchValue, + priceListUuid, + businessPartnerUuid, + warehouseUuid, + pageToken + }).then(responseProductPrice => { + if (isEmptyValue(token) || isEmptyValue(pageToken)) { + token = extractPagingToken(responseProductPrice.nextPageToken) + } + + commit('setListProductPrice', { + ...responseProductPrice, + isLoaded: true, + isReload: false, + businessPartnerUuid, + warehouseUuid, + token, + pageNumber + }) + + resolve(responseProductPrice) + }).catch(error => { + console.warn(`getKeyLayoutFromServer: ${error.message}. Code: ${error.code}.`) + showMessage({ + type: 'error', + message: error.message, + showClose: true + }) + }) + }) + }, + updateSearch({ commit }, newValue) { + commit('updtaeSearchProduct', newValue) } }, getters: { @@ -131,6 +209,9 @@ const listProductPrice = { } } return state.productPrice + }, + getSearchProduct: (state) => { + return state.searchProduct } } }