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;