UNPKG

procurement-vuex

Version:
207 lines (191 loc) 8.2 kB
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 }