Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.03 KB | None | 0 0
  1. USE [BELDMS]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[pp_DMS_L2_SendInforAfterBaseline] Script Date: 10/22/2019 2:25:01 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8.  
  9.  
  10. --exec pp_DMS_L2_SendInforAfterBaseline 3 ,'20180912','20180901','20180912'
  11. ALTER PROCEDURE [dbo].[pp_DMS_L2_SendInforAfterBaseline]
  12. @CompanyID int,
  13. @CheckDate datetime,
  14. @FromDate datetime,
  15. @ToDate datetime
  16. AS
  17. SET NOCOUNT ON;
  18. declare @getdate date,@Period nvarchar(6) , @SOMonth date , @PeriodTD nvarchar(6),@EOMonthLastMonth date , @SOMonthLastMonth date
  19. set @getdate = CONVERT(date,dateadd(dd,-1,GETDATE()));
  20. set @SOMonth = DATEADD(month, DATEDIFF(month, 0, @ToDate), 0);
  21. set @SOMonthLastMonth = DATEADD(MONTH,-1,@SOMonth)
  22. set @EOMonthLastMonth = DATEADD(DD,-1,@SOMonth);
  23. set @Period = (case when MONTH(@SOMonth) > 9 then CONVERT(nvarchar(2),MONTH(@SOMonth)) + CONVERT(nvarchar(4),Year(@SOMonth)) else '0' + CONVERT(nvarchar(2),MONTH(@SOMonth)) + CONVERT(nvarchar(4),Year(@SOMonth)) end)
  24. set @PeriodTD = (case when MONTH(@EOMonthLastMonth) > 9 then CONVERT(nvarchar(2),MONTH(@EOMonthLastMonth)) + CONVERT(nvarchar(4),Year(@EOMonthLastMonth)) else '0' + CONVERT(nvarchar(2),MONTH(@EOMonthLastMonth)) + CONVERT(nvarchar(4),Year(@EOMonthLastMonth)) end)
  25. DECLARE @_FromDate DATETIME = @FromDate
  26. DECLARE @_ToDate DATETIME = DATEADD(dd, 1, @ToDate)
  27. Declare @NumRecordBL bigint , @NumRecordBLMtd bigint;
  28. Declare @TotalValueBL decimal(19,3) , @TotalValueBLMtd decimal(19,3);
  29.  
  30. select @NumRecordBL = SUM(temp.numberRecord) ,@TotalValueBL = SUM(temp.TotalValue)
  31. from
  32. ( select count(1) as numberRecord ,
  33. SUM(case when OrderType = 'CM' then -1*TranAmt else TranAmt end) as TotalValue
  34. from BELBaseline..DMSBLRawSales
  35. where CompanyID = @CompanyID and LastModifiedDateTime >= @_FromDate and LastModifiedDateTime < @_ToDate
  36. union all
  37. select count(1) as numberRecord ,
  38. SUM(case when OrderType = 'CM' then -1*TranAmt else TranAmt end) as TotalValue
  39. from BELBaseline..DMSBLRawSalesHistory
  40. where CompanyID = @CompanyID and LastModifiedDateTime >= @_FromDate and LastModifiedDateTime < @_ToDate) as temp
  41.  
  42. select @NumRecordBLMtd = SUM(temp.numberRecord) , @TotalValueBLMtd = SUM(temp.TotalValue)
  43. from
  44. ( select count(1) as numberRecord ,
  45. SUM(case when OrderType = 'CM' then -1*TranAmt else TranAmt end) as TotalValue
  46. from BELBaseline..DMSBLRawSales
  47. where CompanyID = @CompanyID and MonthID = @Period
  48. union all
  49. select count(1) as numberRecord ,
  50. SUM(case when OrderType = 'CM' then -1*TranAmt else TranAmt end) as TotalValue
  51. from BELBaseline..DMSBLRawSalesHistory
  52. where CompanyID = @CompanyID and MonthID = @Period) as temp
  53.  
  54.  
  55. create table #temp
  56. (
  57. Region nvarchar(50),
  58. Area nvarchar(50),
  59. SystemID int,
  60. AccnetID nvarchar(30),
  61. OrderDate datetime,
  62. NumberOrderNonRelease int,
  63. NumberOrderPending int,
  64. NumberWrongStatus int
  65. )
  66.  
  67. insert into #temp
  68. (
  69. Region ,
  70. Area ,
  71. SystemID ,
  72. AccnetID ,
  73. so.OrderDate,
  74. NumberOrderNonRelease ,
  75. NumberOrderPending ,
  76. NumberWrongStatus
  77. )
  78. select
  79. dis.Region as 'Region',
  80. dis.Area as 'Area',
  81. dis.DistributorID,
  82. dis.DistributorCD,
  83. convert(nvarchar(20),so.OrderDate),
  84. SUM(case when OrderShip.InvtRefNbr is not null and reg.Released = 0 then 1 else 0 end) as 'NumberOrderNonRelease',
  85. SUM(case when OrderShip.InvtRefNbr is null then 1 else 0 end) as 'NumberOrderPending',
  86. SUM(case when ( OrderShip.InvoiceNbr is not null or OrderShip.InvtRefNbr is not null ) and so.Status not in ('C','I') then 1 else 0 end ) as 'NumberWrongStatus'
  87. from [dbo].[DMSViewL2InforDistribution] dis
  88. left join SOOrder so
  89. on dis.CompanyID = so.CompanyID
  90. --and convert(date,so.OrderDate) > convert(date,dateadd(dd,-31,@_ToDate)) and convert(date,so.OrderDate) < @_ToDate
  91. and dis.DistributorID = so.BranchID
  92. and so.Cancelled <> 1
  93. left join SOOrderShipment OrderShip
  94. on so.CompanyID = OrderShip.CompanyID
  95. and so.OrderNbr = OrderShip.OrderNbr
  96. and so.OrderType = OrderShip.OrderType
  97. left join INRegister reg
  98. on OrderShip.CompanyID = reg.CompanyID
  99. and OrderShip.InvtRefNbr = reg.RefNbr
  100. and OrderShip.InvtDocType = reg.DocType
  101. where dis.CompanyID = @CompanyID and convert(date,so.OrderDate) > convert(date,dateadd(dd,-31,@_ToDate)) and convert(date,so.OrderDate) < @_ToDate --and reg.LastModifiedDateTime >=@_FromDate and reg.LastModifiedDateTime < @_ToDate
  102. group by
  103. dis.Region ,
  104. dis.Area,
  105. dis.DistributorID,
  106. dis.DistributorCD,
  107. so.OrderDate
  108.  
  109.  
  110.  
  111. -- dua xuong thong tin email
  112. select
  113. convert(nvarchar(20),GETDATE()) as 'BLDate',
  114. count(1) as 'RecordIntran',
  115. sum(intran.TranAmt*intran.InvtMult) as 'TotalValue'
  116. into #temp2
  117. from INTran intran
  118. inner join INRegister reg
  119. on intran.CompanyID = reg.CompanyID
  120. and intran.RefNbr = reg.RefNbr
  121. and intran.DocType = reg.DocType
  122. where intran.BaseQty > 0 and intran.SOOrderNbr is not null and reg.Released = 1 and reg.CompanyID = @CompanyID and reg.LastModifiedDateTime > @_FromDate and reg.LastModifiedDateTime < @_ToDate
  123.  
  124.  
  125. BEGIN
  126. DECLARE @query AS NVARCHAR(MAX);
  127. SET @query = -----------------Style
  128. N'<h1>BASELINE DATA STATUS</h1>'+N'<style type=''text/css''>'+N'table {border-collapse:collapse; border:1px solid #3399FF; font:11pt Calibri; color:#343434; }'+N'table td,table th,table caption {border:1px solid #3399FF; }'+N'table caption {background-color:white; font-weight = bold; }'+N'table th {background-color:#3399FF; font-weight = bold; }'+N'table tr td {padding-left:3px; padding-right:3px;}'+N'</style>'+
  129.  
  130. N'<Table>'+N'<Caption></caption>'+N'<tr><th>DATE BASELINE</th><th>STORE NAME</th><th>Start Time</th><th>End Time</th><th>Duration</th><th>Total Record</th><th>Parameters</th></tr>'+CAST(
  131. (
  132. SELECT
  133. 'left' AS [td/@align],
  134. td = BaselineDate,
  135. '',
  136. 'left' AS [td/@align],
  137. td = Store,
  138. '',
  139. 'left' AS [td/@align],
  140. td = StartTime ,
  141. '',
  142. 'left' AS [td/@align],
  143. td = EndTime,
  144. '',
  145. 'right' AS [td/@align],
  146. td = Duration,
  147. '',
  148. 'right' AS [td/@align],
  149. td =CountRecord,
  150. '',
  151. 'left' AS [td/@align],
  152. td = [Parameters],
  153. ''
  154. FROM
  155. (
  156. --SUM theo Region
  157. select
  158. convert(nvarchar(20),convert(date,BaselineDate)) as 'BaselineDate',
  159. Store,
  160. [Parameters],
  161. convert(nvarchar(20),Min(StartTime)) as 'StartTime' ,
  162. convert(nvarchar(20),Max(EndTime)) as 'EndTime',
  163. convert(nvarchar(MAX), Max(EndTime)-Min(StartTime), 108) as duration,
  164. LEFT(CONVERT( VARCHAR, CAST(SUM(CountRecord) AS MONEY), 1), LEN(CONVERT(VARCHAR, CAST(SUM(CountRecord) AS MONEY), 1)) - 3) as CountRecord
  165. from BELBaseline..DMSBLTrackingHistory
  166. where BaselineDate >= @CheckDate and IsSuccess = 1
  167. group by
  168. convert(nvarchar(20),convert(date,BaselineDate)),
  169. Store,
  170. [Parameters]
  171. ) AS data2
  172. ORDER BY BaselineDate
  173. FOR XML PATH('tr'), TYPE
  174. ) AS NVARCHAR(MAX))+N'</table>'+N'<h3>Baseline Fail </h3>' +
  175.  
  176. ISnull(N'<Table>'+N'<Caption></caption>'+N'<tr><th>DATE BASELINE</th><th>STORE NAME</th><th>Message</th><th>Parameters</th></tr>'+CAST(
  177. (
  178. SELECT
  179. 'left' AS [td/@align],
  180. td = BaselineDate,
  181. '',
  182. 'left' AS [td/@align],
  183. td = Store,
  184. '',
  185.  
  186. 'left' AS [td/@align],
  187. td = [Message] ,
  188. '',
  189. 'left' AS [td/@align],
  190. td = [Parameters],
  191. ''
  192. FROM
  193. (
  194. --SUM theo Region
  195. select
  196. convert(nvarchar(20),convert(date,BaselineDate)) as 'BaselineDate',
  197. Store,
  198. [Parameters],
  199. [Message]
  200. from BELBaseline..DMSBLTrackingHistory
  201. where BaselineDate >= @CheckDate and IsSuccess = 0
  202. ) AS data2
  203. ORDER BY BaselineDate
  204. FOR XML PATH('tr'), TYPE
  205. ) AS NVARCHAR(MAX)),'')+N'</table>'+N'<h3>TÌNH HÌNH XỬ LÝ PENDING SAU KHI BASELINE - HEADER </h3>' +
  206.  
  207. Isnull(N'<Table>'+N'<Caption></caption>'+N'<tr><th>PENDING DATE</th><th>PENDING ORDER AFTER BL</th><th>LÔ TREO AFTER BL</th><th>ORDER WRONG STATUS AFTER BL</th></tr>'+CAST(
  208. (
  209. SELECT
  210. 'left' AS [td/@align],
  211. td = OrderDate,
  212. '',
  213. 'Right' AS [td/@align],
  214. td =NumberOrderPending,
  215. '',
  216. 'Right' AS [td/@align],
  217. td =NumberOrderNonRelease,
  218. '',
  219. 'right' AS [td/@align],
  220. td =NumberWrongStatus,
  221. ''
  222. FROM
  223. (
  224. --SUM theo Region
  225. select
  226. convert(nvarchar(20),convert(date,OrderDate)) as 'OrderDate',
  227. LEFT(CONVERT( VARCHAR, CAST(SUM(NumberOrderPending) AS MONEY), 1), LEN(CONVERT(VARCHAR, CAST(SUM(NumberOrderPending) AS MONEY), 1)) - 3) as 'NumberOrderPending',
  228. LEFT(CONVERT( VARCHAR, CAST(SUM(NumberOrderNonRelease) AS MONEY), 1), LEN(CONVERT(VARCHAR, CAST(SUM(NumberOrderNonRelease) AS MONEY), 1)) - 3) as 'NumberOrderNonRelease',
  229. LEFT(CONVERT( VARCHAR, CAST(SUM(NumberWrongStatus) AS MONEY), 1), LEN(CONVERT(VARCHAR, CAST(SUM(NumberWrongStatus) AS MONEY), 1)) - 3) as 'NumberWrongStatus'
  230. from #Temp
  231. group by convert(nvarchar(20),convert(date,OrderDate))
  232. ) AS data2
  233. ORDER BY OrderDate
  234. FOR XML PATH('tr'), TYPE
  235. ) AS NVARCHAR(MAX)),'')+N'</table>'+N'<h3>TÌNH HÌNH XỬ LÝ PENDING SAU KHI BASELINE - DETAIL </h3>' +
  236. ------------------Table Summary
  237. Isnull(N'<Table>'+N'<Caption></caption>'+N'<tr><th>PENDING DATE</th><th>DistributorCD</th><th>PENDING ORDER AFTER BL</th><th>LÔ TREO AFTER BL</th><th>ORDER WRONG STATUS AFTER BL</th></tr>'+CAST(
  238. (
  239. SELECT
  240. 'left' AS [td/@align],
  241. td = OrderDate,
  242. '',
  243. 'left' AS [td/@align],
  244. td = AccnetID,
  245. '',
  246. 'Right' AS [td/@align],
  247. td =NumberOrderPending,
  248. '',
  249. 'Right' AS [td/@align],
  250. td =NumberOrderNonRelease,
  251. '',
  252. 'right' AS [td/@align],
  253. td =NumberWrongStatus,
  254. ''
  255. FROM
  256. (
  257. --SUM theo Region
  258. select
  259. convert(nvarchar(20),convert(date,OrderDate)) as 'OrderDate',
  260. AccnetID,
  261. LEFT(CONVERT( VARCHAR, CAST(SUM(NumberOrderPending) AS MONEY), 1), LEN(CONVERT(VARCHAR, CAST(SUM(NumberOrderPending) AS MONEY), 1)) - 3) as 'NumberOrderPending',
  262. LEFT(CONVERT( VARCHAR, CAST(SUM(NumberOrderNonRelease) AS MONEY), 1), LEN(CONVERT(VARCHAR, CAST(SUM(NumberOrderNonRelease) AS MONEY), 1)) - 3) as 'NumberOrderNonRelease',
  263. LEFT(CONVERT( VARCHAR, CAST(SUM(NumberWrongStatus) AS MONEY), 1), LEN(CONVERT(VARCHAR, CAST(SUM(NumberWrongStatus) AS MONEY), 1)) - 3) as 'NumberWrongStatus'
  264. from #Temp
  265. where NumberOrderPending <> 0 or NumberOrderNonRelease <> 0 and NumberWrongStatus <> 0
  266. group by convert(nvarchar(20),convert(date,OrderDate)) , AccnetID
  267. ) AS data2
  268. ORDER BY OrderDate
  269. FOR XML PATH('tr'), TYPE
  270. ) AS NVARCHAR(MAX)),'')+N'</table>'+N'<h3>CROSS CHECK DATA SAU BASELINE </h3>' +
  271. ISnull(N'<Table>'+N'<Caption></caption>'+N'<tr><th>BASELINE DATE</th><th>ACU.SUM OP RECORD ACU</th><th>ACU.SUM OP VALUE</th><th>SUM OP BASELINE RECORD</th><th>SUM OP BASELINE VALUE</th><th>MTD OP BASELINE RECORD</th><th>MTD OP BASELINE VALUE</th></tr>'+CAST(
  272. (
  273. SELECT
  274. 'left' AS [td/@align],
  275. td = BLDate,
  276. '',
  277. 'right' AS [td/@align],
  278. td = NumRecordIntran,
  279. '',
  280. 'Right' AS [td/@align],
  281. td =TotalIntran ,
  282. '',
  283. 'Right' AS [td/@align],
  284. td = NumRecordBL,
  285. '',
  286. 'right' AS [td/@align],
  287. td = TotalValueBL,
  288. '',
  289. 'Right' AS [td/@align],
  290. td =NumRecordBLMtd ,
  291. '',
  292. 'right' AS [td/@align],
  293. td =TotalValueBLMtd ,
  294. ''
  295. FROM
  296. (
  297. --SUM theo Region
  298. select
  299. BLDate,
  300. LEFT(CONVERT( VARCHAR, CAST(RecordIntran AS MONEY), 1), LEN(CONVERT(VARCHAR, CAST(RecordIntran AS MONEY), 1)) - 3) as 'NumRecordIntran',
  301. LEFT(CONVERT( VARCHAR, CAST(TotalValue AS MONEY), 1), LEN(CONVERT(VARCHAR, CAST(TotalValue AS MONEY), 1)) - 3) as 'TotalIntran',
  302. LEFT(CONVERT( VARCHAR, CAST(@NumRecordBL AS MONEY), 1), LEN(CONVERT(VARCHAR, CAST(@NumRecordBL AS MONEY), 1)) - 3) as 'NumRecordBL',
  303. LEFT(CONVERT( VARCHAR, CAST(@NumRecordBLMtd AS MONEY), 1), LEN(CONVERT(VARCHAR, CAST(@NumRecordBLMtd AS MONEY), 1)) - 3) as 'NumRecordBLMtd',
  304. LEFT(CONVERT( VARCHAR, CAST(@TotalValueBL AS MONEY), 1), LEN(CONVERT(VARCHAR, CAST(@TotalValueBL AS MONEY), 1)) - 3) as 'TotalValueBL',
  305. LEFT(CONVERT( VARCHAR, CAST(@TotalValueBLMtd AS MONEY), 1), LEN(CONVERT(VARCHAR, CAST(@TotalValueBLMtd AS MONEY), 1)) - 3) as 'TotalValueBLMtd'
  306. from #temp2
  307. ) AS data2
  308. ORDER BY BLDate
  309. FOR XML PATH('tr'), TYPE
  310. ) AS NVARCHAR(MAX)),'')
  311. END;
  312. BEGIN
  313. DECLARE @subject NVARCHAR(MAX);
  314. SET @subject = N'[INFO][BASELINE][BEL]THÔNG TIN TÌNH TRẠNG BASELINE '+CONVERT(NVARCHAR, GETDATE(), 112) + N' BASELINE TO DATE ' + convert(nvarchar(20),convert(date,@ToDate));
  315. EXEC msdb.dbo.sp_send_dbmail @profile_Name ='DMSpro Supports',
  316.  
  317. @recipients = 'nghia.nguyen@dmspro.vn;quang.nguyen@dmspro.vn;linh.tran@dmspro.vn;nghia.nguyen@dmspro.vn;sieu.vo@dmspro.vn;lhphi@groupe-bel.vn; nlnan@groupe-bel.vn',
  318. @copy_recipients = 'L2.Supports@dmspro.vn',
  319. @subject = @subject,
  320. @body = @query,
  321. @body_format = 'HTML',
  322. @query_no_truncate = 1;
  323. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement