Where does Fishbowl save the QuickBooks Class for scrap and cycle count adjustments?
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:
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.