# Where does Fishbowl save the QuickBooks Class for scrap and cycle count adjustments?

> The QuickBooks Class picked on a Fishbowl scrap or cycle count adjustment is saved to the post table, not any inventory table, which is why no built-in report shows it.

If you scrap a part or cycle count a tag in Fishbowl and pick a QuickBooks Class, no built-in inventory report shows that class afterward. The class is saved, on the accounting staging row Fishbowl creates for the adjustment. We traced it through the database and tested adjustments on a Fishbowl 2026.x environment to confirm where it lands.

## How it flows

When a user scraps a part, cycle counts a tag or location, or adds inventory, the adjustment dialog offers an optional QuickBooks Class and Customer/Job field. Fishbowl changes the stock quantity and queues an accounting entry in `post`. The class gets written there, not on `inventorylog` or any inventory table.

For adjustments, the class id lands in `orderId`, a column that's normally used for order references. That's why searching the schema for a class column comes up empty.

| `post` column | value |
|---|---|
| `typeId` | 50 (inventory adjustment) |
| `refItemId` | 1 Add, 2 Scrap, 3 Cycle Count, 5 COGS change, 6 standard-cost variance |
| `orderId` | the `qbclass.id` chosen (null or ≤ 0 means no class was picked) |
| `customerId` | Customer/Job |
| `refId` | `part.id` |
| `quantity`, `amount`, `dateCreated` | the adjustment values |

When the accounting export runs, Fishbowl resolves `post.orderId` to the class name and sends it on the adjustment journal entry. The class shows up on the JE lines in QuickBooks, even without a Fishbowl report showing it beforehand.

## The query

This pulls scrap and cycle count adjustments with class, customer/job, and export status:

```sql
SELECT  p.id                AS postId,
        p.dateCreated       AS txnDate,
        CASE p.refItemId
            WHEN 1 THEN 'Add'
            WHEN 2 THEN 'Scrap'
            WHEN 3 THEN 'Cycle Count'
            WHEN 5 THEN 'COGS Change'
            WHEN 6 THEN 'Std Cost Variance'
        END AS adjType,
        pt.num              AS partNum,
        p.quantity,
        p.amount,
        COALESCE(qc.name, '(none)') AS qbClass,
        c.name              AS customerJob,
        ps.name             AS exportStatus,
        p.datePosted
FROM post p
LEFT JOIN part pt       ON pt.id = p.refId
LEFT JOIN qbclass qc    ON qc.id = p.orderId
LEFT JOIN customer c    ON c.id = p.customerId
LEFT JOIN poststatus ps ON ps.id = p.statusId
WHERE p.typeId = 50
  AND p.refItemId IN (2, 3)
  AND p.dateCreated >= '2026-01-01'
ORDER BY p.dateCreated DESC;
```

## Variations

- Scrap only: set `p.refItemId = 2`.
- Adjustments with no class picked: add `AND COALESCE(p.orderId, 0) <= 0`.

## Caveats

- Verified by testing on Fishbowl 2026.x. Older versions not checked.
- If the export already posted to QuickBooks, changing the class in Fishbowl afterward won't change the JE that's already there.

If you're running an older Fishbowl version and the class ends up somewhere other than `orderId`, we'd want to know.

---

*From Israel Lopez Consulting (ILC). Custom Fishbowl Inventory integrations and software, and Fishbowl experts since 2015. Written by Israel Lopez, published September 18, 2026. Questions about this topic, or want to reach the people who wrote it? Visit https://israellopezconsulting.com/contact*
