wholesale-vuex
Version:
Commerce vuex module
366 lines (348 loc) • 19.3 kB
JavaScript
import humps from 'lodash-humps'
import { getField, updateField } from 'vuex-map-fields'
import { generateDiscrepancyOrderSkuItem, generateDiscrepancyOrderItemVarinats, generateDiscrepancyOrderItemAddedAndRemoved, priceFormatter } from './common.service.js'
import wholesaleOrderService from './wholesale_order.service'
const { doFetchWholesaleOrderDiscrepancyByChangesetId, doPatchWholesaleOrderChange, doDeleteChangesetXChange } = wholesaleOrderService
export default {
namespaced: true,
state: {
salesOrderOne: {},
wholesaleOrderChangesSummary:null,
inProgress: true,
wholesaleOrderCompare: [],
salesOrderReportChanges: {
orderItemSku : null,
orderItemVariants : null,
detailsChanged : null,
differences : null,
removedItems : null,
addedItems : null,
changedItems : null
},
salesOrderPackedReportChanges: {
orderItemSku : null,
orderItemVariants : null,
detailsChanged : null,
differences : null,
removedItems : null,
addedItems : null,
changedItems : null
}
},
getters: {
getField,
},
mutations: {
updateField,
inProgress(state, yesOrNo) {
state.inProgress = yesOrNo
},
setSalesOrderOne(state, one){
state.salesOrderOne = one
},
setSalesOrderReportChanges(state, compare) {
try {
state.salesOrderReportChanges = {
orderItemSku : null,
orderItemVariants : null,
detailsChanged : null,
differences : null,
removedItems : null,
addedItems : null,
changedItems : null
}
state.salesOrderPackedReportChanges = {
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 orderItemAddedVariants = []
let orderItemRemovedVariants = []
let orderItemRemovedSku = []
let nonCriticalItemVariants = []
let nonCriticalOrderDetails = []
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({
// 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,
// label: item.change,
// 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',
isCritical: item.isCritical
})
} else {
nonCriticalOrderDetails.push({
label: item.change,
submittedOrder: item.changeValues.old,
orderConfirmation: item.changeValues.new,
changeId: item.id,
changeItem : item,
type: 'others',
isCritical: item.isCritical
})
}
}
})
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.salesOrderOne.orderCcy ? state.salesOrderOne.orderCcy : ''
newCurrency = newCurrency ? newCurrency : state.salesOrderOne.orderCcy ? state.salesOrderOne.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.salesOrderOne.orderCcy ? state.salesOrderOne.orderCcy : ''
newCurrency = newCurrency ? newCurrency : state.salesOrderOne.orderCcy ? state.salesOrderOne.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.salesOrderOne.orderCcy ? state.salesOrderOne.orderCcy : ''
newCurrency = newCurrency ? newCurrency : state.salesOrderOne.orderCcy ? state.salesOrderOne.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.salesOrderOne.state == 'approved_with_discrepancies'){
state.salesOrderReportChanges.orderItemSku = orderItemSku
state.salesOrderReportChanges.addedSkuItems = orderItemAddedSku
state.salesOrderReportChanges.removedSkuItems = orderItemRemovedSku
state.salesOrderReportChanges.orderItemVariants = orderItemVariants // item-changed
state.salesOrderReportChanges.detailsChanged = detailsChanged
state.salesOrderReportChanges.nonCriticalOrderDetails = nonCriticalOrderDetails
state.salesOrderReportChanges.differences = orderTotalNumber
state.salesOrderReportChanges.paymentsDiscrepancies = paymentsDiscrepancies
state.salesOrderReportChanges.shipmentsDiscrepancies = shipmentsDiscrepancies
state.salesOrderReportChanges.orderDetailsDiscrepancies = orderDetailsDiscrepancies
state.salesOrderReportChanges.removedItems = removedItems
state.salesOrderReportChanges.addedVariantsItems = orderItemAddedVariants // item-added
state.salesOrderReportChanges.removedVariantsItems = orderItemRemovedVariants // item-removed
state.salesOrderReportChanges.nonCriticalItemVariants = nonCriticalItemVariants // non critical items
state.salesOrderReportChanges.changedItems = changedItems
}
//if(state.salesOrderOne.state == 'approved_with_discrepancies'){
state.salesOrderReportChanges.changes = compare.changes
state.salesOrderReportChanges.report = compare.report
/*} else if(state.salesOrderOne.state == 'packed_with_discrepancies') {
state.salesOrderPackedReportChanges.changes = compare.changes
state.salesOrderPackedReportChanges.report = compare.report
}*/
} catch (err){
console.log("Error while generating discrepancy ", err)
}
},
},
actions: {
setSalesOrderOne: ({ commit },{ one }) =>{
commit('setSalesOrderOne', one);
},
salesOrderReportChanges: async ({ commit }, { salesOrderId, changesetId, specs }) => {
commit('inProgress', true);
try {
let discrepResp = await doFetchWholesaleOrderDiscrepancyByChangesetId({ salesOrderId, changesetId, specs });
commit('setSalesOrderReportChanges', humps(discrepResp));
return ({ discrepResp: humps(discrepResp) })
} catch (err) {
throw 'error'
}
finally {
commit('inProgress', false);
}
},
updateWholesaleOrderChange: async ({ commit }, { changeId, property }) => {
commit('inProgress', true);
try {
let changeResp = await doPatchWholesaleOrderChange({ changeId, property });
// commit('setSalesOrderReportChanges', 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);
}
},
},
}