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
24 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_GBLPay] Script Date: 9/27/2019 1:30:14 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. /*
  9. EXEC proc_GBLPay @flag = 'details', @user = 'bajrashali_b1', @tranId = '1', @controlNo = '91191505349'
  10. */
  11. CREATE PROC [dbo].[proc_GBLPay] (
  12. @flag VARCHAR(50)
  13. ,@controlNo VARCHAR(20) = NULL
  14. ,@user VARCHAR(30) = NULL
  15. ,@agentRefId VARCHAR(20) = NULL
  16. ,@payTokenId VARCHAR(20) = NULL
  17. ,@tranId INT = NULL
  18. ,@remittanceEntryDate VARCHAR(30) = NULL
  19. ,@remittanceAuthorizedDate VARCHAR(30) = NULL
  20. ,@sFirstName VARCHAR(30) = NULL
  21. ,@sMiddleName VARCHAR(30) = NULL
  22. ,@sLastName1 VARCHAR(30) = NULL
  23. ,@sLastName2 VARCHAR(30) = NULL
  24. ,@sAddress VARCHAR(100) = NULL
  25. ,@sTelephone VARCHAR(20) = NULL
  26. ,@sMobile VARCHAR(20) = NULL
  27. ,@rFirstName VARCHAR(30) = NULL
  28. ,@rMiddleName VARCHAR(30) = NULL
  29. ,@rLastName1 VARCHAR(30) = NULL
  30. ,@rLastName2 VARCHAR(30) = NULL
  31. ,@rAddress VARCHAR(100) = NULL
  32. ,@rTelephone VARCHAR(20) = NULL
  33. ,@rMobile VARCHAR(20) = NULL
  34. ,@rIdType VARCHAR(30) = NULL
  35. ,@rIdNumber VARCHAR(30) = NULL
  36. ,@rPlaceOfIssue VARCHAR(50) = NULL
  37. ,@rIssuedDate DATETIME = NULL
  38. ,@rValidDate DATETIME = NULL
  39. ,@tAmt MONEY = NULL
  40. ,@collCurr VARCHAR(3) = NULL
  41. ,@exRate DECIMAL(15,9) = NULL
  42. ,@payoutAmt MONEY = NULL
  43. ,@payoutCurr VARCHAR(3) = NULL
  44. ,@paymentType VARCHAR(30) = NULL
  45. ,@payingCommission MONEY = NULL
  46. ,@remarks VARCHAR(MAX) = NULL
  47. ,@msgType CHAR(1) = NULL
  48. ,@pBranch INT = NULL
  49. ,@customerId INT = NULL
  50. ,@sortBy VARCHAR(50) = NULL
  51. ,@sortOrder VARCHAR(5) = NULL
  52. ,@pageSize INT = NULL
  53. ,@pageNumber INT = NULL
  54. ,@refNo VARCHAR(20) = NULL
  55. ,@senderName VARCHAR(100) = NULL
  56. ,@beneficiaryName VARCHAR(100) = NULL
  57. ,@remitType VARCHAR(50) = NULL
  58. )
  59. AS
  60. DECLARE
  61. @select_field_list VARCHAR(MAX)
  62. ,@extra_field_list VARCHAR(MAX)
  63. ,@table VARCHAR(MAX)
  64. ,@sql_filter VARCHAR(MAX)
  65. SET NOCOUNT ON
  66. SET XACT_ABORT ON
  67. SELECT @pageSize = 1000, @pageNumber = 1
  68. DECLARE
  69. @sBranch INT
  70. ,@sBranchName VARCHAR(100)
  71. ,@sAgent INT
  72. ,@sAgentName VARCHAR(100)
  73. ,@sSuperAgent INT
  74. ,@sSuperAgentName VARCHAR(100)
  75. ,@sHub INT
  76. ,@sHubName VARCHAR(100)
  77. ,@sCountry INT
  78. ,@pHub INT
  79. ,@pHubName VARCHAR(50)
  80. ,@pSuperAgent INT
  81. ,@pSuperAgentName VARCHAR(100)
  82. ,@pAgent INT
  83. ,@pAgentName VARCHAR(100)
  84. ,@pBranchName VARCHAR(100)
  85. ,@pCountry VARCHAR(100)
  86. ,@pState VARCHAR(100)
  87. ,@pDistrict VARCHAR(100)
  88. ,@pLocation INT
  89. ,@deliveryMethod VARCHAR(100)
  90. ,@cAmt MONEY
  91. ,@pAmt MONEY
  92. ,@serviceCharge MONEY
  93. ,@pAgentComm MONEY
  94. ,@pAgentCommCurrency VARCHAR(3)
  95. ,@pSuperAgentComm MONEY
  96. ,@pSuperAgentCommCurrency VARCHAR(3)
  97. ,@pHubComm MONEY
  98. ,@pHubCommCurrency VARCHAR(3)
  99. ,@collMode INT
  100. ,@sendingCustType INT
  101. ,@receivingCurrency INT
  102. ,@senderId INT
  103. ,@payoutMethod INT
  104. ,@agentType INT
  105. ,@actAsBranchFlag CHAR(1)
  106. ,@tokenId BIGINT
  107. ,@controlNoEncrypted VARCHAR(20)
  108. SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo)
  109. IF @flag = 'pay' --Domestic Pay For API
  110. BEGIN
  111. SELECT @payoutMethod = CASE WHEN @paymentType = 'Cash Pay' THEN 1 END
  112. --1. Find Sending Agent Details-------------------------------------------------------------------------
  113. SELECT @sBranch = agentId, @agentType = agentType FROM agentMaster WITH(NOLOCK) WHERE agentCode = 'GBL-API' AND ISNULL(isDeleted, 'N') <> 'Y' AND ISNULL(isActive, 'N') = 'Y'
  114. IF @agentType = 2903
  115. BEGIN
  116. SET @sAgent = @sBranch
  117. END
  118. ELSE
  119. BEGIN
  120. SELECT @sAgent = parentId, @sBranchName = agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @sBranch
  121. END
  122. SELECT @sSuperAgent = parentId, @sAgentName = agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @sAgent
  123. SELECT @sHub = parentId, @sSuperAgentName = agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @sSuperAgent
  124. SELECT @sHubName = agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @sHub
  125. --End of Find Sending Agent Details----------------------------------------------------------------------
  126. --2. Find Payout Agent Details---------------------------------------------------------------------------
  127. IF @pBranch IS NULL
  128. SELECT @pBranch = agentId FROM applicationUsers WITH(NOLOCK) WHERE userName = @user
  129. SELECT
  130. @pCountry = agentCountry
  131. ,@pState = agentState
  132. ,@pDistrict = agentDistrict
  133. ,@pLocation = agentLocation
  134. FROM agentMaster WITH(NOLOCK) WHERE agentId = @pBranch
  135. --Payout
  136. SELECT @agentType = agentType, @pbranchName = agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @pBranch
  137. --Check for branch or agent acting as branch
  138. IF @agentType = 2903 --Agent
  139. BEGIN
  140. SET @pAgent = @pBranch
  141. END
  142. ELSE
  143. BEGIN
  144. SELECT @pAgent = parentId, @pBranchName = agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @pBranch
  145. END
  146. SELECT @pSuperAgent = parentId, @pAgentName = agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @pAgent
  147. SELECT @pHub = parentId, @pSuperAgentName = agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @pSuperAgent
  148. SELECT @pHubName = agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @pHub
  149. --End of Find Payout Agent Details--------------------------------------------------------------------------------
  150. --3. Find Settling Agent-------------------------------------------------------------------------------------------
  151. DECLARE @settlingAgent INT = NULL
  152. SELECT @settlingAgent = agentId FROM agentMaster WHERE agentId = @pBranch AND isSettlingAgent = 'Y'
  153. IF @settlingAgent IS NULL
  154. SELECT @settlingAgent = agentId FROM agentMaster WHERE agentId = @pAgent AND isSettlingAgent = 'Y'
  155. IF @settlingAgent IS NULL
  156. SELECT @settlingAgent = agentId FROM agentMaster WHERE agentId = @pSuperAgent AND isSettlingAgent = 'Y'
  157. --End of Find Settling Agent--------------------------------------------------------------------------------------
  158. --4. Commission Calculation Start
  159. SET @payoutMethod = 'Cash Payment'
  160. SELECT @sCountry = countryId
  161. FROM countryCurrency cc WITH(NOLOCK)
  162. INNER JOIN currencyMaster cm WITH(NOLOCK) ON cc.currencyId = cm.currencyId AND ISNULL(cc.isActive, 'N') = 'Y' AND ISNULL(cc.isDeleted, 'N') <> 'Y'
  163. WHERE cm.currencyCode = @collCurr
  164. DECLARE @pCountryId INT = NULL, @deliveryMethodId INT = NULL
  165. SELECT @pCountryId = countryId FROM countryMaster WITH(NOLOCK) WHERE countryName = @pCountry
  166. SELECT @deliveryMethodId = serviceTypeId FROM serviceTypeMaster WITH(NOLOCK) WHERE typeTitle = @payoutMethod
  167. SELECT @pHubComm = ISNULL(amount, 0) FROM dbo.FNAGetPayCommHub(@sBranch, @sCountry, NULL, @pSuperAgent, @pCountryId, @pLocation, @pBranch, @deliveryMethodId, @cAmt, @pAmt, @serviceCharge, 0, 0)
  168. SELECT @pHubCommCurrency = 'NPR'
  169. SELECT @pSuperAgentComm = ISNULL(amount, 0) FROM dbo.FNAGetPayCommSA(@sBranch, @sCountry, NULL, @pSuperAgent, @pCountryId, @pLocation, @pBranch, @deliveryMethodId, @cAmt, @pAmt, @serviceCharge, @pHubComm, 0)
  170. SELECT @pSuperAgentCommCurrency = 'NPR'
  171. SELECT @pAgentComm = ISNULL(amount, 0) FROM dbo.FNAGetPayComm(@sBranch, @sCountry, NULL, @pSuperAgent, @pCountryId, @pLocation, @pBranch, @deliveryMethodId, @cAmt, @pAmt, @serviceCharge, @pHubComm, @pSuperAgentComm)
  172. SELECT @pAgentCommCurrency = 'NPR'
  173. --Commission Calculation End
  174. BEGIN TRANSACTION
  175. BEGIN
  176. --Transaction Insert
  177. INSERT INTO remitTran(
  178. controlNo
  179. ,pAgentComm
  180. ,pAgentCommCurrency
  181. ,pSuperAgentComm
  182. ,pSuperAgentCommCurrency
  183. ,pHubComm
  184. ,pHubCommCurrency
  185. ,sBranch
  186. ,sBranchName
  187. ,sAgent
  188. ,sAgentName
  189. ,sSuperAgent
  190. ,sSuperAgentName
  191. ,sHub
  192. ,sHubName
  193. ,pBranch
  194. ,pBranchName
  195. ,pAgent
  196. ,pAgentName
  197. ,pSuperAgent
  198. ,pSuperAgentName
  199. ,pHub
  200. ,pHubName
  201. ,pCountry
  202. ,pState
  203. ,pDistrict
  204. ,pLocation
  205. ,tAmt
  206. ,collCurr
  207. ,pAmt
  208. ,payoutCurr
  209. ,paymentMethod
  210. ,tranStatus
  211. ,payStatus
  212. ,createdBy
  213. ,createdDate
  214. ,approvedBy
  215. ,approvedDate
  216. ,paidDate
  217. ,paidDateLocal
  218. ,paidBy
  219. )
  220. SELECT
  221. @controlNoEncrypted
  222. ,@pAgentComm
  223. ,@pAgentCommCurrency
  224. ,@pSuperAgentComm
  225. ,@pSuperAgentCommCurrency
  226. ,@pHubComm
  227. ,@pHubCommCurrency
  228. ,@sBranch
  229. ,@sBranchName
  230. ,@sAgent
  231. ,@sAgentName
  232. ,@sSuperAgent
  233. ,@sSuperAgentName
  234. ,@sHub
  235. ,@sHubName
  236. ,@pBranch
  237. ,@pBranchName
  238. ,@pAgent
  239. ,@pAgentName
  240. ,@pSuperAgent
  241. ,@pSuperAgentName
  242. ,@pHub
  243. ,@pHubName
  244. ,@pCountry
  245. ,@pState
  246. ,@pDistrict
  247. ,@pLocation
  248. ,@tAmt
  249. ,@collCurr
  250. ,@payoutAmt
  251. ,@payoutCurr
  252. ,@payoutMethod
  253. ,'Paid'
  254. ,'Paid'
  255. ,'system'
  256. ,LEFT(@remittanceEntryDate, 19)
  257. ,'system'
  258. ,LEFT(@remittanceAuthorizedDate, 19)
  259. ,GETDATE()
  260. ,dbo.FNADateFormatTZ(GETDATE(), @user)
  261. ,@user
  262. SET @tranId = SCOPE_IDENTITY()
  263. --Sender Insert
  264. INSERT INTO tranSenders(
  265. tranId, firstName, middleName, lastName1, lastName2, address, mobile, homePhone
  266. )
  267. SELECT
  268. @tranId,@sFirstName,@sMiddleName,@sLastName1,@sLastName2,@sAddress,@sMobile, @sTelephone
  269. --Receiver Insert
  270. INSERT INTO tranReceivers(
  271. tranId, firstName, middleName, lastName1, lastName2, address, mobile, homePhone
  272. , idType, idNumber, idPlaceOfIssue, issuedDate, validDate
  273. )
  274. SELECT
  275. @tranId,@rFirstName,@rMiddleName,@rLastName1,@rLastName2,@rAddress,@rMobile, @rTelephone
  276. ,@rIdType,@rIdNumber,@rPlaceOfIssue,@rIssuedDate,@rValidDate
  277. END
  278. --A/C Master
  279. EXEC proc_updateTopUpLimit @settlingAgent, @payoutAmt
  280. IF @@TRANCOUNT > 0
  281. COMMIT TRANSACTION
  282. EXEC [proc_errorHandler] 0, 'Transaction has been paid successfully', @tranId
  283. END
  284. ELSE IF @flag = 'details'
  285. BEGIN
  286. SELECT
  287. trn.id
  288. ,dbo.FNADecryptString(trn.controlNo)
  289. ,sMemId = sen.membershipId
  290. ,sCustomerId = sen.customerId
  291. ,senderName = sen.firstName + ISNULL( ' ' + sen.middleName, '') + ISNULL( ' ' + sen.lastName1, '') + ISNULL( ' ' + sen.lastName2, '')
  292. ,sCountryName = sen.country
  293. ,sStateName = sen.state
  294. ,sCity = sen.city
  295. ,sAddress = sen.address
  296. ,rMemId = rec.membershipId
  297. ,rCustomerId = rec.customerId
  298. ,receiverName = rec.firstName + ISNULL( ' ' + rec.middleName, '') + ISNULL( ' ' + rec.lastName1, '') + ISNULL( ' ' + rec.lastName2, '')
  299. ,rCountryName = rec.country
  300. ,rStateName = rec.state
  301. ,rCity = rec.city
  302. ,rAddress = rec.address
  303. ,rIdType = rci.idType
  304. ,rIdNumber = rci.idNumber
  305. ,rPlaceOfIssue = rci.placeOfIssue
  306. ,rIssuedDate = rci.issuedDate
  307. ,rValidDate = rci.validDate
  308. ,sAgentCountry = trn.sCountry
  309. ,relationship = trn.relWithSender
  310. ,purpose = trn.purposeOfRemit
  311. ,trn.pAmt
  312. ,collMode = trn.collMode
  313. ,paymentMethod = trn.paymentMethod
  314. ,trn.payoutCurr
  315. ,sAgent = trn.sAgentName
  316. ,trn.tranStatus
  317. ,trn.payStatus
  318. ,pMessage = ISNULL(trn.pMessage, '-')
  319. FROM remitTran trn WITH(NOLOCK)
  320. LEFT JOIN tranSenders sen WITH(NOLOCK) ON trn.id = sen.tranId
  321. LEFT JOIN tranReceivers rec WITH(NOLOCK) ON trn.id = rec.tranId
  322. LEFT JOIN customerIdentity rci WITH(NOLOCK) ON rec.customerId = rci.customerId
  323. WHERE trn.controlNo = @controlNoEncrypted
  324. END
  325. ELSE IF @flag = 'i'
  326. BEGIN
  327. INSERT INTO ApiGBLTXN (
  328. controlNo
  329. ,refNo
  330. ,tokenId
  331. ,senderName
  332. ,senderAddress
  333. ,senderTelephone
  334. ,senderMobile
  335. ,beneficiaryName
  336. ,beneficiaryAddress
  337. ,beneficiaryTelephone
  338. ,beneficiaryMobile
  339. ,beneficiaryIdType
  340. ,beneficiaryIdNo
  341. ,collAmt
  342. ,collCurr
  343. ,exRate
  344. ,payoutAmt
  345. ,payoutCurr
  346. ,payingComm
  347. ,remarks
  348. ,remitType
  349. ,remittanceEntryDate
  350. ,remittanceAuthorizedDate
  351. ,fetchUser
  352. ,fetchDate
  353. )
  354. SELECT
  355. @controlNoEncrypted
  356. ,@refNo
  357. ,@payTokenId
  358. ,@senderName
  359. ,@sAddress
  360. ,@sTelephone
  361. ,@sMobile
  362. ,@beneficiaryName
  363. ,@rAddress
  364. ,@rTelephone
  365. ,@rMobile
  366. ,@rIdType
  367. ,@rIdNumber
  368. ,@tAmt
  369. ,@collCurr
  370. ,@exRate
  371. ,@payoutAmt
  372. ,@payoutCurr
  373. ,@payingCommission
  374. ,@remarks
  375. ,@remitType
  376. ,LEFT(@remittanceEntryDate, 19)
  377. ,LEFT(@remittanceAuthorizedDate, 19)
  378. ,@user
  379. ,GETDATE()
  380. END
  381. GO