procurement-vuex
Version:
Commerce vuex module
207 lines (191 loc) • 8.2 kB
JavaScript
import { auth, nav } from 'oak-vuex'
const { getHubAuthHeader } = auth
const { wrapRequest, wrapRequestWithRange ,wrapEmptyRequest, handleError } = nav
const hubName = process.env.VUE_APP_RETAINHUB_NAME
const retainProcurementApiUrl = process.env.VUE_APP_RETAINHUB_PROCUREMENT_API_URL
const opsSlsApiUrl = process.env.VUE_APP_OPS_SLS_API_URL
const excelSlsApiUrl = process.env.VUE_APP_EXCEL_SLS_API_URL
const doFetchList = wrapRequestWithRange(( {nameLike, purchaseOrderId, appId, limit, offset ,date,styleRef}) => {
const requestOptions = {
method: 'GET',
headers: { 'Content-type': 'application/json', 'Prefer': 'count=exact', ...getHubAuthHeader(hubName) }
}
const params = { app_id:`eq.${appId}`, limit: limit || 50, offset: offset || 0 }
if (nameLike) params['name'] = `ilike.*${nameLike}*`
if (purchaseOrderId) params['purchase_order_id'] = `eq.${purchaseOrderId}`
if (styleRef) params['variants_ref_code'] = `eq.${styleRef}`
if (date){
params['shipment_start_date'] = `eq.${date[0]}`;
params['shipment_cancel_date'] = `eq.${date[1]}`
}
const qs = Object.keys(params).map(key => key + '=' + params[key]).join('&');
return fetch(`${retainProcurementApiUrl}/purchase_order_item?${qs}`, requestOptions);
//&select=*,brand_product(name),brand_product_id(name,price_wholesale)
//&select=*,brand_product(name,price_wholesale)
})
const doFetchStyleRefItems = wrapRequest(( {nameLike, purchaseOrderId, appId,styleRefItems}) => {
const requestOptions = {
method: 'GET',
headers: { 'Content-type': 'application/json', ...getHubAuthHeader(hubName) }
}
const params = { app_id:`eq.${appId}`}
if (nameLike) params['name'] = `ilike.*${nameLike}*`
if (purchaseOrderId) params['purchase_order_id'] = `eq.${purchaseOrderId}`
if (styleRefItems) params['variants_ref_code'] = `eq.${styleRefItems}`
const qs = Object.keys(params).map(key => key + '=' + params[key]).join('&');
return fetch(`${retainProcurementApiUrl}/purchase_order_item?${qs}`, requestOptions);
})
const doPostOne = wrapRequest(({one,icpData}) => {
if(one && icpData){
one.icp_data=icpData
}
const requestOptions = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/vnd.pgrst.object+json',
'Prefer': 'return=representation',
...getHubAuthHeader(hubName)
},
body: JSON.stringify(one)
}
return fetch(`${retainProcurementApiUrl}/purchase_order_item`, requestOptions)
})
const doFetchItemsByIds = wrapRequest(({ids}) => {
const requestOptions = {
method: 'GET',
headers: { 'Content-Type': 'application/json', ...getHubAuthHeader(hubName) }
};
return fetch(`${retainProcurementApiUrl}/purchase_order_item?purchase_order_id=in.(${ids})&select=*,brand!brand_id(name)`, requestOptions)
})
const doPatchOne = wrapRequest(({one,icpData}) => {
if(one && one.icp_data){
one.icp_data=icpData
}
const requestOptions = {
method: 'PATCH',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/vnd.pgrst.object+json',
'Prefer': 'return=representation',
...getHubAuthHeader(hubName)
},
body: JSON.stringify(one)
}
return fetch(`${retainProcurementApiUrl}/purchase_order_item?id=eq.${one.id}`, requestOptions)
})
const doPatchItems = wrapRequest(({dates,orderId,shipmentStartDate,shipmentCancelDate}) => {
const requestOptions = {
method: 'PATCH',
headers: {
'Content-Type': 'application/json',
'Prefer': 'return=representation',
...getHubAuthHeader(hubName)
},
body: JSON.stringify(dates)
}
return fetch(`${retainProcurementApiUrl}/purchase_order_item?purchase_order_id=eq.${orderId}&shipment_start_date=eq.${shipmentStartDate}&shipment_cancel_date=eq.${shipmentCancelDate}`, requestOptions)
})
const doFetchOne = wrapRequest(({ purchaseOrderItemId,appId }) => {
const requestOptions = {
method: 'GET',
headers: { 'Content-type': 'application/json', 'Accept': 'application/vnd.pgrst.object+json', ...getHubAuthHeader(hubName) }
}
return fetch(`${retainProcurementApiUrl}/purchase_order_item?id=eq.${purchaseOrderItemId}&app_id=eq.${appId}`, requestOptions)
})
const doDeleteSelected = wrapEmptyRequest(({purchaseOrderItemId}) => {
const requestOptions = {
method: 'DELETE',
headers: {
'Content-Type': 'application/json', ...getHubAuthHeader(hubName)
},
};
return fetch(`${retainProcurementApiUrl}/purchase_order_item?id=in.(${purchaseOrderItemId})`, requestOptions)
})
const doSearchByStyleRef = wrapRequestWithRange(( {nameLike, purchaseOrderId, appId, limit, offset ,date,styleRef}) => {
const requestOptions = {
method: 'GET',
headers: { 'Content-type': 'application/json', 'Prefer': 'count=exact', ...getHubAuthHeader(hubName) }
}
const params = { app_id:`eq.${appId}`, limit: limit || 50, offset: offset || 0 }
if (nameLike) params['name'] = `ilike.*${nameLike}*`
if (purchaseOrderId) params['purchase_order_id'] = `eq.${purchaseOrderId}`
if (styleRef) params['variants_ref_code'] = `ilike.*${styleRef}*`
if (date){
params['shipment_start_date'] = `eq.${date[0]}`;
params['shipment_cancel_date'] = `eq.${date[1]}`
}
const qs = Object.keys(params).map(key => key + '=' + params[key]).join('&');
return fetch(`${retainProcurementApiUrl}/purchase_order_item?${qs}`, requestOptions);
//&select=*,brand_product(name),brand_product_id(name,price_wholesale)
//&select=*,brand_product(name,price_wholesale)
})
const doExportPurchaseOrderItemsInExcel = async ({ purchaseOrderId, busniessEntityId, preTemplateId, type }) => {
const requestOptions = {
method: 'POST',
headers: {
//'Content-Type': 'application/json',
'Accept': 'text/csv',
...getHubAuthHeader(hubName)
},
body: JSON.stringify({ purchase_order_id: purchaseOrderId, busniess_entity_id: busniessEntityId, pre_template_id :preTemplateId, type })
};
let response = await fetch(`${excelSlsApiUrl}/export-purchase-order-items-to-xlsx`, requestOptions)
try{
const contentType = response.headers.get("content-type");
if (contentType && contentType.indexOf("application/json") !== -1) {
return response.json().then(async data => {
console.log('data', data)
if(data.error){
return { errorMessage: data.message }
} else {
let blob = await data.blob()
return { blob, errorMessage: null }
}
});
}
else {
let blob = await response.blob()
return { blob, errorMessage: null }
}
/* if(response.ok){
if(response.status == 200){
let blob = await response.blob()
return blob
} else if(response.status == 204){
let data = null;
let text = await response.text();
try {
data = JSON.parse(text);
} catch (e) {
data = { message: text };
}
console.log(data.message)
return await data.message
}
}
else {
throw new Error()
}*/
}
catch(error){
return await handleError(error)
}
}
const doCreateJiraTicketRequest = wrapRequest(({ url, data, documentId, documents }) => {
let tokenObj = getHubAuthHeader(hubName)
tokenObj = tokenObj["Authorization"].replace("Bearer ","")
const requestOptions = {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ url, data, document_id: documentId, retainhub_token: tokenObj, documents })
}
return fetch(`${opsSlsApiUrl}/create-jira-request`, requestOptions)
})
export default {
doFetchOne, doFetchList,
doPostOne, doPatchOne, doDeleteSelected,doFetchItemsByIds,doFetchStyleRefItems,doSearchByStyleRef,
doExportPurchaseOrderItemsInExcel,doPatchItems, doCreateJiraTicketRequest
}