ManagerTransactionNeeded.sql 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. IF OBJECT_ID ('dbo.ManagerTransactionNeeded','V') IS NOT NULL DROP VIEW dbo.ManagerTransactionNeeded
  2. GO
  3. CREATE VIEW dbo.ManagerTransactionNeeded
  4. AS
  5. /* ───────── existing CTEs (unchanged) ───────── */
  6. WITH CurrentCodeAmounts AS (
  7. SELECT t.CompanyID,
  8. t.ProjectID,
  9. SUM(t.BillableQty) AS BillableQty
  10. FROM PMTran t
  11. JOIN InventoryItem i
  12. ON i.CompanyID = t.CompanyID
  13. AND i.InventoryID = t.InventoryID
  14. WHERE i.InventoryCD = 'L023'
  15. GROUP BY t.CompanyID, t.ProjectID
  16. ),
  17. RateTable AS ( -- one row per $‑range
  18. SELECT 1 AS ref, 0 AS MinAmt, 1000 AS MaxAmt, 1.0 AS Qty, 90 AS Rate UNION ALL
  19. SELECT 2, 1001, 2500, 1.5, 90 UNION ALL
  20. SELECT 3, 2501, 5000, 4.5, 90 UNION ALL
  21. SELECT 4, 5001, 7500, 4.5, 90 UNION ALL
  22. SELECT 5, 7501, 10000, 7.5, 90 UNION ALL
  23. SELECT 6, 10001, 25000, 9.0, 90 UNION ALL
  24. SELECT 7, 25001, 50000, 10.5, 90 UNION ALL
  25. SELECT 8, 50001, 99999999999, 10.5, 90
  26. ),
  27. CurrentRevisedAmounts AS (
  28. SELECT b.CompanyID,
  29. b.ProjectID,
  30. SUM(b.CuryRevisedAmount) AS RevisedAmount
  31. FROM PMBudget b
  32. join PMAccountGroup a on b.companyid = a.CompanyID and b.AccountGroupID = a.GroupID
  33. where a.GroupCD = 'REVENUE'
  34. GROUP BY b.CompanyID, b.ProjectID
  35. ),
  36. /* ───────── new CTEs ───────── */
  37. TargetQty AS (
  38. SELECT cra.CompanyID,
  39. cra.ProjectID,
  40. cra.RevisedAmount,
  41. rt.MinAmt,
  42. rt.MaxAmt,
  43. rt.Qty AS TargetQty,
  44. rt.Rate
  45. FROM CurrentRevisedAmounts cra
  46. JOIN RateTable rt
  47. ON cra.RevisedAmount BETWEEN rt.MinAmt AND rt.MaxAmt
  48. ),
  49. QtyAdjustment AS (
  50. SELECT tq.CompanyID,
  51. tq.ProjectID,
  52. tq.RevisedAmount,
  53. tq.MinAmt,
  54. tq.MaxAmt,
  55. COALESCE(ca.BillableQty,0) AS CurrentBillableQty,
  56. tq.TargetQty,
  57. tq.Rate,
  58. CAST(tq.TargetQty - COALESCE(ca.BillableQty,0) AS DECIMAL(18,2)) AS DeltaQty
  59. FROM TargetQty tq
  60. LEFT JOIN CurrentCodeAmounts ca
  61. ON ca.CompanyID = tq.CompanyID
  62. AND ca.ProjectID = tq.ProjectID
  63. )
  64. /* ───────── final output ───────── */
  65. SELECT c.CompanyID,
  66. c.ContractID,
  67. c.ContractCD,
  68. qa.RevisedAmount AS RevisedAmount, -- total revised amount
  69. qa.MinAmt, qa.MaxAmt, -- bracket limits
  70. qa.CurrentBillableQty,
  71. qa.CurrentBillableQty * qa.Rate AS CurrentValue, -- $ at rate
  72. qa.TargetQty,
  73. qa.TargetQty * qa.Rate AS TargetValue,
  74. qa.DeltaQty,
  75. qa.DeltaQty * qa.Rate AS DeltaValue -- what to add/credit
  76. FROM QtyAdjustment qa
  77. JOIN Contract c
  78. ON c.CompanyID = qa.CompanyID
  79. AND c.ContractID = qa.ProjectID