admin-read-performance.sql 1001 B

12345678910111213141516171819202122232425262728
  1. -- Preserve every column and correction rule while allowing tenant/month predicates
  2. -- to reach the indexed receipt table before projecting corrected amounts.
  3. CREATE OR REPLACE VIEW "ReviewRewardIncome" AS
  4. SELECT
  5. r."objectId",
  6. r."company",
  7. r."taskId",
  8. r."taskKey",
  9. r."coachId",
  10. r."coachName",
  11. r."studentId",
  12. r."studentName",
  13. r."courseName",
  14. r."storeId",
  15. r."storeName",
  16. r."plannedDate",
  17. r."completedAt",
  18. r."incomeMonth",(r.amount+COALESCE(c.amount,0))::numeric(12,2) AS amount,
  19. CASE WHEN c."objectId" IS NULL THEN r.status ELSE 'ineligible' END AS status,
  20. r."exception",
  21. r."createdAt",
  22. CASE WHEN c."objectId" IS NULL THEN r."ineligibleReason" ELSE 'corrected_overdue' END AS "ineligibleReason",
  23. r.amount AS "originalAmount",
  24. c."objectId" AS "correctionId",
  25. c.reason AS "correctionReason",
  26. c.amount AS "correctionAmount",
  27. c."adjustmentBatchId"
  28. FROM "ReviewReward" r LEFT JOIN "ReviewRewardCorrection" c ON c.company=r.company AND c."rewardId"=r."objectId";