UNPKG

procurement-vuex

Version:
536 lines (489 loc) 23.4 kB
import { auth, nav } from 'oak-vuex' const { getHubAuthHeader } = auth const { wrapRequest, wrapRequestWithRange, wrapEmptyRequest } = 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?${qs}`, requestOptions); }) const doFetchListForCsvExport = wrapRequestWithRange(({ sortByDate, appId, purchaserBusinessEntityId }) => { const requestOptions = { method: 'GET', headers: { 'Content-type': 'application/json', 'Prefer': 'count=exact', ...getHubAuthHeader(hubName) }, }; const params = { app_id: `eq.${appId}`} if (sortByDate) params['order'] = `date.desc` if (purchaserBusinessEntityId) params['purchaser_business_entity_id'] = `eq.${purchaserBusinessEntityId}` const qs = Object.keys(params).map(key => key + '=' + params[key]).join('&'); return fetch(`${retainProcurementApiUrl}/purchase_order?${qs}`, requestOptions); }) const doFetchOrderListByIds = wrapRequestWithRange(({ appId, orderIds, limit, offset }) => { 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 (orderIds) params['id'] = `in.(${orderIds})` const qs = Object.keys(params).map(key => key + '=' + params[key]).join('&'); return fetch(`${retainProcurementApiUrl}/purchase_order?${qs}`, requestOptions) }) const doPostOne = wrapRequest((orderDetails) => { if (orderDetails && orderDetails.metadata.new_brand_name) { delete orderDetails.metadata.brand_id } const requestOptions = { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/vnd.pgrst.object+json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, body: JSON.stringify(orderDetails) }; return fetch(`${retainProcurementApiUrl}/purchase_order`, requestOptions) }) const doPatchOne = wrapRequest((orderDetails) => { if (orderDetails && orderDetails.metadata.brand_id == '') { delete orderDetails.metadata.brand_id } const requestOptions = { method: 'PATCH', headers: { 'Content-Type': 'application/json', 'Accept': 'application/vnd.pgrst.object+json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, body: JSON.stringify(orderDetails) }; return fetch(`${retainProcurementApiUrl}/purchase_order?id=eq.${orderDetails.id}`, requestOptions) }) const doPatchOneProperty = wrapRequest(({ purchaseOrderId, property }) => { const requestOptions = { method: 'PATCH', headers: { 'Content-Type': 'application/json', 'Accept': 'application/vnd.pgrst.object+json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, body: JSON.stringify(property) }; return fetch(`${retainProcurementApiUrl}/purchase_order?id=eq.${purchaseOrderId}`, requestOptions) }) const doOrderStatusUpdate = wrapRequest(({ id, isProcessing, status, state }) => { const params = {} if (isProcessing) params['is_processing'] = isProcessing if (status) params['status'] = status if (state) params['state'] = state const requestOptions = { method: 'PATCH', headers: { 'Content-Type': 'application/json', 'Accept': 'application/vnd.pgrst.object+json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, body: JSON.stringify(params) }; return fetch(`${retainProcurementApiUrl}/purchase_order?id=eq.${id}`, requestOptions) }) const doAssignBrandId = wrapRequest(({ id, metadata, providerId, salesagentBusinessEntityId }) => { const params = { 'metadata': metadata, 'provider_business_entity_id': providerId, 'salesagent_business_entity_id': salesagentBusinessEntityId } const requestOptions = { method: 'PATCH', headers: { 'Content-Type': 'application/json', 'Accept': 'application/vnd.pgrst.object+json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, body: JSON.stringify(params) }; return fetch(`${retainProcurementApiUrl}/purchase_order?id=eq.${id}`, requestOptions) }) const doFetchOne = wrapRequest(({ purchaseOrderId }) => { const requestOptions = { method: 'GET', headers: { 'Content-type': 'application/json', 'Accept': 'application/vnd.pgrst.object+json', ...getHubAuthHeader(hubName) }, }; return fetch(`${retainProcurementApiUrl}/purchase_order?id=eq.${purchaseOrderId}&select=*,provider_business_entity(*),purchaser_business_entity(name)`, requestOptions); }) const doDeleteSelected = wrapEmptyRequest(({ purchaseOrderId }) => { const requestOptions = { method: 'DELETE', headers: { 'Content-Type': 'application/json', ...getHubAuthHeader(hubName) }, }; return fetch(`${retainProcurementApiUrl}/purchase_order?id=in.(${purchaseOrderId})`, requestOptions) }) const doPurchaseOrderGetTimeline = wrapRequest(({ purchaseOrderId }) => { const requestOptions = { method: 'POST', headers: { 'Content-Type': 'application/json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, body: JSON.stringify( { purchase_order_id: purchaseOrderId } ) }; return fetch(`${retainProcurementApiUrl}/rpc/purchase_order_get_timeline`, requestOptions) }) const doPurchaseOrderReportChanges = wrapRequest(({ purchaseOrderId, filter }) => { const requestOptions = { method: 'POST', headers: { 'Content-Type': 'application/json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, body: JSON.stringify( { purchase_order_id: purchaseOrderId, filter: filter } ) }; return fetch(`${retainProcurementApiUrl}/rpc/purchase_order_report_changes`, requestOptions) }) const doFetchPurchaseOrderChange = wrapRequest(({ purchaseOrderId }) => { const requestOptions = { method: 'GET', headers: { 'Content-type': 'application/json', ...getHubAuthHeader(hubName) }, }; return fetch(`${retainProcurementApiUrl}/purchase_order_change?purchase_order_id=eq.${purchaseOrderId}`, requestOptions); }) const doPatchOrderChangeResponse = wrapRequest(({ purchaserOkUuid, purchaserOk, purchaserNotes, id, providerOkUserId, providerOk, providerNotes }) => { const params = {} if (purchaserOkUuid) params['purchaser_ok_uuid'] = `${purchaserOkUuid}` if (purchaserOk == false || purchaserOk) params['purchaser_ok'] = `${purchaserOk}` if (purchaserNotes) params['purchaser_notes'] = `${purchaserNotes}` if (providerOkUserId) params['provider_ok_user_id'] = `${providerOkUserId}` if (providerOk == false || providerOk) params['provider_ok'] = `${providerOk}` if (providerNotes) params['provider_notes'] = `${providerNotes}` const requestOptions = { method: 'PATCH', headers: { 'Content-Type': 'application/json', 'Accept': 'application/vnd.pgrst.object+json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, body: JSON.stringify(params) }; return fetch(`${retainProcurementApiUrl}/purchase_order_change?id=eq.${id}`, requestOptions) }) const doPostOrderChangeResponse = wrapRequest((purchaseOrderChangeObject) => { if (purchaseOrderChangeObject && purchaseOrderChangeObject.change_values && purchaseOrderChangeObject.change_values.new.country_iso_3) { const iso3 = purchaseOrderChangeObject.change_values.new.country_iso_3 delete purchaseOrderChangeObject.change_values.new.country_iso_3 purchaseOrderChangeObject.change_values.new.country_iso3 = iso3 } if (purchaseOrderChangeObject && purchaseOrderChangeObject.change_values && purchaseOrderChangeObject.change_values.old.country_iso_3) { const iso3 = purchaseOrderChangeObject.change_values.old.country_iso_3 delete purchaseOrderChangeObject.change_values.old.country_iso_3 purchaseOrderChangeObject.change_values.old.country_iso3 = iso3 } if (purchaseOrderChangeObject.id) delete purchaseOrderChangeObject.id const requestOptions = { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/vnd.pgrst.object+json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, body: JSON.stringify(purchaseOrderChangeObject) }; return fetch(`${retainProcurementApiUrl}/purchase_order_change`, requestOptions) }) const doFetchProcurementReport = wrapRequest(({ purchaserIds, from, storeIds, to, providerIds, filters }) => { if (!filters) { filters = null } const requestOptions = { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/vnd.pgrst.object+json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, /* body: JSON.stringify({ _purchaser_ids:purchaserIds, _from:from, _store_ids:storeIds, _to:to,_provider_ids:providerIds})*/ body: JSON.stringify({ _purchaser_ids: purchaserIds, _from: from, _store_ids: storeIds, _to: to, _provider_ids: providerIds, _filters: filters }) }; return fetch(`${retainProcurementApiUrl}/rpc/report_purchase_orders`, requestOptions) }) const doPurchaseOrderUpdateItemsFormat = wrapRequest(({ purchaseOrderId, format }) => { const requestOptions = { method: 'PATCH', headers: { 'Content-Type': 'application/json', 'Accept': 'application/vnd.pgrst.object+json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, body: JSON.stringify(format) }; return fetch(`${retainProcurementApiUrl}/purchase_order?id=eq.${purchaseOrderId}`, requestOptions) }) const doPurchaseOrderUpdateBusinessEntity = wrapRequest(({ purchaseOrderId, providerBusinessEntityId, metadata, salesagentBusinessEntityId }) => { const params = { 'metadata': metadata, 'provider_business_entity_id': providerBusinessEntityId.provider_business_entity_id, 'salesagent_business_entity_id': salesagentBusinessEntityId.salesagent_business_entity_id } const requestOptions = { method: 'PATCH', headers: { 'Content-Type': 'application/json', 'Accept': 'application/vnd.pgrst.object+json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, body: JSON.stringify(params) }; return fetch(`${retainProcurementApiUrl}/purchase_order?id=eq.${purchaseOrderId}`, requestOptions) }) // do post imported data from csv file const doPostImportedData = wrapRequest(({ data, format }) => { let purchaseOrderObject = { "id": "", "app_id": "", "provider_business_entity_id": "", "purchaser_business_entity_id": "", "import_data": "", "po_number": "", "total_amount": 0, "date": "", "status": "", "payment_advance_percent": 0, "metadata": "", "shipping_address": "", "billing_address": "", "payment_terms": "", "status_ts": "", "last_ts": "", "order_ccy": "", "is_processing": '', "shipping_cost": 0, "shipment_start_date": "", "shipment_cancel_date": "", "payment_terms_object": "", "state": "", "items_format": "sku", "discount_value": 0, "discount_pct": 0, "sum_amount": 0 } let headers = data[0] let purchaseOrders = [] for (let d = 1; d < data.length; d++) { let entity = {} if (data[d].length > 2) // to avoid last empty record { for (let h = 0; h < headers.length; h++) { if (headers[h].indexOf('.') !== -1) { let objSplitted = headers[h].split('.') if (!entity[objSplitted[0]]) entity[objSplitted[0]] = {} entity[objSplitted[0]][objSplitted[1]] = data[d][h] == "null" ? null : data[d][h] == "undefined" ? undefined : data[d][h] } if (purchaseOrderObject.hasOwnProperty(headers[h])) { // for numeric, integer if (['payment_advance_percent', 'total_amount', 'shipping_cost', 'discount_value', 'sum_amount', 'discount_pct'].includes(headers[h])) { entity[headers[h]] = data[d][h] == "null" ? null : data[d][h] == "undefined" ? undefined : Number(data[d][h]) } // for object else if (['import_data', 'metadata', 'shipping_address', 'billing_address', 'payment_terms_object'].includes(headers[h])) { entity[headers[h]] = data[d][h] == "null" ? null : data[d][h] == "undefined" ? undefined : !data[d][h] ? data[d][h] : JSON.parse(data[d][h]) } //for string else { entity[headers[h]] = data[d][h] == "null" ? null : data[d][h] == "true" ? true : data[d][h] == "false" ? false : data[d][h] == "undefined" ? undefined : data[d][h] } } } if (entity.po_number !== undefined) purchaseOrders.push(entity) } } console.log(purchaseOrders) const requestOptions = { method: "POST", headers: { "Content-Type": "application/json", Prefer: ['resolution=merge-duplicates', 'return=representation'], ...getHubAuthHeader(hubName), }, body: JSON.stringify(purchaseOrders), }; return fetch(`${retainProcurementApiUrl}/purchase_order`, requestOptions); }); const doFetchLogisticsTrackerList = wrapRequest(({ purchaseOrderId }) => { const requestOptions = { method: 'POST', headers: { 'Content-Type': 'application/json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, body: JSON.stringify( { purchase_order_id: purchaseOrderId } ) }; return fetch(`${retainProcurementApiUrl}/rpc/purchase_order_get_logistics`, requestOptions) }); const doGetPurchaseOrderChanges = 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_changes`, requestOptions) }) const doPurchaseOrderDiscardChanges = wrapRequest(({ purchaseOrderId, specs }) => { const requestOptions = { method: 'POST', headers: { 'Content-Type': 'application/json', ...getHubAuthHeader(hubName) }, body: JSON.stringify({ "purchase_order_id": purchaseOrderId, "specs": specs }) }; return fetch(`${retainProcurementApiUrl}/rpc/purchase_order_discard_changes`, requestOptions) }) const doPatchPurchaseOrderChangesetOne = wrapRequest(({ one }) => { const requestOptions = { method: 'PATCH', headers: { 'Content-Type': 'application/json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, body: JSON.stringify(one) }; return fetch(`${retainProcurementApiUrl}/purchase_order_changeset?id=eq.${one.id}`, requestOptions) }) /* discrepancy report services */ const doGetOrderChangesForReport = wrapRequest(({ changesetId }) => { const requestOptions = { method: 'GET', headers: { 'Content-Type': 'application/json', ...getHubAuthHeader(hubName) }, }; return fetch(`${retainProcurementApiUrl}/purchase_order_xchange?purchase_order_changeset_id=eq.${changesetId}&purchaser_ok=is.null`, requestOptions) }) const doFetchPurchaseOrderDiscrepancyByChangesetId = 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 } ) }; return fetch(`${retainProcurementApiUrl}/rpc/purchase_order_report_on_changeset`, requestOptions) }) const doPatchPurchaseOrderChangeSet = wrapRequest(({ changesetId, property }) => { const requestOptions = { method: 'PATCH', headers: { 'Content-Type': 'application/json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, body: JSON.stringify({ ...property }) }; return fetch(`${retainProcurementApiUrl}/purchase_order_changeset?id=eq.${changesetId}`, requestOptions) }) const doPatchPurchaseOrderXChange = wrapRequest(({ changeId, property }) => { const requestOptions = { method: 'PATCH', headers: { 'Content-Type': 'application/json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, body: JSON.stringify({ ...property }) }; return fetch(`${retainProcurementApiUrl}/purchase_order_xchange?id=eq.${changeId}`, requestOptions) }) const doDeleteChangesetXChange = wrapRequest(({ changeId }) => { const requestOptions = { method: 'DELETE', headers: { 'Content-Type': 'application/json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, }; return fetch(`${retainProcurementApiUrl}/purchase_order_xchange?id=eq.${changeId}`, requestOptions) }) const doDeleteChange = wrapRequest(({ purchaseOrderChangeId }) => { debugger const requestOptions = { method: 'POST', headers: { 'Content-Type': 'application/json', 'Prefer': 'resolution=merge-duplicates', ...getHubAuthHeader(hubName) }, body: JSON.stringify({ "purchase_order_change_id":purchaseOrderChangeId }) }; return fetch(`${retainProcurementApiUrl}/rpc/purchase_order_remove_change`, requestOptions) }) const doPostPurchaseOrderChanges = wrapRequest(({ purchaseOrderChangesetId, change,icpData,oldIcpData }) => { if(change && change.change_values && (change.change_values.new || change.change_values.old)){ if(icpData){ change.change_values.new.icp_data=icpData } if(oldIcpData){ change.change_values.old.icp_data=(oldIcpData) } } const requestOptions = { method: 'POST', headers: { 'Content-Type': 'application/json', 'Prefer': 'resolution=merge-duplicates', ...getHubAuthHeader(hubName) }, body: JSON.stringify({ "purchase_order_changeset_id": purchaseOrderChangesetId, "change": change }) }; return fetch(`${retainProcurementApiUrl}/rpc/purchase_order_add_change`, requestOptions) }) const doGetPruchaseOrderXChanges = wrapRequest(({ purchaseOrderChangesetId}) => { const requestOptions = { method: 'GET', headers: { 'Content-Type': 'application/json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, }; return fetch(`${retainProcurementApiUrl}/purchase_order_xchange?purchase_order_changeset_id=eq.${purchaseOrderChangesetId}`, requestOptions) }) const doPostBalanceOrderPayments = wrapRequest(({ purchaseOrderId}) => { const requestOptions = { method: 'POST', headers: { 'Content-Type': 'application/json', 'Prefer': 'resolution=merge-duplicates', ...getHubAuthHeader(hubName) }, body: JSON.stringify({ "purchase_order_id":purchaseOrderId }) }; return fetch(`${retainProcurementApiUrl}/rpc/purchase_order_balance_payments`, requestOptions) }) export default { doFetchOne, doFetchList, doPostOne, doPatchOne, doDeleteSelected, doOrderStatusUpdate, doPurchaseOrderGetTimeline, doFetchPurchaseOrderChange, doPatchOrderChangeResponse, doPostOrderChangeResponse, doAssignBrandId, doFetchOrderListByIds, doFetchProcurementReport, doPurchaseOrderUpdateBusinessEntity, doPurchaseOrderUpdateItemsFormat, doPostImportedData, doPurchaseOrderReportChanges, doPatchOneProperty, doFetchLogisticsTrackerList, doGetPurchaseOrderChanges, doFetchListForCsvExport, doPurchaseOrderDiscardChanges, doPatchPurchaseOrderChangesetOne, doFetchPurchaseOrderDiscrepancyByChangesetId, doPatchPurchaseOrderXChange, doGetOrderChangesForReport, doPatchPurchaseOrderChangeSet, doPostPurchaseOrderChanges,doGetPruchaseOrderXChanges, doDeleteChangesetXChange,doPostBalanceOrderPayments,doDeleteChange }