{"version":3,"file":"paymentTerms-nMv3VaQo.js","sources":["../../../Nitrogen.Client/src/models/CompanyLocation.js","../../../Nitrogen.Client/src/api/modules/companyLocations.js","../../../Nitrogen.Client/src/api/modules/customers.js","../../../Nitrogen.Client/src/api/modules/paymentTerms.js"],"sourcesContent":["import ContactDetail from './ContactDetail.js';\r\nimport { getArrayOfObjectsFromDto as getTypedArray, getValueFromDto as getValue } from './_helpers.js';\r\n\r\nexport default class CompanyLocation {\r\n\tconstructor(dto) {\r\n\t\tthis.id = getValue(dto, 'id', 'number', 0);\r\n\t\tthis.name = getValue(dto, 'name', 'string', '');\r\n\t\tthis.street1 = getValue(dto, 'street1', 'string', '');\r\n\t\tthis.street2 = getValue(dto, 'street2', 'string', '');\r\n\t\tthis.city = getValue(dto, 'city', 'string', '');\r\n\t\tthis.township = getValue(dto, 'township', 'string', '');\r\n\t\tthis.county = getValue(dto, 'county', 'string', '');\r\n\t\tthis.state = getValue(dto, 'state', 'string', '');\r\n\t\tthis.postalCode = getValue(dto, 'postalCode', 'string', '');\r\n\t\tthis.country = getValue(dto, 'country', 'string', '');\r\n\t\tthis.latitude = getValue(dto, 'latitude', 'number', 0);\r\n\t\tthis.longitude = getValue(dto, 'longitude', 'number', 0);\r\n\t\tthis.phoneNumbers = getTypedArray(dto, 'phoneNumbers', ContactDetail, []);\r\n\t\tthis.faxNumbers = getTypedArray(dto, 'faxNumbers', ContactDetail, []);\r\n\t\tthis.emailAddresses = getTypedArray(dto, 'emailAddresses', ContactDetail, []);\r\n\t}\r\n\r\n\tget address() {\r\n\t\treturn (this.street1 ? this.street1 + ', ' : '') + (this.street2 ? this.street2 + ', ' : '') + (this.city ? this.city + ', ' : '') + this.state + ' ' + this.postalCode;\r\n\t}\r\n\r\n\tget addressLine1() {\r\n\t\treturn (this.street1 ? this.street1 + ', ' : '') + (this.street2 ? ', ' + this.street2 + ', ' : '')\r\n\t}\r\n\r\n\tget addressLine2() {\r\n\t\treturn (this.city ? this.city + ', ' : '') + this.state + ' ' + this.postalCode;\r\n\t}\r\n}\r\n","import { getIdb, idbHelpers } from '@/idb';\r\nimport CompanyLocation from '@/models/CompanyLocation';\r\nimport { DateTime } from 'luxon';\r\nimport { fetchWrap, idbResponse, isIdbResponse, offlineResponse } from '../_helpers';\r\nimport cache from './cache';\r\n\r\nconst idbStore = 'companyLocations';\r\n\r\nexport default {\r\n\t/**\r\n\t * Get the current company locations\r\n\t * @returns (async) Returns an array of CompanyLocations if the request was successful, otherwise null.\r\n\t */\r\n\tasync getAll() {\r\n\t\tconst idb = await getIdb();\r\n\t\tlet response, data = [], timestamp;\r\n\t\tlet useIdb = await cache.isCacheHit(idbStore);\r\n\t\tif (!useIdb) {\r\n\t\t\ttry {\r\n\t\t\t\ttimestamp = DateTime.now();\r\n\t\t\t\tresponse = await fetchWrap('/api/CompanyLocations');\r\n\t\t\t\tif (response.ok) { data = await response.json(); }\r\n\t\t\t} catch {\r\n\t\t\t\tuseIdb = true;\r\n\t\t\t\tresponse = offlineResponse();\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (useIdb && idb) {\r\n\t\t\tdata = await idb.getAll(idbStore);\r\n\t\t\tresponse = idbResponse(200);\r\n\t\t}\r\n\t\tif (response.ok) {\r\n\t\t\tif (idb && !isIdbResponse(response)) {\r\n\t\t\t\tawait idbHelpers.replaceAll(idb, idbStore, data);\r\n\t\t\t\tawait cache.setTimestamp(idbStore, timestamp);\r\n\t\t\t}\r\n\t\t\treturn data.map(x => new CompanyLocation(x));\r\n\t\t} else {\r\n\t\t\tthrow response;\r\n\t\t}\r\n\t},\r\n\t/**\r\n\t * Update the current company locations\r\n\t * @param {CompanyLocation[]} models Company locations to update.\r\n\t * @returns (async) Returns an array of CompanyLocations if the request was successful, otherwise null.\r\n\t */\r\n\tasync updateAll(models) {\r\n\t\tlet response, timestamp;\r\n\t\ttry {\r\n\t\t\tresponse = await fetchWrap('/api/CompanyLocations/All', {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\theaders: { 'Content-Type': 'application/json' },\r\n\t\t\t\tbody: JSON.stringify(models),\r\n\t\t\t});\r\n\t\t\t// timestamp after response since the request invalidates the cache\r\n\t\t\ttimestamp = DateTime.now();\r\n\t\t} catch {\r\n\t\t\tresponse = offlineResponse();\r\n\t\t}\r\n\t\tif (response.ok) {\r\n\t\t\tconst idb = await getIdb();\r\n\t\t\tconst data = await response.json();\r\n\t\t\tif (idb && !isIdbResponse(response)) {\r\n\t\t\t\tawait idbHelpers.replaceAll(idb, idbStore, data);\r\n\t\t\t\tawait cache.setTimestamp(idbStore, timestamp);\r\n\t\t\t}\r\n\t\t\treturn data.map(x => new CompanyLocation(x));\r\n\t\t} else {\r\n\t\t\treturn response;\r\n\t\t}\r\n\t},\r\n};\r\n","import { url as urlHelper } from '@/helpers/helpers';\r\nimport { getIdb, idbHelpers, localChanges, localChangesInUse } from '@/idb';\r\nimport Customer from '@/models/Customer';\r\nimport FileReference from '@/models/FileReference';\r\nimport LocalChange from '@/models/LocalChange';\r\nimport LocalChangeState from '@/models/LocalChangeState';\r\nimport PaginatedList from '@/models/PaginatedList';\r\nimport { fetchWrap, idbResponse, isAborted, isIdbResponse, offlineResponse, setPagination } from '../_helpers';\r\nimport filesApi from './files';\r\n\r\nexport default {\r\n\t/**\r\n\t * Get paginated customers\r\n\t * @param {Object} params request parameters.\r\n\t * @returns (async) Returns a PaginatedList of Customer objects if the request was successful, otherwise a Response.\r\n\t */\r\n\tasync getPaginated({ filter = undefined, sort = undefined, limit = undefined, start = undefined } = {}, abortSignal) {\r\n\t\tconst allowedSorts = ['name-asc', 'name-desc', 'overdue-desc'];\r\n\t\tconst allowedFilters = ['', 'residential', 'commercial', 'delinquent'];\r\n\t\tconst query = setPagination(limit, start);\r\n\t\tif (typeof filter === 'string' && allowedFilters.includes(filter)) {\r\n\t\t\tquery.filter = filter;\r\n\t\t} else {\r\n\t\t\tquery.filter = allowedFilters[0];\r\n\t\t}\r\n\t\tif (typeof sort === 'string' && allowedSorts.includes(sort)) {\r\n\t\t\tquery.sort = sort;\r\n\t\t} else {\r\n\t\t\tquery.sort = allowedSorts[0];\r\n\t\t}\r\n\t\tconst url = urlHelper('/api/Customers', query);\r\n\t\tlet response;\r\n\t\ttry {\r\n\t\t\tconst init = {};\r\n\t\t\tif (abortSignal instanceof AbortSignal) {\r\n\t\t\t\tinit.signal = abortSignal;\r\n\t\t\t}\r\n\t\t\tresponse = await fetchWrap(url, init);\r\n\t\t} catch (e) {\r\n\t\t\tif (isAborted(e)) {\r\n\t\t\t\tthrow e;\r\n\t\t\t} else {\r\n\t\t\t\tresponse = offlineResponse();\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (response.ok) {\r\n\t\t\treturn new PaginatedList(await response.json(), x => new Customer(x));\r\n\t\t} else {\r\n\t\t\tthrow response;\r\n\t\t}\r\n\t},\r\n\t/**\r\n\t * Search customers\r\n\t * @param {Object} params request parameters.\r\n\t * @returns (async) Returns a PaginatedList of Customer objects if the request was successful, otherwise a Response.\r\n\t */\r\n\tasync search({ search = undefined, limit = undefined, start = undefined } = {}, abortSignal) {\r\n\t\tconst query = setPagination(limit, start);\r\n\t\tif (typeof search === 'string' && search) {\r\n\t\t\tquery.search = search;\r\n\t\t}\r\n\t\tconst url = urlHelper('/api/Customers/Search', query);\r\n\t\tlet response;\r\n\t\ttry {\r\n\t\t\tconst init = {};\r\n\t\t\tif (abortSignal instanceof AbortSignal) {\r\n\t\t\t\tinit.signal = abortSignal;\r\n\t\t\t}\r\n\t\t\tresponse = await fetchWrap(url, init);\r\n\t\t} catch (e) {\r\n\t\t\tif (isAborted(e)) {\r\n\t\t\t\tthrow e;\r\n\t\t\t} else {\r\n\t\t\t\tresponse = offlineResponse();\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (response.ok) {\r\n\t\t\treturn new PaginatedList(await response.json(), x => new Customer(x));\r\n\t\t} else {\r\n\t\t\tthrow response;\r\n\t\t}\r\n\t},\r\n\t/**\r\n\t * Get a customer\r\n\t * @param {Number} id Customer ID\r\n\t * @returns (async) Returns a Customer if the request was successful, otherwise a Response.\r\n\t */\r\n\tasync getById(id) {\r\n\t\tlet response, data;\r\n\t\tconst idb = localChangesInUse.value ? await getIdb() : null;\r\n\t\tif (idb) { ({ response, data } = await localChanges.getDataIfChanged(idb, 'customers', id)); }\r\n\t\ttry {\r\n\t\t\tif (!response) {\r\n\t\t\t\tresponse = await fetchWrap('/api/Customers/' + id);\r\n\t\t\t\tif (response.ok) { data = await response.json(); }\r\n\t\t\t}\r\n\t\t} catch {\r\n\t\t\tif (idb) {\r\n\t\t\t\tdata = await idb.get('customers', id);\r\n\t\t\t\tresponse = data ? idbResponse(200) : idbResponse(404);\r\n\t\t\t} else {\r\n\t\t\t\tresponse = offlineResponse();\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (response.ok) {\r\n\t\t\tif (idb && !isIdbResponse(response)) {\r\n\t\t\t\tif (await idbHelpers.putIfExists(idb, 'customers', data)) {\r\n\t\t\t\t\tconst fileMap = {};\r\n\t\t\t\t\tdata.locations.forEach(x => x.attachments.forEach(y => fileMap[y.id] = y));\r\n\t\t\t\t\tawait filesApi.storeInIdb(Object.values(fileMap));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn new Customer(data);\r\n\t\t} else {\r\n\t\t\tthrow response;\r\n\t\t}\r\n\t},\r\n\t/**\r\n\t * Get a customer\r\n\t * @param {Number} id Customer Location ID\r\n\t * @returns (async) Returns a Customer if the request was successful, otherwise a Response.\r\n\t */\r\n\tasync getByLocationId(id) {\r\n\t\tlet response, data;\r\n\t\ttry {\r\n\t\t\tresponse = await fetchWrap('/api/Customers/ByLocation/' + id);\r\n\t\t\tif (response.ok) { data = await response.json(); }\r\n\t\t} catch {\r\n\t\t\tresponse = offlineResponse();\r\n\t\t}\r\n\t\tif (response.ok) {\r\n\t\t\treturn new Customer(data);\r\n\t\t} else {\r\n\t\t\tthrow response;\r\n\t\t}\r\n\t},\r\n\t/**\r\n\t * Create a customer\r\n\t * @param {Customer} model customer to create.\r\n\t * @returns (async) Returns the new Customer if the request was successful, otherwise a Response.\r\n\t */\r\n\tasync create(model) {\r\n\t\tlet response;\r\n\t\ttry {\r\n\t\t\tresponse = await fetchWrap('/api/Customers', {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\theaders: { 'Content-Type': 'application/json' },\r\n\t\t\t\tbody: JSON.stringify(model),\r\n\t\t\t});\r\n\t\t} catch {\r\n\t\t\tresponse = offlineResponse();\r\n\t\t}\r\n\t\tif (response.ok) {\r\n\t\t\treturn new Customer(await response.json());\r\n\t\t} else {\r\n\t\t\treturn response;\r\n\t\t}\r\n\t},\r\n\t/**\r\n\t * Update a customer\r\n\t * @param {Customer} model customer to update.\r\n\t * @returns (async) Returns the updated Customer if the request was successful, otherwise a Response.\r\n\t */\r\n\tasync update(model) {\r\n\t\tlet response;\r\n\t\ttry {\r\n\t\t\tresponse = await fetchWrap('/api/Customers/' + model.id, {\r\n\t\t\t\tmethod: 'PUT',\r\n\t\t\t\theaders: { 'Content-Type': 'application/json' },\r\n\t\t\t\tbody: JSON.stringify(model),\r\n\t\t\t});\r\n\t\t} catch {\r\n\t\t\tresponse = offlineResponse();\r\n\t\t}\r\n\t\tif (response.ok) {\r\n\t\t\treturn new Customer(model);\r\n\t\t} else {\r\n\t\t\treturn response;\r\n\t\t}\r\n\t},\r\n\t/**\r\n\t * Update a customer by adding images to a customer location.\r\n\t * @param {Number} customerId\r\n\t * @param {Number} customerLocationId\r\n\t * @param {FileReference[]} files\r\n\t * @returns (async) Returns the Response.\r\n\t */\r\n\tasync addImagesToLocation(customerId, customerLocationId, files) {\r\n\t\tconst idb = localChangesInUse.value ? await getIdb() : null;\r\n\t\tawait filesApi.mapCleanLocalIds(files);\r\n\t\tlet response;\r\n\t\ttry {\r\n\t\t\tresponse = await fetchWrap('/api/Customers/AddImages/' + customerId + '/' + customerLocationId, {\r\n\t\t\t\tmethod: 'PUT',\r\n\t\t\t\theaders: { 'Content-Type': 'application/json' },\r\n\t\t\t\tbody: JSON.stringify(files),\r\n\t\t\t});\r\n\t\t} catch {\r\n\t\t\tif (idb) {\r\n\t\t\t\tconst c = await idb.get('customers', customerId);\r\n\t\t\t\tconst cl = c ? c.locations.find(x => x.id === customerLocationId) : null;\r\n\t\t\t\tif (cl) {\r\n\t\t\t\t\t// update data in idb\r\n\t\t\t\t\tfor (const file of files) {\r\n\t\t\t\t\t\tif (!cl.attachments.find(x => x.id === file.id)) {\r\n\t\t\t\t\t\t\tcl.attachments.push(file.toDto());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tawait idb.put('customers', c);\r\n\t\t\t\t\t// store local change in idb\r\n\t\t\t\t\tconst change = await localChanges.get(idb, LocalChange.getKey('customers', customerId)) ?? new LocalChange({ storeName: 'customers', id: customerId, state: LocalChangeState.modified, data: {} });\r\n\t\t\t\t\tchange.error = null;\r\n\t\t\t\t\tif (!change.data.addImages) { change.data.addImages = {}; }\r\n\t\t\t\t\tlet changeData = change.data.addImages[customerLocationId.toString()];\r\n\t\t\t\t\tif (!changeData) { changeData = change.data.addImages[customerLocationId.toString()] = {}; }\r\n\t\t\t\t\tif (!Array.isArray(changeData.files)) {\r\n\t\t\t\t\t\tchangeData.files = [];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfor (const file of files) {\r\n\t\t\t\t\t\tif (!changeData.files.find(x => x.id === file.id)) {\r\n\t\t\t\t\t\t\tchangeData.files.push(JSON.parse(JSON.stringify(file)));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tawait localChanges.add(idb, change);\r\n\t\t\t\t\tresponse = idbResponse(204);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresponse = offlineResponse();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresponse = offlineResponse();\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn response;\r\n\t},\r\n\t/**\r\n\t * Merge 2 customers.\r\n\t * @param {Customer} model customer to create.\r\n\t * @returns (async) Returns the Response.\r\n\t */\r\n\tasync merge({ sourceId, targetId }) {\r\n\t\tconst model = { sourceId, targetId };\r\n\t\tlet response;\r\n\t\ttry {\r\n\t\t\tresponse = await fetchWrap('/api/Customers/Merge', {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\theaders: { 'Content-Type': 'application/json' },\r\n\t\t\t\tbody: JSON.stringify(model),\r\n\t\t\t});\r\n\t\t} catch {\r\n\t\t\tresponse = offlineResponse();\r\n\t\t}\r\n\t\treturn response;\r\n\t},\r\n\t/**\r\n\t * Delete a customer\r\n\t * @param {Number} id Customer ID to delete.\r\n\t * @returns (async) Returns true if the request was successful (or not found), false if the customer could not be deleted, otherwise a Response.\r\n\t */\r\n\tasync deleteById(id) {\r\n\t\tlet response;\r\n\t\ttry {\r\n\t\t\tresponse = await fetchWrap('/api/Customers/' + id, { method: 'DELETE' });\r\n\t\t} catch {\r\n\t\t\treturn offlineResponse();\r\n\t\t}\r\n\t\tif (response.ok || response.status === 404) {\r\n\t\t\treturn true;\r\n\t\t} else if (response.status === 409) {\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn response;\r\n\t\t}\r\n\t}\r\n};\r\n","import { makeComparator } from '@/helpers/helpers';\r\nimport { getIdb, idbHelpers } from '@/idb';\r\nimport PaymentTerm from '@/models/PaymentTerm';\r\nimport { DateTime } from 'luxon';\r\nimport { fetchAllPages, fetchWrap, idbResponse, isIdbResponse, offlineResponse } from '../_helpers';\r\nimport cache from './cache';\r\n\r\nconst idbStore = 'paymentTerms';\r\n\r\nexport default {\r\n\t/**\r\n\t * Get all payment terms\r\n\t * @returns (async) Returns an array of PaymentTerm objects if the request was successful, otherwise a Response.\r\n\t */\r\n\tasync getAll() {\r\n\t\tconst idb = await getIdb();\r\n\t\tlet response, data = [], timestamp;\r\n\t\tlet useIdb = await cache.isCacheHit(idbStore);\r\n\t\tif (!useIdb) {\r\n\t\t\ttry {\r\n\t\t\t\ttimestamp = DateTime.now();\r\n\t\t\t\tresponse = await fetchAllPages('/api/PaymentTerms', x => data.push(x), {}, 1000);\r\n\t\t\t} catch {\r\n\t\t\t\tuseIdb = true;\r\n\t\t\t\tresponse = offlineResponse();\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (useIdb && idb) {\r\n\t\t\tdata = await idb.getAll(idbStore);\r\n\t\t\tresponse = idbResponse(200);\r\n\t\t}\r\n\t\tif (response.ok) {\r\n\t\t\tif (idb && !isIdbResponse(response)) {\r\n\t\t\t\tawait idbHelpers.replaceAll(idb, idbStore, data);\r\n\t\t\t\tawait cache.setTimestamp(idbStore, timestamp);\r\n\t\t\t}\r\n\t\t\tdata.sort(makeComparator('sortOrder', 'id'));\r\n\t\t\treturn data.map(x => new PaymentTerm(x));\r\n\t\t} else {\r\n\t\t\tthrow response;\r\n\t\t}\r\n\t},\r\n\t/**\r\n\t * Get a payment term\r\n\t * @param {Number} id PaymentTerm ID\r\n\t * @returns (async) Returns a PaymentTerm if the request was successful, otherwise a Response.\r\n\t */\r\n\tasync getById(id) {\r\n\t\tconst idb = await getIdb();\r\n\t\tlet response, data = null;\r\n\t\tlet useIdb = await cache.isCacheHit(idbStore);\r\n\t\tif (!useIdb && await cache.canCache()) {\r\n\t\t\t// cache all for future re-use\r\n\t\t\tif ((data = (await this.getAll()).find(x => x.id === id) ?? null)) {\r\n\t\t\t\treturn data;\r\n\t\t\t} else {\r\n\t\t\t\tthrow idbResponse(404);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!useIdb) {\r\n\t\t\ttry {\r\n\t\t\t\tresponse = await fetchWrap('/api/PaymentTerms/' + id);\r\n\t\t\t\tif (response.ok) { data = await response.json(); }\r\n\t\t\t} catch {\r\n\t\t\t\tuseIdb = true;\r\n\t\t\t\tresponse = offlineResponse();\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (useIdb && idb) {\r\n\t\t\tdata = await idb.get(idbStore, id);\r\n\t\t\tresponse = data ? idbResponse(200) : idbResponse(404);\r\n\t\t}\r\n\t\tif (response.ok) {\r\n\t\t\tif (idb && !isIdbResponse(response)) {\r\n\t\t\t\tawait idb.put(idbStore, data);\r\n\t\t\t}\r\n\t\t\treturn new PaymentTerm(data);\r\n\t\t} else {\r\n\t\t\tthrow response;\r\n\t\t}\r\n\t},\r\n\t/**\r\n\t * Create a payment term\r\n\t * @param {PaymentTerm} model payment term to create.\r\n\t * @returns (async) Returns the new PaymentTerm if the request was successful, otherwise a Response.\r\n\t */\r\n\tasync create(model) {\r\n\t\tlet response;\r\n\t\ttry {\r\n\t\t\tresponse = await fetchWrap('/api/PaymentTerms', {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\theaders: { 'Content-Type': 'application/json' },\r\n\t\t\t\tbody: JSON.stringify(model),\r\n\t\t\t});\r\n\t\t} catch {\r\n\t\t\tresponse = offlineResponse();\r\n\t\t}\r\n\t\tif (response.ok) {\r\n\t\t\tawait cache.clearTimestamp(idbStore);\r\n\t\t\treturn new PaymentTerm(await response.json());\r\n\t\t} else {\r\n\t\t\treturn response;\r\n\t\t}\r\n\t},\r\n\t/**\r\n\t * Update a payment term\r\n\t * @param {PaymentTerm} model payment term to update.\r\n\t * @returns (async) Returns the updated PaymentTerm if the request was successful, otherwise a Response.\r\n\t */\r\n\tasync update(model) {\r\n\t\tlet response;\r\n\t\ttry {\r\n\t\t\tresponse = await fetchWrap('/api/PaymentTerms/' + model.id, {\r\n\t\t\t\tmethod: 'PUT',\r\n\t\t\t\theaders: { 'Content-Type': 'application/json' },\r\n\t\t\t\tbody: JSON.stringify(model),\r\n\t\t\t});\r\n\t\t} catch {\r\n\t\t\tresponse = offlineResponse();\r\n\t\t}\r\n\t\tif (response.ok) {\r\n\t\t\tawait cache.clearTimestamp(idbStore);\r\n\t\t\treturn new PaymentTerm(model);\r\n\t\t} else {\r\n\t\t\treturn response;\r\n\t\t}\r\n\t},\r\n\t/**\r\n\t * Delete a payment term\r\n\t * @param {Number} id PaymentTerm ID to delete.\r\n\t * @returns (async) Returns true if the request was successful (or not found), false if the payment term could not be deleted, otherwise a Response.\r\n\t */\r\n\tasync deleteById(id) {\r\n\t\tlet response;\r\n\t\ttry {\r\n\t\t\tresponse = await fetchWrap('/api/PaymentTerms/' + id, { method: 'DELETE' });\r\n\t\t} catch {\r\n\t\t\treturn offlineResponse();\r\n\t\t}\r\n\t\tif (response.ok) {\r\n\t\t\tawait cache.clearTimestamp(idbStore);\r\n\t\t\treturn true;\r\n\t\t} else if (response.status === 404) {\r\n\t\t\treturn true;\r\n\t\t} else if (response.status === 409) {\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn response;\r\n\t\t}\r\n\t}\r\n};\r\n"],"names":["CompanyLocation","dto","getValue","getTypedArray","ContactDetail","idbStore","companyLocationsApi","idb","getIdb","response","data","timestamp","useIdb","cache","DateTime","fetchWrap","offlineResponse","idbResponse","isIdbResponse","idbHelpers","x","models","customersApi","filter","sort","limit","start","abortSignal","allowedSorts","allowedFilters","query","setPagination","url","urlHelper","init","e","isAborted","PaginatedList","Customer","search","id","localChangesInUse","localChanges","fileMap","y","filesApi","model","customerId","customerLocationId","files","c","cl","file","change","LocalChange","LocalChangeState","changeData","sourceId","targetId","paymentTermsApi","fetchAllPages","makeComparator","PaymentTerm"],"mappings":"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"}