UNPKG

procurement-vuex

Version:
1,036 lines (964 loc) 52.4 kB
import { snakeCase } from 'lodash' import humps from 'lodash-humps' import createHumps from 'lodash-humps/lib/createHumps' import { getField, updateField } from 'vuex-map-fields' import { generateDiscrepancyOrderItemAddedAndRemoved, generateDiscrepancyOrderItemVarinats, generateDiscrepancyOrderSkuItem, getPaymentTypesInArray, getPaymentTypesInObj, otherPaymentTermsList, updateTermsList } from './common.service.js' import purchaseOrderService from './purchase_order.service' import { orderAllStates, purchaseOrderStateList } from './util.service' const { doGetPurchaseOrderChanges, doPostOne, doPatchOne, doFetchOne, doDeleteSelected, doOrderStatusUpdate, doPurchaseOrderGetTimeline, doPurchaseOrderCompare, doFetchPurchaseOrderChange, doPatchOrderChangeResponse, doPostOrderChangeResponse, doAssignBrandId, doPurchaseOrderUpdateBusinessEntity, doPurchaseOrderUpdateItemsFormat, doPostImportedData, doPurchaseOrderReportChanges, doPatchOneProperty, doPurchaseOrderDiscardChanges,doPatchPurchaseOrderChangesetOne, doGetOrderChangesForReport, doPatchPurchaseOrderChangeSet, doFetchPurchaseOrderDiscrepancyByChangesetId,doPostPurchaseOrderChanges,doGetPruchaseOrderXChanges,doDeleteChangesetXChange,doPostBalanceOrderPayments,doDeleteChange } = purchaseOrderService const snakes = createHumps(snakeCase) export default { namespaced: true, state: { one: null, inProgress: true, purchaseOrderChangesSummary: null, purchaseOrderActions: { poNumber: '93487834', orderValue: '$1200', paymentStatus: 'Not paid', numberOfItems: 34, numberOfProducts: 44 }, purchaseOrderTimeline: [], purchaseOrderCompare: [], purchaseOrderChanged: '', otherPaymentTypes: [], purchaseOrderReportChanges: { orderItemSku : null, orderItemVariants : null, detailsChanged : null, differences : null, removedItems : null, addedItems : null, changedItems : null }, purchaseOrderPackedReportChanges: { orderItemSku : null, orderItemVariants : null, detailsChanged : null, differences : null, removedItems : null, addedItems : null, changedItems : null }, purchaseOrderStateList: purchaseOrderStateList, orderAllStates: orderAllStates, purchaseOrderNextState: [], purchaseOrderReportState: null, purchaseOrderShipWindows: [], }, getters: { getField, }, mutations: { updateField, setPurchaseOrderChangesSummary(state, purchaseOrderChangesSummary){ if(purchaseOrderChangesSummary) { let detailsChanged={} let itemChanged={} let itemAdded={} let itemRemoved={} detailsChanged.changes=purchaseOrderChangesSummary.filter((item)=> item.changeType === 'details-changed') itemChanged.changes=purchaseOrderChangesSummary.filter((item)=> item.changeType === 'item-changed') itemAdded.changes=purchaseOrderChangesSummary.filter((item)=> item.changeType === 'item-added') itemRemoved.changes=purchaseOrderChangesSummary.filter((item)=> item.changeType === 'item-removed') let obj={} obj['detailsChanged']=detailsChanged obj['itemChanged']=itemChanged obj['itemAdded']=itemAdded obj['itemRemoved']=itemRemoved state.purchaseOrderChangesSummary=obj } //state.purchaseOrderChangesSummary = PurchaseOrderChangesSummary }, setOne(state, one) { if (!one.shippingAddress) { one.shippingAddress = { line: '', postcode: '', city: '', country: '', countryIso3: '' } } if (!one.billingAddress) { one.billingAddress = { line: '', postcode: '', city: '', country: '', countryIso3: '' } } if (one.paymentTermsObject) { state.otherPaymentTypes = getPaymentTypesInArray(one.paymentTermsObject) state.otherPaymentTypes=updateTermsList(state.otherPaymentTypes) } if (!one.metadata.brandId) { one.metadata.brandId = '' } if (one.category) { one.category = one.category.split(',') } if (one.state) { state.purchaseOrderNextState = state.purchaseOrderStateList.filter((item) => { return item.state == one.state }) } else { state.purchaseOrderNextState = state.purchaseOrderStateList.filter((item) => { return item.state == 'submitted_processing' }) } state.one = one; }, addDefaultPaymentType(state, val) { if (state.otherPaymentTypes === undefined || state.otherPaymentTypes == null) { state.otherPaymentTypes = [{ type: 'Payment on order confirmation', paid: 30 },{ type: 'Payment after last delivery', paid: 70,days: 0 }] } if (val.type == 'new') { state.otherPaymentTypes = [] state.otherPaymentTypes.splice(0, 0, { type: '', paid: 0, days: 0 }) } else if (val.type == 'default') { state.otherPaymentTypes = [{ type: 'Payment on order confirmation', paid: 30},{ type: 'Payment after last delivery', paid: 70,days: 0 }] state.otherPaymentTypes=updateTermsList(state.otherPaymentTypes) }else if(val.type == 'splitPaymentIn30%Deposit/70%BFDelivery'){ state.otherPaymentTypes = [ { "type": "Payment on order confirmation", "paid": "30", "days": 0 }, { "type": "Payment before first delivery", "paid": "70", "days": 0 } ] }else if(val.type == 'splitPaymentIn30%Deposit/70%ALDelivery'){ state.otherPaymentTypes = [ { "type": "Payment on order confirmation", "paid": "30", "days": 0 }, { "type": "Payment after last delivery", "paid": "70", "days": 0 } ] }else if(val.type === 'reset'){ state.otherPaymentTypes = [] } else { let termsList= state.otherPaymentTypes.map((item)=> item.type) let difference = otherPaymentTermsList.filter(x => !termsList.includes(x)); state.otherPaymentTypes.splice(val.index, 0, { type:difference[0], paid: 0, days: 0 }) state.otherPaymentTypes=updateTermsList(state.otherPaymentTypes) } }, updatePaymentTerms(state){ state.otherPaymentTypes=updateTermsList(state.otherPaymentTypes) }, setOtherPaymentTypes(state, paymentTypes) { state.otherPaymentTypes = getPaymentTypesInArray(paymentTypes) }, getOtherPaymentTypesInObj(state, paymentTypes) { state.otherPaymentTypes = getPaymentTypesInObj(paymentTypes) }, deletePaymentTypeRow(state, index) { state.otherPaymentTypes.splice(index, 1); state.otherPaymentTypes=updateTermsList(state.otherPaymentTypes) //state.otherPaymentTypes=updateTermsList(state.otherPaymentTypes) }, inProgress(state, yesOrNo) { state.inProgress = yesOrNo }, removeBusinessEntity(state) { if (state.one.businessEntity) delete state.one.businessEntity }, removeProviderBusinessEntity(state) { if (state.one.providerBusinessEntity || state.one.providerBusinessEntity == null) delete state.one.providerBusinessEntity }, removePurchaserBusinessEntity(state) { if (state.one.purchaserBusinessEntity) delete state.one.purchaserBusinessEntity }, setPurchaseOrderTimeline(state, timeLine) { state.purchaseOrderTimeline = timeLine }, setPurchaseOrderReceptionReportChanges(state, compare) { // For reception discrepancy let addedItemList = compare.changes['itemAdded'] ? compare.changes['itemAdded'].changes : [] let list = addedItemList.map((item) => item.changeValues.new) let itemVariantList=[] for(let i=0 ;i<list.length;i++){ for(let j=0;j<list[i].variants.length;j++){ let variant=list[i].variants[j] variant.name=list[i].name variant.id = list[i].id variant.indexKey =list[i].name + "-" + variant.color + "-" + variant.size + "-" + variant.category + i; itemVariantList.push(variant) } } state.purchaseOrderReportChanges.addedItems =itemVariantList }, // discrepancy functions setPurchaseOrderReportChanges(state, compare) { try{ state.purchaseOrderReportChanges = { orderItemSku : null, orderItemVariants : null, detailsChanged : null, differences : null, removedItems : null, addedItems : null, changedItems : null } state.purchaseOrderPackedReportChanges = { orderItemSku : null, orderItemVariants : null, detailsChanged : null, differences : null, removedItems : null, addedItems : null, changedItems : null } if(compare.changes){ let changedItems = compare.changes['itemChanged'] ? compare.changes['itemChanged'].changes : [] let detailsChanged = compare.changes['detailsChanged'] ? compare.changes['detailsChanged'].changes : [] let addedItems = compare.changes['itemAdded'] ? compare.changes['itemAdded'].changes : [] let removedItems = compare.changes['itemRemoved'] ? compare.changes['itemRemoved'].changes : [] let orderItemSku = [] let orderItemAddedSku = [] let orderItemVariants = [] let orderItemAddedVariants = [] let orderItemRemovedVariants = [] let orderItemRemovedSku = [] let newCurrency = null let oldCurrency = null // to use in total order number card let orderTotalNumber = [] let customFields = [] if(detailsChanged && detailsChanged.length){ let summaryLables = [] let filteredDetails = detailsChanged.filter((item)=>{ if(['order_ccy'].includes(item.change)){ oldCurrency = item.changeValues.old, newCurrency = item.changeValues.new } if (["total_amount", "total_quantity"].includes(item.change)) { // item.changeValues.old > 0 && if ( !summaryLables.includes(item.change)){ summaryLables.push(item.change) let oCurrency = (oldCurrency ? oldCurrency : state.one.orderCcy) let nCurrency = (newCurrency ? newCurrency : state.one.orderCcy) orderTotalNumber.push({ label: item.change == "total_amount" ? "Total value" : item.change == "total_quantity" ? "Total quantity" : item.change, submittedOrder: item.change == "total_amount" ? item.changeValues.old.toLocaleString("en-US") + " " + oCurrency : item.changeValues.old, orderConfirmation: item.change == "total_amount" ? item.changeValues.new.toLocaleString("en-US") + " " + nCurrency : item.changeValues.new }); } } // item.changeValues.old && else if(item.changeValues.new !== item.changeValues.old) return item }) detailsChanged = [] detailsChanged.push(filteredDetails) } if(changedItems && changedItems.length){ changedItems.filter((item) => { let newOrderItems = item.changeValues.new if(newOrderItems){ if(newOrderItems.format == 'sku'){ let skus = generateDiscrepancyOrderSkuItem({ changedItem: item }) if(skus && skus.length){ orderItemSku.push(skus) } } else { oldCurrency = oldCurrency ? oldCurrency : state.one.orderCcy newCurrency = newCurrency ? newCurrency : state.one.orderCcy let variants = generateDiscrepancyOrderItemVarinats({ changedItem: item, newCurrency, oldCurrency, orderState: state.one.state }) if(variants){ variants.changesCount = item.criticalCount orderItemVariants.push(variants) } } } }) } if(removedItems && removedItems.length){ removedItems.filter((item) => { oldCurrency = oldCurrency ? oldCurrency : state.one.orderCcy newCurrency = newCurrency ? newCurrency : state.one.orderCcy let oldOrderItems = item.changeValues.old if(oldOrderItems.format == 'sku'){ let skus = generateDiscrepancyOrderItemAddedAndRemoved({ addedItem: item, newCurrency, oldCurrency }) if(skus){ orderItemRemovedSku.push([skus]) } } else { let variants = generateDiscrepancyOrderItemAddedAndRemoved({ addedItem: item, newCurrency, oldCurrency }) if(variants){ variants.changesCount = item.criticalCount orderItemRemovedVariants.push([variants]) } } }) } if(addedItems && addedItems.length){ addedItems.filter((item) => { oldCurrency = oldCurrency ? oldCurrency : state.one.orderCcy newCurrency = newCurrency ? newCurrency : state.one.orderCcy let newOrderItems = item.changeValues.new if(newOrderItems.format == 'sku'){ let skus = generateDiscrepancyOrderItemAddedAndRemoved({ addedItem: item, newCurrency, oldCurrency }) if(skus){ orderItemAddedSku.push([skus]) } } else { let variants = generateDiscrepancyOrderItemAddedAndRemoved({ addedItem: item, newCurrency, oldCurrency }) if(variants){ variants.changesCount = item.criticalCount orderItemAddedVariants.push([variants]) } } }) } if(state.purchaseOrderReportState == 'approved_with_discrepancies' || state.purchaseOrderReportState == 'approved_accept_discrepancies' || state.purchaseOrderReportState === 'approved_reject_discrepancies'){ state.purchaseOrderReportChanges.orderItemSku = orderItemSku state.purchaseOrderReportChanges.addedSkuItems = orderItemAddedSku state.purchaseOrderReportChanges.removedSkuItems = orderItemRemovedSku state.purchaseOrderReportChanges.orderItemVariants = orderItemVariants // item-changed state.purchaseOrderReportChanges.detailsChanged = detailsChanged state.purchaseOrderReportChanges.differences = orderTotalNumber state.purchaseOrderReportChanges.customFields = customFields state.purchaseOrderReportChanges.removedItems = removedItems state.purchaseOrderReportChanges.addedVariantsItems = orderItemAddedVariants // item-added state.purchaseOrderReportChanges.removedVariantsItems = orderItemRemovedVariants // item-removed state.purchaseOrderReportChanges.changedItems = changedItems } else if(state.purchaseOrderReportState == 'packed_with_discrepancies') { state.purchaseOrderPackedReportChanges.orderItemSku = orderItemSku state.purchaseOrderPackedReportChanges.addedSkuItems = orderItemAddedSku state.purchaseOrderPackedReportChanges.removedSkuItems = orderItemRemovedSku state.purchaseOrderPackedReportChanges.orderItemVariants = orderItemVariants state.purchaseOrderPackedReportChanges.detailsChanged = detailsChanged state.purchaseOrderPackedReportChanges.differences = orderTotalNumber state.purchaseOrderPackedReportChanges.removedItems = removedItems state.purchaseOrderPackedReportChanges.addedVariantsItems = orderItemAddedVariants // item-added state.purchaseOrderPackedReportChanges.removedVariantsItems = orderItemRemovedVariants // item-removed state.purchaseOrderPackedReportChanges.changedItems = changedItems } } if(state.purchaseOrderReportState == 'approved_with_discrepancies' || state.purchaseOrderReportState == 'approved_accept_discrepancies' || state.purchaseOrderReportState === 'approved_reject_discrepancies'){ state.purchaseOrderReportChanges.changes = compare.changes state.purchaseOrderReportChanges.report = compare.report } else if(state.purchaseOrderReportState == 'packed_with_discrepancies') { state.purchaseOrderPackedReportChanges.changes = compare.changes state.purchaseOrderPackedReportChanges.report = compare.report } }catch(err){ console.log(err) } }, setPurchaseOrderChange(state, changed) { state.purchaseOrderChanged = changed }, setPurchaseOrderReportState(state, reportState) { state.purchaseOrderReportState = reportState }, setAddresses(state) { //if shipping address as null if (state.one.shippingAddress && state.one.shippingAddress.city === '' && state.one.shippingAddress.country === '' && state.one.shippingAddress.countryIso3 === '') { state.one.shippingAddress = null } //if billing address as null if (state.one.billingAddress && state.one.billingAddress.city === '' && state.one.billingAddress.country === '' && state.one.billingAddress.countryIso3 === '') { state.one.billingAddress = null } } }, actions: { getPurchaseOrderChangesSummary: async ({commit}, {purchaseOrderChangesetId}) => { // commit('inProgress', true); try { let res = await doGetPruchaseOrderXChanges({purchaseOrderChangesetId}) if(res){ commit('setPurchaseOrderChangesSummary', humps(res)) }else{ commit('setPurchaseOrderChangesSummary', []) } }catch (err) { throw err } finally { // commit('inProgress', false) } }, new({ commit }, { purchaserBusinessEntityId, addresses }) { commit('inProgress', false); commit('setOne', { appId: "", providerBusinessEntityId: null, purchaserBusinessEntityId: purchaserBusinessEntityId, importData: '', poNumber: "", totalAmount: null, date: new Date().toISOString().substring(0, 10), status: "Draft", isProcessing: true, paymentTerms: null, shippingAddress: '', billingAddress: '', //paymentAdvancePercent: 0, paymentTermsObject: null, metadata: {templateTypeId:null, ashtaSeason: null, otherSeason: null, brandId:null, lineSheetId: null, brandName: null, newBrandName: null, newSalesTeamName: null, newSalesAgentName: null }, shippingAddress: addresses.shipping, billingAddress: addresses.billing, orderCcy: 'USD', shippingCost: 0, totalAmount: 0, discountPct: 0, itemsFormat: 'sku', discountValue: 0, taxPct:null, shipmentStartDate: null, shipmentCancelDate: null, salesagentBusinessEntityId: null, category: null, retailteamId:null, retailteamIds:[], state: null, stateMeta: {}, commissionPct:0, commissionValue:0, erpPoRef:null, erpSupplierRef:null }); }, fetchOne: async ({ commit, dispatch, rootState }, { purchaseOrderId, businessEntityId, appId, recursive,snapshotObj }) => { commit('inProgress', true); try { let order =null if(purchaseOrderId && !snapshotObj){ order = await doFetchOne({ purchaseOrderId }); } if(snapshotObj){ order= snakes(snapshotObj) } if (order) { if (order.metadata && appId && order.metadata.brand_id) { let brandId = await dispatch('brandOne/fetchOne', { brandId: order.metadata.brand_id, appId: appId }, { root: true }) order.metadata.brand_id = brandId } if (order.metadata && appId && order.metadata.line_sheet_id) { let brandCatalogId = await dispatch('brandCatalogOne/fetchOne', { brandCatalogId: order.metadata.line_sheet_id, appId: appId }, { root: true }) order.metadata.line_sheet_id = brandCatalogId } if (order && appId && order.provider_business_entity_id) { let providerBusinessEntity = await dispatch('businessEntityOne/fetchBusinessOne', { businessEntityId: order.provider_business_entity_id, appId: appId },{ root: true }) order.provider_business_entity_id = providerBusinessEntity } if (order && appId && order.salesagent_business_entity_id) { let salesagentBusinessEntity = await dispatch('businessEntityOne/fetchBusinessOne', { businessEntityId: order.salesagent_business_entity_id, appId: appId },{ root: true }) order.salesagent_business_entity_id = salesagentBusinessEntity } // commit('setPurchaseOrderShipWindows', order.state_meta); commit('setOne', humps(order)); } if (recursive && (!rootState.businessEntityOne.one || order.purchaser_business_entity_id !== rootState.businessEntityOne.one.id)) { dispatch('businessEntityOne/fetchOne', { businessEntityId: businessEntityId, appId: appId }, { root: true }) } return humps(order) } // eslint-disable-next-line no-useless-catch catch (err) { throw err } finally { commit('inProgress', false) } }, save: async ({ commit, state }, { appId, otherPaymentTerms, newPurchaseOrderId }) => { commit('inProgress', true); try { if (state.one && state.one.businessEntity) commit('removeBusinessEntity'); commit('setAddresses') let oneCopy={} Object.assign(oneCopy,state.one) if(oneCopy && oneCopy.paymentAdvancePercent !== undefined) delete oneCopy.paymentAdvancePercent if (undefined === state.one.id) { oneCopy.metadata.brandName = oneCopy.metadata.brandId.name oneCopy.metadata.brandId = oneCopy.metadata.brandId.id ? oneCopy.metadata.brandId.id : null //oneCopy.metadata.isNewOrder=true if (oneCopy.metadata.lineSheetId) { oneCopy.metadata.lineSheetId = oneCopy.metadata.lineSheetId.id } if (oneCopy && oneCopy.retailteam) { delete oneCopy.retailteam } //if (oneCopy.paymentTerms === 'Other') { oneCopy.paymentTermsObject = getPaymentTypesInObj(state.otherPaymentTypes) // } if (oneCopy.metadata.ashtaSeason !== 'Other') { oneCopy.metadata.otherSeason = null } if (typeof oneCopy.providerBusinessEntityId !== 'object' && oneCopy.providerBusinessEntityId) { oneCopy.metadata.newSalesTeamName = oneCopy.providerBusinessEntityId } oneCopy.providerBusinessEntityId = oneCopy.providerBusinessEntityId && oneCopy.providerBusinessEntityId.id ? oneCopy. providerBusinessEntityId.id : null if (typeof oneCopy.salesagentBusinessEntityId !== 'object' && oneCopy.salesagentBusinessEntityId) { oneCopy.metadata.newSalesAgentName = oneCopy.salesagentBusinessEntityId } oneCopy.salesagentBusinessEntityId = oneCopy.salesagentBusinessEntityId && oneCopy.salesagentBusinessEntityId.id ? oneCopy. salesagentBusinessEntityId.id : null //newPurchaseOrderId will received only from excel upload form //if shipping address as null if (oneCopy.shippingAddress && oneCopy.shippingAddress.city === '' && oneCopy.shippingAddress.country === '' && oneCopy.shippingAddress.countryIso3 === '') { oneCopy.shippingAddress = null } //if billing address as null if (oneCopy.billingAddress && oneCopy.billingAddress.city === '' && oneCopy.billingAddress.country === '' && oneCopy.billingAddress.countryIso3 === '') { oneCopy.billingAddress = null } if(oneCopy.metadata.brandId){ oneCopy.metadata.newBrandName=null } let postParams = newPurchaseOrderId ? snakes(Object.assign({}, oneCopy, { appId: appId }, { id: newPurchaseOrderId })) : snakes(Object.assign({}, oneCopy, { appId: appId })) let purchaseOrder = await doPostOne(postParams); commit('inProgress', false); return ({ error: false, new: true, purchaseOrder: purchaseOrder }); } else { // let oneCopy={} //Object.assign(oneCopy,state.one) if (oneCopy && (oneCopy.providerBusinessEntity || oneCopy.providerBusinessEntity == null)) { //commit('removeProviderBusinessEntity'); delete oneCopy.providerBusinessEntity } // if(!oneCopy.metadata.isNewOrder){ // oneCopy.metadata.isNewOrder=false // } if (oneCopy && oneCopy.hasOwnProperty('retailteam')) { delete oneCopy.retailteam } if (oneCopy && oneCopy.hasOwnProperty('brandId')) { delete oneCopy.brandId } if (oneCopy && oneCopy.hasOwnProperty('brandName')) { delete oneCopy.brandName } if (oneCopy && oneCopy.hasOwnProperty('salesagentBusinessEntity')) { delete oneCopy.salesagentBusinessEntity } if (oneCopy && oneCopy.purchaserBusinessEntity) { //commit('removePurchaserBusinessEntity'); delete oneCopy.purchaserBusinessEntity } if (oneCopy.itemsFormat === null) { oneCopy.itemsFormat = 'sku' } oneCopy.metadata.brandName = oneCopy.metadata.brandId.name oneCopy.metadata.brandId = oneCopy.metadata.brandId.id ? oneCopy.metadata.brandId.id : null if (typeof oneCopy.providerBusinessEntityId !== 'object' && oneCopy.providerBusinessEntityId) { oneCopy.metadata.newSalesTeamName = oneCopy.providerBusinessEntityId } else { oneCopy.metadata.newSalesTeamName = null } oneCopy.providerBusinessEntityId = oneCopy.providerBusinessEntityId && oneCopy.providerBusinessEntityId.id ? oneCopy. providerBusinessEntityId.id : null if (typeof oneCopy.salesagentBusinessEntityId !== 'object' && oneCopy.salesagentBusinessEntityId) { oneCopy.metadata.newSalesAgentName = oneCopy.salesagentBusinessEntityId } else { oneCopy.metadata.newSalesAgentName = null } oneCopy.salesagentBusinessEntityId = oneCopy.salesagentBusinessEntityId && oneCopy.salesagentBusinessEntityId.id ? oneCopy. salesagentBusinessEntityId.id : null /* state.one.metadata.salesagentBusinessEntityId=state.one.metadata.salesagentBusinessEntityId.id ? state.one.metadata. salesagentBusinessEntityId.id : null*/ if (oneCopy.metadata.lineSheetId) { oneCopy.metadata.lineSheetId = oneCopy.metadata.lineSheetId.id } //if (oneCopy.paymentTerms === 'Other') { oneCopy.paymentTermsObject = getPaymentTypesInObj(state.otherPaymentTypes) // } if(oneCopy.metadata.brandId){ oneCopy.metadata.newBrandName=null } let purchaseOrder = await doPatchOne(snakes(oneCopy)); commit('inProgress', false); return ({ error: false, update: true, purchaseOrder: purchaseOrder }); } } // eslint-disable-next-line no-useless-catch catch (err) { console.log(err) //throw err return { error: true, err } } finally { commit('inProgress', false) } }, assignBrandId: async ({ commit, state, dispatch }) => { commit('inProgress', true); try { //state.one.metadata.brandName = state.one.metadata.brandId.name; //state.one.metadata.brandId = state.one.metadata.brandId.id ; //state.one.metadata.newBrandName = '' ; state.one.providerBusinessEntityId = state.one.providerBusinessEntityId && state.one.providerBusinessEntityId.id ? state.one. providerBusinessEntityId.id : null state.one.salesagentBusinessEntityId = state.one.salesagentBusinessEntityId && state.one.salesagentBusinessEntityId.id ? state.one. salesagentBusinessEntityId.id : null let newVal = await doAssignBrandId({ id: state.one.id, metadata: snakes(state.one.metadata), providerId: (state.one.providerBusinessEntityId), salesagentBusinessEntityId: (state.one.salesagentBusinessEntityId) }); dispatch('purchaseOrderOne/fetchOne', { purchaseOrderId: state.one.id, businessEntityId: state.one.purchaserBusinessEntityId, appId: state.one.appId }, { root: true }) return ({ update: true }); } // eslint-disable-next-line no-useless-catch catch (err) { throw err } finally { commit('inProgress', false) } }, changeOrderStatus: async ({ commit, state }, { isProcessing, orderStatus, orderState }) => { commit('inProgress', true); try { await doOrderStatusUpdate({ id: state.one.id, isProcessing: isProcessing, status: orderStatus, state: orderState }); commit('inProgress', false); return ({ update: true }); } // eslint-disable-next-line no-useless-catch catch (err) { throw err } finally { commit('inProgress', false) } }, cancelOrder: async ({ commit }, { orderId, isProcessing, orderStatus,orderState }) => { commit('inProgress', true); try { await doOrderStatusUpdate({ id: orderId, isProcessing: isProcessing, status: orderStatus, state: orderState }); commit('inProgress', false); return ({ update: true }); } // eslint-disable-next-line no-useless-catch catch (err) { throw err } finally { commit('inProgress', false) } }, deleteSelected: async ({ commit }, { purchaseOrderId }) => { commit('inProgress', true); try { await doDeleteSelected({ purchaseOrderId }); return ({ deleteSelected: true }) } catch (err) { return ({ deleteSelected: false }) } finally { commit('inProgress', false); } }, purchaseOrderGetTimeline: async ({ commit }, { purchaseOrderId }) => { commit('inProgress', true); try { let timeLineData = await doPurchaseOrderGetTimeline({ purchaseOrderId }); commit('setPurchaseOrderTimeline', humps(timeLineData)); return ({ timeLineData: humps(timeLineData) }) } catch (err) { throw 'error' } finally { commit('inProgress', false); } }, purchaseOrderCompare: async ({ commit }, { purchaseOrderId, ts1, ts2 }) => { commit('inProgress', true); try { let compareData = await doPurchaseOrderCompare({ purchaseOrderId, ts1, ts2 }); commit('setPurchaseOrderReportChanges', humps(compareData)); return ({ compareData: humps(compareData) }) } catch (err) { throw 'error' } finally { commit('inProgress', false); } }, purchaseOrderReportChanges: async ({ commit }, { purchaseOrderId, filter, reportState }) => { commit('inProgress', true); try { commit('setPurchaseOrderReportState', reportState); let compareData = await doPurchaseOrderReportChanges({ purchaseOrderId, filter }); commit('setPurchaseOrderReportChanges', humps(compareData)); return ({ compareData: humps(compareData) }) } catch (err) { throw 'error' } finally { commit('inProgress', false); } }, fetchPurchaseOrderChange: async ({ commit }, { purchaseOrderId }) => { commit('inProgress', true); try { let changedData = await doFetchPurchaseOrderChange({ purchaseOrderId }); commit('setPurchaseOrderChange', humps(changedData)); return (humps(changedData)) } catch (err) { throw 'error' } finally { commit('inProgress', false); } }, updateOrderChangeResponse: async ({ commit }, { purchaserOkUuid, purchaserOk, purchaserNotes, id, providerOkUserId, providerOk, providerNotes }) => { commit('inProgress', true); try { let changedData = await doPatchOrderChangeResponse({ purchaserOkUuid, purchaserOk, purchaserNotes, id, providerOkUserId, providerOk, providerNotes }); return (humps(changedData)) } catch (err) { throw 'error' } finally { commit('inProgress', false); } }, saveOrderChangeResponse: async ({ commit }, purchaseOrderChangeObject) => { commit('inProgress', true); try { let changedData = await doPostOrderChangeResponse(snakes(purchaseOrderChangeObject)); return (humps(changedData)) } catch (err) { throw 'error' } finally { commit('inProgress', false); } }, addDefaultPaymentType: async ({ commit }, val) => { commit('addDefaultPaymentType', val); }, deletePaymentTypeRow: async ({ commit }, index) => { commit('deletePaymentTypeRow', index); }, purchaseOrderItemUpdateItemsFormat: async ({ commit }, { purchaseOrderId, format }) => { commit('inProgress', true); try { let data = await doPurchaseOrderUpdateItemsFormat({ purchaseOrderId, format }); return ({ data: humps(data) }) } catch (err) { throw 'error' } finally { commit('inProgress', false); } }, doPurchaseOrderDiscardChanges: async ({ commit }, { purchaseOrderId, specs }) => { commit('inProgress', true); try { let data = await doPurchaseOrderDiscardChanges({ purchaseOrderId, specs }); return ({ data: humps(data) }) } catch (err) { throw 'error' } finally { commit('inProgress', false); } }, purchaseOrderUpdateBusinessEntity: async ({ commit, state, dispatch }, { purchaseOrderId, providerBusinessEntityId, salesagentBusinessEntityId }) => { commit('inProgress', true); try { state.one.metadata.brandName = state.one.metadata.brandId.id ? state.one.metadata.brandId.name : '' state.one.metadata.brandId = state.one.metadata.brandId.id ? state.one.metadata.brandId.id : '' state.one.metadata.newBrandName = ''; let data = await doPurchaseOrderUpdateBusinessEntity({ purchaseOrderId, providerBusinessEntityId, metadata: snakes(state.one.metadata), salesagentBusinessEntityId }); dispatch('purchaseOrderOne/fetchOne', { purchaseOrderId: state.one.id, businessEntityId: state.one.purchaserBusinessEntityId, appId: state.one.appId }, { root: true }) return ({ data: humps(data) }) } catch (err) { throw 'error' } finally { commit('inProgress', false); } }, saveImportedData: async ({ commit }, { data, format }) => { commit("inProgress", true); try { let business = await doPostImportedData({ data, format }); commit("inProgress", false); return { new: true, business: humps(business) }; } catch (err) { // eslint-disable-next-line no-useless-catch throw err; } finally { commit("inProgress", false); } }, updatePurchaseOrder: async ({ commit }, {orderDetails}) => { commit("inProgress", true); try { if(orderDetails && orderDetails.metadata){ orderDetails.metadata.brandId = orderDetails.metadata.brandId.id ? orderDetails.metadata.brandId.id : null } let order = await doPatchOne(snakes(orderDetails)); commit("inProgress", false); return { order }; } catch (err) { // eslint-disable-next-line no-useless-catch throw err; } finally { commit("inProgress", false); } }, resetBrandDetails: async ({ commit, state, dispatch }) => { commit("inProgress", true); try { if (state.one.metadata && state.one.appId && state.one.metadata.brandId) { let brandId = await dispatch('brandOne/fetchOne', { brandId: state.one.metadata.brandId.id?state.one.metadata.brandId.id:state.one.metadata.brandId, appId: state.one.appId }, { root: true }) state.one.metadata.brandId = brandId } if (state.one.metadata && state.one.appId && state.one.metadata.lineSheetId) { let brandCatalogId = await dispatch('brandCatalogOne/fetchOne', { brandCatalogId: state.one.metadata.lineSheetId, appId: state.one.appId }, { root: true }) state.one.metadata.lineSheetId = brandCatalogId } commit('setOne', humps(state.one)); } catch (err) { // eslint-disable-next-line no-useless-catch throw err; } finally { commit("inProgress", false); } }, updatePurchaseOrderProperty: async ({ commit }, { purchaseOrderId, property }) => { commit("inProgress", true); try { let order = await doPatchOneProperty({ purchaseOrderId, property: snakes(property) }); commit("inProgress", false); return { order }; } catch (err) { // eslint-disable-next-line no-useless-catch throw err; } finally { commit("inProgress", false); } }, purchaseOrderUpdateState: async ({ commit, state, dispatch }, { property }) => { commit('inProgress', true); try { if(property && property.metadata){ if(typeof property.metadata.brandId === 'object'){ property.metadata.brandName = property.metadata.brandId.name property.metadata.brandId = property.metadata.brandId.id ? property.metadata.brandId.id : null } if (property.metadata.lineSheetId) { property.metadata.lineSheetId = property.metadata.lineSheetId.id } if(property.metadata.brandId){ property.metadata.newBrandName=null } } let data = await doPatchOneProperty({ purchaseOrderId: state.one.id, property: snakes(property) }); dispatch('purchaseOrderOne/fetchOne', { purchaseOrderId: state.one.id, businessEntityId: state.one.purchaserBusinessEntityId, appId: state.one.appId }, { root: true }) return ({ data: humps(data) }) } catch (err) { throw 'error' } finally { commit('inProgress', false); } }, purchaseOrderReceptionReportChanges: async ({ commit }, { purchaseOrderId, filter }) => { commit('inProgress', true); try { let compareData = await doPurchaseOrderReportChanges({ purchaseOrderId, filter }); commit('setPurchaseOrderReceptionReportChanges', humps(compareData)); return ({ compareData: humps(compareData) }) } catch (err) { throw 'error' } finally { commit('inProgress', false); } }, doUpdatePurchaseOrderChangeset: async ({ commit }, { one }) => { commit('inProgress', true); try { let data = await doPatchPurchaseOrderChangesetOne({ one }); return ({ data: humps(data) }) } catch (err) { throw 'error' } finally { commit('inProgress', false); } }, fetchPurchaseOrderChanges: async ({commit}, { changesetId }) => { // commit('inProgress', true); try { let res = await doGetOrderChangesForReport({ changesetId }) if(res){ commit('setPurchaseOrderChangesSummary', humps(res)) return humps(res) }else{ commit('setPurchaseOrderChangesSummary', []) return [] } }catch (err) { throw err } }, updatePurchaseOrderChangesSet: async ({commit}, { changesetId, property }) => { // commit('inProgress', true); try { let res = await doPatchPurchaseOrderChangeSet({ changesetId, property }) if(res){ commit('setPurchaseOrderChangesSummary', humps(res)) return humps(res) }else{ commit('setPurchaseOrderChangesSummary', []) return [] } }catch (err) { throw err } }, saveOrderChangeObject: async ({ commit }, { purchaseOrderChangesetId, change,icpData,oldIcpData }) => { commit('inProgress', true); try { let data = await doPostPurchaseOrderChanges({ purchaseOrderChangesetId, change: snakes(change),icpData,oldIcpData}); return ({ data: humps(data) }) } catch (err) { throw err } finall