Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.69 KB | None | 0 0
  1. USE [MRCSFA]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[sp_Sync_incentive_new] Script Date: 11/14/2019 11:33:57 AM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. -- =============================================
  9. --Chỉ lấy IsPDA=1 (chỉ trả PDA, trước đây dùng để xác định IsDirect: 1|0 : Vansales|presales)
  10. --Có thêm trả hàng
  11. --Vì DMSEvaluationDefine ko có Date nên DMSAimIncentiveProgram được xác định sau khi đã xác định KH được trả thưởng
  12. -- =============================================
  13. -- exec [sp_Sync_incentive_new] 3
  14. ALTER PROCEDURE [dbo].[sp_Sync_incentive_new] @CompanyID INT
  15. AS
  16. BEGIN
  17. TRUNCATE TABLE DMSAimIncentiveList
  18. TRUNCATE TABLE DMSAimIncentiveByAmount
  19. TRUNCATE TABLE dbo.DMSAimIncentiveProgram
  20.  
  21. DECLARE @INCENTIVE_TYPE_INVENTORY NVARCHAR(1) = 'P';
  22. DECLARE @INCENTIVE_TYPE_AMOUNT NVARCHAR(1) = 'V';
  23. DECLARE @INCENTIVE_TYPE_BOTH_PDA NVARCHAR(1) = 'B';
  24.  
  25. --PROGRAM TYPE
  26. DECLARE @PROGRAM_TYPE_PERFECT_STORE NVARCHAR(1) = 'P';
  27. DECLARE @PROGRAM_TYPE_VISIBILITY NVARCHAR(1) = 'V';
  28.  
  29. -- Lấy line được trả thưởng chưa import qua Acu (Qua Acu được check done trong DMSEvaluationListDetails)
  30. -- Lấy từ đơn hàng có OrderDate < GETDATE(), đơn trong ngày không lấy
  31.  
  32. SELECT DISTINCT
  33. d.RefNbr ,
  34. d.IncentiveLineNbr
  35. INTO #tempUnImportDone
  36. FROM [172.17.0.235].[MRCDMS].dbo.DMSPDAIncentiveDetail d
  37. INNER JOIN [172.17.0.235].[MRCDMS].dbo.DMSPDAOrder o ON o.OrderNbr = d.OrderNbr
  38. AND o.CompanyID = d.CompanyID
  39. WHERE o.Status = 'U'
  40. AND DATEDIFF(dd, o.OrderDate, GETDATE()) > 0
  41. AND d.CompanyID = @CompanyID
  42.  
  43. SELECT c.CustomerCD ,
  44. c.LocationCD ,
  45. c.UserName ,
  46. d.RefNbr ,
  47. d.LineNbr ,
  48. d.InventoryID ,
  49. d.Qty ,
  50. d.totalbonus ,
  51. d.IncentiveType,
  52. d.IncentiveFor,
  53. br.BreakByLevelName,
  54. RTRIM(p.FromPeriod) AS Period,
  55. ISNULL (d.expirydate, EOMONTH(GETDATE())) AS EndDate,
  56. d.isdone,
  57. d.Reason
  58. INTO #tempDetail
  59. FROM [172.17.0.235].[MRCDMS].dbo.DMSEvaluationDefine p
  60. JOIN [172.17.0.235].[MRCDMS].dbo.DMSEvaluationList l ON l.CompanyID = p.CompanyID
  61. AND l.RefNbr = p.RefNbr
  62. JOIN [172.17.0.235].[MRCDMS].dbo.DMSProgramBreakDownDetail br ON br.CompanyID = l.CompanyID
  63. AND br.ProgramID = l.ProgramID
  64. AND br.BreakByLevelID = l.LevelID
  65. JOIN [172.17.0.235].[MRCDMS].dbo.DMSEvaluationListDetails d ON d.CompanyID = d.CompanyID
  66. AND d.RefNbr =p.RefNbr
  67. AND d.CustomerID = l.CustomerID
  68. JOIN dbo.DMSAllCustomer a ON a.LocationID = d.CustomerID
  69. JOIN dbo.DMSAimCustomer c ON a.CustomerCD = c.CustomerCD
  70. AND a.LocationCD = c.LocationCD
  71. LEFT JOIN #tempUnImportDone un ON un.IncentiveLineNbr = d.LineNbr
  72. AND p.RefNbr = un.RefNbr
  73. WHERE p.CompanyID = @CompanyID
  74. AND p.Status = 'E'
  75. --AND p.IsPDA = 1
  76. AND ISNULL(d.isdone, 0) = 0 -- lấy line chưa done
  77. AND d.Status = 'R'
  78. --ko có beginDate
  79. AND DATEDIFF(dd, GETDATE(), ISNULL(d.expirydate, GETDATE())) >= 0
  80. AND un.IncentiveLineNbr IS NULL -- bỏ line chưa import
  81.  
  82. SELECT RefNbr,
  83. MIN(EndDate) AS EndDate
  84. INTO #tempEndDate
  85. FROM #tempDetail
  86. GROUP BY RefNbr
  87.  
  88. INSERT INTO dbo.DMSAimIncentiveList
  89. (
  90. UserName,
  91. CustomerCD,
  92. LocationCD,
  93. IncentiveCD,
  94. InventoryCD,
  95. IncentiveQty,
  96. IsDirect,
  97. LineNbr,
  98. IncentiveFor,
  99. Level,
  100. IsDone,
  101. Reason
  102.  
  103. )
  104. SELECT DISTINCT
  105. UserName, -- UserName - nvarchar(50)
  106. CustomerCD, -- CustomerCD - nvarchar(50)
  107. LocationCD, -- LocationCD - nvarchar(50)
  108. RefNbr, -- IncentiveCD - nvarchar(50)
  109. i.InventoryCD, -- InventoryCD - nvarchar(50)
  110. Qty, -- IncentiveQty - int
  111. 0, -- IsDirect - int
  112. d.LineNbr, -- LineNbr - int
  113. d.IncentiveFor, -- IncentiveFor - nvarchar(1)
  114. d.BreakByLevelName, -- Level - nvarchar(50)
  115. ISNULL(d.isdone,0),
  116. Reason
  117. FROM #tempDetail d
  118. INNER JOIN dbo.DMSAimInventoryList i
  119. ON d.InventoryID = i.InventoryID
  120. WHERE ISNULL(d.Qty, 0) > 0
  121. AND d.IncentiveType = @INCENTIVE_TYPE_INVENTORY;
  122.  
  123. INSERT INTO dbo.DMSAimIncentiveByAmount
  124. (
  125. UserName,
  126. CustomerCD,
  127. LocationCD,
  128. IncentiveCD,
  129. Level,
  130. Amount,
  131. IncentiveFor,
  132. LineNbr,
  133. IsDone,
  134. Reason
  135. )
  136. SELECT DISTINCT
  137. UserName, -- UserName - nvarchar(50)
  138. CustomerCD, -- CustomerCD - nvarchar(50)
  139. LocationCD, -- LocationCD - nvarchar(50)
  140. RefNbr, -- IncentiveCD - nvarchar(50)
  141. BreakByLevelName, -- Level - nvarchar(50)
  142. totalbonus, -- Amount - float
  143. IncentiveFor, -- IncentiveFor - nvarchar(1)
  144. LineNbr, -- LineNbr - int
  145. ISNULL(isdone,0),
  146. Reason
  147. FROM #tempDetail
  148. WHERE ISNULL(totalbonus, 0) > 0
  149. AND IncentiveType = @INCENTIVE_TYPE_AMOUNT;
  150.  
  151.  
  152.  
  153. --Chỉ lấy CT có KH đang được trả thưởng
  154. INSERT INTO dbo.DMSAimIncentiveProgram
  155. (
  156. UserName,
  157. IncentiveCD,
  158. Descr,
  159. StartDate,
  160. EndDate,
  161. Period,
  162. IncentiveType,
  163. ProgramType
  164. )
  165. SELECT DISTINCT
  166. e.EmployeeICD, -- UserName - nvarchar(50)
  167. d.RefNbr, -- IncentiveCD - nvarchar(50)
  168. ISNULL(d.Descr, d.RefNbr), -- Descr - nvarchar(255)
  169. GETDATE(), -- StartDate - date
  170. ed.EndDate, -- EndDate - date
  171. RTRIM(d.FromPeriod), -- Period - nvarchar(50)
  172. CASE
  173. WHEN a.IncentiveCD IS NOT NULL
  174. AND i.IncentiveCD IS NOT NULL THEN
  175. @INCENTIVE_TYPE_BOTH_PDA
  176. WHEN a.IncentiveCD IS NOT NULL THEN
  177. @INCENTIVE_TYPE_AMOUNT
  178. ELSE
  179. @INCENTIVE_TYPE_INVENTORY
  180. END, -- IncentiveType - nvarchar(1)
  181. IIF(ISNULL(p.IsPerfectStore, 0) = 1,
  182. @PROGRAM_TYPE_PERFECT_STORE, @PROGRAM_TYPE_VISIBILITY) -- ProgramType nvarchar(3)
  183.  
  184. FROM [172.17.0.235].[MRCDMS].dbo.DMSEvaluationDefine d
  185. LEFT JOIN [172.17.0.235].[MRCDMS].dbo.DMSProgram p ON p.CompanyID = d.CompanyID
  186. AND p.ProgramID = d.ProgramID
  187. CROSS JOIN dbo.DMSAimEmployeeList e
  188. JOIN #tempEndDate ed
  189. ON d.RefNbr = ed.RefNbr
  190. LEFT JOIN
  191. (
  192. SELECT DISTINCT
  193. UserName,
  194. IncentiveCD
  195. FROM dbo.DMSAimIncentiveByAmount
  196. ) a
  197. ON d.RefNbr = a.IncentiveCD
  198. AND a.UserName = e.EmployeeICD
  199. LEFT JOIN
  200. (SELECT DISTINCT UserName, IncentiveCD FROM dbo.DMSAimIncentiveList) i
  201. ON i.IncentiveCD = d.RefNbr
  202. AND i.UserName = e.EmployeeICD
  203. WHERE d.CompanyID = @CompanyID
  204. AND
  205. (
  206. a.IncentiveCD IS NOT NULL
  207. OR i.IncentiveCD IS NOT NULL
  208. );
  209.  
  210. DROP TABLE #tempEndDate
  211. DROP TABLE #tempUnImportDone
  212. DROP TABLE #tempDetail
  213. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement