UNPKG

procurement-vuex

Version:
361 lines (343 loc) 19.4 kB
import humps from 'lodash-humps' import { getField, updateField } from 'vuex-map-fields' import { generateDiscrepancyOrderSkuItem, generateDiscrepancyOrderItemVarinats, generateDiscrepancyOrderItemAddedAndRemoved, priceFormatter } from './connected_discrepancy_common.service.js' import purchaseOrderService from './purchase_order.service' const { doFetchPurchaseOrderDiscrepancyByChangesetId, doPatchPurchaseOrderXChange, doDeleteChangesetXChange } = purchaseOrderService export default { namespaced: true, state: { purchaseOrderOne: {}, purchaseOrderChangesSummary:null, inProgress: true, purchaseOrderCompare: [], 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 } }, getters: { getField, }, mutations: { updateField, inProgress(state, yesOrNo) { state.inProgress = yesOrNo }, setPurchaseOrderOne(state, one){ state.purchaseOrderOne = one }, 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'] let detailsChanged = compare.changes['detailsChanged'] let addedItems = compare.changes['itemAdded'] let removedItems = compare.changes['itemRemoved'] let orderItemSku = [] let orderItemAddedSku = [] let orderItemVariants = [] let nonCriticalItemVariants = [] let nonCriticalOrderDetails = [] let orderItemAddedVariants = [] // let orderItemAddedCriticalFalse = [] let orderItemRemovedVariants = [] // let orderItemRemovedCriticalFalse = [] let orderItemRemovedSku = [] let newCurrency = '' let oldCurrency = '' // to use in total order number card let orderTotalNumber = [] let shipmentsDiscrepancies = [] let paymentsDiscrepancies = [] let orderDetailsDiscrepancies = [] if(compare.report){ orderTotalNumber.push({ label: 'total_amount', submittedOrder: compare.report.totalAmountBefore , orderConfirmation: compare.report.totalAmountAfter, changeId: '', changeItem : null, type: 'all' }) orderTotalNumber.push({ label: 'total_quantity', submittedOrder: compare.report.totalQtyBefore , orderConfirmation: compare.report.totalQtyAfter, changeId: '', changeItem : null, type: 'all' }) } if(detailsChanged && detailsChanged.length){ let filteredDetails = detailsChanged.filter((item)=>{ if(['order_ccy'].includes(item.change)){ // && item.isOkRequired oldCurrency = item.changeValues.old ? item.changeValues.old : '', newCurrency = item.changeValues.new ? item.changeValues.new : '' } if(['total_amount', 'total_quantity'].includes(item.change)){ // orderTotalNumber.push({ // label: item.change, // submittedOrder: item.change === 'total_amount' ? priceFormatter(item.changeValues.old) : item.changeValues.old, // orderConfirmation:item.change === 'total_amount' ? priceFormatter(item.changeValues.new) : item.changeValues.new, // changeId: item.id, // changeItem : item, // type: 'all' // }) } else if(['shipment_start_date', 'shipment_cancel_date'].includes(item.change) ){ // && item.isOkRequired // if(item.changeValues.old > 0) if(item.isCritical){ shipmentsDiscrepancies.push({ label: item.change, submittedOrder: item.changeValues.old, orderConfirmation: item.changeValues.new, changeId: item.id, changeItem : item, type: 'shipment', isCritical: item.isCritical }) } else { nonCriticalOrderDetails.push({ label: item.change, submittedOrder: item.changeValues.old, orderConfirmation: item.changeValues.new, changeId: item.id, changeItem : item, type: 'shipment', isCritical: item.isCritical }) } } else if(['discount_value', 'discount_pct'].includes(item.change) ){ // && item.isOkRequired // if(item.changeValues.old > 0) if(item.isCritical){ if(item.change == 'discount_pct'){ paymentsDiscrepancies.unshift({ label: item.change, submittedOrder: item.changeValues.old, orderConfirmation: item.changeValues.new, changeId: item.id, changeItem : item, type: 'payment', isCritical: item.isCritical }) } else { paymentsDiscrepancies.push({ label: item.change, submittedOrder: item.changeValues.old, orderConfirmation: item.changeValues.new, changeId: item.id, changeItem : item, type: 'payment', isCritical: item.isCritical }) } } else { nonCriticalOrderDetails.push({ label: item.change, submittedOrder: item.changeValues.old, orderConfirmation: item.changeValues.new, changeId: item.id, changeItem : item, type: 'payment', isCritical: item.isCritical }) } } else if(item.changeValues.new !== item.changeValues.old ){ // && item.isOkRequired // item.changeValues.old && // for other than tot. amt, qty // return item if(item.isCritical){ orderDetailsDiscrepancies.push({ label: item.change, submittedOrder: item.changeValues.old, orderConfirmation: item.changeValues.new, changeId: item.id, changeItem : item, type: 'others' }) } else { nonCriticalOrderDetails.push({ label: item.change, submittedOrder: item.changeValues.old, orderConfirmation: item.changeValues.new, changeId: item.id, changeItem : item, type: 'others' }) } } }) detailsChanged = [] detailsChanged.push(filteredDetails) } if(changedItems && changedItems.length){ changedItems.filter((item) => { // if(item.isOkRequired){ let newOrderItems = item.changeValues.new if(newOrderItems.format == 'sku'){ let skus = generateDiscrepancyOrderSkuItem({ changedItem: item }) if(skus && skus.length){ orderItemSku.push(skus) } } else { oldCurrency = oldCurrency ? oldCurrency : state.purchaseOrderOne.orderCcy ? state.purchaseOrderOne.orderCcy : '' newCurrency = newCurrency ? newCurrency : state.purchaseOrderOne.orderCcy ? state.purchaseOrderOne.orderCcy : '' let variants = generateDiscrepancyOrderItemVarinats({ changedItem: item, newCurrency, oldCurrency }) if(variants){ if(item.isCritical) orderItemVariants.push(variants) else nonCriticalItemVariants.push(variants) } } // } }) } if(removedItems && removedItems.length){ removedItems.filter((item) => { // if(item.isOkRequired){ oldCurrency = oldCurrency ? oldCurrency : state.purchaseOrderOne.orderCcy ? state.purchaseOrderOne.orderCcy : '' newCurrency = newCurrency ? newCurrency : state.purchaseOrderOne.orderCcy ? state.purchaseOrderOne.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){ if(item.isCritical) orderItemRemovedVariants.push(variants) else nonCriticalItemVariants.push(variants) } } //} }) } if(addedItems && addedItems.length){ addedItems.filter((item) => { // if(item.isOkRequired){ oldCurrency = oldCurrency ? oldCurrency : state.purchaseOrderOne.orderCcy ? state.purchaseOrderOne.orderCcy : '' newCurrency = newCurrency ? newCurrency : state.purchaseOrderOne.orderCcy ? state.purchaseOrderOne.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){ if(item.isCritical) orderItemAddedVariants.push(variants) else nonCriticalItemVariants.push(variants) } } // } }) } // if(state.purchaseOrderOne.state == 'approved_with_discrepancies'){ state.purchaseOrderReportChanges.orderItemSku = orderItemSku state.purchaseOrderReportChanges.addedSkuItems = orderItemAddedSku state.purchaseOrderReportChanges.removedSkuItems = orderItemRemovedSku state.purchaseOrderReportChanges.orderItemVariants = orderItemVariants // item-changed (only critical) state.purchaseOrderReportChanges.detailsChanged = detailsChanged state.purchaseOrderReportChanges.nonCriticalOrderDetails = nonCriticalOrderDetails state.purchaseOrderReportChanges.differences = orderTotalNumber state.purchaseOrderReportChanges.paymentsDiscrepancies = paymentsDiscrepancies state.purchaseOrderReportChanges.shipmentsDiscrepancies = shipmentsDiscrepancies state.purchaseOrderReportChanges.orderDetailsDiscrepancies = orderDetailsDiscrepancies state.purchaseOrderReportChanges.removedItems = removedItems state.purchaseOrderReportChanges.addedVariantsItems = orderItemAddedVariants // item-added (only critical) state.purchaseOrderReportChanges.removedVariantsItems = orderItemRemovedVariants // item-removed (only critical) state.purchaseOrderReportChanges.nonCriticalItemVariants = nonCriticalItemVariants // non critical items state.purchaseOrderReportChanges.changedItems = changedItems } state.purchaseOrderReportChanges.changes = compare.changes state.purchaseOrderReportChanges.report = compare.report } catch (err){ console.log("Error while generating discrepancy ", err) } }, }, actions: { setPurchaseOrderOne: ({ commit },{ one }) =>{ commit('setPurchaseOrderOne', one); }, purchaseOrderReportChanges: async ({ commit }, { purchaseOrderId, purchaseOrderChangesetId, specs }) => { commit('inProgress', true); try { let discrepResp = await doFetchPurchaseOrderDiscrepancyByChangesetId({ purchaseOrderId, purchaseOrderChangesetId, specs }); commit('setPurchaseOrderReportChanges', humps(discrepResp)); return ({ discrepResp: humps(discrepResp) }) } catch (err) { throw 'error' } finally { commit('inProgress', false); } }, updatePurchaseOrderChange: async ({ commit }, { changeId, property }) => { commit('inProgress', true); try { let changeResp = await doPatchPurchaseOrderXChange({ changeId, property }); // commit('setPurchaseOrderReportChanges', humps(changeResp)); return ({ changeResp: humps(changeResp) }) } catch (err) { throw 'error' } finally { commit('inProgress', false); } }, deleteCurrentChangeOfChangeset: async ({ commit }, { changeId }) => { commit('inProgress', true); try { await doDeleteChangesetXChange({ changeId }); return ({ changeResp: true }) } catch (err) { throw 'error' } finally { commit('inProgress', false); } }, }, }