procurement-vuex
Version:
Commerce vuex module
1,036 lines (964 loc) • 52.4 kB
JavaScript
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