UNPKG

procurement-vuex

Version:
313 lines (304 loc) 14.4 kB
import { snakeCase } from 'lodash'; import humps from 'lodash-humps'; import createHumps from 'lodash-humps/lib/createHumps'; import { formateDateToMDYFormat } from './common.service'; const snakes = createHumps(snakeCase) import purchaseOrderService from './purchase_order.service'; import purchaseOrderItemService from './purchase_order_item.service'; const { doFetchList, doFetchListForCsvExport, doFetchOrderListByIds,doFetchProcurementReport,doFetchLogisticsTrackerList,doFetchTemplatesList } = purchaseOrderService const { doFetchItemsByIds } = purchaseOrderItemService export default { namespaced: true, state: { list: [], purchaseOrdersWithBrands:[], itemsWthBrandsList:[], selected: [], recordsCount: 0, inProgress: false, error: null, reportInProgress: true, report: {}, logisticsTracker:[], logisticsTrackerDatesList:[] }, mutations: { inProgress(state, yesOrNo) { state.inProgress = yesOrNo }, setList(state, list) { state.selected = []; for (let i in state.list) { state.selected.push(false); state.selected[i] = false; } state.list = list; }, setItemsWthBrandsList(state, list) { state.itemsWthBrandsList = list; }, setListCount(state, number) { state.recordsCount = number; }, setPurchaseOrderWithBrands(state, list) { state.purchaseOrdersWithBrands = list; }, setReportInProgress(state, yesOrNo) { state.reportInProgress = yesOrNo }, setProcurementReport(state, aReport) { state.report = aReport }, setLogisticsTrackerList(state,list){ state.logisticsTracker=list if(list.length > 0) { state.logisticsTrackerDatesList = state.logisticsTracker.map( stu => formateDateToMDYFormat(stu.shipmentStartDate) +'~'+ formateDateToMDYFormat(stu.shipmentCancelDate)); } else{ state.logisticsTrackerDatesList=[]; } } }, actions: { fetchList: async ({ commit, dispatch,rootState}, { appId, emailLike, poNumberLike,purchaserBusinessEntityId, sortByDate,pageNumber, limit,recursive }) => { commit('inProgress', true); try { let offset = (pageNumber - 1) * limit; const response = await doFetchList({ appId, emailLike,poNumberLike, purchaserBusinessEntityId, sortByDate, limit, offset }); if (response.range != null) { let recordsCount = response.range.split("/"); commit('setListCount', Number(recordsCount[1])); const list = await response.data; if (list) { commit('setList', humps((list))); commit('inProgress', false); return humps(list) } else commit('setList', []); commit('inProgress', false); if (recursive && list.length && (!rootState.businessEntityOne.one || list[0].purchaser_business_entity_id !== rootState.businessEntityOne.one.id) ) { dispatch('businessEntityOne/fetchOne', { businessEntityId: purchaserBusinessEntityId, appId: appId }, { root: true }) } } } // eslint-disable-next-line no-useless-catch catch (err) { throw err } finally { commit('inProgress', false) } }, fetchItemsWthBrandsList : async ({ commit }, { appId, emailLike,purchaserBusinessEntityId, sortByDate, pageNumber, limit }) => { commit('inProgress', true); try { let offset = (pageNumber - 1) * limit; const response = await doFetchList({ appId, emailLike, purchaserBusinessEntityId,sortByDate, limit, offset }); if (response.range != null) { let recordsCount = response.range.split("/"); commit('setListCount', Number(recordsCount[1])); const list = await response.data; if (list) { const purchaseIds = list.map((item) => { return item.id }) if (purchaseIds) { const ids = purchaseIds.join() let purchaseItemsList = await doFetchItemsByIds({ ids }) const dataList = list.map((item) => { let newRec = {} let brandsList = [] for (let j = 0; j < purchaseItemsList.length; j++) { if (item.id === purchaseItemsList[j].purchase_order_id) { brandsList.push(purchaseItemsList[j].brand.name) } } newRec = Object.assign({}, item, { brands: [...new Set(brandsList)] }) return newRec }).filter((item)=>item.brands.length > 0) commit('setItemsWthBrandsList', humps((dataList))); commit('inProgress', false) } } else commit('setItemsWthBrandsList', []); commit('inProgress', false) } } // eslint-disable-next-line no-useless-catch catch (err) { throw err } finally { commit('inProgress', false) } }, fetchPurchaseOrdersWthBrandsForCsv : async ({ commit, dispatch }, { appId, purchaserBusinessEntityId, sortByDate }) => { commit('inProgress', true); try { const response = await doFetchListForCsvExport({ appId, purchaserBusinessEntityId,sortByDate }); if (response.range != null) { const list = await response.data; if (list) { // let brandIds = [] // list.filter((item) => { // if(item.metadata.brand_id && typeof item.metadata.brand_id !== 'object') // brandIds.push(item.metadata.brand_id) // }) // const unqBrandIds = [...new Set(brandIds)] // if (unqBrandIds) { // const ids = unqBrandIds.join() // let brandList = await dispatch('brandList/fetchBrandListByIds', { // appId:appId,brandIds:ids,nameLike:'',pageNumber:1, limit:unqBrandIds.length // }, { root: true }) // const dataList = list.map((item) => { // let newRec = {} // let brands = [] // for (let j = 0; j < brandList.length; j++) { // if (item.metadata.brand_id === brandList[j].id) { // brands.push(brandList[j].name) // } // } // newRec = Object.assign({}, item, { brands: [...new Set(brands)] }) // return newRec // }) // commit('setPurchaseOrderWithBrands', humps((dataList))); commit('inProgress', false) return humps(list) // } } // else // commit('setPurchaseOrderWithBrands', []); commit('inProgress', false) } } // eslint-disable-next-line no-useless-catch catch (err) { throw err } finally { commit('inProgress', false) } }, fetchPurchaseOrdersWthBrands : async ({ commit }, { appId, poNumberLike,purchaserBusinessEntityId, filterByStatus,filterByBrand, filterBySeason,filterByRetailteam, sortByDate, sortByFieldName, pageNumber, limit, filterByCurrency, filterBySalesagentBusinessEntityId, filterByProviderBusinessEntityId,seasonType,filterByOrdersProcessingState }) => { commit('inProgress', true); try { let offset = (pageNumber - 1) * limit; const response = await doFetchList({ appId, poNumberLike, purchaserBusinessEntityId,filterByStatus,filterByBrand, filterBySeason,filterByRetailteam,sortByDate, sortByFieldName, limit, offset, filterByCurrency,filterBySalesagentBusinessEntityId, filterByProviderBusinessEntityId,seasonType,filterByOrdersProcessingState }); if (response.range != null) { let recordsCount = response.range.split("/"); commit('setListCount', Number(recordsCount[1])); const list = await response.data; if (list) { // let brandIds = [] // list.filter((item) => { // if(item.metadata.brand_id && typeof item.metadata.brand_id !== 'object') // brandIds.push(item.metadata.brand_id) // }) // const unqBrandIds = [...new Set(brandIds)] // if (unqBrandIds) { // const ids = unqBrandIds.join() // let brandList = await dispatch('brandList/fetchBrandListByIds', { // appId:appId,brandIds:ids,nameLike:'',pageNumber:1, limit:unqBrandIds.length // }, { root: true }) // const dataList = list.map((item) => { // let newRec = {} // let brands = [] // for (let j = 0; j < brandList.length; j++) { // if (item.metadata.brand_id === brandList[j].id) { // brands.push(brandList[j].name) // } // } // newRec = Object.assign({}, item, { brands: [...new Set(brands)] }) // return newRec // }) commit('inProgress', false) commit('setPurchaseOrderWithBrands', humps((list))); return humps(list) } } else commit('setPurchaseOrderWithBrands', []); commit('inProgress', false) // } } // eslint-disable-next-line no-useless-catch catch (err) { throw err } finally { commit('inProgress', false) } }, fetchOrderListByIds: async ({ commit }, { appId, orderIds, pageNumber, limit }) => { commit('inProgress', true); try { let offset = (pageNumber - 1) * limit; const response = await doFetchOrderListByIds({ appId, orderIds, limit, offset }); if (response.range != null) { let recordsCount = response.range.split("/"); commit('setListCount', Number(recordsCount[1])); const list = await response.data; if (list) { commit('setList', humps((list))); return humps(list) } else commit('setList', []); } } // eslint-disable-next-line no-useless-catch catch (err) { throw err } finally { commit('inProgress', false) } }, fetchProcurementReport: async ({ commit }, { purchaserIds, from, storeIds, to, providerIds, filters }) => { commit('setReportInProgress', true); try { const report = await doFetchProcurementReport({ purchaserIds, from, storeIds, to, providerIds, filters }); if (report) { commit('setProcurementReport', humps(report)); commit('setReportInProgress', false); } else { commit('setProcurementReport', {}); commit('setReportInProgress', false); } } // eslint-disable-next-line no-useless-catch catch (err) { throw err } finally { commit('setReportInProgress', false) } }, fetchLogisticsTrackerList: async({ commit }, { purchaseOrderId }) => { commit('inProgress', true) try { const response = await doFetchLogisticsTrackerList({ purchaseOrderId }) if (response) { const list = await response.shipments if (list) { commit('setLogisticsTrackerList', humps((list))) commit('inProgress', false) return (humps(list)) } else commit('setLogisticsTrackerList', []) commit('inProgress', false) return [] } } // eslint-disable-next-line no-useless-catch catch (err) { throw err } finally { commit('inProgress', false) } }, } }