Fishbowl Query: QBO Invoice ID


SELECT
    ps.extTxnID AS `QuickBooks Online Invoice ID`,

    CASE
        WHEN RIGHT(TRIM(s.num), 3) REGEXP '^-[0-9][0-9]$'
            THEN LEFT(TRIM(s.num), CHAR_LENGTH(TRIM(s.num)) - 3)
        ELSE TRIM(s.num)
    END AS `Zoey Order Number`,

    qbc.name AS `QuickBooks Class Name`

FROM postso ps
INNER JOIN so s
    ON s.id = ps.soid

INNER JOIN qbclass qbc
    ON qbc.id = s.qbClassId

CROSS JOIN (
    SELECT
        COALESCE(
            MAX(fsh.lastRunTime),
            '1900-01-01 00:00:00'
        ) AS LastSuccessfulRun
    FROM fbschedule fs
    INNER JOIN fbschedulehistory fsh
        ON fsh.scheduleId = fs.id
    WHERE TRIM(fs.name) = 'QBO Invoice IDs to Zoey'
      AND (
            fsh.error IS NULL
            OR TRIM(fsh.error) = ''
            OR UPPER(TRIM(fsh.error)) LIKE 'SUCCESS%'
          )
) lastRun

WHERE NULLIF(TRIM(ps.extTxnID), '') IS NOT NULL

  AND UPPER(TRIM(qbc.name)) = 'ZOEY'

  AND GREATEST(
        COALESCE(ps.datePosted, '1900-01-01 00:00:00'),
        COALESCE(ps.postDate, '1900-01-01 00:00:00'),
        COALESCE(ps.dateCreated, '1900-01-01 00:00:00'),
        COALESCE(ps.dateLastModified, '1900-01-01 00:00:00')
      ) > lastRun.LastSuccessfulRun

ORDER BY
    GREATEST(
        COALESCE(ps.datePosted, '1900-01-01 00:00:00'),
        COALESCE(ps.postDate, '1900-01-01 00:00:00'),
        COALESCE(ps.dateCreated, '1900-01-01 00:00:00'),
        COALESCE(ps.dateLastModified, '1900-01-01 00:00:00')
    ),
    ps.id;