Blog

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

Israel LopezSeptember 18, 20264 min

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.