1import { getConfigValue } from '../configs.js'; 2import { performCommerceRestMutation, performCommerceRestQuery } from '../commerce.js'; 3 4export async function createUrl(endpoint) { 5 const baseUrl = await getConfigValue('commerce-rest-endpoint'); 6 7 const storeViewCode = await getConfigValue('commerce-store-view-code'); 8 9 const url = `${baseUrl}/${storeViewCode}/V1/${endpoint}`; 10 11 return url; 12} 13 14async function searchOrdersInternal(searchCriteria) { 15 const url = await createUrl('customer-order/me'); 16 17 const response = await performCommerceRestQuery(`${url}?${searchCriteria}`, true); 18 19 const { 20 data, success, message, status, 21 } = response; 22 23 if (!success) { 24 console.error('Error fetching orders', status, message); 25 return null; 26 } 27 28 return data; 29} 30 31export async function searchOrders(searchString, orderStatus = null, page = 1, pageSize = 10) { 32 let searchCriteria = `searchCriteria[pageSize]=${pageSize}&searchCriteria[currentPage]=${page}`; 33 searchCriteria += '&searchCriteria[sortOrders][0][field]=created_at&searchCriteria[sortOrders][0][direction]=DESC'; 34 35 let filterGroup = 1; 36 37 if (searchString) { 38 const fields = ['increment_id', 'sku', 'name']; 39 let filterIndex = 0; 40 const searchStringEncoded = encodeURIComponent(`%${searchString}%`); 41 fields.forEach((field) => { 42 searchCriteria += `&searchCriteria[filter_groups][${filterGroup}][filters][${filterIndex}][field]=${field}&searchCriteria[filter_groups][${filterGroup}][filters][${filterIndex}][value]=${searchStringEncoded}&searchCriteria[filter_groups][${filterGroup}][filters][${filterIndex}][condition_type]=like`; 43 filterIndex += 1; 44 }); 45 filterGroup += 1; 46 } 47 48 if (orderStatus && Array.isArray(orderStatus)) { 49 let filterIndex = 0; 50 orderStatus.forEach((status) => { 51 searchCriteria += `&searchCriteria[filter_groups][${filterGroup}][filters][${filterIndex}][field]=status&searchCriteria[filter_groups][${filterGroup}][filters][${filterIndex}][value]=${status}&searchCriteria[filter_groups][${filterGroup}][filters][${filterIndex}][condition_type]=eq`; 52 filterIndex += 1; 53 }); 54 } else if (orderStatus) { 55 searchCriteria += `&searchCriteria[filter_groups][${filterGroup}][filters][0][field]=state&searchCriteria[filter_groups][${filterGroup}][filters][0][value]=${orderStatus}&searchCriteria[filter_groups][${filterGroup}][filters][0][condition_type]=eq`; 56 } 57 58 return searchOrdersInternal(searchCriteria); 59} 60 61export async function getRecentOrders(numberOfOrders = 3) { 62 let searchCriteria = `searchCriteria[pageSize]=${numberOfOrders}&searchCriteria[currentPage]=1`; 63 searchCriteria += '&searchCriteria[sortOrders][0][field]=created_at&searchCriteria[sortOrders][0][direction]=DESC'; 64 65 return searchOrdersInternal(searchCriteria); 66} 67 68export async function searchOrderWithIncrementId(incrementId) { 69 let searchCriteria = 'searchCriteria[filter_groups][0][filters][0][field]=increment_id&'; 70 searchCriteria += `searchCriteria[filter_groups][0][filters][0][value]=${incrementId}&`; 71 searchCriteria += 'searchCriteria[filter_groups][0][filters][0][condition_type]=eq'; 72 73 return searchOrdersInternal(searchCriteria); 74} 75 76export async function getOrder(orderId) { 77 const url = await createUrl(`customer-order/me/${orderId}`); 78 79 const response = await performCommerceRestQuery(url, true); 80 81 const { 82 data, success, message, status, 83 } = response; 84 85 if (!success) { 86 console.error('Error fetching order', status, message); 87 return null; 88 } 89 return data; 90} 91 92export async function getDownloadInvoiceUrl(orderIncrementId) { 93 const url = await createUrl(`order-manager/customers/invoice/${orderIncrementId}`); 94 95 const response = await performCommerceRestQuery(url, true); 96 97 const { 98 data, success, message, status, 99 } = response; 100 101 if (!success || !data || data.code === '500') { 102 console.error('Error fetching order', status, message); 103 return null; 104 } 105 return data; 106} 107 108export async function getOrderReturnsConfig() { 109 const url = await createUrl('returnsconfig'); 110 111 const response = await performCommerceRestQuery(url, true); 112 113 const { 114 data, success, message, status, 115 } = response; 116 117 if (!success) { 118 console.error('Error fetching order return config', status, message); 119 return null; 120 } 121 return data; 122} 123 124export async function getOrderReturns(orderId) { 125 const url = await createUrl(`rma/returns/${orderId}`); 126 127 const response = await performCommerceRestQuery(url, true); 128 129 const { 130 data, success, message, status, 131 } = response; 132 133 if (!success) { 134 console.error('Error fetching order returns', status, message); 135 return null; 136 } 137 return data; 138} 139 140export async function getEGiftCardList() { 141 const url = await createUrl('egiftcard/mine/associated-with-email'); 142 143 try { 144 const response = await performCommerceRestQuery(url, true); 145 146 const { 147 data, success, message, status, 148 } = response; 149 150 if (!success) { 151 console.error('Error fetching e-gift card list', status, message); 152 return null; 153 } 154 return data; 155 } catch (error) { 156 return null; 157 } 158} 159 160export async function postCreateReturn(returnData) { 161 const url = await createUrl('rma/returns'); 162 163 const response = await performCommerceRestMutation(url, returnData, true); 164 165 const { 166 data, success, message, status, 167 } = response; 168 169 if (!success) { 170 console.error('Error creating return request', status, message); 171 return null; 172 } 173 return data; 174} 175 176export async function getRMAsByOrderId(orderId) { 177 const url = await createUrl(`rma/returns?searchCriteria[filterGroups][0][filters][0][field]=order_id&&searchCriteria[filterGroups][0][filters][0][value]=${orderId}`); 178 179 const response = await performCommerceRestQuery(url, true); 180 181 const { 182 data, success, message, status, 183 } = response; 184 185 if (!success) { 186 console.error('Error fetching RMAs by order id', status, message); 187 return null; 188 } 189 return data; 190} 191 192export async function putReturnCancellation(returnId, returnData) { 193 const url = await createUrl(`rma/returns/${returnId}`); 194 195 const response = await performCommerceRestMutation(url, returnData, true, 'PUT'); 196 197 const { 198 data, success, message, status, 199 } = response; 200 201 if (!success) { 202 console.error('Error creating return cancellation request', status, message); 203 return null; 204 } 205 return data; 206} 207 208export async function getRMAInfo(returnId) { 209 const url = await createUrl(`rma/returns/${returnId}`); 210 211 const response = await performCommerceRestQuery(url, true); 212 213 const { 214 data, success, message, status, 215 } = response; 216 217 if (!success) { 218 console.error('Error fetching RMA Info', status, message); 219 return null; 220 } 221 return data; 222}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.