procurement-vuex
Version:
Commerce vuex module
83 lines (75 loc) • 4 kB
JavaScript
import { auth, nav } from 'oak-vuex'
const { getHubAuthHeader } = auth
const { wrapRequest,wrapRequestWithRange} = nav
const hubName = process.env.VUE_APP_RETAINHUB_NAME
const retainProcurementApiUrl = process.env.VUE_APP_RETAINHUB_PROCUREMENT_API_URL
const doFetchList = wrapRequestWithRange(({ emailLike, poNumberLike, filterByStatus, filterByBrand, filterBySeason, filterByRetailteam, sortByDate, sortByFieldName,appId, limit, offset, purchaserBusinessEntityId, filterByCurrency, filterBySalesagentBusinessEntityId, filterByProviderBusinessEntityId, seasonType,filterByOrdersProcessingState }) => {
const requestOptions = {
method: 'GET',
headers: { 'Content-type': 'application/json', 'Prefer': 'count=exact', ...getHubAuthHeader(hubName) },
};
const params = { app_id: `eq.${appId}`, limit: limit || 100, offset: offset || 0 }
if (filterByBrand) params['metadata->>brand_id'] = `ilike.*${filterByBrand}*`
if (filterBySeason) params['metadata->>' + `${seasonType}`] = `ilike.*${filterBySeason}*`
if (emailLike) params['email'] = `ilike.*${emailLike}*`
if (filterByStatus) params['status'] = `eq.${filterByStatus}`
if (filterByOrdersProcessingState) params['state'] = `in.(${filterByOrdersProcessingState})`
if (poNumberLike) params['po_number'] = `ilike.*${poNumberLike}*`
if (sortByDate) params['order'] = `date.desc`
if (sortByFieldName) params['order'] = `${sortByFieldName}`
if (filterByCurrency) params['order_ccy'] = `ilike.*${filterByCurrency}*`
if (purchaserBusinessEntityId) params['purchaser_business_entity_id'] = `eq.${purchaserBusinessEntityId}`
if (filterByRetailteam) params['retailteam_id'] = `eq.${filterByRetailteam}`
if (filterBySalesagentBusinessEntityId) params['salesagent_business_entity_id'] = `eq.${filterBySalesagentBusinessEntityId}`
if (filterByProviderBusinessEntityId) params['provider_business_entity_id'] = `eq.${filterByProviderBusinessEntityId}`
const qs = Object.keys(params).map(key => key + '=' + params[key]).join('&');
return fetch(`${retainProcurementApiUrl}/purchase_order_snapshot_view?${qs}`, requestOptions);
})
const doFetchOne = wrapRequest(({ purchaseOrderId }) => {
const requestOptions = {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/vnd.pgrst.object+json',
...getHubAuthHeader(hubName)
},
};
const params = { }
if (purchaseOrderId) params['id'] = `eq.${purchaseOrderId}`
const qs = Object.keys(params).map(key => key + '=' + params[key]).join('&');
return fetch(`${retainProcurementApiUrl}/purchase_order_snapshot?${qs}`, requestOptions);
})
const doPurchaseOrderApplyChanges = wrapRequest(({ purchaseOrderId, purchaseOrderChangesetId, specs}) => {
const requestOptions = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Prefer': 'return=representation', ...getHubAuthHeader(hubName)
},
body: JSON.stringify(
{
purchase_order_id : purchaseOrderId,
purchase_order_changeset_id:purchaseOrderChangesetId,
specs: specs
}
)
};
return fetch(`${retainProcurementApiUrl}/rpc/purchase_order_apply_changes`, requestOptions)
})
const doPostPurchaseOrderGetSnapshot = wrapRequest(({purchaseOrderId, specs}) => {
const requestOptions = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Prefer': 'return=representation', ...getHubAuthHeader(hubName)
},
body: JSON.stringify({
"purchase_order_id": purchaseOrderId,
"specs": specs
})
};
return fetch(`${retainProcurementApiUrl}/rpc/purchase_order_get_snapshot`, requestOptions)
})
export default {
doFetchOne, doFetchList,doPurchaseOrderApplyChanges,doPostPurchaseOrderGetSnapshot
}