Loan Preparations - TypeError: undefined is not iterable 
**Describe the bug**
While testing Interactions- Loans. I noticed that the **Unavailable** `NaN` was intractable and not disabled like **"Available"**'s. When clicked it on. It threw the error in title. I've attached two videos and the crash reports to illustrate it.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to Interaction - Loans in `Pripaleo`
2. Fill in `By entering PRI Catalog Numbers` with 1
3. Then click next and press **Unavailable** `NaN`
4. See error

**Expected behavior**
Not interactable like **"Available"** in the video 

**Screen Recording Video**
[Specify 7 Crash Report - 2023-05-04T20_26_27.107Z (1).txt](https://github.com/specify/specify7/files/11401321/Specify.7.Crash.Report.-.2023-05-04T20_26_27.107Z.1.txt)
[Specify 7 Crash Report - 2023-05-04T20_26_27.107Z.txt](https://github.com/specify/specify7/files/11401322/Specify.7.Crash.Report.-.2023-05-04T20_26_27.107Z.txt)



https://user-images.githubusercontent.com/53784701/236323216-f1287bbc-ffc7-46f8-bf77-0f81e1ea66b1.mov



**Desktop**:
OS: Mac OSx Ventura
Browser: Chrome
Specify 7 Version: 7.8.10-prerelease

**Database Name:** Pripaleo

**Reported By:**
Carlos @carlosmbe

diff --git a/specifyweb/frontend/js_src/lib/components/Interactions/InteractionDialog.tsx b/specifyweb/frontend/js_src/lib/components/Interactions/InteractionDialog.tsx
index b54b0dfa0..27357b647 100644
--- a/specifyweb/frontend/js_src/lib/components/Interactions/InteractionDialog.tsx
+++ b/specifyweb/frontend/js_src/lib/components/Interactions/InteractionDialog.tsx
@@ -164,9 +164,11 @@ export function InteractionDialog({
       return;
     }
     const catalogNumbers = prepsData.map(([catalogNumber]) => catalogNumber);
-    const missing = catalogNumbers.filter(
-      (catalogNumber) => !entries?.includes(catalogNumber)
-    );
+    const missing = entries
+      ? catalogNumbers.filter(
+          (catalogNumber) => !entries.includes(catalogNumber)
+        )
+      : [];
 
     if (missing.length > 0) {
       setState({ type: 'MissingState', missing });
diff --git a/specifyweb/frontend/js_src/lib/components/Interactions/PrepDialogRow.tsx b/specifyweb/frontend/js_src/lib/components/Interactions/PrepDialogRow.tsx
index 8ae29dd39..c86206969 100644
--- a/specifyweb/frontend/js_src/lib/components/Interactions/PrepDialogRow.tsx
+++ b/specifyweb/frontend/js_src/lib/components/Interactions/PrepDialogRow.tsx
@@ -66,25 +66,14 @@ export function PrepDialogRow({
             onValueChange={(): void => handleChange(checked ? 0 : available)}
           />
         </td>
-        {typeof preparation.collectionObjectId === 'number' ? (
-          <td className="justify-end tabular-nums">
-            <Link.NewTab
-              href={getResourceViewUrl(
-                'CollectionObject',
-                preparation.collectionObjectId
-              )}
-            >
-              {
-                syncFieldFormat(
-                  getField(schema.models.CollectionObject, 'catalogNumber'),
-                  undefined,
-                  preparation.catalogNumber
-                ) as LocalizedString
-              }
-            </Link.NewTab>
-          </td>
-        ) : (
-          <td className="justify-end tabular-nums">
+
+        <td className="justify-end tabular-nums">
+          <Link.NewTab
+            href={getResourceViewUrl(
+              'CollectionObject',
+              preparation.collectionObjectId
+            )}
+          >
             {
               syncFieldFormat(
                 getField(schema.models.CollectionObject, 'catalogNumber'),
@@ -92,20 +81,13 @@ export function PrepDialogRow({
                 preparation.catalogNumber
               ) as LocalizedString
             }
-          </td>
-        )}
-
-        {typeof preparation.taxonId === 'number' ? (
-          <td>
-            <Link.NewTab
-              href={getResourceViewUrl('Taxon', preparation.taxonId)}
-            >
-              {preparation.taxon as LocalizedString}
-            </Link.NewTab>
-          </td>
-        ) : (
-          <td>{preparation.taxon}</td>
-        )}
+          </Link.NewTab>
+        </td>
+        <td>
+          <Link.NewTab href={getResourceViewUrl('Taxon', preparation.taxonId)}>
+            {preparation.taxon as LocalizedString}
+          </Link.NewTab>
+        </td>
         <td>{preparation.prepType}</td>
         <td>
           <Input.Number
diff --git a/specifyweb/frontend/js_src/lib/components/Molecules/AutoComplete.tsx b/specifyweb/frontend/js_src/lib/components/Molecules/AutoComplete.tsx
index 3b7bb3845..d3051ea38 100644
--- a/specifyweb/frontend/js_src/lib/components/Molecules/AutoComplete.tsx
+++ b/specifyweb/frontend/js_src/lib/components/Molecules/AutoComplete.tsx
@@ -1,3 +1,4 @@
+import type { Placement } from '@floating-ui/react';
 import { Combobox } from '@headlessui/react';
 import React from 'react';
 import _ from 'underscore';
@@ -17,6 +18,7 @@ import type { TagProps } from '../Atoms/wrapper';
 import { softFail } from '../Errors/Crash';
 import { userPreferences } from '../Preferences/userPreferences';
 import { Portal } from './Portal';
+import type { titlePosition } from './Tooltips';
 
 const debounceRate = 300;
 
@@ -102,7 +104,9 @@ export function AutoComplete<T>({
     | 'onKeyDown'
     | 'readOnly'
     | 'value'
-  >;
+  > & {
+    readonly [titlePosition]?: Placement;
+  };
   readonly value: string;
   /*
    * For low-level access to the value in the input box before user finished
diff --git a/specifyweb/interactions/views.py b/specifyweb/interactions/views.py
index 6258f4a95..41aeb21bf 100644
--- a/specifyweb/interactions/views.py
+++ b/specifyweb/interactions/views.py
@@ -79,7 +79,7 @@ def preps_available_ids(request):
     co_ids = json.loads(request.POST['co_ids'])
 
     sql = """
-    select co.CatalogNumber, t.FullName, p.preparationid, pt.name, p.countAmt, sum(lp.quantity-lp.quantityreturned) Loaned,
+    select co.CatalogNumber, co.collectionObjectId, t.FullName, t.taxonId, p.preparationid, pt.name, p.countAmt, sum(lp.quantity-lp.quantityreturned) Loaned,
         sum(gp.quantity) Gifted, sum(ep.quantity) Exchanged,
         p.countAmt - coalesce(sum(lp.quantity-lp.quantityresolved),0) - coalesce(sum(gp.quantity),0) - coalesce(sum(ep.quantity),0) Available
     from preparation p
['specifyweb/frontend/js_src/lib/components/Interactions/InteractionDialog.tsx', 'specifyweb/frontend/js_src/lib/components/Molecules/AutoComplete.tsx', 'specifyweb/interactions/views.py', 'specifyweb/frontend/js_src/lib/components/Interactions/PrepDialogRow.tsx']