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.

426 lines
27 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_imeRemitcardStockUpload] 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 procEDURE [dbo].[proc_imeRemitcardStockUpload](
  9. @flag VARCHAR(10) = NULL
  10. ,@user VARCHAR(30) = NULL
  11. ,@rowId INT = NULL
  12. ,@agentName VARCHAR(255) = NULL
  13. ,@xml XML = NULL
  14. ,@remitCardNo VARCHAR(30) = NULL
  15. ,@cardType VARCHAR(30) = NULL
  16. ,@cardStatus VARCHAR(30) = NULL
  17. ,@accountNumber VARCHAR(30) = NULL
  18. ,@fromSn BIGINT = NULL
  19. ,@toSn BIGINT = NULL
  20. ,@modifiedDate VARCHAR(30) = NULL
  21. ,@modifiedBy VARCHAR(30) = NULL
  22. ,@createdDate VARCHAR(30) = NULL
  23. ,@createdBy VARCHAR(30) = NULL
  24. ,@pageSize INT = NULL
  25. ,@pageNumber INT = NULL
  26. ,@sortBy VARCHAR(50) = NULL
  27. ,@sortOrder VARCHAR(50) = NULL
  28. )AS
  29. SET NOCOUNT ON
  30. SET XACT_ABORT ON
  31. BEGIN
  32. BEGIN TRY
  33. DECLARE
  34. @table VARCHAR(MAX)
  35. ,@select_field_list VARCHAR(MAX)
  36. ,@extra_field_list VARCHAR(MAX)
  37. ,@sql_filter VARCHAR(MAX)
  38. DECLARE @startLoopFirst AS INT
  39. SET @startLoopFirst = 0
  40. DECLARE @startLoopLast AS BIGINT
  41. SET @startLoopLast = CAST(@toSn AS BIGINT) - CAST(@fromSn AS BIGINT)
  42. IF @flag='s'
  43. BEGIN
  44. SET @sortBy='rowId'
  45. SET @sortOrder='DESC'
  46. SET @table='
  47. (
  48. SELECT id as rowId
  49. ,ISNULL(am.agentName,''Head Office'') as AGENT
  50. ,accountNo
  51. ,remitCardNo
  52. ,case when cardType=''r'' then ''IME Remit Card'' else
  53. case when cardType=''c'' then ''Customer Card''
  54. else ''PIN-IME Remit Card'' end end as cardType
  55. ,icm.createdBy as [user]
  56. ,cardStatus
  57. ,icm.createdDate as createdDate
  58. ,icm.modifiedDate as modifiedDate
  59. ,icm.modifiedBy as modifiedBy
  60. FROM imeremitcardmaster icm with (nolock) left join agentmaster am
  61. on icm.agentId=am.agentId where ISNULL(icm.isDeleted,''N'')<>''Y''
  62. )x'
  63. SET @sql_filter = ''
  64. IF @remitCardNo IS NOT NULL
  65. SET @sql_filter=@sql_filter + ' AND remitCardNo = ''' +@remitCardNo+''''
  66. IF @cardType IS NOT NULL
  67. SET @sql_filter=@sql_filter + ' AND cardType = ''' +@cardType+''''
  68. IF @agentName IS NOT NULL
  69. SET @sql_filter=@sql_filter + ' AND AGENT like ''%' +@agentName+'%'''
  70. IF @cardStatus IS NOT NULL
  71. SET @sql_filter=@sql_filter + ' AND cardStatus = ''' +@cardStatus+''''
  72. IF @createdDate IS NOT NULL
  73. SET @sql_filter=@sql_filter + ' AND cast(createdDate as date) = ''' +@createdDate +''''
  74. IF @createdBy IS NOT NULL
  75. SET @sql_filter=@sql_filter + ' AND [user] like ''%' +@createdBy+'%'''
  76. SET @select_field_list = '
  77. rowId
  78. ,Agent
  79. ,remitCardNo
  80. ,accountNo
  81. ,cardType
  82. ,cardStatus
  83. ,[user]
  84. ,createdDate
  85. ,modifiedDate
  86. ,modifiedBy
  87. '
  88. --print(@table + @sql_filter)
  89. EXEC dbo.proc_paging
  90. @table
  91. ,@sql_filter
  92. ,@select_field_list
  93. ,@extra_field_list
  94. ,@sortBy
  95. ,@sortOrder
  96. ,@pageSize
  97. ,@pageNumber
  98. END
  99. IF @flag= 'loopInsert'
  100. BEGIN
  101. IF EXISTS(SELECT 'X' FROM imeremitcardmaster WITH(NOLOCK) WHERE remitCardNo Between @fromSn and @toSn and ISNULL(isDeleted,'N') <> 'Y')
  102. BEGIN
  103. SELECT 1 errorCode,'Card Number Already Exists !!!' mes ,null id
  104. RETURN
  105. END
  106. IF EXISTS (select 'X' from imeremitcardmaster where (len(@fromSn)<>16 and @cardType='r') or (len(@toSn)<>16 and @cardType='r'))
  107. BEGIN
  108. SELECT '1' errorCode,'Invalid length of remit card serial number.' AS mes ,null id
  109. RETURN;
  110. END
  111. IF EXISTS (select 'X' from imeremitcardmaster where (len(@fromSn)<>8 and @cardType='c') or (len(@toSn)<>8 and @cardType='c'))
  112. BEGIN
  113. SELECT '1' errorCode,'Invalid length of customer card serial number.' AS mes ,null id
  114. RETURN;
  115. END
  116. IF EXISTS (select 'X' from imeremitcardmaster where (len(@fromSn)<>16 and @cardType='p') or (len(@toSn)<>16 and @cardType='p'))
  117. BEGIN
  118. SELECT '1' errorCode,'Invalid length of remit pin number.' AS mes,null id
  119. RETURN;
  120. END
  121. BEGIN TRANSACTION
  122. WHILE(@fromSn <= @toSn)
  123. BEGIN
  124. INSERT INTO imeremitcardmaster (
  125. remitCardNo
  126. ,cardStatus
  127. ,createdBy
  128. ,createdDate
  129. ,cardType
  130. )
  131. select
  132. cast(@fromSn as bigint)
  133. ,'HO'
  134. ,@user
  135. ,GETDATE()
  136. ,@cardType
  137. SET @fromSn = @fromSn + 1
  138. END
  139. COMMIT TRANSACTION
  140. SELECT '0' errorCode,'Successfully Inserted !!!' AS mes ,null id
  141. END
  142. IF @flag='i'
  143. BEGIN
  144. IF EXISTS (select 'X' from imeremitcardmaster where (len(@remitCardNo)<>16 and @cardType='r'))
  145. BEGIN
  146. SELECT '1' errorCode,'Invalid length of remit card serial number.' AS mes,null id
  147. RETURN;
  148. END
  149. IF EXISTS (select 'X' from imeremitcardmaster where (len(@remitCardNo)<>16 and @cardType='p'))
  150. BEGIN
  151. SELECT '1' errorCode,'Invalid length of remit card pin number.' AS mes ,null id
  152. RETURN;
  153. END
  154. IF EXISTS (select 'X' from imeremitcardmaster where (len(@remitCardNo)<>8 and @cardType='c'))
  155. BEGIN
  156. SELECT '1' errorCode,'Invalid length of customer card serial number.' AS mes ,null id
  157. RETURN;
  158. END
  159. IF EXISTS (select 'X' from imeremitcardmaster where accountNo=@accountNumber and ISNULL(isDeleted,'N')<>'Y')
  160. BEGIN
  161. SELECT 1 errorCode,'Account number already exists.' mes ,null id
  162. RETURN
  163. END
  164. IF EXISTS (select 'X' from imeremitcardmaster where remitCardNo=@remitCardNo and ISNULL(isDeleted,'N')<>'Y')
  165. BEGIN
  166. SELECT 1 errorCode,'Card number already exists.' mes ,null id
  167. RETURN
  168. END
  169. BEGIN TRANSACTION
  170. INSERT INTO imeremitcardmaster (
  171. remitCardNo
  172. ,accountNo
  173. ,cardStatus
  174. ,createdBy
  175. ,createdDate
  176. ,cardType
  177. )
  178. VALUES (
  179. cast(@remitCardNo as bigint)
  180. ,@accountNumber
  181. ,'HO'
  182. ,@user
  183. ,GETDATE()
  184. ,@cardType
  185. )
  186. IF @cardType='r'
  187. INSERT INTO imeremitcardmaster (
  188. remitCardNo
  189. ,accountNo
  190. ,cardStatus
  191. ,createdBy
  192. ,createdDate
  193. ,cardType
  194. )
  195. VALUES (
  196. cast(@remitCardNo as bigint)
  197. ,@accountNumber
  198. ,'HO'
  199. ,@user
  200. ,GETDATE()
  201. ,'p'
  202. )
  203. COMMIT TRANSACTION
  204. SELECT '0' errorCode,'Successfully Inserted !!!' AS mes ,null id
  205. END
  206. IF @flag= 'upload'
  207. BEGIN
  208. DECLARE @TEMP TABLE(remitCardNo VARCHAR(50),accountNo VARCHAR(50))
  209. DECLARE @totalQuantity VARCHAR(10)=NULL
  210. INSERT @TEMP(
  211. remitCardNo
  212. ,accountNo
  213. )
  214. SELECT
  215. p.value('@casId','VARCHAR(50)')
  216. ,p.value('@account','VARCHAR(50)')
  217. FROM @xml.nodes('/root/row') AS tmp(p)
  218. IF EXISTS(SELECT 'X' FROM @TEMP WHERE remitCardNo IN (SELECT remitCardNo FROM imeremitcardmaster where ISNULL(isDeleted,'N') <> 'Y'))
  219. BEGIN
  220. SELECT '1' errorCode,'Stock with these serial number already exists.' AS mes ,null id
  221. RETURN;
  222. END
  223. IF EXISTS(SELECT 'X' FROM @TEMP WHERE accountNo IN (SELECT accountNo FROM imeremitcardmaster where ISNULL(isDeleted,'N') <> 'Y'))
  224. BEGIN
  225. SELECT '1' errorCode,'Some of the account number already exists.' AS mes ,null id
  226. RETURN;
  227. END
  228. IF EXISTS(select remitCardNo,count('x') from @TEMP group by remitCardNo having count('x')>1)
  229. BEGIN
  230. SELECT '1' errorCode,'Duplicate serial number exists in your upload file.' AS mes,null id
  231. RETURN;
  232. END
  233. IF EXISTS (select 'X' from @TEMP where (len(remitCardNo)<>16 and @cardType='r'))
  234. BEGIN
  235. SELECT '1' errorCode,'Invalid length of remit card serial number.' AS mes,null id
  236. RETURN;
  237. END
  238. IF EXISTS (select 'X' from @TEMP where (len(remitCardNo)<>16 and @cardType='p'))
  239. BEGIN
  240. SELECT '1' errorCode,'Invalid length of remit card pin number.' AS mes ,null id
  241. RETURN;
  242. END
  243. IF EXISTS (select 'X' from @TEMP where (len(remitCardNo)<>8 and @cardType='c'))
  244. BEGIN
  245. SELECT '1' errorCode,'Invalid length of customer card serial number.' AS mes ,null id
  246. RETURN;
  247. END
  248. BEGIN TRANSACTION
  249. INSERT INTO imeremitcardmaster(
  250. remitCardNo
  251. ,accountNo
  252. ,cardStatus
  253. ,cardType
  254. ,createdBy
  255. ,createdDate
  256. )SELECT
  257. remitCardNo
  258. ,accountNo
  259. ,'HO'
  260. ,@cardType
  261. ,@user
  262. ,GETDATE()
  263. FROM @temp
  264. IF @cardType='r'
  265. INSERT INTO imeremitcardmaster(
  266. remitCardNo
  267. ,accountNo
  268. ,cardStatus
  269. ,cardType
  270. ,createdBy
  271. ,createdDate
  272. )SELECT
  273. remitCardNo
  274. ,accountNo
  275. ,'HO'
  276. ,'p'
  277. ,@user
  278. ,GETDATE()
  279. FROM @temp
  280. SELECT @totalQuantity=COUNT(*) FROM imeremitcardmaster
  281. SELECT '0' errorCode,'Stock Sucessfully Uploaded.' mes,null id
  282. COMMIT TRANSACTION
  283. END
  284. IF @flag = 'typedll'
  285. BEGIN
  286. SELECT '' AS name, 'Select' AS value
  287. UNION ALL
  288. SELECT 'IME Remit Card' AS name, 'IME Remit Card' AS value
  289. UNION ALL
  290. SELECT 'Customer Card' AS name, 'Customer Card' AS value
  291. UNION ALL
  292. SELECT 'PIN-IME Remit Card' AS name, 'PIN-IME Remit Card' AS value
  293. END
  294. IF @flag = 'statusdll'
  295. BEGIN
  296. SELECT '' AS name, 'Select' AS value
  297. UNION ALL
  298. SELECT 'HO' AS name, 'Head Office' AS value
  299. UNION ALL
  300. SELECT 'Transfered' AS name, 'Transfered' AS value
  301. UNION ALL
  302. SELECT 'Enrolled' AS name, 'Enrolled' AS value
  303. END
  304. IF @flag= 'delete'
  305. BEGIN
  306. UPDATE imeremitcardmaster
  307. SET
  308. isDeleted ='Y'
  309. ,modifiedBy = @user
  310. ,modifiedDate=GETDATE()
  311. where id = @rowId
  312. SELECT '0' ,'Successfully Deleted !!!' mes ,null id
  313. END
  314. IF @flag= 'select'
  315. BEGIN
  316. SELECT id as rowId
  317. ,ISNULL(am.agentName,'') AS AGENT
  318. ,icm.agentId
  319. ,remitCardNo
  320. ,accountNo
  321. ,cardType
  322. ,cardStatus
  323. ,icm.createdBy AS [user]
  324. ,icm.createdDate AS createdDate
  325. ,icm.modifiedDate AS modifiedDate
  326. ,icm.modifiedBy AS modifiedBy
  327. FROM imeremitcardmaster icm WITH (NOLOCK) left join agentmaster am
  328. ON icm.agentId=am.agentId WHERE icm.id = @rowid and ISNULL(icm.isDeleted,'N')<>'Y'
  329. END
  330. IF @flag ='u'
  331. BEGIN
  332. IF EXISTS (select 'X' from imeremitcardmaster where (len(@remitCardNo)<>16 and @cardType='r'))
  333. BEGIN
  334. SELECT '1' errorCode,'Invalid length of remit card serial number.' AS mes,null id
  335. RETURN;
  336. END
  337. IF EXISTS (select 'X' from imeremitcardmaster where (len(@remitCardNo)<>16 and @cardType='p'))
  338. BEGIN
  339. SELECT '1' errorCode,'Invalid length of remit card pin number.' AS mes ,null id
  340. RETURN;
  341. END
  342. IF EXISTS (select 'X' from imeremitcardmaster where (len(@remitCardNo)<>8 and @cardType='c'))
  343. BEGIN
  344. SELECT '1' errorCode,'Invalid length of customer card serial number.' AS mes ,null id
  345. RETURN;
  346. END
  347. IF EXISTS (select 'X' from imeremitcardmaster where id <> @rowId and accountNo=@accountNumber and ISNULL(isDeleted,'N')<>'Y')
  348. BEGIN
  349. SELECT 1 errorCode,'Account number already exists.' mes ,null id
  350. RETURN
  351. END
  352. IF EXISTS (select 'X' from imeremitcardmaster where id <> @rowId and remitCardNo=@remitCardNo and ISNULL(isDeleted,'N')<>'Y')
  353. BEGIN
  354. SELECT 1 errorCode,'Card number already exists.' mes ,null id
  355. RETURN
  356. END
  357. UPDATE
  358. imeremitcardmaster
  359. SET
  360. remitCardNo=@remitCardNo
  361. ,accountNo=@accountNumber
  362. ,agentId=@agentName
  363. ,modifiedBy=@user
  364. ,modifiedDate=GETDATE()
  365. ,cardStatus='HO'
  366. WHERE id= @rowId
  367. SELECT '0' errorCode,'Successfully Assigned !!!' AS mes ,null id
  368. END
  369. END TRY
  370. BEGIN CATCH
  371. IF @@TRANCOUNT > 0
  372. ROLLBACK
  373. SELECT 1 errorCode, ERROR_MESSAGE()+ERROR_LINE() mes, @rowId id
  374. END CATCH
  375. END
  376. GO