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.

4197 lines
105 KiB

  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_sendIRH] Script Date: 3/26/2024 10:22:24 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. ALTER PROC [dbo].[proc_sendIRH] (
  9. @flag VARCHAR(50)
  10. ,@user VARCHAR(30)
  11. ,@txnPWD VARCHAR(100) = NULL
  12. ,@agentRefId VARCHAR(20) = NULL
  13. ,@senderId VARCHAR(50) = NULL
  14. ,@sfName VARCHAR(100) = NULL
  15. ,@smName VARCHAR(100) = NULL
  16. ,@slName VARCHAR(100) = NULL
  17. ,@slName2 VARCHAR(100) = NULL
  18. ,@sIdType VARCHAR(100) = NULL
  19. ,@sIdNo VARCHAR(50) = NULL
  20. ,@sIdValid DATETIME = NULL
  21. ,@sdob DATETIME = NULL
  22. ,@sTel VARCHAR(20) = NULL
  23. ,@sMobile VARCHAR(20) = NULL
  24. ,@sNaCountry VARCHAR(50) = NULL
  25. ,@scity VARCHAR(100) = NULL
  26. ,@sPostCode VARCHAR(50) = NULL
  27. ,@sAdd1 NVARCHAR(150) = NULL
  28. ,@sAdd2 NVARCHAR(150) = NULL
  29. ,@sEmail VARCHAR(100) = NULL
  30. ,@sgender VARCHAR(100) = NULL
  31. ,@smsSend CHAR(1) = NULL
  32. ,@sCompany VARCHAR(100) = NULL
  33. ,@sDcInfo VARCHAR(50) = NULL
  34. ,@sIpAddress VARCHAR(50) = NULL
  35. ,@benId VARCHAR(50) = NULL
  36. ,@rfName VARCHAR(100) = NULL
  37. ,@rmName VARCHAR(100) = NULL
  38. ,@rlName VARCHAR(100) = NULL
  39. ,@rlName2 VARCHAR(100) = NULL
  40. ,@rIdType VARCHAR(100) = NULL
  41. ,@rIdNo VARCHAR(50) = NULL
  42. ,@rIdValid DATETIME = NULL
  43. ,@rdob DATETIME = NULL
  44. ,@rTel VARCHAR(20) = NULL
  45. ,@rMobile VARCHAR(20) = NULL
  46. ,@rNaCountry VARCHAR(50) = NULL
  47. ,@rcity VARCHAR(100) = NULL
  48. ,@rPostCode VARCHAR(50) = NULL
  49. ,@rAdd1 VARCHAR(150) = NULL
  50. ,@rAdd2 VARCHAR(150) = NULL
  51. ,@rEmail VARCHAR(100) = NULL
  52. ,@raccountNo VARCHAR(50) = NULL
  53. ,@rgender VARCHAR(100) = NULL
  54. ,@salaryRange VARCHAR(150) = NULL
  55. ,@pCountry VARCHAR(50) = NULL -- pay country
  56. ,@pCountryId INT = NULL -- PAY COUNTRY ID
  57. ,@pSuperAgent INT = NULL --payout Super Agent
  58. ,@deliveryMethod VARCHAR(50) = NULL -- payment mode
  59. ,@deliveryMethodId INT = NULL -- payment mode ID
  60. ,@pBank INT = NULL
  61. ,@pBankName VARCHAR(100) = NULL
  62. ,@pBankBranch VARCHAR(30) = NULL
  63. ,@pBankBranchName VARCHAR(100) = NULL
  64. ,@pAgent INT = NULL
  65. ,@pAgentName VARCHAR(100) = NULL
  66. ,@pBranch INT = NULL
  67. ,@pBranchName VARCHAR(100) = NULL
  68. ,@pBankType CHAR(1) = NULL
  69. ,@pCurr VARCHAR(3) = NULL
  70. ,@collCurr VARCHAR(3) = NULL
  71. ,@cAmt MONEY = NULL
  72. ,@pAmt MONEY = NULL
  73. ,@tAmt MONEY = NULL
  74. ,@serviceCharge MONEY = NULL
  75. ,@discount MONEY = NULL
  76. ,@exRate FLOAT = NULL
  77. ,@schemeType VARCHAR(50) = NULL
  78. ,@couponTranNo VARCHAR(20) = NULL
  79. ,@purpose VARCHAR(150) = NULL
  80. ,@sourceOfFund VARCHAR(150) = NULL
  81. ,@relationship VARCHAR(100) = NULL
  82. ,@occupation VARCHAR(100) = NULL
  83. ,@payMsg VARCHAR(1000) = NULL
  84. ,@company VARCHAR(200) = NULL
  85. ,@nCust CHAR(1) = NULL
  86. ,@enrollCust CHAR(1) = NULL
  87. ,@controlNo VARCHAR(20) = NULL
  88. ,@agentId INT = NULL --payout
  89. ,@sCountryId INT = NULL
  90. ,@sCountry VARCHAR(100) = NULL
  91. ,@sBranch INT = NULL
  92. ,@sBranchName VARCHAR(100) = NULL
  93. ,@sAgent INT = NULL
  94. ,@sAgentName VARCHAR(100) = NULL
  95. ,@sSuperAgent INT = NULL
  96. ,@sSuperAgentName VARCHAR(100) = NULL
  97. ,@settlingAgent INT = NULL
  98. ,@branchMapCode VARCHAR(10) = NULL
  99. ,@agentMapCode VARCHAR(10) = NULL
  100. ,@collMode VARCHAR(50) = NULL
  101. ,@id BIGINT = NULL
  102. ,@sessionId VARCHAR(50) = NULL
  103. ,@cancelrequestId INT = NULL
  104. ,@salary VARCHAR(10) = NULL
  105. ,@memberCode VARCHAR(20) = NULL
  106. ,@schemeCode VARCHAR(20) = NULL
  107. ,@cwPwd VARCHAR(10) = NULL
  108. ,@ttName VARCHAR(200) = NULL
  109. ,@ofacRes VARCHAR(MAX) = NULL
  110. ,@ofacReason VARCHAR(200) = NULL
  111. ,@voucherDetails XML = NULL
  112. ,@RBATxnRisk VARCHAR(15) = NULL
  113. ,@RBACustomerRisk VARCHAR(15) = NULL
  114. ,@RBACustomerRiskValue MONEY = NULL
  115. ,@pLocation BIGINT = NULL
  116. ,@pLocationText VARCHAR(100) = NULL
  117. ,@pSubLocation BIGINT = NULL
  118. ,@pSubLocationText VARCHAR(100) = NULL
  119. ,@pTownId VARCHAR(100) = NULL
  120. ,@isManualSc CHAR(1) = NULL
  121. ,@manualSc MONEY = NULL
  122. ,@sCustStreet NVARCHAR(100) = NULL
  123. ,@sCustLocation INT = NULL
  124. ,@sCustomerType INT = NULL
  125. ,@sCustBusinessType INT = NULL
  126. ,@sCustIdIssuedCountry INT = NULL
  127. ,@sCustIdIssuedDate VARCHAR(25) = NULL
  128. ,@receiverId INT = NULL
  129. ,@payoutPartner INT = NULL
  130. ,@customerDepositedBank INT = NULL
  131. ,@introducer VARCHAR(100) = NULL
  132. ,@isOnbehalf VARCHAR(1) = NULL
  133. ,@payerId BIGINT = NULL
  134. ,@payerBranchId BIGINT = NULL
  135. ,@IsFromTabPage CHAR(1) = NULL
  136. ,@customerPassword VARCHAR(20) = NULL
  137. ,@referralCode VARCHAR(20) = NULL
  138. ,@isAdditionalCDDI CHAR(1) = NULL
  139. ,@additionalCDDIXml NVARCHAR(MAX) = NULL
  140. ,@calcBy VARCHAR(10) = NULL
  141. ,@promotionCode INT = NULL
  142. ,@promotionAmount VARCHAR(150) = NULL
  143. ,@relationOther VARCHAR(150) = NULL
  144. ,@purposeOther VARCHAR(150) = NULL
  145. ,@txnRequestFromAgent VARCHAR(10) = NULL
  146. ,@txnRequestRowId BIGINT = NULL
  147. ,@goodsOrigin VARCHAR(200) = NULL
  148. ,@goodsType VARCHAR(200) = NULL
  149. ,@portOfShipment VARCHAR(200) = NULL
  150. ,@visaStatus INT = NULL
  151. ,@trackBy VARCHAR(50) = NULL
  152. ,@partnerId INT = NULL
  153. ,@exRateId VARCHAR(30) = NULL
  154. ,@tpExRate FLOAT = NULL
  155. ,@nameAsPerBank VARCHAR(150) = NULL
  156. ,@calculatedOriginalSc MONEY = NULL
  157. ,@paymentOption VARCHAR(100) = NULL
  158. ,@sitereference VARCHAR(200) = NULL
  159. ,@rewardAmt VARCHAR(200) = NULL
  160. ,@isPromoCode CHAR(1) = NULL
  161. ,@customerId BIGINT = NULL
  162. ,@promoRowId INT = NULL
  163. ,@promoCode VARCHAR(100) = NULL
  164. )
  165. AS
  166. SET NOCOUNT ON;
  167. SET XACT_ABORT ON;
  168. -----------------------------------------
  169. --July 12 --> added flags (questionnaire) for Non Permit Visa
  170. --July 14 --> JME-557 - Add compliance Log for Non Permit Visa
  171. --> replaced hard code with VW_VISA_STATUS_QUESTIONNAIRE
  172. --July 29 --> set pBankName from apibanklist
  173. --Aug 05 --JME-567 ->add col 'receiverNameAlt' changes to show BENEFICIARY NAME AS PER BANK
  174. --SEP 09 --#127 Donga Commission Update for non 24*7
  175. --SEP 21 -->#134 -> Allow edit option of address in Town Area
  176. --Sep 22 -> #109 ->Change the logic to choose highest Rate in case of Nepal
  177. --Sep 23 ->#178 -> Show only Roman in Remittance Statement
  178. --#334 : OFAC screening changes.
  179. --#9776 - Service Charge calcaulation for Validation , @flag = 'v'
  180. -- # 19238 change in @flag = 'exRate' to return exrate on the basis of payment option
  181. -- removed password validation for txn
  182. --------------------------------------------
  183. BEGIN TRY
  184. BEGIN
  185. DECLARE @sCurrCostRate FLOAT
  186. ,@sCurrHoMargin FLOAT
  187. ,@pCurrCostRate FLOAT
  188. ,@pCurrHoMargin FLOAT
  189. ,@sCurrAgentMargin FLOAT
  190. ,@pCurrAgentMargin FLOAT
  191. ,@sCurrSuperAgentMargin FLOAT
  192. ,@pCurrSuperAgentMargin FLOAT
  193. ,@customerRate FLOAT
  194. ,@sAgentSettRate FLOAT
  195. ,@pDateCostRate FLOAT
  196. ,@agentCrossSettRate FLOAT
  197. ,@treasuryTolerance FLOAT
  198. ,@customerPremium FLOAT
  199. ,@schemePremium FLOAT
  200. ,@sharingValue MONEY
  201. ,@sharingType CHAR(1)
  202. ,@sAgentComm MONEY
  203. ,@sAgentCommCurrency VARCHAR(3)
  204. ,@sSuperAgentComm MONEY
  205. ,@sSuperAgentCommCurrency VARCHAR(3)
  206. ,@pAgentComm MONEY
  207. ,@pAgentCommCurrency VARCHAR(3)
  208. ,@pSuperAgentComm MONEY
  209. ,@pSuperAgentCommCurrency VARCHAR(3)
  210. ,@promotionType INT
  211. ,@pSuperAgentName VARCHAR(100)
  212. ,@pStateId INT
  213. ,@agentType INT
  214. ,@senderName VARCHAR(100)
  215. ,@pAgentMapCode VARCHAR(10)
  216. ,@pBranchMapCode VARCHAR(10)
  217. ,@F_ANYWHERE CHAR(1)
  218. ,@TRN_TYPE VARCHAR(100)
  219. ,@complienceMessage VARCHAR(500)
  220. ,@complienceErrorCode TINYINT
  221. ,@shortMsg VARCHAR(100)
  222. DECLARE @xAmt MONEY
  223. ,@baseCurrency VARCHAR(3)
  224. ,@limitBal MONEY
  225. ,@sendingCustType INT
  226. ,@receivingCustType INT
  227. ,@msg VARCHAR(200)
  228. ,@exRateCalByPartner BIT
  229. ,@tranCount INT
  230. ,@schemeCount INT
  231. ,@isEligible CHAR(1) = 'N'
  232. ,@schemeCodeId INT
  233. ,@isFreeSc CHAR(1) = 'N'
  234. ,@calcOriginalSc MONEY = 0 -- added for teller quota
  235. --SET @manualSc='0'
  236. --SET @isManualSc='N';
  237. IF @pBankBranch = 'NA'
  238. SET @pBankBranch = NULL
  239. IF ISNULL(@relationship, '') <> 'other (please specify)'
  240. SET @relationOther = NULL
  241. IF ISNULL(@purpose, '') <> 'other (please specify)'
  242. SET @purposeOther = NULL
  243. DECLARE @iServiceCharge MONEY
  244. ,@iTAmt MONEY
  245. ,@iPAmt MONEY
  246. ,@iScDiscount MONEY
  247. ,@iCustomerRate FLOAT
  248. ,@iCollDetailAmt MONEY
  249. DECLARE @place INT
  250. ,@currDecimal INT
  251. DECLARE @cisMasterId INT
  252. ,@compIdResult VARCHAR(300)
  253. ,@perDayCustomerLimit MONEY
  254. DECLARE @controlNoEncrypted VARCHAR(20)
  255. DECLARE @csMasterId INT
  256. ,@complianceRes VARCHAR(20)
  257. ,@totalRows INT
  258. ,@count INT
  259. ,@compFinalRes VARCHAR(20)
  260. DECLARE @csMasterRec TABLE (
  261. rowId INT IDENTITY(1, 1)
  262. ,masterId INT
  263. )
  264. IF ISNULL(@sBranch, 0) = 0
  265. SELECT @sBranch = agentId
  266. FROM applicationUsers WITH (NOLOCK)
  267. WHERE userName = @user
  268. DECLARE @customerTotalAmt2 MONEY = 0
  269. DECLARE @errorCode CHAR(1) = 0
  270. DECLARE @tellerBalance MONEY
  271. ,@tellerLimit MONEY
  272. ,@sendPerTransaction MONEY
  273. ,@vaultBalance MONEY
  274. ,@vaultLimit MONEY
  275. SELECT @sfName = LTRIM(RTRIM(@sfName))
  276. ,@smName = LTRIM(RTRIM(@smName))
  277. ,@slName = LTRIM(RTRIM(@slName))
  278. ,@slName2 = LTRIM(RTRIM(@slName2))
  279. ,@rfName = LTRIM(RTRIM(@rfName))
  280. ,@rmName = LTRIM(RTRIM(@rmName))
  281. ,@rlName = LTRIM(RTRIM(@rlName))
  282. ,@rlName2 = LTRIM(RTRIM(@rlName2))
  283. IF @salary = 'undefined'
  284. SET @salary = NULL
  285. IF @salaryRange = 'undefined'
  286. SET @salaryRange = NULL
  287. IF @pBankBranchName IN (
  288. 'Select'
  289. ,'undefined'
  290. )
  291. SET @pBankBranchName = 'Any Branch'
  292. IF @rIdType IN (
  293. 'Select..'
  294. ,'Select'
  295. )
  296. SET @rIdType = NULL
  297. --CHECK IF SC IS ALLOWED TO EDIT BY USER OR NOT
  298. DECLARE @HAS_RIGHT_EDIT_SC CHAR(1) = 'N'
  299. SELECT @HAS_RIGHT_EDIT_SC = dbo.FNAHasRight(@user, '40101440')
  300. SET @raccountNo = UPPER(REPLACE(@raccountNo, ' ', ''))
  301. IF ISNULL(@isManualSc, 'N') = 'Y'
  302. AND @HAS_RIGHT_EDIT_SC = 'N'
  303. BEGIN
  304. SELECT '1' ErrCode
  305. ,'Invalid attempt to calculate SC manually!' Msg
  306. ,NULL id
  307. RETURN
  308. END
  309. IF @flag = 'v-referral'
  310. BEGIN
  311. DECLARE @IS_ACTIVE BIT
  312. SELECT @IS_ACTIVE = IS_ACTIVE
  313. FROM REFERRAL_AGENT_WISE(NOLOCK)
  314. WHERE REFERRAL_CODE = @introducer
  315. IF @IS_ACTIVE IS NULL
  316. BEGIN
  317. SELECT '1' ErrCode
  318. ,'Invalid referral code!' Msg
  319. ,NULL id
  320. RETURN
  321. END
  322. IF @IS_ACTIVE = 0
  323. BEGIN
  324. SELECT '1' ErrCode
  325. ,'Disabled referral passed!' Msg
  326. ,NULL id
  327. RETURN
  328. END
  329. SELECT '0' ErrCode
  330. ,'Success!' Msg
  331. ,NULL id
  332. RETURN
  333. END
  334. IF @flag IN (
  335. 'V'
  336. ,'I'
  337. )
  338. BEGIN
  339. IF ISNULL(@senderId, 0) = 0
  340. OR (ISNULL(@senderId, '') = '')
  341. BEGIN
  342. SELECT '1' ErrCode
  343. ,'Invalid sender selected, please refresh page and try sending again!' Msg
  344. ,NULL id
  345. RETURN
  346. END
  347. IF NOT EXISTS (
  348. SELECT 'X'
  349. FROM countryIdType CID WITH (NOLOCK)
  350. INNER JOIN staticDataValue SV WITH (NOLOCK) ON CID.IdTypeId = SV.valueId
  351. INNER JOIN (
  352. SELECT IDTYPE
  353. FROM CUSTOMERMASTER(NOLOCK)
  354. WHERE CUSTOMERID = @senderId
  355. ) CM ON CM.IDTYPE = SV.VALUEID
  356. WHERE countryId = 233
  357. AND ISNULL(isDeleted, 'N') <> 'Y'
  358. AND ISNULL(SV.ISACTIVE, 'Y') = 'Y'
  359. AND (
  360. spFlag IS NULL
  361. OR ISNULL(spFlag, 0) = 5200
  362. )
  363. )
  364. BEGIN
  365. SELECT '1' ErrCode
  366. ,'Customer ID type is not valid, please update ID details first!' Msg
  367. ,NULL id
  368. RETURN
  369. END
  370. --CHECKING OF BRANCH/USER CASH HOLD LIMIT
  371. IF EXISTS (
  372. SELECT *
  373. FROM AGENTMASTER
  374. WHERE AGENTID = @SAGENT
  375. AND ISINTL = 1
  376. )
  377. AND ISNULL(@INTRODUCER, '') <> ''
  378. BEGIN
  379. SELECT '1' ErrCode
  380. ,'Agent''s and introducer can not be selected at same time!' Msg
  381. ,NULL id
  382. RETURN
  383. END
  384. DECLARE @RULETYPE CHAR(1)
  385. ,@LIMITERRORCODE INT
  386. ,@BRANCH_ID_FOR_LIMIT VARCHAR(20)
  387. ,@INTRODUCER_LIMIT VARCHAR(20)
  388. IF NOT EXISTS (
  389. SELECT *
  390. FROM APPLICATIONUSERS(NOLOCK)
  391. WHERE USERNAME = @USER
  392. AND AGENTID = @SAGENT
  393. )
  394. AND ISNULL(@INTRODUCER, '') = ''
  395. SET @INTRODUCER_LIMIT = @SAGENT
  396. ELSE IF ISNULL(@INTRODUCER, '') <> ''
  397. SET @INTRODUCER_LIMIT = @INTRODUCER
  398. EXEC PROC_CHECK_BRANCH_USER_CASH_HOLD_LIMIT @USER = @USER
  399. ,@INTRODUCER = @INTRODUCER_LIMIT
  400. ,@CAMT = @CAMT
  401. ,@ERRORCODE = @LIMITERRORCODE OUT
  402. ,@ERRORMSG = @msg OUT
  403. ,@RULETYPE = @RULETYPE OUT
  404. --select @RULETYPE,@ERRORCODE
  405. IF @LIMITERRORCODE <> 0
  406. AND @RULETYPE = 'B'
  407. AND @COLLMODE = 'CASH COLLECT'
  408. BEGIN
  409. SELECT '1' ErrCode
  410. ,'Branch/User cash hold limit is exceeded, please contact head office!' Msg
  411. ,NULL id
  412. RETURN
  413. END
  414. --CHECK IF PAYOUT PARTNER IS ACTIVE OR NOT AND CHECK STATUS
  415. IF @payoutPartner IS NULL
  416. BEGIN
  417. SELECT '1' ErrCode
  418. ,'Payout partner not defined yet for receiving country!' Msg
  419. ,NULL id
  420. RETURN
  421. END
  422. IF NOT EXISTS (
  423. SELECT 1
  424. FROM TblPartnerwiseCountry(NOLOCK)
  425. WHERE AgentId = @payoutPartner
  426. AND IsActive = 1
  427. )
  428. AND @PCOUNTRY <> 'VIETNAM'
  429. BEGIN
  430. SELECT '1' ErrCode
  431. ,'Payout partner is not active please retry by choosing country again!' Msg
  432. ,NULL id
  433. RETURN
  434. END
  435. SELECT @exRateCalByPartner = ISNULL(exRateCalByPartner, 0)
  436. FROM TblPartnerwiseCountry(NOLOCK)
  437. WHERE CountryId = @pCountryId
  438. AND IsActive = 1
  439. AND ISNULL(PaymentMethod, @deliveryMethodId) = @deliveryMethodId
  440. --CHECKING CUSTOMER KYC STATUS
  441. DECLARE @kycStatus INT
  442. SELECT @kycStatus = kycStatus
  443. FROM TBL_CUSTOMER_KYC(NOLOCK)
  444. WHERE CUSTOMERID = @senderId
  445. AND ISDELETED = 0
  446. --AND kycStatus=11044
  447. ORDER BY KYC_DATE
  448. --IF ISNULL(@kycStatus, 0) <> 11044
  449. --BEGIN
  450. -- IF @kycStatus IS NOT NULL
  451. -- SELECT @MSG = 'KYC for selected customer is not completed, it is in status:' + detailTitle
  452. -- FROM staticDataValue(NOLOCK)
  453. -- WHERE valueId = @kycStatus
  454. -- ELSE
  455. -- SELECT @MSG = 'Please complete KYC status first'
  456. -- SELECT '1' ErrCode
  457. -- ,@MSG Msg
  458. -- ,NULL id
  459. -- RETURN
  460. --END
  461. --GET PAYOUT AGENT DETAILS
  462. SELECT @PAGENT = AGENTID
  463. FROM AGENTMASTER(NOLOCK)
  464. WHERE PARENTID = @payoutPartner
  465. AND ISNULL(ISSETTLINGAGENT, 'N') = 'Y';
  466. SELECT @pSuperAgent = sSuperAgent
  467. ,@pSuperAgentName = sSuperAgentName
  468. ,@pAgent = sAgent
  469. ,@pAgentName = sAgentName
  470. ,@pBranch = sBranch
  471. ,@pBranchName = sBranchName
  472. FROM dbo.FNAGetBranchFullDetails(@PAGENT)
  473. SELECT @sSuperAgent = sSuperAgent
  474. ,@sSuperAgentName = sSuperAgentName
  475. ,@sAgent = sAgent
  476. ,@sAgentName = sAgentName
  477. ,@sBranch = sBranch
  478. ,@sBranchName = sBranchName
  479. FROM dbo.FNAGetBranchFullDetails(@sBranch)
  480. END
  481. SET @sAgentCommCurrency = 'JPY'
  482. IF @flag = 'acBal' --Get Available Account Balance
  483. BEGIN
  484. SELECT @pCountryId = am.agentCountryId
  485. FROM applicationUsers au WITH (NOLOCK)
  486. INNER JOIN agentMaster am WITH (NOLOCK) ON au.agentId = am.agentId
  487. WHERE userName = @user
  488. SELECT TOP 1 @collCurr = CM.currencyCode
  489. FROM currencyMaster CM WITH (NOLOCK)
  490. INNER JOIN countryCurrency CC WITH (NOLOCK) ON CM.currencyId = CC.currencyId
  491. WHERE CC.countryId = @pCountryId
  492. AND ISNULL(cc.isDeleted, 'N') = 'N'
  493. AND ISNULL(CC.isDefault, 'N') = 'Y'
  494. -->> checking per day country send limit
  495. SELECT @limitBal = D.amount
  496. FROM csMaster M WITH (NOLOCK)
  497. INNER JOIN csDetail D WITH (NOLOCK) ON M.csMasterId = D.csMasterId --csDetailId CHANGED BY ARJUN
  498. WHERE sCountry = @pCountryId
  499. AND ISNULL(M.isActive, 'Y') = 'Y'
  500. AND ISNULL(D.isActive, 'Y') = 'Y'
  501. IF @agentId IS NULL
  502. SELECT @sBranch = agentId
  503. FROM applicationUsers WITH (NOLOCK)
  504. WHERE userName = @user
  505. ELSE
  506. SELECT @sBranch = @agentId
  507. SELECT @sAgent = parentId
  508. ,@agentType = agentType
  509. FROM agentMaster WITH (NOLOCK)
  510. WHERE agentId = @sBranch
  511. IF @agentType = 2903
  512. SET @sAgent = @sBranch
  513. SELECT @sSuperAgent = parentId
  514. FROM agentMaster WITH (NOLOCK)
  515. WHERE agentId = @sAgent
  516. SELECT @settlingAgent = agentId
  517. FROM agentMaster
  518. WHERE agentId = @sBranch
  519. AND isSettlingAgent = 'Y'
  520. IF @settlingAgent IS NULL
  521. SELECT @settlingAgent = agentId
  522. FROM agentMaster WITH (NOLOCK)
  523. WHERE agentId = @sAgent
  524. AND isSettlingAgent = 'Y'
  525. IF @settlingAgent IS NULL
  526. SELECT @settlingAgent = agentId
  527. FROM agentMaster WITH (NOLOCK)
  528. WHERE agentId = @sSuperAgent
  529. AND isSettlingAgent = 'Y'
  530. DECLARE @limit MONEY
  531. ,@limitCurr VARCHAR(3)
  532. ,@cRateAgent FLOAT
  533. SELECT @limit = ISNULL(dbo.FNAGetLimitBalIRH(@settlingAgent), 0)
  534. SELECT @limitCurr = currency
  535. FROM creditLimitInt WITH (NOLOCK)
  536. WHERE agentId = @settlingAgent
  537. AND ISNULL(isDeleted, 'N') = 'N'
  538. AND ISNULL(isActive, 'N') = 'Y'
  539. SELECT availableBal = @limit
  540. ,balCurrency = @collCurr
  541. ,limExpiry = ISNULL(CONVERT(VARCHAR, expiryDate, 101), 'N/A')
  542. ,sCountryLimit = ISNULL(@limitBal, 0)
  543. ,sCurr = @collCurr
  544. ,tellerBanalce = 0
  545. ,txnPerDayCustomerLimit = dbo.FNAGetPerDayCustomerLimit(@settlingAgent)
  546. FROM creditLimitInt cl
  547. WHERE agentId = @settlingAgent
  548. END
  549. IF @flag = 'acBalByAgentId' --Get Available Account Balance
  550. BEGIN
  551. SET @pCountryId = 233;
  552. --SELECT
  553. -- @pCountryId = am.agentCountryId
  554. --FROM applicationUsers au WITH(NOLOCK)
  555. --INNER JOIN agentMaster am WITH(NOLOCK) ON au.agentId = am.agentId
  556. --WHERE userName = @user
  557. SELECT TOP 1 @collCurr = CM.currencyCode
  558. FROM currencyMaster CM WITH (NOLOCK)
  559. INNER JOIN countryCurrency CC WITH (NOLOCK) ON CM.currencyId = CC.currencyId
  560. WHERE CC.countryId = @pCountryId
  561. AND ISNULL(cc.isDeleted, 'N') = 'N'
  562. AND ISNULL(CC.isDefault, 'N') = 'Y'
  563. -->> checking per day country send limit
  564. SELECT @limitBal = D.amount
  565. FROM csMaster M WITH (NOLOCK)
  566. INNER JOIN csDetail D WITH (NOLOCK) ON M.csMasterId = D.csMasterId --csDetailId CHANGED BY ARJUN
  567. WHERE sCountry = @pCountryId
  568. AND ISNULL(M.isActive, 'Y') = 'Y'
  569. AND ISNULL(D.isActive, 'Y') = 'Y'
  570. --IF @agentId IS NULL
  571. -- SELECT @sBranch = agentId FROM applicationUsers WITH(NOLOCK) WHERE userName = @user
  572. --ELSE
  573. -- SELECT @sBranch = @agentId
  574. SELECT @sAgent = parentId
  575. ,@agentType = agentType
  576. FROM agentMaster WITH (NOLOCK)
  577. WHERE agentId = @sBranch
  578. IF @agentType = 2903
  579. SET @sAgent = @sBranch
  580. SELECT @sSuperAgent = parentId
  581. FROM agentMaster WITH (NOLOCK)
  582. WHERE agentId = @sAgent
  583. SELECT @settlingAgent = agentId
  584. FROM agentMaster
  585. WHERE agentId = @sBranch
  586. AND isSettlingAgent = 'Y'
  587. IF @settlingAgent IS NULL
  588. SELECT @settlingAgent = agentId
  589. FROM agentMaster WITH (NOLOCK)
  590. WHERE agentId = @sAgent
  591. AND isSettlingAgent = 'Y'
  592. IF @settlingAgent IS NULL
  593. SELECT @settlingAgent = agentId
  594. FROM agentMaster WITH (NOLOCK)
  595. WHERE agentId = @sSuperAgent
  596. AND isSettlingAgent = 'Y'
  597. DECLARE @limitAmt MONEY
  598. ,@limitCurrency VARCHAR(3)
  599. ,@cRateAgentAmt FLOAT
  600. ,@userId INT
  601. ,@user1 VARCHAR(50) = NULL
  602. ,@holdType VARCHAR(10) = NULL
  603. IF EXISTS (
  604. SELECT 1
  605. FROM dbo.applicationUsers
  606. WHERE agentId = @sBranch
  607. AND userName = @user
  608. )
  609. BEGIN
  610. SELECT @user1 = @user
  611. ,@sBranch = NULL
  612. END
  613. --EXEC proc_sendIRH @flag = 'acBalByAgentId', @user = 'anupam', @sBranch = '394393'
  614. --EXEC proc_sendIRH @flag = 'acBalByAgentId', @user = 'anupam', @sBranch = '394392'
  615. SELECT @limitAmt = availableLimit
  616. ,@holdType = CASE
  617. WHEN ruleType = 'H'
  618. THEN 'Hold'
  619. ELSE 'Block'
  620. END
  621. FROM DBO.FNAGetUserCashLimitDetails(@user1, @sBranch)
  622. --SELECT @limitAmt = ISNULL(dbo.proc_checkUserAvailableBalance(@settlingAgent), 0)
  623. SELECT @limitCurrency = 'JPY' -- FROM creditLimitInt WITH(NOLOCK)
  624. --WHERE agentId = @settlingAgent AND ISNULL(isDeleted, 'N') = 'N' AND ISNULL(isActive, 'N') = 'Y'
  625. SELECT availableBal = @limitAmt
  626. ,balCurrency = @collCurr
  627. ,limExpiry = 'N/A'
  628. ,sCountryLimit = ISNULL(@limitBal, 0)
  629. ,sCurr = @collCurr
  630. ,tellerBanalce = 0
  631. ,txnPerDayCustomerLimit = dbo.FNAGetPerDayCustomerLimit(@settlingAgent)
  632. ,holdType = @holdType
  633. END
  634. IF @flag = 'getReferralBal'
  635. BEGIN
  636. SELECT totalLimit
  637. ,availableLimit
  638. FROM DBO.FNAGetBranchCashLimitDetails(@referralCode, 'R')
  639. END
  640. ELSE IF @flag = 'v' --Validation
  641. BEGIN
  642. DECLARE @AVAILABLEBALANCE MONEY
  643. IF @nCust = 'N'
  644. BEGIN
  645. IF ISNULL(@senderId, 0) = 0
  646. BEGIN
  647. EXEC proc_errorHandler 1
  648. ,'Please choose Sender'
  649. ,NULL
  650. RETURN
  651. END
  652. SELECT @AVAILABLEBALANCE = DBO.FNAGetCustomerAvailableBalance(@senderId)
  653. IF (ISNULL(@AVAILABLEBALANCE, 0) < @CAMT)
  654. AND (@collMode = 'Bank Deposit')
  655. BEGIN
  656. EXEC proc_errorHandler 1
  657. ,'Collect Amount can not be greater then Available Balance!'
  658. ,NULL
  659. RETURN
  660. END
  661. END
  662. IF @sfName IS NULL
  663. BEGIN
  664. EXEC proc_errorHandler 1
  665. ,'Sender First Name missing'
  666. ,NULL
  667. RETURN
  668. END
  669. IF @sNaCountry IS NULL
  670. BEGIN
  671. EXEC proc_errorHandler 1
  672. ,' Sender Native Country missing'
  673. ,NULL
  674. RETURN
  675. END
  676. IF @rfName IS NULL
  677. BEGIN
  678. EXEC proc_errorHandler 1
  679. ,'New Receiver First Name missing'
  680. ,NULL
  681. RETURN
  682. END
  683. IF ISNULL(@deliveryMethod, '') = ''
  684. BEGIN
  685. EXEC proc_errorHandler 1
  686. ,'Please choose payment mode'
  687. ,NULL
  688. RETURN
  689. END
  690. IF @serviceCharge IS NULL
  691. BEGIN
  692. EXEC proc_errorHandler 1
  693. ,'Service Charge missing'
  694. ,NULL
  695. RETURN
  696. END
  697. IF ISNULL(@tAmt, 0) = 0
  698. BEGIN
  699. EXEC proc_errorHandler 1
  700. ,'Transfer Amount missing'
  701. ,NULL
  702. RETURN
  703. END
  704. IF ISNULL(@exRate, 0) = 0
  705. BEGIN
  706. EXEC proc_errorHandler 1
  707. ,'Exchange Rate missing'
  708. ,NULL
  709. RETURN
  710. END
  711. IF ISNULL(@cAmt, 0) = 0
  712. BEGIN
  713. EXEC proc_errorHandler 1
  714. ,'Collection Amount is missing. Cannot send transaction'
  715. ,NULL
  716. RETURN
  717. END
  718. IF @serviceCharge > @cAmt
  719. BEGIN
  720. EXEC proc_errorHandler 1
  721. ,'Collection Amount is less than service charge.'
  722. ,NULL
  723. RETURN
  724. END
  725. --IF @occupation IS NULL
  726. --BEGIN
  727. -- EXEC proc_errorHandler 1, 'Occupation is missing', NULL
  728. -- RETURN
  729. --END
  730. --*****Payout Agent*****
  731. IF @deliveryMethod = 'Bank Deposit'
  732. BEGIN
  733. IF @pBank IS NULL
  734. BEGIN
  735. EXEC proc_errorHandler 1
  736. ,'Please select bank'
  737. ,NULL
  738. RETURN
  739. END
  740. IF @raccountNo IS NULL
  741. BEGIN
  742. EXEC proc_errorHandler 1
  743. ,'Account number cannot be blank'
  744. ,NULL
  745. RETURN
  746. END
  747. END
  748. IF (@pBankBranch IS NOT NULL)
  749. BEGIN
  750. SELECT @pBank = parentId
  751. ,@pBankBranchName = agentName
  752. FROM agentMaster WITH (NOLOCK)
  753. WHERE agentId = @pBankBranch
  754. SELECT @pBankName = agentName
  755. FROM agentMaster WITH (NOLOCK)
  756. WHERE agentId = @pBank
  757. END
  758. DECLARE @visaStatusText VARCHAR(200)
  759. SELECT @sendingCustType = customerType
  760. ,@visaStatus = visaStatus
  761. ,@visaStatusText = SV.detailTitle
  762. FROM dbo.customerMaster CM WITH (NOLOCK)
  763. LEFT JOIN STATICDATAVALUE SV(NOLOCK) ON SV.valueId = CM.visaStatus
  764. WHERE customerId = @senderId
  765. SELECT @receivingCustType = customerType
  766. FROM dbo.customerMaster WITH (NOLOCK)
  767. WHERE customerId = @benId
  768. --4. Exchange Rate Checking
  769. --SET @pAgent=1006
  770. --SET @pSuperAgent=1005
  771. --SET @pBranch=1007
  772. IF @pCountryId = 151
  773. AND @deliveryMethodId = 1
  774. BEGIN
  775. SELECT AgentId
  776. INTO #AgentListValidate
  777. FROM agentMaster(NOLOCK)
  778. WHERE extCode = 'NP ANYWHERE'
  779. SELECT @exRate = customerRate
  780. ,@sCurrCostRate = sCurrCostRate
  781. ,@sCurrHoMargin = sCurrHoMargin
  782. ,@sCurrAgentMargin = sCurrAgentMargin
  783. ,@pCurrCostRate = pCurrCostRate
  784. ,@pCurrHoMargin = pCurrHoMargin
  785. ,@pCurrAgentMargin = pCurrAgentMargin
  786. FROM (
  787. SELECT ROW_NUMBER() OVER (
  788. ORDER BY CUSTOMERRATE DESC
  789. ) ROW_NUM
  790. ,customerRate
  791. ,sCurrCostRate
  792. ,sCurrHoMargin
  793. ,sCurrAgentMargin
  794. ,pCurrCostRate
  795. ,pCurrHoMargin
  796. ,pCurrAgentMargin
  797. ,agentCrossSettRate
  798. ,treasuryTolerance
  799. ,customerPremium
  800. ,sharingValue
  801. ,sharingType
  802. FROM #AgentListValidate A
  803. CROSS APPLY dbo.FNAGetExRate(@sCountryId, @sAgent, @sBranch, @collCurr, @pCountryId, AgentId, @pCurr, @deliveryMethodId)
  804. ) X
  805. WHERE X.ROW_NUM = 1
  806. END
  807. ELSE
  808. BEGIN
  809. SELECT @exRate = customerRate
  810. ,@sCurrCostRate = sCurrCostRate
  811. ,@sCurrHoMargin = sCurrHoMargin
  812. ,@sCurrAgentMargin = sCurrAgentMargin
  813. ,@pCurrCostRate = pCurrCostRate
  814. ,@pCurrHoMargin = pCurrHoMargin
  815. ,@pCurrAgentMargin = pCurrAgentMargin
  816. FROM dbo.FNAGetExRate(@sCountryId, @sAgent, @sBranch, @collCurr, @pCountryId, @pAgent, @pCurr, @deliveryMethodId)
  817. END
  818. IF @exRate IS NULL
  819. BEGIN
  820. EXEC proc_errorHandler 1
  821. ,'Transaction cannot be proceed. Exchange Rate not defined'
  822. ,NULL
  823. RETURN
  824. END
  825. -- reward amount
  826. --DECLARE @promoCodeValidation TABLE (
  827. -- IS_VALID VARCHAR(50),
  828. -- PROMOTIONAL_CODE VARCHAR(50),
  829. -- PROMOTIONAL_MSG VARCHAR(255),
  830. -- -- PROMOTION_TYPE INT,
  831. -- PROMOTION_VALUE INT
  832. --)
  833. --DECLARE @availableReward INT, @promoVal INT
  834. --SELECT @availableReward = CAST(dbo.[FNA_GET_AVAILABLE_BALANCE_POINTS](@senderId) AS INT)
  835. --IF ISNUMERIC(ISNULL(@rewardAmt,0)) = 1
  836. --BEGIN
  837. -- IF (ISNULL(@rewardAmt ,0)> 0)
  838. -- BEGIN
  839. -- IF (@availableReward < ISNULL(@rewardAmt, 0))
  840. -- BEGIN
  841. -- SELECT '1' ErrCode
  842. -- ,'You do not have sufficient Rewards!'
  843. -- ,NULL id
  844. -- RETURN;
  845. -- END
  846. -- END
  847. -- IF(ISNULL(@rewardAmt, 0) > ISNULL(@availableReward,0))
  848. -- BEGIN
  849. -- SELECT '1' ErrCode
  850. -- ,'Please enter the valid point. The amount cannot be more than available Reward Amount!' Msg
  851. -- ,NULL id
  852. -- RETURN
  853. -- END
  854. --END
  855. --ELSE
  856. --BEGIN
  857. --print 'promo'
  858. -- SET @deliveryMethod = CASE WHEN @deliveryMethod = 'CASH PAYMENT' THEN '1'
  859. -- WHEN @deliveryMethod = 'BANK DEPOSIT' THEN '2'
  860. -- WHEN @deliveryMethod = 'MOBILE WALLET' THEN '3'
  861. -- ELSE NULL
  862. -- END
  863. -- INSERT INTO @promoCodeValidation (IS_VALID, PROMOTIONAL_CODE, PROMOTIONAL_MSG, PROMOTION_VALUE)
  864. -- EXEC proc_CheckPromoValidity @flag='chk-validity', @countryId=@pCountryId, @pmode= @deliveryMethod, @promoCode = @rewardAmt
  865. -- SELECT @promoVal = PROMOTION_VALUE FROM @promoCodeValidation WHERE IS_VALID = 'VALID'
  866. -- SET @rewardAmt = @promoVal
  867. --END
  868. --New code added, referral code add #arjun
  869. --EXEC PROC_Customer_LoyaltyV2 @flag = 'check-eligible-v2'
  870. -- ,@isEligible = @isEligible OUT
  871. -- ,@referralCode = @introducer
  872. -- ,@tranCount = @trancount OUT
  873. -- ,@schemeCount = @schemeCount OUT
  874. -- ,@customerId = @senderId
  875. -- ,@createdFrom = 'I'
  876. --End of Exchange Rate Checking
  877. --5. Service Charge Checking
  878. DECLARE @tAmtSC MONEY
  879. --IF EXISTS (
  880. -- SELECT TOP 1 1
  881. -- FROM REFERRAL_AGENT_WISE
  882. -- WHERE REFERRAL_TYPE_CODE IN (
  883. -- 'RB'
  884. -- ,'RC'
  885. -- )
  886. -- AND REFERRAL_CODE = @introducer
  887. -- )
  888. --BEGIN
  889. -- EXEC PROC_Customer_Loyalty @flag = 'check-eligible'
  890. -- ,@isEligible = @isEligible OUT
  891. --END
  892. --EXEC proc_Customer_Loyalty @flag = 'get-tranCount'
  893. -- ,@tranCount = @trancount OUT
  894. -- ,@customerId = @senderId
  895. --SELECT TOP 1 @schemeCount = txnCount
  896. --FROM schemeSetup(NOLOCK)
  897. --ORDER BY createdDate DESC
  898. IF @calcBy = 'cAmt'
  899. BEGIN
  900. IF @isEligible = 'Y'
  901. BEGIN
  902. SET @iServiceCharge = 0
  903. END
  904. ELSE
  905. BEGIN
  906. IF ISNULL(@isManualSc, 'N') = 'N'
  907. BEGIN
  908. SELECT @iServiceCharge = ISNULL(amount, - 1)
  909. FROM [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethodId, @cAmt, @collCurr)
  910. END
  911. ELSE
  912. BEGIN
  913. SET @iServiceCharge = ISNULL(@manualSc, 0)
  914. print @cAmt
  915. print @tAmt
  916. print @serviceCharge
  917. print @rewardAmt
  918. IF @cAmt <> @tAmt + @serviceCharge - ISNULL(@rewardAmt,0)
  919. BEGIN
  920. EXEC proc_errorHandler 1
  921. ,'1Please click on Calculate or Click out side the Service Charge input Box, after editing Service Charge!'
  922. ,NULL
  923. RETURN
  924. END
  925. END
  926. END
  927. END
  928. ELSE
  929. BEGIN
  930. --SET @tAmt = ROUND(@pAmt/(@exRate + @exRateOffer),0)
  931. SET @tAmtSC = CEILING(@pAmt / (@exRate))
  932. IF @isEligible = 'Y'
  933. BEGIN
  934. SET @iServiceCharge = 0
  935. END
  936. ELSE
  937. BEGIN
  938. IF ISNULL(@isManualSc, 'N') = 'N'
  939. BEGIN
  940. SELECT @iServiceCharge = ISNULL(amount, - 1)
  941. FROM [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethodId, @tAmtSC, @collCurr)
  942. END
  943. ELSE
  944. BEGIN
  945. SET @iServiceCharge = ISNULL(@manualSc, 0)
  946. IF @cAmt <> @tAmt + @iServiceCharge - ISNULL(@rewardAmt,0)
  947. BEGIN
  948. EXEC proc_errorHandler 1
  949. ,'2Please click on Calculate or Click out side the Service Charge input Box, after editing Service Charge!'
  950. ,NULL
  951. RETURN
  952. END
  953. END
  954. END
  955. END
  956. IF @iServiceCharge = - 1
  957. AND ISNULL(@isManualSc, 'N') = 'N'
  958. BEGIN
  959. EXEC proc_errorHandler 1
  960. ,'Transaction cannot be proceed. Service Charge is not defined'
  961. ,NULL
  962. RETURN
  963. END
  964. SET @iServiceCharge = ROUND(@iServiceCharge, 2)
  965. PRINT @isManualSc;
  966. IF (@iServiceCharge <> @serviceCharge)
  967. AND (ISNULL(@isManualSc, 'N') = 'N')
  968. BEGIN
  969. EXEC proc_errorHandler 1
  970. ,'Transaction cannot be proceed. Amount detail not match. Please check service charge. Verify'
  971. ,NULL
  972. RETURN
  973. END
  974. IF @schemeCode IS NOT NULL
  975. BEGIN
  976. DECLARE @scValue MONEY
  977. ,@scAction CHAR(2)
  978. ,@scOffer MONEY
  979. ,@exRateOffer FLOAT
  980. ,@scDiscount MONEY
  981. END
  982. SET @iCustomerRate = @exRate + ISNULL(@schemePremium, 0)
  983. IF @pCurr = 'VND'
  984. BEGIN
  985. IF @calcBy = 'cAmt'
  986. BEGIN
  987. SET @iTAmt = @cAmt - @iServiceCharge
  988. SET @iPAmt = @iTAmt * @iCustomerRate
  989. --IF @place IS NOT NULL
  990. -- SET @pAmt = ROUND(@pAmt, -@place, 1)
  991. END
  992. ELSE
  993. BEGIN
  994. SET @iPAmt = @pAmt
  995. END
  996. END
  997. ELSE
  998. BEGIN
  999. PRINT '@iServiceCharge'
  1000. PRINT @iServiceCharge;
  1001. SET @iTAmt = @cAmt - @iServiceCharge + ISNULL( @rewardAmt,0)
  1002. SELECT @place = place
  1003. ,@currDecimal = currDecimal
  1004. FROM currencyPayoutRound WITH (NOLOCK)
  1005. WHERE ISNULL(isDeleted, 'N') = 'N'
  1006. AND currency = @pCurr
  1007. AND ISNULL(tranType, @deliveryMethodId) = @deliveryMethodId
  1008. SET @currDecimal = ISNULL(@currDecimal, 0)
  1009. SET @place = ISNULL(@place, 0)
  1010. PRINT '@iTAmt'
  1011. PRINT @iTAmt;
  1012. SET @iPAmt = @iTAmt * @iCustomerRate
  1013. --SET @iPAmt = ROUND(@iPAmt, @currDecimal, 1)
  1014. --IF @place IS NOT NULL
  1015. -- SET @iPAmt = ROUND(@iPAmt, -@place, 1)
  1016. END
  1017. IF @pAmt - @iPAmt <= 1
  1018. SET @iPAmt = @pAmt
  1019. --IF @iPAmt <> @pAmt
  1020. --BEGIN
  1021. --print 'a'
  1022. --print @iPAmt
  1023. --print @pAmt
  1024. -- EXEC proc_errorHandler 1
  1025. -- ,'Amount detail not match. Please re-calculate the amount again.'
  1026. -- ,NULL
  1027. -- RETURN
  1028. --END
  1029. --End of service charge Checking
  1030. --send agent commission if it is external agent
  1031. DECLARE @sSettlementRate FLOAT
  1032. ,@pSettlementRate FLOAT
  1033. SET @sSettlementRate = @sCurrCostRate + @sCurrHoMargin
  1034. SET @pSettlementRate = @pCurrCostRate - @pCurrHoMargin
  1035. --START OFAC Checking
  1036. DECLARE @receiverName VARCHAR(200)
  1037. ,@checkNameBy VARCHAR(10)
  1038. ,@matchBy CHAR(1)
  1039. SELECT @checkNameBy = TRACK_BY
  1040. FROM OFACSETTING(NOLOCK)
  1041. IF @checkNameBy IS NULL
  1042. SET @checkNameBy = 'OFAC'
  1043. IF (ISNULL(@senderId, '') = '')
  1044. SELECT @senderName = @sfName + ISNULL(' ' + @smName, '') + ISNULL(' ' + @slName, '') + ISNULL(' ' + @slName2, '')
  1045. ELSE
  1046. SELECT @senderName = firstName + ISNULL(' ' + middleName, '') + ISNULL(' ' + lastName1, '') + ISNULL(' ' + lastName2, '')
  1047. FROM dbo.customerMaster WITH (NOLOCK)
  1048. WHERE customerId = @senderId
  1049. SELECT @receiverName = @rfName + ISNULL(' ' + @rmName, '') + ISNULL(' ' + @rlName, '') + ISNULL(' ' + @rlName2, '')
  1050. DECLARE @receiverOfacRes VARCHAR(MAX)
  1051. ,@matchPercentage INT
  1052. SELECT @matchPercentage = MATCH_PERCENTAGE
  1053. FROM OFACSETTING
  1054. IF @checkNameBy = 'OFAC'
  1055. BEGIN
  1056. EXEC proc_ofacTracker @flag = 't'
  1057. ,@name = @senderName
  1058. ,@Result = @ofacRes OUTPUT
  1059. IF @senderName = @receiverName
  1060. BEGIN
  1061. SET @receiverOfacRes = @ofacRes
  1062. END
  1063. ELSE
  1064. BEGIN
  1065. EXEC proc_ofacTracker @flag = 't'
  1066. ,@name = @receiverName
  1067. ,@Result = @receiverOfacRes OUTPUT
  1068. END
  1069. END
  1070. ELSE
  1071. BEGIN
  1072. SELECT @ofacRes = Dowjones.[dbo].[DJ_GET_SUSPICIOUS_NAME_MATCH_IDS_V2](@senderName)
  1073. IF @senderName = @receiverName
  1074. BEGIN
  1075. SET @receiverOfacRes = @ofacRes
  1076. END
  1077. ELSE
  1078. BEGIN
  1079. SELECT @receiverOfacRes = Dowjones.[dbo].[DJ_GET_SUSPICIOUS_NAME_MATCH_IDS_V2](@receiverName)
  1080. END
  1081. END
  1082. DECLARE @result VARCHAR(MAX)
  1083. IF ISNULL(@ofacRes, '') <> ''
  1084. BEGIN
  1085. SET @matchBy = 'S'
  1086. SET @ofacReason = 'Matched by sender name'
  1087. END
  1088. IF ISNULL(@receiverOfacRes, '') <> ''
  1089. BEGIN
  1090. SET @matchBy = 'R'
  1091. IF @senderName <> @receiverName
  1092. SET @ofacRes = ISNULL(@ofacRes + ',' + @receiverOfacRes, '' + @receiverOfacRes)
  1093. SET @ofacReason = 'Matched by receiver name'
  1094. END
  1095. IF ISNULL(@ofacRes, '') <> ''
  1096. AND ISNULL(@receiverOfacRes, '') <> ''
  1097. BEGIN
  1098. SET @matchBy = 'B'
  1099. SET @ofacReason = 'Matched by both sender name and receiver name'
  1100. END
  1101. --******************BEGINING OF NEW CUSTOMER CREATION AND ENROLLMENT********************************
  1102. DECLARE @sIdTypeId INT
  1103. SELECT @sIdTypeId = valueId
  1104. FROM staticDataValue WITH (NOLOCK)
  1105. WHERE detailTitle = @sIdType
  1106. AND typeID = 1300
  1107. SELECT @sfName = UPPER(@sfName)
  1108. ,@smName = UPPER(@smName)
  1109. ,@slName = UPPER(@slName)
  1110. ,@slName2 = UPPER(@slName2)
  1111. SELECT @rfName = UPPER(@rfName)
  1112. ,@rmName = UPPER(@rmName)
  1113. ,@rlName = UPPER(@rlName)
  1114. ,@rlName2 = UPPER(@rlName2)
  1115. --2. Begining of New customer Creation and enrollment or updating existing customer data---
  1116. SET @senderName = @sfName + ISNULL(' ' + @smName, '') + ISNULL(' ' + @slName, '') + ISNULL(' ' + @slName2, '')
  1117. SET @receiverName = @rfName + ISNULL(' ' + @rmName, '') + ISNULL(' ' + @rlName, '') + ISNULL(' ' + @rlName2, '')
  1118. DECLARE @sNaCountryId INT = (
  1119. SELECT countryId
  1120. FROM COUNTRYMASTER(NOLOCK)
  1121. WHERE COUNTRYNAME = @sNaCountry
  1122. )
  1123. --------#Register Receiver if not registered#---------------
  1124. DECLARE @rBankId INT = ISNULL(@pBank, @pAgent)
  1125. DECLARE @rBankBranchId INT = ISNULL(@pBankBranch, '')
  1126. EXEC PROC_CHECK_RECEIVER_REGISTRATION @flag = 'i'
  1127. ,@user = @user
  1128. ,@rfName = @rfName
  1129. ,@rmName = @rmName
  1130. ,@rlName = @rlName
  1131. ,@receiverIdNo = @rIdNo
  1132. ,@receiverIdType = @rIdType
  1133. ,@receiverCountry = @pCountry
  1134. ,@receiverAdd = @rAdd1
  1135. ,@receiverCity = @rcity
  1136. ,@receiverMobile = @rMobile
  1137. ,@receiverPhone = @rTel
  1138. ,@receiverEmail = @rEmail
  1139. ,@receiverId = @receiverId OUT
  1140. ,@customerId = @senderId
  1141. ,@paymentMethodId = @deliveryMethodId
  1142. ,@rBankId = @rBankId
  1143. ,@rBankBranchId = @rBankBranchId
  1144. ,@rAccountNo = @raccountNo
  1145. ,@purpose = @purpose
  1146. ,@relationship = @relationship
  1147. ,@loginBranchId = @sBranch
  1148. ,@relationOther = @relationOther
  1149. ,@purposeOther = @purposeOther
  1150. ,@goodsType = @goodsType
  1151. ,@goodsOrigin = @goodsOrigin
  1152. ,@portOfShipment = @portOfShipment
  1153. --START Compliance Checking
  1154. DECLARE @complianceRuleId INT
  1155. ,@cAmtUSD MONEY
  1156. SELECT @sCurrCostRate = sCurrCostRate
  1157. ,@sCurrHoMargin = sCurrHoMargin
  1158. FROM dbo.FNAGetExRate(@sCountryId, @sAgent, @sBranch, @collCurr, @pCountryId, @pAgent, @pCurr, @deliveryMethodId)
  1159. IF @sCurrCostRate IS NULL
  1160. BEGIN
  1161. EXEC proc_errorHandler 1
  1162. ,'Transaction cannot be proceed. Exchange Rate not defined!'
  1163. ,NULL
  1164. RETURN
  1165. END
  1166. SET @sCountry = 'Japan'
  1167. --checking for visa status questionnaire
  1168. DECLARE @isVisaStatusQuestionnaire CHAR(1) = 'N'
  1169. IF EXISTS (
  1170. SELECT *
  1171. FROM VW_VISA_STATUS_QUESTIONNAIRE
  1172. WHERE VISA_ID = @visaStatus
  1173. )
  1174. BEGIN
  1175. SET @isVisaStatusQuestionnaire = 'Y'
  1176. END
  1177. IF ISNULL(@isAdditionalCDDI, 'N') = 'N'
  1178. BEGIN
  1179. CREATE TABLE #TBL_COMPLIANCE_RESULT (
  1180. ERROR_CODE INT
  1181. ,MSG VARCHAR(500)
  1182. ,RULE_ID INT
  1183. ,SHORT_MSG VARCHAR(100)
  1184. ,[TYPE] VARCHAR(10)
  1185. ,IS_D0C_REQUIRED BIT
  1186. )
  1187. INSERT INTO #TBL_COMPLIANCE_RESULT (
  1188. ERROR_CODE
  1189. ,MSG
  1190. ,RULE_ID
  1191. ,SHORT_MSG
  1192. ,[TYPE]
  1193. ,IS_D0C_REQUIRED
  1194. )
  1195. EXEC [PROC_COMPLIANCE_CHECKING_NEW] @flag = 'core'
  1196. ,@user = @user
  1197. ,@sIdType = @sIdType
  1198. ,@sIdNo = @sIdNo
  1199. ,@receiverName = @receiverName
  1200. ,@amount = @tAmt
  1201. ,@customerId = @senderId
  1202. ,@pCountryId = @pCountryId
  1203. ,@deliveryMethod = @deliveryMethodId
  1204. ,@professionId = @occupation
  1205. ,@receiverMobile = @rMobile
  1206. ,@accountNo = @raccountNo
  1207. ,@receiverId = @receiverId
  1208. ,@sNaCountryId = @sNaCountryId
  1209. ,@visaStatus = @visaStatus
  1210. IF EXISTS (
  1211. SELECT *
  1212. FROM #TBL_COMPLIANCE_RESULT
  1213. WHERE ERROR_CODE <> 0
  1214. )
  1215. BEGIN
  1216. --IF(@complienceErrorCode = 1)
  1217. --BEGIN
  1218. -- SELECT 101 errorCode,@shortMsg msg, @complienceErrorCode id, @complienceMessage compApproveRemark,'compliance' vtype
  1219. --END
  1220. IF EXISTS (
  1221. SELECT *
  1222. FROM #TBL_COMPLIANCE_RESULT
  1223. WHERE ERROR_CODE IN (
  1224. 2
  1225. ,3
  1226. )
  1227. )
  1228. BEGIN
  1229. DELETE
  1230. FROM remitTranComplianceTemp
  1231. WHERE agentRefId = @agentRefId
  1232. INSERT remitTranComplianceTemp (
  1233. csDetailTranId
  1234. ,matchTranId
  1235. ,agentRefId
  1236. )
  1237. SELECT TOP 1 RULE_ID
  1238. ,NULL
  1239. ,@agentRefId
  1240. FROM #TBL_COMPLIANCE_RESULT
  1241. WHERE ERROR_CODE IN (
  1242. 2
  1243. ,3
  1244. )
  1245. ORDER BY ISNULL(IS_D0C_REQUIRED, 0) DESC
  1246. --SELECT 102 errorCode,@shortMsg msg, @complienceErrorCode id, @complienceMessage compApproveRemark,'compliance' vtype
  1247. END
  1248. --IF(@complienceErrorCode = 3)
  1249. --BEGIN
  1250. -- SELECT 103 errorCode,@shortMsg msg, @complienceErrorCode id, @complienceMessage compApproveRemark,'compliance' vtype
  1251. --END
  1252. DELETE
  1253. FROM ComplianceLog
  1254. WHERE agentRefId = @agentRefId
  1255. INSERT INTO ComplianceLog (
  1256. senderName
  1257. ,senderCountry
  1258. ,senderIdType
  1259. ,senderIdNumber
  1260. ,senderMobile
  1261. ,receiverName
  1262. ,receiverCountry
  1263. ,payOutAmt
  1264. ,complianceId
  1265. ,complianceReason
  1266. ,complainceDetailMessage
  1267. ,createdBy
  1268. ,createdDate
  1269. ,agentRefId
  1270. ,isDocumentRequired
  1271. )
  1272. SELECT @senderName
  1273. ,@sCountry
  1274. ,@sIdType
  1275. ,@sIdNo
  1276. ,@sMobile
  1277. ,@receiverName
  1278. ,@pCountry
  1279. ,@cAmt
  1280. ,RULE_ID
  1281. ,SHORT_MSG
  1282. ,MSG
  1283. ,@user
  1284. ,GETDATE()
  1285. ,@agentRefId
  1286. ,IS_D0C_REQUIRED
  1287. FROM #TBL_COMPLIANCE_RESULT
  1288. IF @isVisaStatusQuestionnaire = 'Y'
  1289. BEGIN
  1290. INSERT INTO ComplianceLog (
  1291. senderName
  1292. ,senderCountry
  1293. ,senderIdType
  1294. ,senderIdNumber
  1295. ,senderMobile
  1296. ,receiverName
  1297. ,receiverCountry
  1298. ,payOutAmt
  1299. ,complianceId
  1300. ,complianceReason
  1301. ,complainceDetailMessage
  1302. ,createdBy
  1303. ,createdDate
  1304. ,agentRefId
  1305. ,isDocumentRequired
  1306. )
  1307. SELECT @senderName
  1308. ,@sCountry
  1309. ,@sIdType
  1310. ,@sIdNo
  1311. ,@sMobile
  1312. ,@receiverName
  1313. ,@pCountry
  1314. ,@cAmt
  1315. ,0
  1316. ,'Compliance Hold/Questionnaire due to Visa Status: ' + @visaStatusText
  1317. ,'Compliance Hold/Questionnaire due to Visa Status: ' + @visaStatusText
  1318. ,@user
  1319. ,GETDATE()
  1320. ,@agentRefId
  1321. ,0
  1322. END
  1323. END
  1324. --END OFAC/Compliance data
  1325. END
  1326. IF (@ofacRes <> '')
  1327. BEGIN
  1328. IF @checkNameBy = 'OFAC'
  1329. BEGIN
  1330. SET @result = @ofacRes + '|' + ISNULL(@ofacReason, '')
  1331. SELECT errorCode = 100
  1332. ,msg = 'WARNING!!! This customer is listed on OFAC List'
  1333. ,id = @result
  1334. ,extra = @checkNameBy
  1335. EXEC proc_sendPageLoadData @flag = 'ofac'
  1336. ,@user = @user
  1337. ,@blackListIds = @ofacRes
  1338. END
  1339. ELSE
  1340. BEGIN
  1341. SET @result = @ofacRes + '|' + ISNULL(@ofacReason, '')
  1342. SELECT errorCode = 100
  1343. ,msg = 'WARNING!!! This customer is listed on DJ List'
  1344. ,id = @result
  1345. ,extra = @checkNameBy
  1346. EXEC proc_sendPageLoadData @flag = 'ofac'
  1347. ,@user = @user
  1348. ,@blackListIds = @ofacRes
  1349. ,@TRACK_BY = 'DJ'
  1350. END
  1351. END
  1352. SELECT *
  1353. INTO #TEMP_COMPLIANCE
  1354. FROM ComplianceLog CL(NOLOCK)
  1355. WHERE agentRefId = @agentRefId
  1356. AND CAST(CREATEDDATE AS DATE) = CAST(GETDATE() AS DATE)
  1357. DECLARE @IS_TXN_IN_COMPLIANCE BIT = 0
  1358. ,@isDocumentRequired CHAR(1) = 'N'
  1359. ,@complianceChecked BIT = 0
  1360. IF EXISTS (
  1361. SELECT *
  1362. FROM #TEMP_COMPLIANCE
  1363. WHERE isDocumentRequired = 1
  1364. )
  1365. BEGIN
  1366. SET @isDocumentRequired = 'Y'
  1367. END
  1368. IF EXISTS (
  1369. SELECT 1
  1370. FROM #TEMP_COMPLIANCE
  1371. )
  1372. BEGIN
  1373. IF EXISTS (
  1374. SELECT 1
  1375. FROM #TEMP_COMPLIANCE CL
  1376. INNER JOIN csDetail CD(NOLOCK) ON CD.csDetailId = CL.complianceId
  1377. WHERE agentRefId = @agentRefId
  1378. AND CAST(cl.CREATEDDATE AS DATE) = CAST(GETDATE() AS DATE)
  1379. AND nextAction = 'B'
  1380. )
  1381. BEGIN
  1382. SET @IS_TXN_IN_COMPLIANCE = 1
  1383. SELECT errorCode = 101
  1384. ,MSG = 'COMPLIANCE BLOCK'
  1385. ,id = @isVisaStatusQuestionnaire
  1386. ,compApproveRemark = 'COMPLIANCE BLOCK'
  1387. ,vtype = 'compliance'
  1388. ,isDocumentRequired = 'N'
  1389. SELECT id
  1390. ,csDetailRecId = ''
  1391. ,[S.N.] = ROW_NUMBER() OVER (
  1392. ORDER BY id
  1393. )
  1394. ,[Remarks] = complianceReason
  1395. ,[Action] = CASE
  1396. WHEN nextAction = 'H'
  1397. THEN 'HOLD'
  1398. WHEN nextAction = 'B'
  1399. THEN 'Blocked'
  1400. ELSE 'Questionnaire'
  1401. END
  1402. --,[Matched Tran ID] = ''
  1403. FROM #TEMP_COMPLIANCE CL
  1404. LEFT JOIN csDetail CD(NOLOCK) ON CD.csDetailId = CL.complianceId
  1405. WHERE agentRefId = @agentRefId
  1406. AND CAST(cl.CREATEDDATE AS DATE) = CAST(GETDATE() AS DATE)
  1407. --AND nextAction = 'B'
  1408. ORDER BY CD.period
  1409. END
  1410. IF @IS_TXN_IN_COMPLIANCE = 0
  1411. AND EXISTS (
  1412. SELECT 1
  1413. FROM #TEMP_COMPLIANCE CL
  1414. INNER JOIN csDetail CD(NOLOCK) ON CD.csDetailId = CL.complianceId
  1415. WHERE agentRefId = @agentRefId
  1416. AND CAST(cl.CREATEDDATE AS DATE) = CAST(GETDATE() AS DATE)
  1417. AND nextAction = 'Q'
  1418. )
  1419. BEGIN
  1420. SET @IS_TXN_IN_COMPLIANCE = 1
  1421. SELECT errorCode = 103
  1422. ,MSG = 'COMPLIANCE HOLD'
  1423. ,id = @isVisaStatusQuestionnaire
  1424. ,compApproveRemark = 'COMPLIANCE HOLD'
  1425. ,vtype = 'compliance'
  1426. ,isDocumentRequired = @isDocumentRequired
  1427. SELECT id
  1428. ,csDetailRecId = ''
  1429. ,[S.N.] = ROW_NUMBER() OVER (
  1430. ORDER BY id
  1431. )
  1432. ,[Remarks] = complianceReason
  1433. ,[Action] = CASE
  1434. WHEN nextAction = 'H'
  1435. THEN 'HOLD'
  1436. WHEN nextAction = 'B'
  1437. THEN 'Blocked'
  1438. ELSE 'Questionnaire'
  1439. END
  1440. --,[Matched Tran ID] = ''
  1441. FROM #TEMP_COMPLIANCE CL
  1442. LEFT JOIN csDetail CD(NOLOCK) ON CD.csDetailId = CL.complianceId
  1443. WHERE agentRefId = @agentRefId
  1444. AND CAST(cl.CREATEDDATE AS DATE) = CAST(GETDATE() AS DATE)
  1445. --AND nextAction = 'Q'
  1446. ORDER BY CD.period
  1447. END
  1448. IF @IS_TXN_IN_COMPLIANCE = 0
  1449. AND EXISTS (
  1450. SELECT 1
  1451. FROM #TEMP_COMPLIANCE CL
  1452. INNER JOIN csDetail CD(NOLOCK) ON CD.csDetailId = CL.complianceId
  1453. WHERE agentRefId = @agentRefId
  1454. AND CAST(cl.CREATEDDATE AS DATE) = CAST(GETDATE() AS DATE)
  1455. AND nextAction = 'H'
  1456. )
  1457. BEGIN
  1458. SELECT errorCode = 102
  1459. ,MSG = 'COMPLIANCE QUESTIONNAIRE'
  1460. ,id = @isVisaStatusQuestionnaire
  1461. ,compApproveRemark = 'COMPLIANCE QUESTIONAIRE'
  1462. ,vtype = 'compliance'
  1463. ,isDocumentRequired = @isDocumentRequired
  1464. SELECT id
  1465. ,csDetailRecId = ''
  1466. ,[S.N.] = ROW_NUMBER() OVER (
  1467. ORDER BY id
  1468. )
  1469. ,[Remarks] = complianceReason
  1470. ,[Action] = CASE
  1471. WHEN nextAction = 'H'
  1472. THEN 'HOLD'
  1473. WHEN nextAction = 'B'
  1474. THEN 'Blocked'
  1475. ELSE 'Questionnaire'
  1476. END
  1477. --,[Matched Tran ID] = ''
  1478. FROM #TEMP_COMPLIANCE CL
  1479. LEFT JOIN csDetail CD(NOLOCK) ON CD.csDetailId = CL.complianceId
  1480. WHERE agentRefId = @agentRefId
  1481. AND CAST(cl.CREATEDDATE AS DATE) = CAST(GETDATE() AS DATE)
  1482. --AND nextAction = 'H'
  1483. ORDER BY CD.period
  1484. END
  1485. IF @IS_TXN_IN_COMPLIANCE = 0
  1486. AND EXISTS (
  1487. SELECT 1
  1488. FROM #TEMP_COMPLIANCE CL
  1489. WHERE agentRefId = @agentRefId
  1490. AND CAST(cl.CREATEDDATE AS DATE) = CAST(GETDATE() AS DATE)
  1491. AND complianceId = 0
  1492. )
  1493. BEGIN
  1494. SELECT errorCode = 102
  1495. ,MSG = 'COMPLIANCE HOLD'
  1496. ,id = @isVisaStatusQuestionnaire
  1497. ,compApproveRemark = 'COMPLIANCE HOLD'
  1498. ,vtype = 'compliance'
  1499. ,isDocumentRequired = 'N'
  1500. SELECT id
  1501. ,csDetailRecId = ''
  1502. ,[S.N.] = ROW_NUMBER() OVER (
  1503. ORDER BY id
  1504. )
  1505. ,[Remarks] = complianceReason
  1506. ,[Action] = 'Questionnaire'
  1507. --,[Matched Tran ID] = ''
  1508. FROM ComplianceLog CL
  1509. WHERE agentRefId = @agentRefId
  1510. AND CAST(cl.CREATEDDATE AS DATE) = CAST(GETDATE() AS DATE)
  1511. END
  1512. END
  1513. ELSE
  1514. BEGIN
  1515. IF @isVisaStatusQuestionnaire = 'Y'
  1516. BEGIN
  1517. INSERT remitTranComplianceTemp (
  1518. csDetailTranId
  1519. ,matchTranId
  1520. ,agentRefId
  1521. ,reason
  1522. )
  1523. SELECT TOP 1 0
  1524. ,NULL
  1525. ,@agentRefId
  1526. ,'Questionnaire require due to Visa Status'
  1527. SELECT errorCode = 102
  1528. ,MSG = 'COMPLIANCE HOLD'
  1529. ,id = @isVisaStatusQuestionnaire
  1530. ,compApproveRemark = 'COMPLIANCE HOLD'
  1531. ,vtype = 'compliance'
  1532. ,isDocumentRequired = 'N'
  1533. INSERT INTO ComplianceLog (
  1534. senderName
  1535. ,senderCountry
  1536. ,senderIdType
  1537. ,senderIdNumber
  1538. ,senderMobile
  1539. ,receiverName
  1540. ,receiverCountry
  1541. ,payOutAmt
  1542. ,complianceId
  1543. ,complianceReason
  1544. ,complainceDetailMessage
  1545. ,createdBy
  1546. ,createdDate
  1547. ,agentRefId
  1548. ,isDocumentRequired
  1549. )
  1550. SELECT @senderName
  1551. ,@sCountry
  1552. ,@sIdType
  1553. ,@sIdNo
  1554. ,@sMobile
  1555. ,@receiverName
  1556. ,@pCountry
  1557. ,@cAmt
  1558. ,0
  1559. ,'Compliance Hold/Questionnaire due to Visa Status: ' + @visaStatusText
  1560. ,'Compliance Hold/Questionnaire due to Visa Status: ' + @visaStatusText
  1561. ,@user
  1562. ,GETDATE()
  1563. ,@agentRefId
  1564. ,0
  1565. SELECT id
  1566. ,csDetailRecId = ''
  1567. ,[S.N.] = ROW_NUMBER() OVER (
  1568. ORDER BY id
  1569. )
  1570. ,[Remarks] = complianceReason
  1571. ,[Action] = 'Questionnaire'
  1572. --,[Matched Tran ID] = ''
  1573. FROM ComplianceLog CL
  1574. WHERE agentRefId = @agentRefId
  1575. AND CAST(cl.CREATEDDATE AS DATE) = CAST(GETDATE() AS DATE)
  1576. END
  1577. END
  1578. SELECT 0 errorCode
  1579. ,'Validation successful' msg
  1580. ,@senderId id
  1581. ,@receiverId Extra
  1582. --*****Check For Same Name*****
  1583. SELECT dbo.fnadecryptstring(controlno) controlNo
  1584. ,tranId = rt.id
  1585. ,senderName
  1586. ,sIdType = sen.idType
  1587. ,sIdNo = sen.idNumber
  1588. ,cAmt
  1589. ,pCountry
  1590. FROM vwremitTran rt WITH (NOLOCK)
  1591. INNER JOIN vwtranSenders sen WITH (NOLOCK) ON rt.id = sen.tranId
  1592. WHERE senderName = @senderName
  1593. AND createdDate BETWEEN CONVERT(VARCHAR, GETDATE(), 101)
  1594. AND CONVERT(VARCHAR, GETDATE(), 101) + ' 23:59:59'
  1595. --*****Check For Same Id*****
  1596. SELECT dbo.fnadecryptstring(controlno) controlNo
  1597. ,tranId = rt.id
  1598. ,senderName
  1599. ,sIdType = sen.idType
  1600. ,sIdNo = sen.idNumber
  1601. ,cAmt
  1602. ,pCountry
  1603. FROM vwremitTran rt WITH (NOLOCK)
  1604. INNER JOIN vwtranSenders sen WITH (NOLOCK) ON rt.id = sen.tranId
  1605. WHERE idType = @sIdType
  1606. AND idNumber = @sIdNo
  1607. AND createdDate BETWEEN CONVERT(VARCHAR, GETDATE(), 101)
  1608. AND CONVERT(VARCHAR, GETDATE(), 101) + ' 23:59:59'
  1609. END
  1610. ELSE IF @flag = 'i' --Send Transaction
  1611. BEGIN
  1612. --1. Field Validation-----------------------------------------------------------
  1613. IF @user IS NULL
  1614. BEGIN
  1615. EXEC proc_errorHandler 1
  1616. ,'Your session has expired. Cannot send transaction'
  1617. ,NULL
  1618. RETURN
  1619. END
  1620. --IF ISNULL(@IsFromTabPage, '0') != '1'
  1621. --BEGIN
  1622. -- IF NOT EXISTS (
  1623. -- SELECT 'X'
  1624. -- FROM applicationUsers WITH (NOLOCK)
  1625. -- WHERE PWD = DBO.FNAEncryptString(@txnPWD)
  1626. -- AND userName = @user
  1627. -- )
  1628. -- BEGIN
  1629. -- EXEC proc_errorHandler 1
  1630. -- ,'TXN password is invalid !'
  1631. -- ,@user
  1632. -- RETURN
  1633. -- END
  1634. --END
  1635. IF (
  1636. ISNULL(@deliveryMethod, '') = ''
  1637. OR @serviceCharge IS NULL
  1638. OR ISNULL(@cAmt, 0) = 0
  1639. OR ISNULL(@tAmt, 0) = 0
  1640. OR ISNULL(@exRate, 0) = 0
  1641. )
  1642. BEGIN
  1643. EXEC proc_errorHandler 1
  1644. ,'Mandatory Field(s) missing'
  1645. ,NULL
  1646. RETURN
  1647. END
  1648. IF @customerPassword IS NOT NULL
  1649. BEGIN
  1650. IF NOT EXISTS (
  1651. SELECT 1
  1652. FROM dbo.customerMaster
  1653. WHERE customerId = @senderId
  1654. AND dbo.decryptDb(customerPassword) = @customerPassword
  1655. )
  1656. BEGIN
  1657. EXEC proc_errorHandler 1
  1658. ,'Customer Password is invalid !'
  1659. ,NULL
  1660. RETURN
  1661. END
  1662. END
  1663. --******************BEGINING OF NEW CUSTOMER CREATION AND ENROLLMENT********************************
  1664. SELECT @sIdTypeId = valueId
  1665. FROM staticDataValue WITH (NOLOCK)
  1666. WHERE detailTitle = @sIdType
  1667. AND typeID = 1300
  1668. SELECT @sfName = UPPER(@sfName)
  1669. ,@smName = UPPER(@smName)
  1670. ,@slName = UPPER(@slName)
  1671. ,@slName2 = UPPER(@slName2)
  1672. SELECT @rfName = UPPER(@rfName)
  1673. ,@rmName = UPPER(@rmName)
  1674. ,@rlName = UPPER(@rlName)
  1675. ,@rlName2 = UPPER(@rlName2)
  1676. --2. Begining of New customer Creation and enrollment or updating existing customer data---
  1677. SET @senderName = @sfName + ISNULL(' ' + @smName, '') + ISNULL(' ' + @slName, '') + ISNULL(' ' + @slName2, '')
  1678. SET @receiverName = @rfName + ISNULL(' ' + @rmName, '') + ISNULL(' ' + @rlName, '') + ISNULL(' ' + @rlName2, '')
  1679. SET @sNaCountryId = (
  1680. SELECT countryId
  1681. FROM COUNTRYMASTER(NOLOCK)
  1682. WHERE COUNTRYNAME = @sNaCountry
  1683. )
  1684. SET @nCust = 'Y'
  1685. DECLARE @rewardAmount DECIMAL
  1686. SET @rewardAmount = CAST(@rewardAmt AS DECIMAL)
  1687. IF @nCust = 'N'
  1688. AND @senderId IS NULL
  1689. BEGIN
  1690. EXEC proc_errorHandler 1
  1691. ,'Mandatory Field(s) missing'
  1692. ,NULL
  1693. RETURN
  1694. END
  1695. IF @nCust = 'N'
  1696. AND @collMode = 'Bank Deposit'
  1697. BEGIN
  1698. SELECT @AVAILABLEBALANCE = DBO.FNAGetCustomerAvailableBalance(@senderId)
  1699. IF (ISNULL(@AVAILABLEBALANCE, 0) < @CAMT)
  1700. BEGIN
  1701. EXEC proc_errorHandler 1
  1702. ,'Collect Amount can not be greater then Available Balance!'
  1703. ,NULL
  1704. RETURN
  1705. END
  1706. END
  1707. IF ISNULL(@cAmt, 0) = 0
  1708. BEGIN
  1709. EXEC proc_errorHandler 1
  1710. ,'Collection Amount is missing'
  1711. ,NULL
  1712. RETURN
  1713. END
  1714. IF @serviceCharge > @cAmt
  1715. BEGIN
  1716. EXEC proc_errorHandler 1
  1717. ,'Collection Amount is less than service charge.'
  1718. ,NULL
  1719. RETURN
  1720. END
  1721. SET @controlNo = '779' + LEFT(CAST(ABS(CHECKSUM(NEWID())) AS VARCHAR(10)) + '0000000000', 9)
  1722. IF EXISTS (
  1723. SELECT 'X'
  1724. FROM controlNoList WITH (NOLOCK)
  1725. WHERE controlNo = @controlNo
  1726. )
  1727. BEGIN
  1728. SET @controlNo = '779' + LEFT(CAST(ABS(CHECKSUM(NEWID())) AS VARCHAR(10)) + '0000000000', 9)
  1729. IF EXISTS (
  1730. SELECT 'X'
  1731. FROM controlNoList WITH (NOLOCK)
  1732. WHERE controlNo = @controlNo
  1733. )
  1734. BEGIN
  1735. EXEC proc_errorHandler 1
  1736. ,'Technical error occurred. Please try again'
  1737. ,NULL
  1738. RETURN
  1739. END
  1740. END
  1741. SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo)
  1742. IF @deliveryMethod IN (
  1743. 'Cash Payment'
  1744. ,'Door to Door'
  1745. )
  1746. BEGIN
  1747. IF @deliveryMethod = 'Door to Door'
  1748. BEGIN
  1749. SET @payMsg = ' [Door To Door Location:' + @pBankBranchName + ', ' + @pBankBranchName + ' ]'
  1750. END
  1751. END
  1752. ELSE IF @deliveryMethod = 'Bank Deposit'
  1753. BEGIN
  1754. IF @pBank IS NULL
  1755. BEGIN
  1756. EXEC proc_errorHandler 1
  1757. ,'Bank is required for Bank Deposit '
  1758. ,NULL
  1759. RETURN
  1760. END
  1761. END
  1762. --3. Check Limit starts
  1763. SELECT @settlingAgent = agentId
  1764. FROM dbo.agentMaster(NOLOCK)
  1765. WHERE agentId = @sBranch
  1766. AND ISNULL(isSettlingAgent, 'N') = 'Y'
  1767. IF @settlingAgent IS NULL
  1768. SELECT @settlingAgent = agentId
  1769. FROM dbo.agentMaster(NOLOCK)
  1770. WHERE agentId = @sAgent
  1771. AND ISNULL(isSettlingAgent, 'N') = 'Y'
  1772. --Credit Limit Section
  1773. IF @collMode = 'Cash Collect'
  1774. BEGIN
  1775. DECLARE @sBranch1 INT
  1776. IF EXISTS (
  1777. SELECT 1
  1778. FROM dbo.applicationUsers
  1779. WHERE agentId = @sBranch
  1780. AND userName = @user
  1781. )
  1782. BEGIN
  1783. SELECT @user1 = @user
  1784. ,@sBranch1 = NULL
  1785. END
  1786. ELSE
  1787. BEGIN
  1788. SET @sBranch1 = @sBranch
  1789. END
  1790. SELECT @limitBal = availableLimit
  1791. ,@holdType = CASE
  1792. WHEN ruleType = 'H'
  1793. THEN 'Hold'
  1794. ELSE 'Block'
  1795. END
  1796. FROM DBO.FNAGetUserCashLimitDetails(@user1, @sBranch1)
  1797. IF @tAmt > @limitBal
  1798. AND @holdType = 'B'
  1799. BEGIN
  1800. EXEC [proc_errorHandler] 1
  1801. ,'Transfer amount exceeds Limit. Please, Check your available limit.'
  1802. ,@controlNo
  1803. RETURN
  1804. END
  1805. END
  1806. --End of Credit Limit Section-------------------------------------------------------------------------------------------------------------
  1807. --Get Service Charge----------------------------------------------------------------------------------------------------------------------
  1808. DECLARE @originalSC MONEY = 0
  1809. SET @sCountryId = 233
  1810. --New code added, referral code add #arjun
  1811. --EXEC PROC_Customer_LoyaltyV2 @flag = 'check-eligible-v2'
  1812. -- ,@isEligible = @isEligible OUT
  1813. -- ,@referralCode = @introducer
  1814. -- ,@tranCount = @trancount OUT
  1815. -- ,@schemeCount = @schemeCount OUT
  1816. -- ,@customerId = @senderId
  1817. -- ,@createdFrom = 'I'
  1818. -- loyalty free sc
  1819. --IF EXISTS (
  1820. -- SELECT TOP 1 1
  1821. -- FROM REFERRAL_AGENT_WISE
  1822. -- WHERE REFERRAL_TYPE_CODE IN (
  1823. -- 'RB'
  1824. -- ,'RC'
  1825. -- )
  1826. -- AND REFERRAL_CODE = @introducer
  1827. -- )
  1828. --BEGIN
  1829. -- EXEC PROC_Customer_Loyalty @flag = 'check-eligible'
  1830. -- ,@isEligible = @isEligible OUT
  1831. --END
  1832. --EXEC proc_Customer_Loyalty @flag = 'get-tranCount'
  1833. -- ,@tranCount = @trancount OUT
  1834. -- ,@customerId = @senderId
  1835. --SELECT TOP 1 @schemeCount = txnCount
  1836. --FROM schemeSetup(NOLOCK)
  1837. --ORDER BY createdDate DESC
  1838. PRINT @isManualSc
  1839. PRINT 'isManualSc'
  1840. IF @calcBy = 'cAmt'
  1841. BEGIN
  1842. IF @isEligible = 'Y'
  1843. BEGIN
  1844. SET @iServiceCharge = 0
  1845. END
  1846. ELSE
  1847. BEGIN
  1848. IF ISNULL(@isManualSc, 'N') = 'N'
  1849. BEGIN
  1850. SELECT @iServiceCharge = ISNULL(amount, - 1)
  1851. FROM [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethodId, @cAmt, @collCurr)
  1852. SET @originalSC = @iServiceCharge
  1853. END
  1854. ELSE
  1855. BEGIN
  1856. SET @iServiceCharge = ISNULL(@manualSc, 0)
  1857. SELECT @originalSC = ISNULL(amount, - 1)
  1858. FROM [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethodId, @cAmt, @collCurr)
  1859. IF @cAmt <> @tAmt + @iServiceCharge - ISNULL(@rewardAmount,0)
  1860. BEGIN
  1861. EXEC proc_errorHandler 1
  1862. ,'3Please click on Calculate or Click out side the Service Charge input Box, after editing Service Charge!'
  1863. ,NULL
  1864. RETURN
  1865. END
  1866. END
  1867. END
  1868. END
  1869. ELSE
  1870. BEGIN
  1871. --SET @tAmt = ROUND(@pAmt/(@exRate + @exRateOffer),0)
  1872. --SET @tAmt = CEILING(@pAmt / (@exRate + ISNULL(@exRateOffer, 0))) + ISNULL(@rewardAmt,0)
  1873. SET @tAmt = (@pAmt / (@exRate + ISNULL(@exRateOffer, 0))) + ISNULL(@rewardAmount,0)
  1874. SET @tAmt =Cast(Round(@tAmt,2,1) as decimal(18,2));
  1875. IF @isEligible = 'Y'
  1876. BEGIN
  1877. SET @iServiceCharge = 0
  1878. END
  1879. ELSE
  1880. BEGIN
  1881. IF ISNULL(@isManualSc, 'N') = 'N'
  1882. BEGIN
  1883. SELECT @iServiceCharge = ISNULL(amount, - 1)
  1884. FROM [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethodId, @tAmt, @collCurr)
  1885. SET @originalSC = @iServiceCharge
  1886. END
  1887. ELSE
  1888. BEGIN
  1889. SET @iServiceCharge = ISNULL(@manualSc, 0)
  1890. SELECT @originalSC = ISNULL(amount, - 1)
  1891. FROM [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethodId, @tAmtSC, @collCurr)
  1892. PRINT '@cAmt'
  1893. PRINT @cAmt
  1894. PRINT '@tAmt'
  1895. PRINT @tAmt
  1896. PRINT '@iServiceCharge'
  1897. PRINT @iServiceCharge
  1898. IF @cAmt <> @tAmt + @iServiceCharge -ISNULL( @rewardAmount,0)
  1899. BEGIN
  1900. EXEC proc_errorHandler 1
  1901. ,'Please click on Calculate or Click out side the Service Charge input Box, after editing Service Charge!'
  1902. ,NULL
  1903. RETURN
  1904. END
  1905. END
  1906. END
  1907. END
  1908. -- PRINT @iServiceCharge
  1909. IF @iServiceCharge = - 1
  1910. AND ISNULL(@isManualSc, 'N') = 'N'
  1911. BEGIN
  1912. EXEC proc_errorHandler 1
  1913. ,'Transaction cannot be proceed. Service Charge is not defined'
  1914. ,NULL
  1915. RETURN
  1916. END
  1917. --Earthquake relief fund
  1918. DECLARE @scDisc MONEY
  1919. IF @iServiceCharge <> @serviceCharge
  1920. AND ISNULL(@isManualSc, 'N') = 'N'
  1921. BEGIN
  1922. EXEC proc_errorHandler 1
  1923. ,'Transaction cannot be proceed. Amount detail not match. Service Charge is different.'
  1924. ,NULL
  1925. RETURN
  1926. END
  1927. PRINT 'osc'
  1928. PRINT @originalSc
  1929. PRINT @iServiceCharge
  1930. IF (@iServiceCharge <> @calculatedOriginalSc)
  1931. AND ISNULL(@isManualSc, 'Y') = 'Y'
  1932. BEGIN
  1933. PRINT 'condition matched'
  1934. UPDATE APPLICATIONUSERS
  1935. SET freeScCounter = isnull(freeScCounter, 0) + 1
  1936. WHERE username = @user
  1937. END
  1938. --End-------------------------------------------------------------------------------------------------------------------------------------
  1939. --4. Get Exchange Rate Details------------------------------------------------------------------------------------------------------------------
  1940. IF @pCountryId = 151
  1941. AND @deliveryMethodId = 1
  1942. BEGIN
  1943. SELECT AgentId
  1944. INTO #AgentListSend
  1945. FROM agentMaster(NOLOCK)
  1946. WHERE extCode = 'NP ANYWHERE'
  1947. SELECT @customerRate = customerRate
  1948. ,@sCurrCostRate = sCurrCostRate
  1949. ,@sCurrHoMargin = sCurrHoMargin
  1950. ,@sCurrAgentMargin = sCurrAgentMargin
  1951. ,@pCurrCostRate = pCurrCostRate
  1952. ,@pCurrHoMargin = pCurrHoMargin
  1953. ,@pCurrAgentMargin = pCurrAgentMargin
  1954. ,@agentCrossSettRate = agentCrossSettRate
  1955. ,@treasuryTolerance = treasuryTolerance
  1956. ,@customerPremium = customerPremium
  1957. ,@sharingValue = sharingValue
  1958. ,@sharingType = sharingType
  1959. FROM (
  1960. SELECT ROW_NUMBER() OVER (
  1961. ORDER BY CUSTOMERRATE DESC
  1962. ) ROW_NUM
  1963. ,customerRate
  1964. ,sCurrCostRate
  1965. ,sCurrHoMargin
  1966. ,sCurrAgentMargin
  1967. ,pCurrCostRate
  1968. ,pCurrHoMargin
  1969. ,pCurrAgentMargin
  1970. ,agentCrossSettRate
  1971. ,treasuryTolerance
  1972. ,customerPremium
  1973. ,sharingValue
  1974. ,sharingType
  1975. FROM #AgentListSend A
  1976. CROSS APPLY dbo.FNAGetExRate(@sCountryId, @sAgent, @sBranch, @collCurr, @pCountryId, AgentId, @pCurr, @deliveryMethodId)
  1977. ) X
  1978. WHERE X.ROW_NUM = 1
  1979. END
  1980. ELSE
  1981. BEGIN
  1982. SELECT @customerRate = customerRate
  1983. ,@sCurrCostRate = sCurrCostRate
  1984. ,@sCurrHoMargin = sCurrHoMargin
  1985. ,@sCurrAgentMargin = sCurrAgentMargin
  1986. ,@pCurrCostRate = pCurrCostRate
  1987. ,@pCurrHoMargin = pCurrHoMargin
  1988. ,@pCurrAgentMargin = pCurrAgentMargin
  1989. ,@agentCrossSettRate = agentCrossSettRate
  1990. ,@treasuryTolerance = treasuryTolerance
  1991. ,@customerPremium = customerPremium
  1992. ,@sharingValue = sharingValue
  1993. ,@sharingType = sharingType
  1994. FROM dbo.FNAGetExRate(@sCountryId, @sAgent, @sBranch, @collCurr, @pCountryId, @pAgent, @pCurr, @deliveryMethodId)
  1995. END
  1996. IF @customerRate IS NULL
  1997. BEGIN
  1998. EXEC proc_errorHandler 1
  1999. ,'Transaction cannot be proceed. Exchange Rate not defined'
  2000. ,NULL
  2001. RETURN
  2002. END
  2003. SET @serviceCharge = @serviceCharge - ISNULL(@scDiscount, 0)
  2004. PRINT '@serviceCharge'
  2005. PRINT @serviceCharge
  2006. SET @iServiceCharge = @iServiceCharge - ISNULL(@iScDiscount, 0)
  2007. PRINT '@@iServiceCharge'
  2008. PRINT @iServiceCharge
  2009. PRINT 'rewardAmt'
  2010. PRINT @rewardAmount
  2011. SET @tAmt = @cAmt - @serviceCharge + ISNULL(@rewardAmount,0)
  2012. SET @iCustomerRate = @customerRate + ISNULL(@schemePremium, 0)
  2013. IF @pCurr = 'VND'
  2014. BEGIN
  2015. IF @calcBy = 'cAmt'
  2016. BEGIN
  2017. SET @iTAmt = @cAmt - @iServiceCharge + ISNULL(@rewardAmount,0)
  2018. SET @iPAmt = @iTAmt * @iCustomerRate
  2019. --IF @place IS NOT NULL
  2020. -- SET @pAmt = ROUND(@pAmt, -@place, 1)
  2021. END
  2022. ELSE
  2023. BEGIN
  2024. SET @iPAmt = @pAmt
  2025. END
  2026. END
  2027. ELSE
  2028. BEGIN
  2029. SET @iTAmt = @cAmt - @iServiceCharge + ISNULL(@rewardAmount,0)
  2030. SELECT @place = place
  2031. ,@currDecimal = currDecimal
  2032. FROM currencyPayoutRound WITH (NOLOCK)
  2033. WHERE ISNULL(isDeleted, 'N') = 'N'
  2034. AND currency = @pCurr
  2035. AND ISNULL(tranType, @deliveryMethodId) = @deliveryMethodId
  2036. SET @currDecimal = ISNULL(@currDecimal, 0)
  2037. SET @place = ISNULL(@place, 0)
  2038. SET @iPAmt = @iTAmt * @iCustomerRate
  2039. --SET @iPAmt = ROUND(@iPAmt, @currDecimal, 1)
  2040. --IF @place IS NOT NULL
  2041. -- SET @iPAmt = ROUND(@iPAmt, -@place, 1)
  2042. END
  2043. SET @iPAmt = @iTAmt * @iCustomerRate
  2044. SET @iPAmt = ROUND(@iPAmt, @currDecimal, 1)
  2045. --IF @place IS NOT NULL
  2046. -- SET @iPAmt = ROUND(@iPAmt, -@place, 1)
  2047. IF @pAmt - @iPAmt <= 1
  2048. SET @iPAmt = @pAmt
  2049. --IF @iPAmt <> @pAmt
  2050. --BEGIN
  2051. -- EXEC proc_errorHandler 1
  2052. -- ,'Amount detail not match. Please re-calculate the amount again.'
  2053. -- ,NULL
  2054. -- RETURN
  2055. --END
  2056. SELECT @customerPremium= ISNULL(detaildesc,0) FROM
  2057. staticDataValue where typeID='8109' and detailTitle= @paymentOption;
  2058. print 'wqq'
  2059. --6. Commission Calculation Start
  2060. --**********Customer Per Day Limit Checking**********
  2061. DECLARE @remitTranTemp TABLE (
  2062. tranId BIGINT
  2063. ,controlNo VARCHAR(20)
  2064. ,cAmt MONEY
  2065. ,receiverName VARCHAR(200)
  2066. ,receiverIdType VARCHAR(100)
  2067. ,receiverIdNumber VARCHAR(50)
  2068. ,dot DATETIME
  2069. )
  2070. DECLARE @moneySendTemp TABLE (
  2071. tranNo BIGINT
  2072. ,refno VARCHAR(20)
  2073. ,paidAmt MONEY
  2074. ,receiverName VARCHAR(200)
  2075. ,receiverIdDescription VARCHAR(100)
  2076. ,receiverIdDetail VARCHAR(50)
  2077. ,dot DATETIME
  2078. )
  2079. INSERT INTO @remitTranTemp (
  2080. tranId
  2081. ,controlNo
  2082. ,cAmt
  2083. ,receiverName
  2084. ,receiverIdType
  2085. ,receiverIdNumber
  2086. ,dot
  2087. )
  2088. SELECT rt.id
  2089. ,rt.controlNo
  2090. ,rt.cAmt
  2091. ,rt.receiverName
  2092. ,rec.idType
  2093. ,rec.idNumber
  2094. ,rt.createdDateLocal
  2095. FROM vwRemitTran rt WITH (NOLOCK)
  2096. INNER JOIN vwTranSenders sen WITH (NOLOCK) ON rt.id = sen.tranId
  2097. INNER JOIN vwTranReceivers rec WITH (NOLOCK) ON rt.id = rec.tranId
  2098. WHERE sen.idNumber = @sIdNo
  2099. AND (
  2100. tranStatus <> 'CancelRequest'
  2101. AND tranStatus <> 'Cancel'
  2102. )
  2103. AND (
  2104. rt.approvedDate BETWEEN CONVERT(VARCHAR, GETDATE(), 101)
  2105. AND CONVERT(VARCHAR, GETDATE(), 101) + ' 23:59:59'
  2106. OR (
  2107. approvedBy IS NULL
  2108. AND cancelApprovedBy IS NULL
  2109. )
  2110. )
  2111. --IF EXISTS (
  2112. -- SELECT 'X'
  2113. -- FROM @remitTranTemp
  2114. -- WHERE cAmt = @cAmt
  2115. -- AND (
  2116. -- receiverName = @receiverName
  2117. -- OR (
  2118. -- ISNULL(receiverIdType, '0') = @rIdType
  2119. -- AND ISNULL(receiverIdNumber, '0') = @rIdNo
  2120. -- )
  2121. -- )
  2122. -- AND DATEDIFF(MI, dot, GETDATE()) <= 5
  2123. -- )
  2124. --BEGIN
  2125. -- EXEC proc_errorHandler 1
  2126. -- ,'Similar transaction found. You can process similar transaction after 5 minutes.'
  2127. -- ,NULL
  2128. -- RETURN
  2129. --END
  2130. DECLARE @customerTotalSentAmt MONEY = 0
  2131. ,@txnSumTobeDeducted MONEY = 0
  2132. SELECT @customerTotalSentAmt = SUM(cAmt)
  2133. FROM @remitTranTemp
  2134. SELECT @customerTotalAmt2 = SUM(paidAmt)
  2135. FROM @moneySendTemp
  2136. SELECT @txnSumTobeDeducted = ISNULL(SUM(paidAmt), 0)
  2137. FROM @moneySendTemp mst
  2138. INNER JOIN @remitTranTemp rtt ON mst.refno = rtt.controlNo
  2139. IF (ISNULL(@customerTotalAmt2, 0) + ISNULL(@customerTotalSentAmt, 0) + @cAmt - @txnSumTobeDeducted) > dbo.FNAGetPerDayCustomerLimit(@settlingAgent)
  2140. BEGIN
  2141. EXEC proc_errorHandler 1
  2142. ,'Transaction cannot be proceed. Customer Limit exceeded.'
  2143. ,NULL
  2144. RETURN
  2145. END
  2146. -- #########country and occupation risk point
  2147. DECLARE @countryRisk INT
  2148. ,@OccupationRisk INT
  2149. ,@isFirstTran CHAR(1)
  2150. SELECT @sNaCountry = CASE
  2151. WHEN @nCust = 'Y'
  2152. THEN @sNaCountry
  2153. ELSE nativeCountry
  2154. END
  2155. FROM tranSenders WITH (NOLOCK)
  2156. WHERE customerId = @senderId
  2157. IF NOT EXISTS (
  2158. SELECT 'Z'
  2159. FROM tranSenders WITH (NOLOCK)
  2160. WHERE customerId = @senderId
  2161. )
  2162. BEGIN
  2163. IF NOT EXISTS (
  2164. SELECT 'Z'
  2165. FROM tranSendersTEMP WITH (NOLOCK)
  2166. WHERE customerId = @senderId
  2167. )
  2168. SET @isFirstTran = 'Y'
  2169. ELSE
  2170. SET @isFirstTran = 'N'
  2171. END
  2172. SELECT @countryRisk = ISNULL(fatfRating, 0)
  2173. FROM countryMaster C WITH (NOLOCK)
  2174. WHERE countryName = @sNaCountry
  2175. AND ISNULL(C.isActive, 'Y') = 'Y'
  2176. AND ISNULL(C.isDeleted, 'N') = 'Y'
  2177. SELECT @OccupationRisk = ISNULL(riskFactor, 0)
  2178. FROM occupationMaster WITH (NOLOCK)
  2179. WHERE occupationId = @occupation
  2180. AND ISNULL(isActive, 'Y') = 'Y'
  2181. AND ISNULL(isDeleted, 'N') = 'Y'
  2182. --RBA
  2183. DECLARE @RBAScoreTxn MONEY
  2184. ,@RBAScoreCustomer MONEY
  2185. SELECT @RBAScoreCustomer = @RBACustomerRiskValue
  2186. ,@RBAScoreTxn = CASE
  2187. WHEN @RBATxnRisk = 'LOW RISK'
  2188. THEN 40
  2189. WHEN @RBATxnRisk = 'MEDIUM RISK'
  2190. THEN 50
  2191. WHEN @RBATxnRisk = 'HIGH RISK'
  2192. THEN 51
  2193. ELSE 100
  2194. END
  2195. IF @deliveryMethod = 'BANK DEPOSIT'
  2196. BEGIN
  2197. IF NOT EXISTS (
  2198. SELECT 'A'
  2199. FROM API_BANK_LIST(NOLOCK)
  2200. WHERE BANK_ID = @pBank
  2201. AND IS_ACTIVE = 1
  2202. )
  2203. BEGIN
  2204. EXEC proc_errorHandler 1
  2205. ,'Invalid bank selected'
  2206. ,NULL
  2207. RETURN
  2208. END
  2209. END
  2210. --##Get Voucher Details into temp table END##--
  2211. SELECT @pAgentCommCurrency = DBO.FNAGetPayCommCurrency(@sSuperAgent, @sAgent, @sBranch, @SCOUNTRYID, @pSuperAgent, @pBranch, @pCountryId)
  2212. IF (
  2213. LEN(ISNULL(@nameAsPerBank, '')) < 1
  2214. AND @pCountryId = '203'
  2215. AND @pAgent = '394133'
  2216. AND @deliveryMethodId = '2'
  2217. ) -- DONGA Bank Deposit
  2218. BEGIN
  2219. SET @pAgentComm = (@pAmt * 0.17) / 100;
  2220. END
  2221. ELSE
  2222. BEGIN
  2223. SELECT @pAgentComm = amount
  2224. FROM dbo.FNAGetPayComm(@sAgent, @sCountryId, NULL, NULL, @pCountryId, NULL, @pAgent, @pAgentCommCurrency, @deliveryMethodId, @cAmt, @pAmt, @serviceCharge, @tAmt, NULL)
  2225. END
  2226. SET @sSettlementRate = @sCurrCostRate + @sCurrHoMargin
  2227. SET @pSettlementRate = @pCurrCostRate - @pCurrHoMargin
  2228. --IF EXISTS (SELECT 'X' FROM agentMaster(nolock) WHERE agentId = @sAgent AND ISNULL(isSettlingAgent, 'N') = 'Y' AND ISNULL(isIntl, 0) = 1 AND isApiPartner = 0 AND ISNULL(ACTASBRANCH, 'N') = 'N')
  2229. --BEGIN
  2230. -- SELECT @sAgentComm = amount, @sAgentCommCurrency = commissionCurrency FROM dbo.FNAGetSendComm(
  2231. -- @sCountryId, @sSuperAgent, @sAgent, @sBranch,
  2232. -- @pCountryId, @pSuperAgent, @pAgent, @pBankBranch,
  2233. -- @collCurr, @deliveryMethodId, @cAmt, @pAmt, @serviceCharge, NULL, NULL,
  2234. -- @sSettlementRate, @pSettlementRate)
  2235. -- SELECT @sSuperAgentComm = 0, @sSuperAgentCommCurrency = @sAgentCommCurrency
  2236. -- IF (@sAgentComm IS NULL)
  2237. -- BEGIN
  2238. -- EXEC proc_errorHandler 1, 'Transaction cannot be proceed. Commission is not defined', NULL
  2239. -- RETURN
  2240. -- END
  2241. --END
  2242. --ELSE
  2243. --BEGIN
  2244. SELECT @sAgentComm = 0
  2245. ,@sSuperAgentComm = 0
  2246. ,@sSuperAgentCommCurrency = @sAgentCommCurrency
  2247. --END
  2248. IF EXISTS (
  2249. SELECT *
  2250. FROM REFERRAL_AGENT_WISE(NOLOCK)
  2251. WHERE REFERRAL_CODE = @introducer
  2252. AND AGENT_ID <> 0
  2253. )
  2254. BEGIN
  2255. SELECT @sAgent = AM.AGENTID
  2256. ,@sAgentName = AM.AGENTNAME
  2257. ,@sBranch = AM.AGENTID
  2258. ,@sBranchName = AM.AGENTNAME
  2259. FROM REFERRAL_AGENT_WISE R(NOLOCK)
  2260. INNER JOIN AGENTMASTER AM(NOLOCK) ON AM.AGENTID = R.AGENT_ID
  2261. WHERE REFERRAL_CODE = @introducer
  2262. END
  2263. DECLARE @ADDRESS_TBL_ROW_ID BIGINT
  2264. SELECT @sAdd2 = ISNULL(additionalAddress, '')
  2265. ,@visaStatus = visastatus
  2266. ,@ADDRESS_TBL_ROW_ID = district
  2267. ,@sCustStreet = ISNULL(street, rtrim(ltrim(replace(replace(cast(streetunicode AS VARCHAR), '?', ''), '-', ''))))
  2268. ,@sAdd1 = ISNULL(CITY, '') + ', ' + ISNULL(street, rtrim(ltrim(replace(replace(cast(streetunicode AS VARCHAR), '?', ''), '-', ''))))
  2269. FROM customermaster(NOLOCK)
  2270. WHERE customerid = @senderId
  2271. --IF EXISTS(SELECT * FROM REFERRAL_AGENT_WISE (NOLOCK) WHERE REFERRAL_CODE = @introducer AND AGENT_ID <> 0)
  2272. --BEGIN
  2273. -- SELECT @SAGENT = AM.AGENTID, @SAGENTNAME = AM.AGENTNAME
  2274. -- FROM AGENTMASTER AM(NOLOCK)
  2275. -- INNER JOIN REFERRAL_AGENT_WISE R(NOLOCK) ON R.AGENT_ID = AM.AGENTID
  2276. -- WHERE REFERRAL_CODE = @introducer
  2277. --END
  2278. BEGIN TRANSACTION
  2279. --ANYWHERE
  2280. --IF (
  2281. -- @pCountry = 'Nepal'
  2282. -- AND @deliveryMethodId = 1
  2283. -- )
  2284. --BEGIN
  2285. -- SELECT @pSuperAgent = NULL
  2286. -- ,@pSuperAgentName = NULL
  2287. -- ,@PAGENT = NULL
  2288. -- ,@pAgentName = NULL
  2289. -- ,@pBranch = NULL
  2290. -- ,@pBranchName = NULL
  2291. --END
  2292. SELECT @pBankName = BANK_NAME
  2293. FROM API_BANK_LIST (NOLOCK)
  2294. WHERE BANK_ID = @pbank;
  2295. SELECT @promoCode = PROMOTIONAL_CODE FROM TBL_PROMOTIONAL_CAMAPAIGN WHERE ROW_ID = @promoRowId
  2296. INSERT INTO remitTranTemp (
  2297. controlNo
  2298. ,sCurrCostRate
  2299. ,sCurrHoMargin
  2300. ,sCurrSuperAgentMargin
  2301. ,sCurrAgentMargin
  2302. ,pCurrCostRate
  2303. ,pCurrHoMargin
  2304. ,pCurrSuperAgentMargin
  2305. ,pCurrAgentMargin
  2306. ,agentCrossSettRate
  2307. ,customerRate
  2308. ,sAgentSettRate
  2309. ,pDateCostRate
  2310. ,treasuryTolerance
  2311. ,customerPremium
  2312. ,schemePremium
  2313. ,sharingValue
  2314. --,sharingType
  2315. ,serviceCharge
  2316. ,handlingFee
  2317. ,agentFxGain
  2318. ,sAgentComm
  2319. ,sAgentCommCurrency
  2320. ,sSuperAgentComm
  2321. ,sSuperAgentCommCurrency
  2322. ,pAgentComm
  2323. ,pAgentCommCurrency
  2324. ,pSuperAgentComm
  2325. ,pSuperAgentCommCurrency
  2326. ,promotionCode
  2327. ,promotionType
  2328. ,pMessage
  2329. ,sSuperAgent
  2330. ,sSuperAgentName
  2331. ,sAgent
  2332. ,sAgentName
  2333. ,sBranch
  2334. ,sBranchName
  2335. ,sCountry
  2336. ,pSuperAgent
  2337. ,pSuperAgentName
  2338. ,pAgent
  2339. ,pAgentName
  2340. ,pBranch
  2341. ,pBranchName
  2342. ,pCountry
  2343. ,paymentMethod
  2344. ,pBank
  2345. ,pBankName
  2346. ,pBankBranch
  2347. ,pBankBranchName
  2348. ,accountNo
  2349. ,pBankType
  2350. ,expectedPayoutAgent
  2351. ,collMode
  2352. ,collCurr
  2353. ,tAmt
  2354. ,cAmt
  2355. ,pAmt
  2356. ,payoutCurr
  2357. ,relWithSender
  2358. ,purposeOfRemit
  2359. ,sourceOfFund
  2360. ,tranStatus
  2361. ,payStatus
  2362. ,createdDate
  2363. ,createdDateLocal
  2364. ,createdBy
  2365. ,tranType
  2366. ,voucherNo
  2367. ,senderName
  2368. ,receiverName
  2369. ,pState
  2370. ,pDistrict
  2371. ,pLocation
  2372. --NEW
  2373. ,isScMaunal
  2374. ,originalSC
  2375. ,externalBankCode
  2376. ,isOnBehalf
  2377. ,PayerId
  2378. ,PayerBranchId
  2379. ,sRouteId
  2380. ,company
  2381. ,receiverNameAlt
  2382. ,depositType
  2383. ,rewardPoints
  2384. ,rewardType
  2385. ,isBonusUpdated
  2386. ,schemeId
  2387. )
  2388. SELECT @controlNoEncrypted
  2389. ,@sCurrCostRate
  2390. ,@sCurrHoMargin
  2391. ,@sCurrSuperAgentMargin
  2392. ,@sCurrAgentMargin
  2393. ,@pCurrCostRate
  2394. ,@pCurrHoMargin
  2395. ,@pCurrSuperAgentMargin
  2396. ,@pCurrAgentMargin
  2397. ,@agentCrossSettRate
  2398. ,@exRate
  2399. ,@sAgentSettRate
  2400. ,@pDateCostRate
  2401. ,@treasuryTolerance
  2402. ,@customerPremium
  2403. ,ISNULL(@schemePremium, 0)
  2404. ,@sharingValue
  2405. --,@sharingType
  2406. ,@serviceCharge
  2407. ,ISNULL(@scDiscount, 0)
  2408. ,0
  2409. ,@sAgentComm
  2410. ,@sAgentCommCurrency
  2411. ,@sSuperAgentComm
  2412. ,@sSuperAgentCommCurrency
  2413. ,@pAgentComm
  2414. ,@pAgentCommCurrency
  2415. ,@pSuperAgentComm
  2416. ,@pSuperAgentCommCurrency
  2417. ,@introducer
  2418. ,@promotionType --@promotionCode REPLACED BY ARJUN
  2419. ,@payMsg
  2420. ,@sSuperAgent
  2421. ,@sSuperAgentName
  2422. ,@sAgent
  2423. ,@sAgentName
  2424. ,@sBranch
  2425. ,@sBranchName
  2426. ,@sCountry
  2427. ,@pSuperAgent
  2428. ,@pSuperAgentName
  2429. ,@pAgent
  2430. ,@pAgentName
  2431. ,@pBranch
  2432. ,@pBranchName
  2433. ,@pCountry
  2434. ,@deliveryMethod
  2435. ,@pBank
  2436. ,@pBankName
  2437. ,@pBankBranch
  2438. ,@pBankBranchName
  2439. ,@raccountNo
  2440. ,@pBankType
  2441. ,@pAgentName
  2442. ,@collMode
  2443. ,@collCurr
  2444. ,@tAmt
  2445. ,@cAmt
  2446. ,@pAmt
  2447. ,@pCurr
  2448. ,@relationship + ISNULL(' :' + @relationOther, '')
  2449. ,@purpose + ISNULL(' :' + @purposeOther, '')
  2450. ,@sourceOfFund
  2451. ,'Hold'
  2452. ,'UNPAID'
  2453. ,DBO.FNADateFormatTZ(GETDATE(), @user)
  2454. ,GETDATE()
  2455. ,@user
  2456. ,'I'
  2457. ,''
  2458. ,@senderName
  2459. ,@receiverName
  2460. ,@pLocation
  2461. ,@pSubLocation
  2462. ,@pTownId
  2463. ,CASE
  2464. WHEN ISNULL(@isManualSc, 'N') = 'Y'
  2465. THEN 1
  2466. ELSE 0
  2467. END
  2468. ,@originalSC
  2469. ,@customerDepositedBank
  2470. ,CASE @isOnbehalf
  2471. WHEN 'Y'
  2472. THEN 1
  2473. ELSE 0
  2474. END
  2475. ,@payerId
  2476. ,@payerBranchId
  2477. ,CASE @IsFromTabPage
  2478. WHEN '1'
  2479. THEN '1'
  2480. ELSE '0'
  2481. END
  2482. ,@exRateId
  2483. ,@nameAsPerBank
  2484. ,@paymentOption
  2485. ,ISNULL(@rewardAmount, 0)
  2486. ,CASE
  2487. WHEN (ISNULL(@rewardAmount, 0) > 0 AND @isPromoCode = 'Y')
  2488. THEN ISNULL(@promoCode,'PROMOCODE')
  2489. WHEN (ISNULL(@rewardAmount, 0) > 0 AND @isPromoCode = 'N')
  2490. THEN 'REDEEM'
  2491. ELSE NULL
  2492. END
  2493. ,'N'
  2494. ,@promoRowId
  2495. SET @id = SCOPE_IDENTITY()
  2496. INSERT INTO controlNoList (
  2497. controlNo
  2498. ,createdby
  2499. )
  2500. SELECT @controlNo
  2501. ,'C'
  2502. --UPDATE PROMOTIONAL CAMPAIGN
  2503. --IF ISNULL(@promotionCode, 0) <> 0
  2504. --BEGIN
  2505. -- EXEC PROC_PROMOTIONAL_CAMPAIGN_COUNTRY_WISE @ID = @id
  2506. -- ,@promotionCode = @promotionCode
  2507. -- ,@promotionAmount = @promotionAmount
  2508. --END
  2509. INSERT INTO tranSendersTemp (
  2510. tranId
  2511. ,customerId
  2512. ,membershipId
  2513. ,firstName
  2514. ,middleName
  2515. ,lastName1
  2516. ,lastName2
  2517. ,fullName
  2518. ,country
  2519. ,[address]
  2520. ,address2
  2521. ,zipCode
  2522. ,city
  2523. ,email
  2524. ,homePhone
  2525. ,mobile
  2526. ,nativeCountry
  2527. ,dob
  2528. ,placeOfIssue
  2529. ,idType
  2530. ,idNumber
  2531. ,validDate
  2532. ,occupation
  2533. ,countryRiskPoint
  2534. ,customerRiskPoint
  2535. ,isFirstTran
  2536. ,salary
  2537. ,companyName
  2538. ,cwPwd
  2539. ,ttName
  2540. ,dcInfo
  2541. ,ipAddress
  2542. ,RBA
  2543. --NEW
  2544. ,STATE
  2545. ,district --USE FOR STREET
  2546. ,customerType
  2547. --,ttName--USE FOR BUSINESS TYPE
  2548. ,idPlaceOfIssue
  2549. ,visaStatus
  2550. ,issuedDate
  2551. )
  2552. SELECT @id
  2553. ,@senderId
  2554. ,@memberCode
  2555. ,@sfName
  2556. ,@smName
  2557. ,@slName
  2558. ,@slName2
  2559. ,@senderName
  2560. ,@sCountry
  2561. ,@sAdd1
  2562. ,@sAdd2
  2563. ,@sPostCode
  2564. ,@scity
  2565. ,@sEmail
  2566. ,@sTel
  2567. ,@sMobile
  2568. ,@sNaCountry
  2569. ,@sdob
  2570. ,@sIdTypeId
  2571. ,@sIdType
  2572. ,@sIdNo
  2573. ,@sIdValid
  2574. ,@occupation
  2575. ,@countryRisk
  2576. ,@RBAScoreCustomer
  2577. ,@isFirstTran
  2578. ,@salaryRange
  2579. ,@company
  2580. ,@cwPwd
  2581. ,@ADDRESS_TBL_ROW_ID
  2582. ,@sDcInfo
  2583. ,@sIpAddress
  2584. ,@RBAScoreTxn
  2585. ,@sCustLocation
  2586. ,@sCustStreet
  2587. ,@sCustomerType
  2588. --,@sCustBusinessType
  2589. ,@sCustIdIssuedCountry
  2590. ,@visaStatus
  2591. ,@sCustIdIssuedDate
  2592. INSERT INTO tranReceiversTemp (
  2593. tranId
  2594. ,customerId
  2595. ,membershipId
  2596. ,firstName
  2597. ,middleName
  2598. ,lastName1
  2599. ,lastName2
  2600. ,fullName
  2601. ,country
  2602. ,[address]
  2603. ,zipCode
  2604. ,city
  2605. ,email
  2606. ,homePhone
  2607. ,workPhone
  2608. ,mobile
  2609. ,nativeCountry
  2610. ,dob
  2611. ,placeOfIssue
  2612. ,idType
  2613. ,idNumber
  2614. ,idPlaceOfIssue
  2615. ,issuedDate
  2616. ,validDate
  2617. ,gender
  2618. ,STATE
  2619. ,district
  2620. ,accountNo
  2621. ,goodsType
  2622. ,goodsOrigin
  2623. ,portOfShipment
  2624. )
  2625. SELECT @id
  2626. ,@receiverId
  2627. ,''
  2628. ,@rfName
  2629. ,@rmName
  2630. ,@rlName
  2631. ,@rlName2
  2632. ,@receiverName
  2633. ,@pCountry
  2634. ,@rAdd1
  2635. ,@rPostCode
  2636. ,@rcity
  2637. ,@rEmail
  2638. ,@rTel
  2639. ,@rTel
  2640. ,@rMobile
  2641. ,@rNaCountry
  2642. ,@rdob
  2643. ,NULL
  2644. ,@rIdType
  2645. ,@rIdNo
  2646. ,NULL
  2647. ,NULL
  2648. ,@rIdValid
  2649. ,@rgender
  2650. ,@pLocationText
  2651. ,@pSubLocationText
  2652. ,@raccountNo
  2653. ,@goodsType
  2654. ,@goodsOrigin
  2655. ,@portOfShipment
  2656. --New code added, referral code add #arjun
  2657. EXEC PROC_Customer_LoyaltyV2 @flag = 'update-v2'
  2658. ,@customerId = @senderId
  2659. ,@createdFrom = 'I'
  2660. ,@tranId = @id
  2661. ,@createdBy = @user
  2662. ,@controlNo = @controlNo
  2663. ,@isManualSc = @isManualSc
  2664. ,@referralCode = @introducer
  2665. ,@serviceCharge = @iServiceCharge
  2666. DECLARE @NewId uniqueidentifier
  2667. SET @NewId = NEWID()
  2668. INSERT INTO TRU_TranDetail
  2669. (
  2670. refId,
  2671. email,
  2672. createddate,
  2673. orderreference,
  2674. sitereference,
  2675. Tranid,
  2676. customerid,
  2677. token,
  2678. recordStatus
  2679. )
  2680. VALUES
  2681. (
  2682. @NewId
  2683. ,@user
  2684. ,GETDATE()
  2685. ,@controlNo
  2686. ,@sitereference
  2687. ,@id
  2688. ,@senderId
  2689. ,''
  2690. ,'DRAFT'
  2691. )
  2692. -- UPDATE FOR CUSTOMER LOYALTY
  2693. --IF EXISTS (
  2694. -- SELECT TOP 1 1
  2695. -- FROM REFERRAL_AGENT_WISE
  2696. -- WHERE REFERRAL_TYPE_CODE IN (
  2697. -- 'RB'
  2698. -- ,'RC'
  2699. -- )
  2700. -- AND REFERRAL_CODE = @introducer
  2701. -- )
  2702. --BEGIN
  2703. -- IF @isEligible = 'Y'
  2704. -- BEGIN
  2705. -- EXEC PROC_Customer_Loyalty @flag = 'update'
  2706. -- ,@customerId = @SenderId
  2707. -- ,@tranId = @id
  2708. -- ,@createdFrom = 'I'
  2709. -- ,@reqTranCount = @tranCount
  2710. -- ,@schemeCount = @schemeCount
  2711. -- ,@isManualSc = @isManualSc
  2712. -- ,@serviceCharge = @iServiceCharge
  2713. -- ,@createdBy = @user
  2714. -- ,@controlNo = @controlNo
  2715. -- END
  2716. --END
  2717. IF (@iServiceCharge <> @calculatedOriginalSc)
  2718. AND ISNULL(@isManualSc, 'Y') = 'Y'
  2719. BEGIN
  2720. UPDATE remitTranTemp
  2721. SET isScMaunal = 1
  2722. ,originalSC = @calculatedOriginalSc
  2723. ,company = 'M'
  2724. WHERE id = @id
  2725. END
  2726. --SELECT @sourceOfFund = valueId FROM dbo.staticDataValue WHERE detailTitle = @sourceOfFund and typeID = '3900'
  2727. DECLARE @SOURCE INT
  2728. ,@PURPOSEID INT
  2729. ,@RELATION INT
  2730. ,@OCCUPATIONID INT
  2731. SELECT @SOURCE = valueId
  2732. FROM STATICDATAVALUE(NOLOCK)
  2733. WHERE detailTitle = @sourceOfFund
  2734. AND typeID = '3900'
  2735. SELECT @PURPOSEID = valueId
  2736. FROM STATICDATAVALUE(NOLOCK)
  2737. WHERE detailTitle = @purpose
  2738. AND typeID = '3800'
  2739. SELECT @RELATION = valueId
  2740. FROM STATICDATAVALUE(NOLOCK)
  2741. WHERE detailTitle = @relationship
  2742. AND typeID = '2100'
  2743. SELECT @OCCUPATIONID = valueId
  2744. FROM STATICDATAVALUE(NOLOCK)
  2745. WHERE valueId = @occupation
  2746. AND typeID = '2000'
  2747. EXEC PROC_CUSTOMERMODIFYLOG @flag = 'i-fromSendPage'
  2748. ,@user = @user
  2749. ,@customerId = @senderId
  2750. ,@mobileNumber = @sMobile
  2751. ,@monthlyIncome = @salaryRange
  2752. ,@email = @sEmail
  2753. ,@placeofissue = @sCustIdIssuedCountry
  2754. ,@occupation = @OCCUPATIONID
  2755. ,@sourceOfFund = @SOURCE
  2756. UPDATE CUSTOMERMASTER
  2757. SET mobile = ISNULL(@sMobile, mobile)
  2758. ,monthlyincome = ISNULL(@salaryRange, monthlyincome)
  2759. ,email = ISNULL(@sEmail, email)
  2760. ,placeofissue = ISNULL(@sCustIdIssuedCountry, placeofissue)
  2761. ,occupation = ISNULL(@OCCUPATIONID, occupation)
  2762. ,sourceOfFund = ISNULL(@SOURCE, sourceOfFund)
  2763. WHERE CUSTOMERID = @senderId
  2764. EXEC PROC_RECEIVERMODIFYLOGS @flag = 'i-fromSendPage'
  2765. ,@address = @rAdd1
  2766. ,@email = @rEmail
  2767. ,@mobile = @rMobile
  2768. ,@receiverId = @receiverId
  2769. ,@customerId = @senderId
  2770. UPDATE RECEIVERINFORMATION
  2771. SET address = ISNULL(@rAdd1, address)
  2772. ,mobile = ISNULL(@rMobile, mobile)
  2773. ,email = ISNULL(@rEmail, email)
  2774. ,purposeOfRemit = ISNULL(@PURPOSEID, purposeOfRemit)
  2775. ,relationship = ISNULL(@RELATION, relationship)
  2776. ,bankBranchName = ISNULL(@pBankBranchName, bankBranchName)
  2777. WHERE receiverId = @receiverId
  2778. IF @collMode = 'Cash Collect'
  2779. BEGIN
  2780. SELECT @userId = userId
  2781. FROM APPLICATIONUSERS
  2782. WHERE USERNAME = @USER
  2783. EXEC PROC_UPDATE_AVAILABALE_BALANCE @FLAG = 'SEND'
  2784. ,@S_AGENT = @sAgent
  2785. ,@S_USER = @userId
  2786. ,@C_AMT = @cAmt
  2787. ,@REFERRAL_CODE = @introducer
  2788. ,@ONBEHALF = @isOnbehalf
  2789. END
  2790. ELSE
  2791. BEGIN
  2792. EXEC PROC_INSERT_JP_DEPOSIT_TXN_LOG @FLAG = 'I'
  2793. ,@TRANID = @id
  2794. ,@CUSTOMERID = @senderId
  2795. ,@CAMT = @cAmt
  2796. END
  2797. DECLARE @PARTICULARS VARCHAR(200) = 'Send TXN: ' + @controlNo
  2798. EXEC proc_customerTxnHistory @controlNo = @controlNoEncrypted
  2799. DECLARE @XMLDATA XML;
  2800. IF ISNULL(@isAdditionalCDDI, 'N') = 'Y'
  2801. BEGIN
  2802. SET @XMLDATA = CONVERT(XML, REPLACE(@additionalCDDIXml, '&', '&amp;'), 2)
  2803. SELECT ID = p.value('@id', 'varchar(150)')
  2804. ,ANSWER = p.value('@answer', 'varchar(500)')
  2805. INTO #TRANSACTION_COMPLIANCE_CDDI
  2806. FROM @XMLDATA.nodes('/root/row') AS tmp(p);
  2807. INSERT INTO TBL_TXN_COMPLIANCE_CDDI
  2808. SELECT @id
  2809. ,ID
  2810. ,ANSWER
  2811. FROM #TRANSACTION_COMPLIANCE_CDDI
  2812. END
  2813. ----UPDATE BRANCH/AGENT CREDIT LIMIT
  2814. --EXEC Proc_AgentBalanceUpdate_INT @flag = 's',@tAmt = @cAmt ,@settlingAgent = @settlingAgent
  2815. --10. Compliance----------------------------------------------------------------------------------------------------
  2816. IF EXISTS (
  2817. SELECT 'X'
  2818. FROM remitTranComplianceTemp WITH (NOLOCK)
  2819. WHERE agentRefId = @agentRefId
  2820. )
  2821. BEGIN
  2822. INSERT INTO remitTranCompliance (
  2823. TranId
  2824. ,csDetailTranId
  2825. ,matchTranId
  2826. ,reason
  2827. )
  2828. SELECT @id
  2829. ,csDetailTranId
  2830. ,matchTranId
  2831. ,reason
  2832. FROM remitTranComplianceTemp WITH (NOLOCK)
  2833. WHERE agentRefId = @agentRefId
  2834. SET @compFinalRes = 'C'
  2835. UPDATE ComplianceLog
  2836. SET tranId = @id
  2837. WHERE agentRefId = @agentRefId
  2838. END
  2839. IF EXISTS (
  2840. SELECT 'X'
  2841. FROM @remitTranTemp
  2842. WHERE dot BETWEEN CONVERT(VARCHAR, GETDATE(), 101)
  2843. AND CONVERT(VARCHAR, GETDATE(), 101) + ' 23:59:59'
  2844. AND cAmt = @cAmt
  2845. AND (
  2846. receiverName = @receiverName
  2847. OR (
  2848. ISNULL(receiverIdType, '0') = @rIdType
  2849. AND ISNULL(receiverIdNumber, '0') = @rIdNo
  2850. )
  2851. )
  2852. )
  2853. BEGIN
  2854. INSERT INTO remitTranCompliance (
  2855. TranId
  2856. ,csDetailTranId
  2857. ,matchTranId
  2858. ,reason
  2859. )
  2860. SELECT @id
  2861. ,0
  2862. ,tranid
  2863. ,'Suspected duplicate transaction'
  2864. FROM @remitTranTemp
  2865. WHERE cAmt = @cAmt
  2866. AND (
  2867. receiverName = @receiverName
  2868. OR (
  2869. ISNULL(receiverIdType, '0') = @rIdType
  2870. AND ISNULL(receiverIdNumber, '0') = @rIdNo
  2871. )
  2872. )
  2873. SET @compFinalRes = 'C'
  2874. END
  2875. ELSE
  2876. BEGIN
  2877. IF EXISTS (
  2878. SELECT 'X'
  2879. FROM @moneySendTemp
  2880. WHERE paidAmt = @cAmt
  2881. AND (
  2882. receiverName = @receiverName
  2883. OR (
  2884. ISNULL(receiverIdDescription, '0') = @rIdType
  2885. AND ISNULL(receiverIdDetail, '0') = @rIdNo
  2886. )
  2887. )
  2888. )
  2889. BEGIN
  2890. INSERT INTO remitTranCompliance (
  2891. TranId
  2892. ,csDetailTranId
  2893. ,matchTranId
  2894. ,reason
  2895. )
  2896. SELECT @id
  2897. ,0
  2898. ,tranNo
  2899. ,'Suspected duplicate transaction from Inficare system'
  2900. FROM @moneySendTemp
  2901. WHERE paidAmt = @cAmt
  2902. AND (
  2903. receiverName = @receiverName
  2904. OR (
  2905. ISNULL(receiverIdDescription, '0') = @rIdType
  2906. AND ISNULL(receiverIdDetail, '0') = @rIdNo
  2907. )
  2908. )
  2909. SET @compFinalRes = 'C'
  2910. END
  2911. END
  2912. IF (
  2913. ISNULL(@compFinalRes, '') <> ''
  2914. OR ISNULL(@ofacRes, '') <> ''
  2915. )
  2916. BEGIN
  2917. CREATE TABLE #temp (
  2918. sno INT
  2919. ,rmrks NVARCHAR(MAX)
  2920. )
  2921. SELECT @checkNameBy = TRACK_BY
  2922. FROM OFACSETTING(NOLOCK)
  2923. IF ISNULL(@checkNameBy, 'OFAC') = 'OFAC'
  2924. BEGIN
  2925. INSERT INTO #temp (
  2926. sno
  2927. ,rmrks
  2928. )
  2929. EXEC proc_sendPageLoadData @flag = 'ofac'
  2930. ,@user = @user
  2931. ,@blackListIds = @ofacRes
  2932. END
  2933. ELSE
  2934. BEGIN
  2935. INSERT INTO #temp (
  2936. sno
  2937. ,rmrks
  2938. )
  2939. EXEC proc_sendPageLoadData @flag = 'ofac'
  2940. ,@user = @user
  2941. ,@blackListIds = @ofacRes
  2942. ,@TRACK_BY = 'DJ'
  2943. END
  2944. DECLARE @ofacResult NVARCHAR(MAX)
  2945. SET @ofacResult = (
  2946. SELECT *
  2947. FROM #temp
  2948. FOR JSON AUTO
  2949. )
  2950. IF (
  2951. @ofacRes <> ''
  2952. AND ISNULL(@compFinalRes, '') = ''
  2953. )
  2954. BEGIN
  2955. INSERT remitTranOfac (
  2956. TranId
  2957. ,blackListId
  2958. ,reason
  2959. ,flag
  2960. ,TRACK_BY
  2961. ,ofacDetail
  2962. )
  2963. SELECT @id
  2964. ,@ofacRes
  2965. ,@ofacReason
  2966. ,CASE
  2967. WHEN @trackBy = 'OFAC'
  2968. THEN dbo.FNAGetOFAC_Flag(@ofacRes)
  2969. ELSE 'D'
  2970. END
  2971. ,@checkNameBy
  2972. ,@ofacResult
  2973. UPDATE remitTranTemp
  2974. SET tranStatus = 'OFAC Hold'
  2975. WHERE controlNo = @controlNoEncrypted
  2976. END
  2977. ELSE IF (
  2978. @compFinalRes <> ''
  2979. AND ISNULL(@ofacRes, '') = ''
  2980. )
  2981. BEGIN
  2982. UPDATE remitTranTemp
  2983. SET tranStatus = 'Compliance Hold'
  2984. WHERE controlNo = @controlNoEncrypted
  2985. END
  2986. ELSE IF (
  2987. ISNULL(@compFinalRes, '') <> ''
  2988. AND ISNULL(@ofacRes, '') <> ''
  2989. )
  2990. BEGIN
  2991. INSERT remitTranOfac (
  2992. TranId
  2993. ,blackListId
  2994. ,reason
  2995. ,flag
  2996. ,TRACK_BY
  2997. ,ofacDetail
  2998. )
  2999. SELECT @id
  3000. ,@ofacRes
  3001. ,@ofacReason
  3002. ,CASE
  3003. WHEN @trackBy = 'OFAC'
  3004. THEN dbo.FNAGetOFAC_Flag(@ofacRes)
  3005. ELSE 'D'
  3006. END
  3007. ,@checkNameBy
  3008. ,@ofacResult
  3009. UPDATE remitTranTemp
  3010. SET tranStatus = 'OFAC/Compliance Hold'
  3011. WHERE controlNo = @controlNoEncrypted
  3012. END
  3013. END
  3014. IF @LIMITERRORCODE <> 0
  3015. AND @RULETYPE = 'H'
  3016. AND @COLLMODE = 'CASH COLLECT'
  3017. BEGIN
  3018. UPDATE remitTranTemp
  3019. SET tranStatus = CASE
  3020. WHEN tranStatus = 'Compliance Hold'
  3021. THEN 'Cash Limit/Compliance Hold'
  3022. WHEN tranStatus = 'OFAC Hold'
  3023. THEN 'Cash Limit/OFAC Hold'
  3024. WHEN tranStatus = 'OFAC/Compliance Hold'
  3025. THEN 'Cash Limit/OFAC/Compliance Hold'
  3026. ELSE 'Cash Limit Hold'
  3027. END
  3028. WHERE controlNo = @controlNoEncrypted
  3029. INSERT INTO dbo.remitTranCashLimitHold (
  3030. tranId
  3031. ,approvedRemarks
  3032. ,approvedBy
  3033. ,approvedDate
  3034. ,reason
  3035. )
  3036. VALUES (
  3037. @id
  3038. ,-- tranId - bigint
  3039. NULL
  3040. ,-- approvedRemarks - varchar(150)
  3041. NULL
  3042. ,-- approvedBy - varchar(80)
  3043. NULL
  3044. ,-- approvedDate - datetime
  3045. NULL -- reason - varchar(500)
  3046. )
  3047. END
  3048. --New logic for referral
  3049. IF (ISNULL(@rewardAmount, 0) > 0 AND @isPromoCode = 'N')
  3050. EXEC proc_InsertRewardPoints @Flag = 'DEBIT', @CustomerId = @senderId, @rewardPoints = @rewardAmount, @TranId = @id
  3051. IF @@TRANCOUNT > 0
  3052. COMMIT TRANSACTION
  3053. IF (
  3054. @complianceRes = 'C'
  3055. OR @ofacRes <> ''
  3056. )
  3057. BEGIN
  3058. SELECT 101 errorCode
  3059. ,'Transaction under compliance' msg
  3060. ,@controlNo id
  3061. ,@id extra
  3062. ,@paymentOption extra2
  3063. ,@NewId extra3
  3064. RETURN
  3065. END
  3066. SELECT 100 errorCode
  3067. ,'Transaction has been sent successfully and is waiting for approval' msg
  3068. ,@controlNo id
  3069. ,@id extra
  3070. ,@paymentOption extra2
  3071. ,@NewId extra3
  3072. END
  3073. ELSE IF @flag = 'exRate' --Get Exchange Rate, Service Charge, Scheme/Offer and amount details
  3074. BEGIN
  3075. IF @partnerId IS NOT NULL --AND @pCountryId = '203'
  3076. SELECT @payoutPartner = AGENTID
  3077. ,@exRateCalByPartner = ISNULL(exRateCalByPartner, 0)
  3078. FROM TblPartnerwiseCountry(NOLOCK)
  3079. WHERE CountryId = @pCountryId
  3080. AND IsActive = 1
  3081. AND ISNULL(PaymentMethod, @deliveryMethod) = @deliveryMethod
  3082. AND AGENTID = @partnerId
  3083. ELSE
  3084. SELECT @payoutPartner = AGENTID
  3085. ,@exRateCalByPartner = ISNULL(exRateCalByPartner, 0)
  3086. FROM TblPartnerwiseCountry(NOLOCK)
  3087. WHERE CountryId = @pCountryId
  3088. AND IsActive = 1
  3089. AND ISNULL(PaymentMethod, @deliveryMethod) = @deliveryMethod
  3090. IF @payoutPartner IS NOT NULL
  3091. BEGIN
  3092. --GET PAYOUT AGENT DETAILS
  3093. SELECT @PAGENT = AGENTID
  3094. FROM AGENTMASTER(NOLOCK)
  3095. WHERE PARENTID = @payoutPartner
  3096. AND ISNULL(ISSETTLINGAGENT, 'N') = 'Y';
  3097. SELECT @pSuperAgent = sSuperAgent
  3098. ,@pSuperAgentName = sSuperAgentName
  3099. ,@pAgent = sAgent
  3100. ,@pAgentName = sAgentName
  3101. ,@pBranch = sBranch
  3102. ,@pBranchName = sBranchName
  3103. FROM dbo.FNAGetBranchFullDetails(@PAGENT)
  3104. END
  3105. ELSE
  3106. BEGIN
  3107. SELECT '1' ErrCode
  3108. ,'Partner not yet mapped for the selected country!' Msg
  3109. ,NULL id
  3110. RETURN
  3111. END
  3112. DECLARE @rowId INT
  3113. SELECT @scValue = 0
  3114. ,@scOffer = 0
  3115. ,@exRateOffer = 0
  3116. ,@scDiscount = 0
  3117. --2. Find Decimal Mask for payout amount rounding
  3118. SELECT @pCurr = pCurrency
  3119. FROM dbo.exRateTreasury WITH (NOLOCK)
  3120. WHERE pCountry = @pCountryId
  3121. AND pAgent = @pAgent
  3122. IF @pCurr IS NULL
  3123. SELECT @pCurr = pCurrency
  3124. FROM dbo.exRateTreasury WITH (NOLOCK)
  3125. WHERE pCountry = @pCountryId
  3126. AND pAgent IS NULL
  3127. SELECT @place = place
  3128. ,@currDecimal = currDecimal
  3129. FROM currencyPayoutRound WITH (NOLOCK)
  3130. WHERE ISNULL(isDeleted, 'N') = 'N'
  3131. AND currency = @pCurr
  3132. AND ISNULL(tranType, @deliveryMethod) = @deliveryMethod
  3133. SET @currDecimal = ISNULL(@currDecimal, 0)
  3134. IF @pCurr IS NULL
  3135. BEGIN
  3136. SELECT '1' ErrCode
  3137. ,'Currency not been defined yet for receiving country' Msg
  3138. ,NULL id
  3139. RETURN
  3140. END
  3141. IF @pCountryId = 151
  3142. AND @deliveryMethod = 1
  3143. BEGIN
  3144. SELECT AgentId
  3145. INTO #AgentList
  3146. FROM agentMaster(NOLOCK)
  3147. WHERE extCode = 'NP ANYWHERE'
  3148. print 'del1'
  3149. SELECT @exRate = MAX(customerRate)
  3150. FROM #AgentList A
  3151. CROSS APPLY dbo.FNAGetExRate(@sCountryId, @sAgent, @sBranch, @collCurr, @pCountryId, AgentId, @pCurr, @deliveryMethod) FN
  3152. print @exRate
  3153. print 'del1'
  3154. END
  3155. ELSE
  3156. BEGIN
  3157. print 'del2'
  3158. SELECT @exRate = dbo.FNAGetCustomerRate(@sCountryId, @sAgent, @sBranch, @collCurr, @pCountryId, @pAgent, @pCurr, @deliveryMethod)
  3159. print @exRate
  3160. print 'del2'
  3161. END
  3162. IF ISNULL(@exRate, 0) = 0
  3163. BEGIN
  3164. SELECT '1' ErrCode
  3165. ,'Exchange rate not defined yet for receiving currency (' + @pCurr + ')' Msg
  3166. ,NULL id
  3167. RETURN
  3168. END
  3169. DECLARE @rate FLOAT, @promRate FLOAT
  3170. SELECT @rate = ISNULL(margin,0), @promRate = ISNULL(purchaseRate,0) FROM countryWiseExchangeRate WHERE countryId = @pCountryId
  3171. IF EXISTS(SELECT 'X' FROM vwtransenders WHERE customerId = @senderId)
  3172. BEGIN
  3173. IF @tpExRate > 0
  3174. BEGIN
  3175. SET @exRate = @exRate - (ISNULL(@tpExRate, @rate) + @promRate)
  3176. END
  3177. ELSE
  3178. BEGIN
  3179. SET @exRate = @exRate - (ISNULL(@tpExRate , @rate))
  3180. END
  3181. END
  3182. ELSE
  3183. BEGIN
  3184. SET @exRate = @exRate - (ISNULL(@tpExRate , @rate))
  3185. END
  3186. --New code added, referral code add #arjun
  3187. --EXEC PROC_Customer_LoyaltyV2 @flag = 'check-eligible-v2'
  3188. -- ,@isEligible = @isEligible OUT
  3189. -- ,@referralCode = @introducer
  3190. -- ,@tranCount = @trancount OUT
  3191. -- ,@schemeCount = @schemeCount OUT
  3192. -- ,@customerId = @senderId
  3193. -- ,@createdFrom = 'I'
  3194. --IF EXISTS (
  3195. -- SELECT TOP 1 1
  3196. -- FROM REFERRAL_AGENT_WISE
  3197. -- WHERE REFERRAL_TYPE_CODE IN (
  3198. -- 'RB'
  3199. -- ,'RC'
  3200. -- )
  3201. -- AND REFERRAL_CODE = @introducer
  3202. -- )
  3203. --BEGIN
  3204. -- EXEC PROC_Customer_Loyalty @flag = 'check-eligible'
  3205. -- ,@isEligible = @isEligible OUT
  3206. --END
  3207. --EXEC proc_Customer_Loyalty @flag = 'get-tranCount'
  3208. -- ,@tranCount = @trancount OUT
  3209. -- ,@customerId = @senderId
  3210. --SELECT TOP 1 @schemeCount = txnCount
  3211. --FROM schemeSetup(NOLOCK)
  3212. --ORDER BY createdDate DESC
  3213. pRINT @schemeCount;
  3214. pRINT @isEligible;
  3215. pRINT @trancount;
  3216. DECLARE @ValidationResult TABLE (
  3217. IS_VALID VARCHAR(50),
  3218. ROW_ID INT,
  3219. PROMOTIONAL_CODE VARCHAR(50),
  3220. PROMOTIONAL_MSG VARCHAR(255),
  3221. -- PROMOTION_TYPE INT,
  3222. PROMOTION_VALUE MONEY,
  3223. MIN_SENDING_AMT MONEY,
  3224. START_DT DATETIME,
  3225. END_DT DATETIME
  3226. )
  3227. DECLARE @availableRewardAmt INT, @row_id INT, @promoValue MONEY, @minSendAmt MONEY, @startDate DATETIME, @endDate DATETIME, @errMsg VARCHAR(100)
  3228. SELECT @availableRewardAmt = CAST(dbo.[FNA_GET_AVAILABLE_BALANCE_POINTS](@senderId) AS INT)
  3229. DECLARE @minCollAmt MONEY, @maxRewardAmt MONEY
  3230. SELECT @maxRewardAmt = CAST(detailDesc AS MONEY) FROM staticDataValue WHERE valueId = '11492' AND detailTitle = 'MAX_REWRAD_AMT'
  3231. SELECT @minCollAmt = CAST(detailDesc AS MONEY) FROM staticDataValue WHERE valueId = '11491' AND detailTitle = 'MIN_COLL_AMT_FOR_REWARD'
  3232. IF ISNUMERIC(ISNULL(@rewardAmt,0)) = 1
  3233. BEGIN
  3234. SET @isPromoCode = 'N'
  3235. IF (ISNULL(@rewardAmt ,0)> 0)
  3236. BEGIN
  3237. IF (@availableRewardAmt < ISNULL(@rewardAmt, 0))
  3238. BEGIN
  3239. SELECT '1' ErrCode
  3240. ,'You do not have sufficient Rewards!'
  3241. ,NULL id
  3242. RETURN;
  3243. END
  3244. END
  3245. IF(ISNULL(@rewardAmt, 0) > ISNULL(@availableRewardAmt,0))
  3246. BEGIN
  3247. SELECT '1' ErrCode
  3248. ,'Please enter the valid point. The amount cannot be more than available Reward Amount!' Msg
  3249. ,NULL id
  3250. RETURN
  3251. END
  3252. DECLARE @rewardAmtMoney MONEY = CAST(@rewardAmt AS MONEY)
  3253. IF (@rewardAmtMoney > 0.00 AND @cAmt < @minCollAmt AND @rewardAmtMoney > @maxRewardAmt)
  3254. BEGIN
  3255. SELECT '1' ErrCode
  3256. ,'The maximum reward amount per transaction is ' + CAST(@maxRewardAmt AS VARCHAR(20)) + ' Pounds and the minimum amount that can be sent for each transaction is ' + CAST(@minCollAmt AS VARCHAR(20)) + ' Pounds' Msg
  3257. ,NULL id
  3258. RETURN;
  3259. END
  3260. IF (@rewardAmtMoney > 0.00 AND @rewardAmtMoney > @maxRewardAmt)
  3261. BEGIN
  3262. SELECT '1' ErrCode
  3263. ,'The maximum reward amount per transaction is ' + CAST(@maxRewardAmt AS VARCHAR(20)) + ' Pounds' Msg
  3264. ,NULL id
  3265. RETURN;
  3266. END
  3267. IF (@rewardAmtMoney > 0.00 AND @cAmt < @minCollAmt)
  3268. BEGIN
  3269. SELECT '1' ErrCode
  3270. ,'The minimum amount that can be sent for each transaction is ' + CAST(@minCollAmt AS VARCHAR(20)) + ' Pounds' Msg
  3271. ,NULL id
  3272. RETURN;
  3273. END
  3274. END
  3275. ELSE
  3276. BEGIN
  3277. print 'promo'
  3278. SET @isPromoCode = 'Y'
  3279. INSERT INTO @ValidationResult (IS_VALID, ROW_ID, PROMOTIONAL_CODE, PROMOTIONAL_MSG, PROMOTION_VALUE, MIN_SENDING_AMT, START_DT, END_DT)
  3280. EXEC proc_CheckPromoValidity @flag='chk-validity', @countryId=@pCountryId, @pmode= @deliveryMethod, @promoCode = @rewardAmt
  3281. IF EXISTS (SELECT 'X' FROM @ValidationResult WHERE IS_VALID = 'VALID')
  3282. BEGIN
  3283. SELECT @row_id = ROW_ID, @promoValue = PROMOTION_VALUE, @minSendAmt = MIN_SENDING_AMT, @startDate = START_DT, @endDate = END_DT FROM @ValidationResult WHERE IS_VALID = 'VALID'
  3284. SET @rewardAmt = @promoValue
  3285. IF (@cAmt < @minSendAmt)
  3286. BEGIN
  3287. SELECT '1' ErrCode
  3288. ,'The minimum amount per transaction should be ' + CAST(@minSendAmt AS VARCHAR(20)) + ' Pounds to use Promo Code' Msg
  3289. ,NULL id
  3290. RETURN;
  3291. END
  3292. END
  3293. ELSE
  3294. BEGIN
  3295. SELECT @errMsg = PROMOTIONAL_MSG FROM @ValidationResult WHERE IS_VALID = 'INVALID'
  3296. SELECT '1' ErrCode
  3297. ,@errMsg Msg
  3298. RETURN
  3299. END
  3300. END
  3301. --IF EXISTS (SELECT 'X' FROM tranSendersTemp tst
  3302. -- LEFT JOIN remitTranTemp rtt on rtt.id = tst.tranId where rtt.rewardType = 'PROMOCODE' AND tst.customerId = @customerId AND rtt.createdDate BETWEEN @startDate AND @endDate)
  3303. --BEGIN
  3304. -- SELECT '1' ErrCode
  3305. -- ,'Promo Code already used!'
  3306. -- ,NULL id
  3307. -- RETURN;
  3308. --END
  3309. --IF EXISTS(SELECT 'X' FROM tranSenders ts
  3310. -- LEFT JOIN remitTran rt on rt.id = ts.tranId where rt.rewardType = 'PROMOCODE' AND ts.customerId = @customerId AND rt.createdDate BETWEEN @startDate AND @endDate)
  3311. --BEGIN
  3312. -- SELECT '1' ErrCode
  3313. -- ,'Promo Code already used!'
  3314. -- ,NULL id
  3315. -- RETURN;
  3316. --END
  3317. IF ISNULL(@cAmt, 0.00) <> 0.00
  3318. BEGIN
  3319. IF @isEligible = 'Y'
  3320. BEGIN
  3321. SET @serviceCharge = 0
  3322. SET @isFreeSc = 'Y'
  3323. END
  3324. ELSE
  3325. BEGIN
  3326. SELECT @calcOriginalSc = amount
  3327. FROM [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethod, @cAmt, @collCurr)
  3328. IF ISNULL(@isManualSc, 'N') = 'N'
  3329. BEGIN
  3330. print 'manual'
  3331. SELECT @serviceCharge = amount
  3332. FROM [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethod, @cAmt, @collCurr)
  3333. END
  3334. ELSE
  3335. BEGIN
  3336. SET @serviceCharge = ISNULL(@manualSc, 0)
  3337. END
  3338. IF @serviceCharge IS NULL
  3339. AND ISNULL(@isManualSc, 'N') = 'N'
  3340. BEGIN
  3341. SELECT '1' ErrCode
  3342. ,'Service charge not defined yet for receiving country' Msg
  3343. ,NULL id
  3344. RETURN;
  3345. END
  3346. END
  3347. IF @scAction = 'PD' -- Percent Discount
  3348. BEGIN
  3349. SET @scOffer = (@scValue / 100) * @serviceCharge
  3350. SET @scDiscount = (@scValue / 100) * @serviceCharge
  3351. END
  3352. ELSE IF @scAction = 'FD' -- Flat Discount
  3353. BEGIN
  3354. SET @scDiscount = @scValue
  3355. END
  3356. ELSE IF @scAction = 'FV' -- Fixed Value
  3357. BEGIN
  3358. SET @scOffer = @scValue
  3359. SET @scDiscount = @serviceCharge - @scValue
  3360. END
  3361. SET @tAmt = @cAmt - @serviceCharge + @scDiscount + ISNULL(@rewardAmt,0)
  3362. SET @pAmt = @tAmt * (@exRate + @exRateOffer)
  3363. --SET @pAmt = FLOOR(@pAmt)
  3364. print 'payam'
  3365. print @pAmt
  3366. print 'another'
  3367. SET @pAmt =Cast(Round(@pAmt,2,1) as decimal(18,2));
  3368. print @pAmt
  3369. END
  3370. ELSE
  3371. BEGIN
  3372. SET @tAmt = @pAmt/(@exRate + @exRateOffer);
  3373. SET @tAmt=Cast(Round(@tAmt,2,1) as decimal(18,2))
  3374. --SET @tAmt = CEILING(@pAmt / (@exRate + @exRateOffer))
  3375. IF @isEligible = 'Y'
  3376. BEGIN
  3377. SET @serviceCharge = 0
  3378. SET @isFreeSc = 'Y'
  3379. END
  3380. ELSE
  3381. BEGIN
  3382. PRINT @tAmt;
  3383. PRINT @pAgent
  3384. PRINT @pBranch
  3385. PRINT @deliveryMethod
  3386. PRINT @collCurr
  3387. SELECT @calcOriginalSc = amount
  3388. FROM [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethod, @tAmt, @collCurr)
  3389. IF ISNULL(@isManualSc, 'N') = 'N'
  3390. BEGIN
  3391. SELECT @serviceCharge = @calcOriginalSc --amount
  3392. --FROM [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethod, @tAmt, @collCurr)
  3393. END
  3394. ELSE
  3395. BEGIN
  3396. SET @serviceCharge = ISNULL(@manualSc, 0)
  3397. END
  3398. IF @serviceCharge IS NULL
  3399. BEGIN
  3400. SELECT '1' ErrCode
  3401. ,'Service charge not defined yet for receiving country' Msg
  3402. ,NULL id
  3403. RETURN;
  3404. END
  3405. END
  3406. IF @scAction = 'PD'
  3407. BEGIN
  3408. SET @scOffer = (@scValue / 100) * @serviceCharge
  3409. SET @scDiscount = (@scValue / 100) * @serviceCharge
  3410. END
  3411. ELSE IF @scAction = 'FD'
  3412. BEGIN
  3413. SET @scDiscount = @scValue
  3414. END
  3415. ELSE IF @scAction = 'FV'
  3416. BEGIN
  3417. SET @scOffer = @scValue
  3418. SET @scDiscount = @serviceCharge - @scValue
  3419. END
  3420. SET @cAmt = (@tAmt + @serviceCharge - @scDiscount)
  3421. --SET @cAmt = ROUND(@cAmt, 2)
  3422. --SET @cAmt = CEILING(@cAmt)
  3423. SET @cAmt =Cast(Round(@cAmt,2,1) as decimal(18,2))
  3424. END
  3425. --New validation negative coll amt due to manual service charge added
  3426. IF @pAmt <= 0
  3427. OR @tAmt <= 0
  3428. OR @cAmt <= 0
  3429. BEGIN
  3430. SELECT '1' ErrCode
  3431. ,'Invalid payout/transfer amount/collect amount found!' Msg
  3432. ,NULL id
  3433. RETURN;
  3434. END
  3435. ----validate cash hold limit of branch/user
  3436. --EXEC PROC_CHECK_BRANCH_USER_CASH_HOLD_LIMIT @USER = @USER, @CAMT = @CAMT, @ERRORCODE = @LIMITERRORCODE OUT
  3437. -- , @ERRORMSG = @msg OUT, @RULETYPE = @RULETYPE OUT
  3438. --IF @LIMITERRORCODE <> 0 AND @RULETYPE = 'B' AND @collMode = 'CASH COLLECT'
  3439. --BEGIN
  3440. -- SELECT '1' ErrCode, 'Branch/User cash hold limit is exceeded, please contact head office!' Msg,NULL id
  3441. -- RETURN
  3442. --END
  3443. --4. Validate Country Sending Limit
  3444. print 'here'
  3445. print @cAmt
  3446. print @pAmt
  3447. print @sCountryId
  3448. print @collMode
  3449. print @deliveryMethod
  3450. print @sendingCustType
  3451. print @pCountryId
  3452. print @pCurr
  3453. print @collCurr
  3454. print @pAgent
  3455. print @sAgent
  3456. print @sBranch
  3457. print 'end'
  3458. EXEC PROC_CHECKCOUNTRYLIMIT @flag = 's-limit'
  3459. ,@cAmt = @cAmt
  3460. ,@pAmt = @pAmt
  3461. ,@sCountryId = @sCountryId
  3462. ,@collMode = @collMode
  3463. ,@deliveryMethod = @deliveryMethod
  3464. ,@sendingCustType = @sendingCustType
  3465. ,@pCountryId = @pCountryId
  3466. ,@pCurr = @pCurr
  3467. ,@collCurr = @collCurr
  3468. ,@pAgent = @pAgent
  3469. ,@sAgent = @sAgent
  3470. ,@sBranch = @sBranch
  3471. ,@msg = @msg OUT
  3472. ,@errorCode = @errorCode OUT
  3473. IF @errorCode <> '0'
  3474. BEGIN
  3475. SELECT @errorCode ErrCode
  3476. ,@msg Msg
  3477. RETURN;
  3478. END
  3479. PRINT @cAmt
  3480. print 'pan'
  3481. PRINT @pAmt
  3482. print 'can'
  3483. PRINT @sCountryId
  3484. PRINT @collMode
  3485. PRINT @deliveryMethod
  3486. --Validate Country Sending Limit END
  3487. --5. Validate Country Receiving Limit
  3488. EXEC PROC_CHECKCOUNTRYLIMIT @flag = 'r-limit'
  3489. ,@cAmt = @cAmt
  3490. ,@pAmt = @pAmt
  3491. ,@sCountryId = @sCountryId
  3492. ,@collMode = @collMode
  3493. ,@deliveryMethod = @deliveryMethod
  3494. ,@sendingCustType = @sendingCustType
  3495. ,@pCountryId = @pCountryId
  3496. ,@pCurr = @pCurr
  3497. ,@collCurr = @collCurr
  3498. ,@pAgent = @pAgent
  3499. ,@sAgent = @sAgent
  3500. ,@sBranch = @sBranch
  3501. ,@msg = @msg OUT
  3502. ,@errorCode = @errorCode OUT
  3503. IF @errorCode <> '0'
  3504. BEGIN
  3505. SELECT @errorCode ErrCode
  3506. ,@msg Msg
  3507. RETURN;
  3508. END
  3509. --Validate Country Receiving Limit
  3510. SET @msg = 'Success'
  3511. SELECT @errorCode ErrCode
  3512. ,@msg Msg
  3513. ,scCharge = @serviceCharge
  3514. ,exRate = @exRate
  3515. ,place = @place
  3516. ,pCurr = @pCurr
  3517. ,currDecimal = @currDecimal
  3518. ,pAmt = @pAmt
  3519. ,sAmt = @tAmt
  3520. ,place = @place
  3521. ,disc = 0.00
  3522. ,collAmt = @cAmt
  3523. ,exRateOffer = @exRateOffer
  3524. ,scOffer = @scDiscount
  3525. ,scAction = @scAction
  3526. ,scValue = @scValue
  3527. ,scDiscount = @scDiscount
  3528. ,tpExRate = 0
  3529. ,exRateConfirmId = 0
  3530. ,IsFreeSc = @isFreeSc
  3531. ,calcOriginalSc = @calcOriginalSc
  3532. ,rewardAmt = @rewardAmt
  3533. ,isPromoCode = @isPromoCode
  3534. ,rowId = @row_id
  3535. ,promoCode = @promoCode
  3536. END
  3537. ELSE IF @flag = 'customerRate' --Get Customer Rate
  3538. BEGIN
  3539. SELECT TOP 1 @pCurr = CM.currencyCode
  3540. FROM currencyMaster CM WITH (NOLOCK)
  3541. INNER JOIN countryCurrency CC WITH (NOLOCK) ON CM.currencyId = CC.currencyId
  3542. WHERE CC.countryId = @pCountryId
  3543. AND ISNULL(CC.isDeleted, 'N') = 'N'
  3544. IF @pCurr IS NULL
  3545. BEGIN
  3546. SELECT '1' ErrCode
  3547. ,'Not defined' Msg
  3548. ,NULL id
  3549. RETURN
  3550. END
  3551. SELECT @exRate = dbo.FNAGetCustomerRate(@sCountryId, @sAgent, @sBranch, @collCurr, @pCountryId, @pAgent, @pCurr, @deliveryMethod)
  3552. IF @exRate IS NULL
  3553. BEGIN
  3554. SELECT '1' ErrCode
  3555. ,'Not defined' Msg
  3556. ,NULL id
  3557. RETURN
  3558. END
  3559. DECLARE @maxLimit AS MONEY
  3560. ,@lCurr AS VARCHAR(10)
  3561. SELECT @maxLimit = maxLimitAmt
  3562. ,@lCurr = currency
  3563. FROM sendTranLimit WITH (NOLOCK)
  3564. WHERE agentId = @sAgent
  3565. AND ISNULL(receivingCountry, ISNULL(@pCountryId, 0)) = ISNULL(@pCountryId, 0)
  3566. AND ISNULL(tranType, ISNULL(@deliveryMethod, 0)) = ISNULL(@deliveryMethod, 0)
  3567. AND currency = @collCurr
  3568. AND ISNULL(isActive, 'N') = 'Y'
  3569. AND ISNULL(isDeleted, 'N') = 'N'
  3570. SELECT @maxLimit = maxLimitAmt
  3571. ,@lCurr = currency
  3572. FROM sendTranLimit WITH (NOLOCK)
  3573. WHERE agentId IS NULL
  3574. AND ISNULL(receivingCountry, ISNULL(@pCountryId, 0)) = ISNULL(@pCountryId, 0)
  3575. AND ISNULL(tranType, ISNULL(@deliveryMethod, 0)) = ISNULL(@deliveryMethod, 0)
  3576. AND currency = @collCurr
  3577. AND ISNULL(isActive, 'N') = 'Y'
  3578. AND ISNULL(isDeleted, 'N') = 'N'
  3579. SELECT '0' ErrCode
  3580. ,@exRate exRate
  3581. ,@pCurr pCurr
  3582. ,@maxLimit limit
  3583. ,@lCurr limitCurr
  3584. END
  3585. ELSE IF @flag = 'CustdayLimit' -- CUSTOMER PER DAY LIMIT
  3586. BEGIN
  3587. DECLARE @txnSum MONEY
  3588. ,@txnCount INT
  3589. ,@tranId INT
  3590. ,@date VARCHAR(20) = CONVERT(VARCHAR(20), GETDATE(), 111)
  3591. SELECT @limitBal = D.amount
  3592. FROM csMaster M WITH (NOLOCK)
  3593. INNER JOIN csDetail D WITH (NOLOCK) ON M.csMasterId = D.csDetailId
  3594. WHERE sCountry = @sCountryId
  3595. AND ISNULL(M.isActive, 'Y') = 'Y'
  3596. AND ISNULL(D.isActive, 'Y') = 'Y'
  3597. SELECT @txnSum = ISNULL(SUM(R.cAmt), 0)
  3598. ,@txnCount = COUNT('x')
  3599. FROM remitTran R WITH (NOLOCK)
  3600. ,tranSenders S WITH (NOLOCK)
  3601. WHERE R.id = S.tranId
  3602. AND S.customerId = @senderId
  3603. AND R.approvedDate BETWEEN @date
  3604. AND @date + ' 23:59:59'
  3605. SELECT ISNULL(@limitBal, 0) countryBalLimit
  3606. ,ISNULL(@txnSum, 0) custDayLimit
  3607. ,ISNULL(@txnCount, 0) custDayTxn
  3608. ,CAST(GETDATE() AS DATE) [txnDate]
  3609. END
  3610. ELSE IF @flag = 'cti' --All transaction information (sender, receiver, payout)
  3611. BEGIN
  3612. SELECT DISTINCT c.customerId
  3613. ,c.membershipId
  3614. ,Name = c.firstName + ISNULL(' ' + c.middleName, '') + ISNULL(' ' + c.lastName1, '') + ISNULL(' ' + c.lastName2, '')
  3615. ,c.Country
  3616. ,Address
  3617. ,[State]
  3618. ,Phone = COALESCE(mobile, homePhone, workPhone)
  3619. ,city
  3620. FROM tranSenders c WITH (NOLOCK)
  3621. WHERE c.id = @senderId
  3622. SELECT DISTINCT c.customerId
  3623. ,c.membershipId
  3624. ,Name = c.firstName + ISNULL(' ' + c.middleName, '') + ISNULL(' ' + c.lastName1, '') + ISNULL(' ' + c.lastName2, '')
  3625. ,Country
  3626. ,Address
  3627. ,[State]
  3628. ,Phone = COALESCE(mobile, homePhone, workPhone)
  3629. ,city
  3630. FROM tranreceivers c WITH (NOLOCK)
  3631. WHERE c.id = @benId
  3632. IF @agentId > 0
  3633. BEGIN
  3634. SELECT DISTINCT am.agentId
  3635. ,am.agentCode
  3636. ,name = am.agentName
  3637. ,address = am.agentAddress
  3638. ,city = agentCity
  3639. ,[State] = agentState
  3640. ,Phone = COALESCE(agentMobile1, agentMobile2, agentPhone1, agentPhone2)
  3641. ,Country = @pCountry
  3642. FROM agentMaster am WITH (NOLOCK)
  3643. LEFT JOIN agentCurrency ac WITH (NOLOCK) ON am.agentId = ac.agentId
  3644. WHERE am.agentId = @agentId
  3645. END
  3646. ELSE
  3647. BEGIN
  3648. SELECT agentId = NULL
  3649. ,agentCode = NULL
  3650. ,name = 'Any'
  3651. ,address = NULL
  3652. ,city = NULL
  3653. ,STATE = NULL
  3654. ,Phone = NULL
  3655. ,country = @pCountry
  3656. END
  3657. END
  3658. ELSE IF @flag = 'controlNo'
  3659. BEGIN
  3660. SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo)
  3661. SELECT senderId = sen.customerId
  3662. ,benId = ben.customerId
  3663. ,pCountry = cm.countryId
  3664. ,deliveryMethod = stm.serviceTypeId
  3665. ,tAmt = trn.tAmt
  3666. ,cAmt = trn.cAmt
  3667. ,pAmt = trn.pAmt
  3668. ,customerRate = trn.customerRate
  3669. ,serviceCharge = trn.serviceCharge
  3670. ,trn.collCurr
  3671. ,trn.payoutCurr
  3672. ,agentId = pBranch
  3673. FROM remitTran trn WITH (NOLOCK)
  3674. INNER JOIN tranSenders sen WITH (NOLOCK) ON trn.id = sen.tranId
  3675. INNER JOIN tranReceivers ben WITH (NOLOCK) ON trn.id = ben.tranId
  3676. INNER JOIN countryMaster cm WITH (NOLOCK) ON trn.pCountry = cm.countryName
  3677. INNER JOIN serviceTypeMaster stm WITH (NOLOCK) ON trn.paymentMethod = stm.typeTitle
  3678. WHERE controlNo = @controlNoEncrypted
  3679. END
  3680. ELSE IF @flag = 'senderId'
  3681. BEGIN
  3682. SELECT TOP 1 senderId = sen.customerId
  3683. ,benId = ben.customerId
  3684. ,pCountry = cm.countryId
  3685. ,deliveryMethod = stm.serviceTypeId
  3686. ,tAmt = trn.tAmt
  3687. ,cAmt = trn.cAmt
  3688. ,pAmt = trn.pAmt
  3689. ,customerRate = trn.customerRate
  3690. ,serviceCharge = trn.serviceCharge
  3691. ,trn.collCurr
  3692. ,trn.payoutCurr
  3693. ,agentId = pBranch
  3694. FROM remitTran trn WITH (NOLOCK)
  3695. INNER JOIN tranSenders sen WITH (NOLOCK) ON trn.id = sen.tranId
  3696. INNER JOIN tranReceivers ben WITH (NOLOCK) ON trn.id = ben.tranId
  3697. INNER JOIN countryMaster cm WITH (NOLOCK) ON trn.pCountry = cm.countryName
  3698. INNER JOIN serviceTypeMaster stm WITH (NOLOCK) ON trn.paymentMethod = stm.typeTitle
  3699. WHERE sen.customerId = @senderId
  3700. ORDER BY trn.id DESC
  3701. END
  3702. ELSE IF @flag = 'chkSenderIdNo'
  3703. BEGIN
  3704. --IF EXISTS(SELECT 'X' FROM dbo.customerMaster WITH(NOLOCK) WHERE idNumber = @sIdNo AND ISNULL(isDeleted, 'N') = 'N')
  3705. --BEGIN
  3706. -- EXEC proc_errorHandler 1, 'Customer is already registered with this Id Number', NULL
  3707. -- RETURN
  3708. --END
  3709. EXEC proc_errorHandler 0
  3710. ,'Success'
  3711. ,NULL
  3712. END
  3713. END
  3714. END TRY
  3715. BEGIN CATCH
  3716. IF @@TRANCOUNT <> 0
  3717. ROLLBACK TRANSACTION
  3718. DECLARE @errorMessage VARCHAR(MAX)
  3719. SET @errorMessage = ERROR_MESSAGE()
  3720. EXEC proc_errorHandler 1
  3721. ,@errorMessage
  3722. ,@user
  3723. END CATCH
  3724. GO