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.

276 lines
17 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_ofacManagement] Script Date: 9/27/2019 1:30:14 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. --IF EXISTS (SELECT 'x' FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[proc_ofacManagement]') AND TYPE IN (N'P', N'PC'))
  9. -- DROP PROCEDURE [dbo].proc_ofacManagement
  10. --GO
  11. /*
  12. EXEC proc_ofacManagement
  13. @flag = 'sdn'
  14. ,@user = 'admin'
  15. ,@sdnFilePath = 'D:\dev_work\E-Pay\REMITTANCE\APP\Swift.web\doc\SDN.pip'
  16. ,@altFilePath = 'D:\dev_work\E-Pay\REMITTANCE\APP\Swift.web\doc\ALT.pip'
  17. ,@addFilePath = 'D:\dev_work\E-Pay\REMITTANCE\APP\Swift.web\doc\ADD.pip'
  18. EXEC proc_ofacManagement @flag = 'sdn'
  19. , @user = 'admin'
  20. , @sdnFilePath = 'D:\doc\SDN.pip'
  21. , @altFilePath = 'D:\doc\ALT.pip'
  22. , @addFilePath = 'D:\doc\ADD.pip'
  23. */
  24. CREATE proc [dbo].[proc_ofacManagement]
  25. @flag CHAR(10) = NULL
  26. ,@sdnXML XML = NULL
  27. ,@altXML XML = NULL
  28. ,@addXML XML = NULL
  29. ,@user VARCHAR(50) = NULL
  30. AS
  31. SET NOCOUNT ON;
  32. BEGIN TRY
  33. CREATE TABLE #msg(errorCode INT, msg VARCHAR(100), id INT)
  34. DECLARE @dataSource VARCHAR(30)
  35. SET @dataSource = 'OFAC'
  36. IF @flag = 'sdn'
  37. BEGIN
  38. SELECT
  39. sdnId = row.c.value('@f1', 'INT')
  40. ,name = row.c.value('@f2', 'VARCHAR(300)')
  41. ,sdnType = row.c.value('@f3', 'VARCHAR(50)')
  42. ,program = row.c.value('@f4', 'VARCHAR(50)')
  43. ,title = row.c.value('@f5', 'VARCHAR(200)')
  44. ,callSign = row.c.value('@f6', 'VARCHAR(20)')
  45. ,vesselType = row.c.value('@f7', 'VARCHAR(50)')
  46. ,tonnage = row.c.value('@f8', 'VARCHAR(20)')
  47. ,grossRegisteredTonnage = row.c.value('@f9', 'VARCHAR(20)')
  48. ,vesselFlag = row.c.value('@f10', 'VARCHAR(50)')
  49. ,vesselOwner = row.c.value('@f11', 'VARCHAR(200)')
  50. ,remarks = row.c.value('@f12', 'VARCHAR(MAX)')
  51. INTO #tempSDNList
  52. FROM @sdnXML.nodes('/root/row') row (c)
  53. SELECT
  54. sdnId = row.c.value('@f1', 'INT')
  55. ,altId = row.c.value('@f2', 'INT')
  56. ,altType = row.c.value('@f3', 'VARCHAR(50)')
  57. ,name = row.c.value('@f4', 'VARCHAR(200)')
  58. ,category = row.c.value('@f5', 'VARCHAR(20)')
  59. INTO #tempALTList
  60. FROM @altXML.nodes('/root/row') row (c)
  61. SELECT
  62. sdnId = row.c.value('@f1', 'INT')
  63. ,addId = row.c.value('@f2', 'INT')
  64. ,[address] = row.c.value('@f3', 'VARCHAR(500)')
  65. ,city = row.c.value('@f4', 'VARCHAR(500)')
  66. ,country = row.c.value('@f5', 'VARCHAR(50)')
  67. ,remark = row.c.value('@f5', 'VARCHAR(200)')
  68. INTO #tempADDList
  69. FROM @addXML.nodes('/root/row') row (c)
  70. ---------------------------------------------------------------------------------------------
  71. BEGIN TRANSACTION
  72. DELETE FROM blackList WHERE dataSource = @dataSource
  73. INSERT INTO blackList(
  74. ofacKey
  75. ,entNum
  76. ,name
  77. ,vesselType
  78. ,address
  79. ,city
  80. ,state
  81. ,zip
  82. ,country
  83. ,remarks
  84. ,sortOrder
  85. ,fromFile
  86. ,dataSource
  87. ,indEnt
  88. ,sourceEntNum
  89. )
  90. SELECT x.dataSource+''+CAST(x.entNum AS VARCHAR), x.entNum, x.name, x.vesselType, x.address, x.city, x.state, x.zip, x.country,
  91. x.remarks, x.sortOrder, x.fromFile, x.dataSource, x.indEnt, x.sourceEntNum
  92. FROM
  93. (
  94. SELECT
  95. ofacKey = sdn.sdnId
  96. ,entNum = sdn.sdnId
  97. ,name = REPLACE(sdn.name, '"', '')
  98. ,vesselType = 'sdn'
  99. ,address = ''
  100. ,city = ''
  101. ,state = ''
  102. ,zip = ''
  103. ,country = ''
  104. ,remarks = REPLACE(sdn.remarks, '"', '')
  105. ,sortOrder = 1
  106. ,fromFile = 'SDN.PIP'
  107. ,dataSource = @dataSource
  108. ,indEnt = CASE WHEN sdn.sdnType = '"individual"' THEN 'I' ELSE 'E' END
  109. ,sourceEntNum = @dataSource + CAST(sdn.sdnId AS VARCHAR)
  110. FROM #tempSDNList sdn
  111. UNION ALL
  112. SELECT
  113. ofacKey = sdn.sdnId
  114. ,entNum = sdn.sdnId
  115. ,name = REPLACE(alt.name, '"', '')
  116. ,vesselType = 'alt'
  117. ,address = ''
  118. ,city = ''
  119. ,state = ''
  120. ,zip = ''
  121. ,country = ''
  122. ,remarks = ''
  123. ,sortOrder = 2
  124. ,fromFile = 'ALT.PIP'
  125. ,dataSource = @dataSource
  126. ,indEnt = CASE WHEN sdn.sdnType = '"individual"' THEN 'I' ELSE 'E' END
  127. ,sourceEntNum = @dataSource + CAST(sdn.sdnId AS VARCHAR)
  128. FROM #tempSDNList sdn
  129. INNER JOIN #tempALTList alt WITH(NOLOCK) ON sdn.sdnId = alt.sdnId
  130. UNION ALL
  131. SELECT
  132. ofacKey = sdn.sdnId
  133. ,entNum = sdn.sdnId
  134. ,name = ''
  135. ,vesselType = 'add'
  136. ,address = REPLACE(adr.address, '"', '')
  137. ,city = REPLACE(adr.city, '"', '')
  138. ,state = ''
  139. ,zip = ''
  140. ,country = REPLACE(adr.country, '"', '')
  141. ,remarks = REPLACE(adr.remark, '"', '')
  142. ,sortOrder = 3
  143. ,fromFile = 'ADD.PIP'
  144. ,dataSource = @dataSource
  145. ,indEnt = CASE WHEN sdn.sdnType = '"individual"' THEN 'I' ELSE 'E' END
  146. ,sourceEntNum = @dataSource + CAST(sdn.sdnId AS VARCHAR)
  147. FROM #tempSDNList sdn
  148. INNER JOIN #tempADDList adr WITH(NOLOCK) ON sdn.sdnId = adr.sdnId
  149. )x
  150. ORDER BY x.entNum, x.sortOrder
  151. DECLARE
  152. @sdnCount INT
  153. ,@altCount INT
  154. ,@addCount INT
  155. SELECT @sdnCount = COUNT(DISTINCT entNum) FROM blackList
  156. where dataSource = @dataSource
  157. INSERT INTO blacklistLog (totalRecord, dataSource, createdBy, createdDate)
  158. SELECT @sdnCount, @dataSource, @user, GETDATE()
  159. MERGE blackListHistory AS blh
  160. USING (SELECT rowId, ofacKey, entNum, name, vesselType, address, city, state, zip, country, remarks, sortOrder, fromFile, dataSource, indEnt, sourceEntNum FROM blacklist WITH(NOLOCK) WHERE dataSource = @dataSource ) AS bl
  161. ON ISNULL(blh.ofacKey, '') = ISNULL(bl.ofacKey, '') AND ISNULL(blh.entNum, '') = ISNULL(bl.entNum, '')
  162. AND ISNULL(blh.name, '') = ISNULL(bl.name, '') AND ISNULL(blh.vesselType, '') = ISNULL(bl.vesselType, '')
  163. AND ISNULL(blh.address, '') = ISNULL(bl.address, '') AND ISNULL(blh.city, '') = ISNULL(bl.city, '')
  164. AND ISNULL(blh.state, '') = ISNULL(bl.state, '') AND ISNULL(blh.zip, '') = ISNULL(bl.zip, '')
  165. AND ISNULL(blh.country, '') = ISNULL(bl.country, '') AND ISNULL(blh.remarks, '') = ISNULL(bl.remarks, '')
  166. AND ISNULL(blh.sortOrder, '') = ISNULL(bl.sortOrder, '') AND ISNULL(blh.fromFile, '') = ISNULL(bl.fromFile, '')
  167. AND ISNULL(blh.dataSource, '') = ISNULL(bl.dataSource, '') AND ISNULL(blh.indEnt, '') = ISNULL(bl.indEnt, '')
  168. AND ISNULL(blh.sourceEntNum, '') = ISNULL(bl.sourceEntNum, '') AND bl.dataSource = @dataSource
  169. WHEN NOT MATCHED THEN
  170. INSERT(blackListId, ofacKey, entNum, name, vesselType, address, city, state, zip, country, remarks, sortOrder, fromFile, dataSource, indEnt, sourceEntNum)
  171. VALUES(bl.rowId, bl.ofacKey, bl.entNum, bl.name, bl.vesselType, bl.address, bl.city, bl.state, bl.zip, bl.country, bl.remarks, bl.sortOrder, bl.fromFile, bl.dataSource, bl.indEnt, bl.sourceEntNum);
  172. ------>> MAINTAINING BLACK LIST HISTORY LOG
  173. --INSERT INTO blackListHistory(
  174. -- blackListId
  175. -- ,ofacKey
  176. -- ,entNum
  177. -- ,name
  178. -- ,vesselType
  179. -- ,address
  180. -- ,city
  181. -- ,state
  182. -- ,zip
  183. -- ,country
  184. -- ,remarks
  185. -- ,sortOrder
  186. -- ,fromFile
  187. -- ,dataSource
  188. -- ,indEnt
  189. -- ,sourceEntNum
  190. --)
  191. --SELECT
  192. -- rowId
  193. -- ,ofacKey
  194. -- ,entNum
  195. -- ,name
  196. -- ,vesselType
  197. -- ,address
  198. -- ,city
  199. -- ,state
  200. -- ,zip
  201. -- ,country
  202. -- ,remarks
  203. -- ,sortOrder
  204. -- ,fromFile
  205. -- ,dataSource
  206. -- ,indEnt
  207. -- ,sourceEntNum
  208. --FROM blacklist WITH(NOLOCK) WHERE dataSource=@dataSource
  209. IF @@TRANCOUNT > 0
  210. COMMIT TRANSACTION
  211. SELECT
  212. 0 error_code
  213. ,'OFAC Data imported successfully' mes
  214. ,NULL
  215. END
  216. ELSE IF @flag = 's'
  217. BEGIN
  218. SELECT
  219. [ID] = rowid
  220. --,[Total Records] = totalRecord
  221. ,[Source] = dataSource
  222. ,[Last Updated By] = createdBy
  223. ,[Last Updated Date] = createdDate
  224. FROM blacklistLog
  225. ORDER BY rowid DESC
  226. END
  227. ELSE IF @flag = 'swLog' /*Source Wise Data Log*/
  228. BEGIN
  229. SELECT
  230. dataSource [Data Source], count( distinct entNum) [Total Records] from blacklist with(nolock)
  231. WHERE dataSource ='UNSCR' OR dataSource ='OFAC'
  232. GROUP BY dataSource
  233. UNION ALL
  234. SELECT
  235. dataSource [Data Source], count(*) Total from blacklist with(nolock)
  236. WHERE dataSource <>'UNSCR' and dataSource <>'OFAC'
  237. GROUP BY dataSource
  238. END
  239. END TRY
  240. BEGIN CATCH
  241. IF @@TRANCOUNT > 0
  242. ROLLBACK TRANSACTION
  243. SELECT 1 error_code, ERROR_MESSAGE() mes, null id
  244. END CATCH
  245. GO