You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

140 lines
8.3 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_drillTrialBalance] Script Date: 9/27/2019 1:30:14 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. CREATE proc [dbo].[proc_drillTrialBalance] (
  9. @fromDate VARCHAR(10) = '2000-01-01'
  10. ,@toDate VARCHAR(10) = '2020-01-01'
  11. ,@glCode VARCHAR(10) = NULL
  12. ,@drill INT = 0
  13. )
  14. AS
  15. SET NOCOUNT ON
  16. IF @glCode IS NULL
  17. BEGIN
  18. SELECT
  19. Code = rf.reportid
  20. ,Name = rf.lable
  21. ,dr = ABS(CASE WHEN x.Total < 0 THEN x.Total ELSE 0 END)
  22. ,cr = ABS(CASE WHEN x.Total > 0 THEN x.Total ELSE 0 END)
  23. ,drill = 1
  24. FROM report_format rf WITH(NOLOCK)
  25. LEFT JOIN (
  26. SELECT
  27. gg.bal_grp
  28. ,SUM(CASE WHEN part_tran_type = 'dr' THEN ISNULL(tran_amt, 0) * (-1) ELSE ISNULL(tran_amt, 0) END) Total
  29. FROM tran_master tm WITH(NOLOCK)
  30. INNER JOIN ac_master am WITH(NOLOCK) ON tm.acc_num = am.acct_num
  31. INNER JOIN GL_GROUP gg WITH(NOLOCK) ON am.gl_code = gg.gl_code
  32. WHERE tran_date BETWEEN ISNULL(@fromDate, '1900-01-01') AND ISNULL(@toDate, '2100-12-31') + ' 23:59:59'
  33. GROUP BY gg.bal_grp
  34. ) x ON x.bal_grp = rf.reportid
  35. WHERE rf.reportid NOT IN (24)
  36. ORDER BY rf.grp_main
  37. RETURN
  38. END
  39. IF @drill = 1
  40. BEGIN
  41. SELECT
  42. Code
  43. ,Name
  44. ,dr = ABS(CASE WHEN x.Total < 0 THEN x.Total ELSE 0 END)
  45. ,cr = ABS(CASE WHEN x.Total > 0 THEN x.Total ELSE 0 END)
  46. ,drill = 0
  47. FROM (
  48. SELECT
  49. Code = gg.gl_code
  50. ,Name = gg.gl_name
  51. ,Total = SUM(ISNULL(x.Total, 0))
  52. FROM GL_GROUP gg WITH(NOLOCK)
  53. LEFT JOIN (
  54. SELECT
  55. gg.gl_code
  56. ,gg.gl_name
  57. ,gg.bal_grp
  58. ,gg.p_id
  59. ,gg.tree_sape
  60. ,SUM(CASE WHEN part_tran_type = 'dr' THEN ISNULL(tran_amt, 0) * (-1) ELSE ISNULL(tran_amt, 0) END) Total
  61. FROM tran_master tm WITH(NOLOCK)
  62. INNER JOIN ac_master am WITH(NOLOCK) ON tm.acc_num = am.acct_num
  63. INNER JOIN GL_GROUP gg WITH(NOLOCK) ON am.gl_code = gg.gl_code
  64. WHERE tran_date BETWEEN ISNULL(@fromDate, '1900-01-01') AND ISNULL(@toDate, '2100-12-31') + ' 23:59:59'
  65. AND gg.bal_grp = @glCode
  66. GROUP BY gg.gl_code, gg.bal_grp,gg.gl_name,gg.p_id, gg.tree_sape
  67. ) x ON gg.tree_sape = LEFT(x.tree_sape, LEN(gg.tree_sape))
  68. WHERE gg.bal_grp = @glCode
  69. --AND ISNUMERIC(gg.p_id) = 0
  70. GROUP BY gg.gl_name , gg.gl_code
  71. ) x
  72. ORDER BY Name
  73. END
  74. IF EXISTS(SELECT 'x' FROM ac_master WITH(NOLOCK) WHERE gl_code = @glCode) --Accounts
  75. BEGIN
  76. SELECT
  77. Code = am.acct_num
  78. ,Name = am.acct_name
  79. ,dr = ABS(CASE WHEN x.Total < 0 THEN x.Total ELSE 0 END)
  80. ,cr = ABS(CASE WHEN x.Total > 0 THEN x.Total ELSE 0 END)
  81. ,drill = -1
  82. FROM ac_master am WITH(NOLOCK)
  83. LEFT JOIN (
  84. SELECT
  85. tm.acc_num
  86. ,SUM(CASE WHEN part_tran_type = 'dr' THEN ISNULL(tran_amt, 0) * (-1) ELSE ISNULL(tran_amt, 0) END) Total
  87. FROM tran_master tm WITH(NOLOCK)
  88. INNER JOIN ac_master am WITH(NOLOCK) ON tm.acc_num = am.acct_num
  89. WHERE tran_date BETWEEN ISNULL(@fromDate, '1900-01-01') AND ISNULL(@toDate, '2100-12-31') + ' 23:59:59'
  90. AND am.gl_code = @glCode
  91. GROUP BY tm.acc_num
  92. ) x ON x.acc_num = am.acct_num
  93. WHERE gl_code = @glCode
  94. ORDER BY am.acct_name ASC
  95. END
  96. ELSE IF EXISTS(SELECT 'x' FROM GL_GROUP WITH(NOLOCK) WHERE p_id = @glCode)
  97. BEGIN
  98. SELECT
  99. Code = gg.gl_code
  100. ,Name = gg.gl_name
  101. ,dr = ABS(SUM(CASE WHEN x.Total < 0 THEN x.Total ELSE 0 END))
  102. ,cr = ABS(SUM(CASE WHEN x.Total > 0 THEN x.Total ELSE 0 END))
  103. ,drill = 0
  104. FROM GL_GROUP gg WITH(NOLOCK)
  105. LEFT JOIN (
  106. SELECT
  107. gg.gl_code
  108. ,gg.gl_name
  109. ,gg.bal_grp
  110. ,gg.p_id
  111. ,gg.tree_sape
  112. ,SUM(CASE WHEN part_tran_type = 'dr' THEN ISNULL(tran_amt, 0) * (-1) ELSE ISNULL(tran_amt, 0) END) Total
  113. FROM tran_master tm WITH(NOLOCK)
  114. INNER JOIN ac_master am WITH(NOLOCK) ON tm.acc_num = am.acct_num
  115. INNER JOIN GL_GROUP gg WITH(NOLOCK) ON am.gl_code = gg.gl_code
  116. WHERE tran_date BETWEEN ISNULL(@fromDate, '1900-01-01') AND ISNULL(@toDate, '2100-12-31') + ' 23:59:59'
  117. GROUP BY gg.gl_code, gg.bal_grp,gg.gl_name,gg.p_id, gg.tree_sape
  118. ) x ON gg.tree_sape = LEFT(x.tree_sape, LEN(gg.tree_sape))
  119. WHERE gg.p_id = @glCode
  120. GROUP BY gg.gl_name , gg.gl_code
  121. ORDER BY gg.gl_name
  122. END
  123. GO