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.

747 lines
30 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[EXCHANGE_PROC_SAVEBRANCH_BUYV2] Script Date: 7/4/2019 11:35:48 AM ******/
  4. DROP PROCEDURE [dbo].[EXCHANGE_PROC_SAVEBRANCH_BUYV2]
  5. GO
  6. /****** Object: StoredProcedure [dbo].[EXCHANGE_PROC_SAVEBRANCH_BUYV2] Script Date: 7/4/2019 11:35:48 AM ******/
  7. SET ANSI_NULLS ON
  8. GO
  9. SET QUOTED_IDENTIFIER ON
  10. GO
  11. CREATE procEDURE [dbo].[EXCHANGE_PROC_SAVEBRANCH_BUYV2]
  12. @flag CHAR(1),
  13. @sessionId VARCHAR(50),
  14. @operation CHAR(1) = NULL,
  15. @remarks VARCHAR(500) = NULL,
  16. @customer VARCHAR(200) = NULL,
  17. @idType INT = NULL,
  18. @idNumber VARCHAR(50) = NULL,
  19. @country INT = NULL,
  20. @issuedate DATETIME =NULL,
  21. @expdate DATETIME = NULL,
  22. @address VARCHAR(150) = NULL,
  23. @occupation INT = NULL,
  24. @EMPNAME VARCHAR(100) = NULL,
  25. @moneysource INT = NULL,
  26. @purpose INT = NULL,
  27. @benefName VARCHAR(100) = NULL,
  28. @beneidtype INT = NULL,
  29. @beneidnum VARCHAR(50) = NULL,
  30. @contact varchar(20) = NULL,
  31. @Nationality varchar(50) = NULL,
  32. @issuefrom varchar(50) = NULL,
  33. @user VARCHAR(50),
  34. @branchID VARCHAR(30),
  35. @tran_date DATETIME = NULL,
  36. @ofacchk CHAR(1) = NULL,
  37. @isverify CHAR(1) = NULL,
  38. @party INT = NULL,
  39. @cntdob VARCHAR(20) = NULL,
  40. @filterCust INT = NULL,
  41. @type CHAR(1) = NULL,
  42. @CustacNum VARCHAR(30) = NULL,
  43. @isOfac CHAR(1) ,
  44. @OFACREMARKS VARCHAR(MAX) = NULL,
  45. @isNewCustomer CHAR(1) = NULL,
  46. @businessType VARCHAR(100) = NULL,
  47. @town VARCHAR(100) = NULL,
  48. @custState VARCHAR(100) = NULL,
  49. @postalCode VARCHAR(50) = NULL
  50. ,@oName VARCHAR(100) = NULL
  51. ,@oAddress VARCHAR(100) = NULL
  52. ,@oTown VARCHAR(100) = NULL
  53. ,@oState VARCHAR(100) = NULL
  54. ,@oPostalCode VARCHAR(50) = NULL
  55. ,@oCountry VARCHAR(50) = NULL
  56. ,@oNationality VARCHAR(50) = NULL
  57. ,@oidType VARCHAR(50) = NULL
  58. ,@oidNo VARCHAR(50) = NULL
  59. ,@oContact VARCHAR(50) = NULL
  60. ,@oDob VARCHAR(20) = NULL
  61. ,@oOccupation VARCHAR(100) = NULL
  62. ,@oBussType VARCHAR(100) = NULL
  63. ,@ofacId VARCHAR(100) = NULL
  64. ,@saveOFACTxn CHAR(1) = NULL
  65. ,@branchType VARCHAR(5) = NULL
  66. ,@strReason VARCHAR(100) = NULL
  67. ,@strRemark VARCHAR(500) = NULL
  68. ,@strMark CHAR(1) = NULL
  69. AS
  70. SET NOCOUNT ON
  71. SET XACT_ABORT ON
  72. BEGIN TRY
  73. DECLARE @currencyName VARCHAR(20) = 'KRW'
  74. IF @flag = 'i'
  75. BEGIN
  76. DECLARE @LOG INT
  77. DECLARE @AVAILABLEBAL MONEY
  78. DECLARE @ACCTNUM VARCHAR(50)
  79. DECLARE @totalDR NUMERIC(20,2)
  80. DECLARE @totalCR NUMERIC(20,2)
  81. DECLARE @Part_Id INT
  82. DECLARE @totalRows INT
  83. DECLARE @TotalAmt NUMERIC(20,2)
  84. DECLARE @trntype VARCHAR(2)
  85. DECLARE @ref_num VARCHAR(20)
  86. DECLARE @total_lcy MONEY
  87. DECLARE @currLimitId INT,@rateCode INT
  88. ----DECLARE @isOfac CHAR(1)
  89. ----DECLARE @OFACREMARKS VARCHAR(MAX)
  90. IF @type IS NULL
  91. SET @type ='N'
  92. select @CustacNum = a.acct_num
  93. from EXCHANGE_CUSTOMERSETUP c(nolock)
  94. INNER join FastMoneyPro_Account.dbo.ac_master(nolock) a ON c.cid = a.acct_type_code and a.acct_rpt_code ='C'
  95. where c.cid = @filterCust
  96. IF @type = 'C'
  97. BEGIN
  98. IF @filterCust IS NULL
  99. BEGIN
  100. SELECT 1 as code,'Registered customer not found,can not buy on credit' AS remarks
  101. RETURN;
  102. END
  103. IF @CustacNum IS NULL
  104. BEGIN
  105. SELECT 1 as code,'Customer Ac not created,can not buy on credit' AS remarks
  106. RETURN;
  107. END
  108. END
  109. SELECT @tran_date = CAST(GETDATE() AS DATE)
  110. IF @filterCust IS NULL
  111. SET @filterCust = 0
  112. SELECT @branchType = CASE WHEN @branchType = '2903' THEN 'A' ELSE ISNULL(agentType,'B') END
  113. FROM dbo.agentMaster WITH(NOLOCK) WHERE agentId = @branchID
  114. IF @branchID IS NULL
  115. BEGIN
  116. SELECT 1 as code,'Something wend wrong,refresh and try again!' AS remarks
  117. RETURN;
  118. END
  119. IF EXISTS(SELECT 'X' FROM staticDataValue WITH(NOLOCK) WHERE typeID = 1300 )
  120. BEGIN
  121. IF @idNumber IS NULL
  122. BEGIN
  123. SELECT 1 as code,'Id number is missing' AS remarks
  124. RETURN;
  125. END
  126. --IF (SELECT dbo.EXCHANGE_FNAGetDobFromNRICNo(@idNumber)) IS NULL
  127. --BEGIN
  128. -- SELECT 1 as code,'Enter corect Id Number' AS remarks
  129. -- RETURN;
  130. --END
  131. --SET @cntdob = (SELECT dbo.EXCHANGE_FNAGetDobFromNRICNo(@idNumber))
  132. END
  133. IF LTRIM(ISNULL(@customer,'')) <> ''
  134. BEGIN
  135. IF @party IS NULL
  136. BEGIN
  137. SELECT 1 as code,'Customer Type is missing.' AS remarks
  138. RETURN;
  139. END
  140. IF @Nationality IS NULL
  141. BEGIN
  142. SELECT 1 as code,'Native Country is missing.' AS remarks
  143. RETURN;
  144. END
  145. IF @idType IS NULL or @idNumber IS NULL
  146. BEGIN
  147. SELECT 1 as code,'Id type or Number is missing.' AS remarks
  148. RETURN;
  149. END
  150. IF @address IS NULL
  151. BEGIN
  152. SELECT 1 as code,'Address is missing.' AS remarks
  153. RETURN;
  154. END
  155. IF @cntdob IS NULL
  156. BEGIN
  157. SELECT 1 as code,'DOB/DOI is missing.' AS remarks
  158. RETURN;
  159. END
  160. END
  161. IF @isNewCustomer = 'Y'
  162. BEGIN
  163. IF EXISTS(SELECT TOP 1 'A' FROM EXCHANGE_CUSTOMERSETUP(nolock) WHERE chkId = REPLACE(REPLACE(REPLACE(@IDNUMBER,' ',''),'-',''),'/','') AND idType = @idType )
  164. BEGIN
  165. SELECT 1 as code,'ID Number is already added.' AS remarks
  166. RETURN;
  167. END
  168. ELSE IF EXISTS(SELECT TOP 1 'A' FROM EXCHANGE_CUSTOMERSETUP(nolock) WHERE cName = @customer AND dob = @cntdob)
  169. BEGIN
  170. SELECT 1 as code,'Customer is already added.' AS remarks
  171. RETURN;
  172. END
  173. END
  174. SET @strMark='N' --Direct reject concept for now
  175. IF @strMark ='Y'
  176. BEGIN
  177. IF @strReason IS NULL
  178. BEGIN
  179. SELECT 1 as code,'STR Reason is missing..' AS remarks
  180. RETURN;
  181. END
  182. IF @strRemark IS NULL
  183. BEGIN
  184. SELECT 1 as code,'STR Remark is missing..' AS remarks
  185. RETURN;
  186. END
  187. END
  188. IF NOT EXISTS(SELECT 'A' FROM FastMoneyPro_Account.dbo.TEMP_TRANSACTION(nolock) WHERE sessionId = @sessionId AND tran_type = 'B' AND BRANCH = @branchID)
  189. BEGIN
  190. SELECT 1 as code,'No transaction found for operation..' AS remarks
  191. RETURN;
  192. END
  193. IF @Nationality = 'Select Country'
  194. SET @Nationality = NULL
  195. IF @businessType = 'Select Business Type'
  196. SET @businessType = NULL
  197. IF @oCountry = 'Select Country'
  198. SET @oCountry = NULL
  199. IF @oNationality = 'Select Country'
  200. SET @oNationality = NULL
  201. IF @oidType ='Select ID Type'
  202. SET @oidType =NULL
  203. IF @oOccupation ='Select Occupation'
  204. SET @oOccupation= NULL
  205. IF @oBussType ='Select Business Type'
  206. SET @oBussType = NULL
  207. --IF(@total_lcy > 3000 )
  208. --BEGIN
  209. -- SELECT 1 as code,'Sorry you cannnot buy 3000 above transaction' AS remarks
  210. -- RETURN;
  211. --END
  212. --SELECT @isOfac=name FROM VwOFACList WHERE REPLACE(name,',','') =REPLACE(@customer,',','')
  213. SELECT @total_lcy = SUM(ISNULL(lcyamt,0)) FROM FastMoneyPro_Account.dbo.TEMP_TRANSACTION WHERE sessionId=@sessionId AND tran_type='B' AND BRANCH= @branchID
  214. IF @branchType = 'A'
  215. BEGIN
  216. SELECT @AVAILABLEBAL=ISNULL(CLR_BAL_AMT,0)*-1 FROM FastMoneyPro_Account.dbo.ac_master(nolock) WHERE ac_currency=@currencyName AND acct_rpt_code='MoneyEx' AND agent_id = @branchID
  217. ----SELECT @LCYAMT=SUM(LCYAMT) FROM FastMoneyPro_Account.dbo.TEMP_TRANSACTION WHERE sessionId=@sessionId AND tran_type='B'
  218. IF (ISNULL(@AVAILABLEBAL,0)<ISNULL(@total_lcy,0))
  219. BEGIN
  220. SELECT 1 as code,'Insufficeint balance :'+CAST(ISNULL(@total_lcy,0) - ISNULL(@AVAILABLEBAL,0)AS VARCHAR) AS remarks
  221. RETURN;
  222. END
  223. END
  224. --#####################################################
  225. -- CHECKING FOR TOTAL WON 10000 AND 20000 VALIDATION
  226. ------IF (SELECT SUM(total_amt) FROM EXCHANGE_TRANSACTION_INFO WHERE CAST(entered_date AS DATE)=GETDATE() AND id_number = @idNumber)>=3000
  227. ------BEGIN
  228. ------ SELECT 1 as code,'Customer total transaction excceded 3000' as remarks
  229. ------ RETURN;
  230. ------END
  231. DECLARE @custInfoCheck MONEY, @EDD MONEY,@txnApproveAmt MONEY,@perDayTxn MONEY,@perMonthTxn MONEY,@perYearTxn MONEY
  232. SELECT @custInfoCheck = ISNULL(chkcddOn,0) * rate ,@EDD = ISNULL(chkEddOn,0) * rate ,@txnApproveAmt = ISNULL(perTxnLimit,0) * rate
  233. ,@perDayTxn = ISNULL(perDayLimit,0) * rate,@perMonthTxn = ISNULL(perMonthLimit,0) * rate,@perYearTxn = ISNULL(perYearLimit,0) * rate
  234. FROM FastMoneyPro_Account.dbo.EXCHANGE_TRANSACTIONPOLICY (NOLOCK) ---- REMOVE COLUMN FROM TABLE
  235. ----## Customer type Individual and Customer Type Others limit setup for branch and agent in equivalent WON (Buy and Sell) - Limit exceeds deny TXN
  236. DECLARE @partyName VARCHAR(100)
  237. SELECT @partyName = ISNULL(ref_code,'') FROM FastMoneyPro_Account.dbo.staticdatadetail(nolock) WHERE id = @party
  238. ----## FOR CUSTOMER TYPE WISE
  239. IF EXISTS(SELECT 'A' FROM EXCHANGE_CUSTOMERLIMITDETAIL WITH(NOLOCK) WHERE limitId = @currLimitId AND customerType = @party
  240. AND currency = @currencyName AND ISNULL(isActive,'N') ='Y' AND ISNULL(buyLimit,0) >0 AND @total_lcy >= ISNULL(buyLimit,0))
  241. BEGIN
  242. SELECT 1 AS code, 'Deny Transaction,Buy limit exceeds for customer type: '+@partyName AS remarks
  243. RETURN
  244. END
  245. ----## FOR ALL CUSTOMER TYPE WISE
  246. ELSE IF EXISTS(SELECT 'A' FROM EXCHANGE_CUSTOMERLIMITDETAIL WITH(NOLOCK) WHERE limitId = @currLimitId
  247. AND currency = @currencyName AND ISNULL(isActive,'N') ='Y' AND customerType=0 AND ISNULL(buyLimit,0) >0 AND @total_lcy >= ISNULL(buyLimit,0))
  248. BEGIN
  249. SELECT 1 AS code, 'Deny Transaction,Buy limit exceeds for customer type: '+@partyName AS remarks
  250. RETURN
  251. END
  252. --## CURRENCY WISE CUSTOMER LIMIT CHECKING
  253. ELSE IF EXISTS(SELECT 'A' FROM EXCHANGE_CUSTOMERLIMITDETAIL L WITH(NOLOCK) INNER JOIN FastMoneyPro_Account.dbo.TEMP_TRANSACTION T ON L.currency = T.acct_num
  254. AND sessionId = @sessionId AND tran_type='B' AND BRANCH = @branchID
  255. WHERE limitId = @currLimitId AND customerType = @party
  256. AND ISNULL(isActive,'N') ='Y' AND ISNULL(buyLimit,0) >0 GROUP BY T.acct_num,buyLimit HAVING SUM(T.fcyamt) >=ISNULL(buyLimit,0))
  257. BEGIN
  258. SET @remarks = 'Deny Transaction,Buy limit exceeds for currency : '
  259. SELECT @remarks = @remarks+ T.acct_num +',' FROM EXCHANGE_CUSTOMERLIMITDETAIL L WITH(NOLOCK) INNER JOIN FastMoneyPro_Account.dbo.TEMP_TRANSACTION T ON L.currency = T.acct_num
  260. AND sessionId=@sessionId AND tran_type='B' AND BRANCH = @branchID
  261. WHERE limitId = @currLimitId AND customerType = @party
  262. AND ISNULL(isActive,'N') ='Y' AND ISNULL(buyLimit,0) >0 GROUP BY T.acct_num,buyLimit HAVING SUM(T.fcyamt) >=ISNULL(buyLimit,0)
  263. SELECT 1 AS code, ISNULL(@remarks,'Deny Transaction,Buy limit exceeds for currency') AS remarks
  264. RETURN
  265. END
  266. ELSE IF EXISTS(SELECT 'A' FROM EXCHANGE_CUSTOMERLIMITDETAIL L WITH(NOLOCK) INNER JOIN FastMoneyPro_Account.dbo.TEMP_TRANSACTION T ON L.currency = T.acct_num
  267. AND sessionId = @sessionId AND tran_type='B' AND BRANCH = @branchID
  268. WHERE limitId = @currLimitId and customerType=0 AND ISNULL(isActive,'N') ='Y' AND ISNULL(buyLimit,0) >0
  269. GROUP BY T.acct_num,buyLimit HAVING SUM(T.fcyamt) >=ISNULL(buyLimit,0))
  270. BEGIN
  271. SET @remarks = 'Deny Transaction,Buy limit exceeds for currency : '
  272. SELECT @remarks = @remarks+ T.acct_num+',' FROM EXCHANGE_CUSTOMERLIMITDETAIL L WITH(NOLOCK) INNER JOIN FastMoneyPro_Account.dbo.TEMP_TRANSACTION T ON L.currency = T.acct_num
  273. AND sessionId=@sessionId AND tran_type='B' AND BRANCH = @branchID AND customerType=0
  274. WHERE limitId = @currLimitId AND ISNULL(isActive,'N') ='Y' AND ISNULL(buyLimit,0) >0
  275. GROUP BY T.acct_num,buyLimit HAVING SUM(T.fcyamt) >=ISNULL(buyLimit,0)
  276. SELECT 1 AS code, ISNULL(@remarks,'Deny Transaction,Buy limit exceeds for currency') AS remarks
  277. RETURN
  278. END
  279. --## CURRENCY WISE LIMIT CHECKING
  280. ELSE IF EXISTS(SELECT 'A' FROM EXCHANGE_CURRENCYRATE_SETUP R WITH(NOLOCK) INNER JOIN FastMoneyPro_Account.dbo.TEMP_TRANSACTION T ON R.baseCurrency = T.acct_num
  281. AND sessionId = @sessionId AND tran_type='B' AND BRANCH = @branchID
  282. WHERE ISNULL(R.Active,'N') ='Y' AND ISNULL(buyLimit,0) >0
  283. GROUP BY T.acct_num,buyLimit HAVING SUM(T.fcyamt) >=ISNULL(buyLimit,0))
  284. BEGIN
  285. SET @remarks = 'Deny Transaction,Buy limit exceeds for currency : '
  286. SELECT @remarks = @remarks + T.acct_num +',' FROM EXCHANGE_CURRENCYRATE_SETUP R WITH(NOLOCK) INNER JOIN FastMoneyPro_Account.dbo.TEMP_TRANSACTION T ON R.baseCurrency = T.acct_num
  287. AND sessionId = @sessionId AND tran_type='B' AND BRANCH = @branchID
  288. WHERE ISNULL(R.Active,'N') ='Y' AND ISNULL(buyLimit,0) >0
  289. GROUP BY T.acct_num,buyLimit HAVING SUM(T.fcyamt) >=ISNULL(buyLimit,0)
  290. SELECT 1 AS code, ISNULL(@remarks,'Deny Transaction,Buy limit exceeds for currency') AS remarks
  291. RETURN
  292. END
  293. IF (SELECT SUM(total_amt)+ @total_lcy FROM EXCHANGE_TRANSACTION_INFO(NOLOCK)
  294. WHERE entered_date BETWEEN CAST(GETDATE() AS DATE) AND GETDATE() AND id_number = @idNumber) >=ISNULL(@custInfoCheck,0)
  295. BEGIN
  296. IF(@customer IS NULL OR @address IS NULL OR @idType IS NULL OR @idNumber IS NULL OR @Nationality IS NULL )
  297. BEGIN
  298. SELECT 1 as code,'All customer due diligence not filled for amt: '+ CAST(ISNULL(@custInfoCheck,0) AS VARCHAR) as remarks
  299. RETURN;
  300. END
  301. IF(SELECT SUM(total_amt)+ @total_lcy FROM EXCHANGE_TRANSACTION_INFO(NOLOCK) WHERE entered_date BETWEEN CAST(GETDATE() AS DATE) AND GETDATE()
  302. AND id_number = @idNumber)>=ISNULL(@EDD,0)
  303. BEGIN
  304. IF(@occupation IS NULL OR @EMPNAME IS NULL OR @moneysource IS NULL OR @purpose IS NULL )
  305. BEGIN
  306. SELECT 11 as code,'All Enhance due diligence not filled for amt: '+CAST(ISNULL(@EDD,0) AS VARCHAR) as remarks
  307. RETURN;
  308. END
  309. END
  310. END
  311. IF(SELECT SUM(total_amt)+ @total_lcy FROM EXCHANGE_TRANSACTION_INFO(NOLOCK) WHERE entered_date BETWEEN CAST(GETDATE() AS DATE) AND GETDATE()
  312. AND id_number = @idNumber)> =ISNULL(@perDayTxn,0)
  313. BEGIN
  314. SELECT 11 as code,'Per day transaction limit exceeded for amt: '+CAST(ISNULL(@perDayTxn,0) AS VARCHAR) as remarks
  315. RETURN;
  316. END
  317. IF(SELECT SUM(total_amt)+ @total_lcy FROM EXCHANGE_TRANSACTION_INFO(NOLOCK) WHERE entered_date BETWEEN CAST(GETDATE() AS DATE) AND GETDATE()
  318. AND id_number = @idNumber)> =ISNULL(@perMonthTxn,0)
  319. BEGIN
  320. SELECT 11 as code,'Per month transaction limit exceeded for amt: '+CAST(ISNULL(@perMonthTxn,0) AS VARCHAR) as remarks
  321. RETURN;
  322. END
  323. IF(SELECT SUM(total_amt)+ @total_lcy FROM EXCHANGE_TRANSACTION_INFO(NOLOCK) WHERE entered_date BETWEEN CAST(GETDATE() AS DATE) AND GETDATE()
  324. AND id_number = @idNumber)> =ISNULL(@perYearTxn,0)
  325. BEGIN
  326. SELECT 11 as code,'Per year transaction limit exceeded for amt: '+CAST(ISNULL(@perYearTxn,0) AS VARCHAR) as remarks
  327. RETURN;
  328. END
  329. ----SELECT @branchID ,@isOfac,@txnApproveAmt,@total_lcy
  330. ---- RETURN
  331. ---- OR (@CHKGtTOindBranch = 'Y')
  332. --IF @isOfac = 'Y' OR (@total_lcy >= @txnApproveAmt AND @txnApproveAmt >0) OR (@CHKGtTOindBranch = 'Y')
  333. --BEGIN
  334. -- ----IF @isOfac IS NOT NULL
  335. -- ----BEGIN
  336. -- ---- SET @OFACREMARKS = CONVERT(VARCHAR,@tran_date,101)+'|Senders matched with '
  337. -- ---- delete from Customer where tran_id= @sessionId
  338. -- ---- IF EXISTS(SELECT 'A' FROM ofac_combined WHERE REPLACE(name,',','') =REPLACE(@customer,',',''))
  339. -- ---- BEGIN
  340. -- ---- SET @OFACREMARKS=@OFACREMARKS+ (SELECT TOP 1 ' OFAC list <br> OFAC Details are : <br> Name: '+name+' <br>Address: '+ISNULL(address,'')+' <br>City: '+ISNULL(city,'')+' State: '+ISNULL(state,'') +
  341. -- ---- ' <br>Country: '+ISNULL(country,'')+'<br> Remarks: '+ISNULL(remarks,'')
  342. -- ---- FROM ofac_combined WHERE name =REPLACE(@customer,',',''))
  343. -- ---- END
  344. -- ---- IF EXISTS(SELECT 'A' FROM ofca_list WHERE REPLACE(ofca_name,',','') =REPLACE(@customer,',',''))
  345. -- ---- BEGIN
  346. -- ---- SET @OFACREMARKS=@OFACREMARKS+ (SELECT TOP 1 ' BNM Black list Details are : <br> Name: '+ofca_name+' <br>Passport: '+ofca_passport+'<br> Description: '+ofca_desc
  347. -- ---- FROM ofca_list WHERE REPLACE(ofca_name,',','') =REPLACE(@customer,',',''))
  348. -- ---- END
  349. -- ----SELECT @branchID ,@isOfac,@txnApproveAmt
  350. -- ----RETURN
  351. -- IF @isOfac = 'Y'
  352. -- SET @OFACREMARKS = ISNULL(@OFACREMARKS,'')
  353. -- ELSE IF @CHKGtTOindBranch = 'Y'
  354. -- SET @OFACREMARKS = 'Transaction has been sent successfully and is waiting for approval <br/> '+'Customer transacting from more than 2 branches for amt: '+CAST(ISNULL(@GtTOindBranchAmt,0) AS VARCHAR)
  355. -- --ELSE IF (@total_lcy >= @txnApproveAmt AND @txnApproveAmt >0) // comment by ganesh gyawali
  356. -- -- SET @OFACREMARKS = 'Transaction has been sent successfully and is waiting for approval for amt: >='+CAST(ISNULL(@txnApproveAmt,0) AS VARCHAR)
  357. -- BEGIN TRANSACTION
  358. -- INSERT INTO EXCHANGE_HOLDTRANSACTION_INFO (
  359. -- branch_id,customer_name,id_type,id_number,country,id_issuedate,id_expdate,tran_type,total_amt,remarks,
  360. -- entered_by,entered_date,tran_date,contact,Nationality,issuedFrom,party,isverify,operation,tranStatus,custId,sessionId)
  361. -- SELECT
  362. -- @branchID,@customer,@idType,@idNumber,@country,@issuedate,@expdate,'P',ISNULL(@total_lcy,0),@remarks,
  363. -- @user,GETDATE(),@tran_date,@contact,@Nationality,@issuefrom,@party,@isverify,@type
  364. -- ,CASE WHEN @isOfac = 'Y' THEN 'OFAC Hold' ELSE 'Hold' END,@filterCust,@sessionId
  365. -- SET @LOG = @@IDENTITY
  366. -- INSERT INTO EXCHANGE_CUSTOMER (
  367. -- ct_name,ct_address,ct_card_type,ct_card_no,country,issuedate,expdate,occupation,employer_name,moneysource,purpose,sessionId,
  368. -- benefName,beneidtype,beneidnum,contact ,Nationality,issuedFrom,isOfac
  369. -- ,ofacremarks,branch_id,CID,custAcNum
  370. -- ,businessType,town,custState,postalCode,tran_type,party,ofacId,ct_dob,modifyBy,modifyDate)
  371. -- SELECT @customer,@address,@idType,@idNumber,@country,@issuedate,@expdate,@occupation,@EMPNAME,@moneysource,@purpose,@LOG,
  372. -- @benefName,@beneidtype,@beneidnum,@contact,@Nationality,@issuefrom,CASE WHEN @isOfac = 'Y' THEN 'Y' ELSE 'A' END
  373. -- ,@OFACREMARKS,@branchID,@filterCust,@CustacNum
  374. -- ,@businessType,@town,@custState,@postalCode,'P',@party,@ofacId,@cntdob,@user,GETDATE()
  375. -- INSERT INTO EXCHANGE_OFACTRANSACTION (tran_id,sessionId,currency,fcyamt,sysrate,apprate,lcyamt,tran_date,tran_type,Branchid,entryby )
  376. -- SELECT 0,@LOG,acct_num,fcyamt,sysrate,apprate,lcyamt,tran_date,tran_type,@branchID,@user
  377. -- FROM FastMoneyPro_Account.dbo.TEMP_TRANSACTION WHERE tran_type = 'B' AND sessionId = @sessionId AND BRANCH = @branchID
  378. -- IF @oName IS NOT NULL
  379. -- BEGIN
  380. -- INSERT INTO EXCHANGE_TRANSACTIONONBEHALF
  381. -- (tranId,custId,oName,oAddress,oTown,oState,oPostalCode,oCountry,oNationality,oidType,oidNo,oContact,oDob,sessionId
  382. -- ,oOccupation,oBussType)
  383. -- SELECT 0,@filterCust,@oName,@oAddress,@oTown,@oState,@oPostalCode,@oCountry,@oNationality,@oidType,@oidNo,@oContact,@oDob,@LOG
  384. -- ,@oOccupation,@oBussType
  385. -- END
  386. -- INSERT INTO EXCHANGE_CUSTOMERDOCUMENT(cId,fileName,fileDescription,fileType,createdBy,createdDate,approvedBy,approvedDate,branchId,tranId)
  387. -- SELECT @filterCust,docName,docDesc,docType,createdBy,createdDate,case when @party = '726' then createdBy END
  388. -- ,case when @party = '726' then createdDate END,branchId ,@LOG
  389. -- FROM EXCHANGE_TEMPCUSTOMERDOCUMENT WHERE sessionId = @sessionId AND branchId = @branchID AND docFor ='C'
  390. -- INSERT INTO EXCHANGE_TRANSACTIONDOCUMENT(sessionId,fileName,fileDescription,fileType,createdBy,createdDate,branchId)
  391. -- SELECT @LOG,docName,docDesc,docType,createdBy,createdDate,branchId
  392. -- FROM EXCHANGE_TEMPCUSTOMERDOCUMENT WHERE sessionId = @sessionId AND branchId = @branchID AND docFor ='T'
  393. -- IF @strMark ='Y'
  394. -- BEGIN
  395. -- INSERT INTO EXCHANGE_SUSPICIOUSTRANSACTION(holdId,reason,remarks,createdBy,createdDate)
  396. -- SELECT @LOG,@strReason,@strRemark,@user,GETDATE()
  397. -- END
  398. -- DELETE FROM EXCHANGE_TRANSACTIONDOCUMENT WHERE sessionId = @sessionId AND branchId = @branchID
  399. -- DELETE FROM FastMoneyPro_Account.dbo.TEMP_TRANSACTION WHERE tran_type = 'B' AND sessionId = @sessionId AND BRANCH = @branchID
  400. -- COMMIT TRANSACTION
  401. -- IF @isOfac = 'Y'
  402. -- BEGIN
  403. -- SET @OFACREMARKS = 'Transaction is in OFAC and is waiting for approval <br/>' + ISNULL(@OFACREMARKS,'')
  404. -- SELECT 2 as code,ISNULL(@OFACREMARKS,'Transaction has been sent successfully and is waiting for approval') AS remarks
  405. -- RETURN
  406. -- END
  407. -- SELECT 3 as code,ISNULL(@OFACREMARKS,'Transaction has been sent successfully and is waiting for approval') AS remarks
  408. -- RETURN;
  409. --END
  410. --######################################################
  411. DECLARE @WONAC VARCHAR(50)
  412. SELECT @WONAC = ACCT_NUM FROM FastMoneyPro_Account.dbo.ac_master(NOLOCK)
  413. WHERE ac_currency=@currencyName AND acct_rpt_code = 'MoneyEx' AND agent_id = @branchID
  414. CREATE TABLE #tempsumTrn (Part_Id INT IDENTITY,acct_num VARCHAR(20),
  415. TotalAmt DECIMAL(18,4), part_tran_type VARCHAR(2),fcy_amt FLOAT,fcy_rate FLOAT,sys_rate FLOAT,currency varchar(50))
  416. IF @type = 'N'
  417. BEGIN
  418. INSERT INTO #tempsumTrn(acct_num,TotalAmt,part_tran_type,fcy_amt,fcy_rate,sys_rate,currency)
  419. SELECT a.acct_num,SUM(ROUND(ISNULL(lcyamt,0),2)) [lcyamt], 'DR' [tran_type]
  420. ,ROUND(SUM(ISNULL(fcyamt,0)),2)[fcyamt]
  421. , APPRATE, SYSRATE,t.acct_num [currency]
  422. FROM FastMoneyPro_Account.dbo.TEMP_TRANSACTION t WITH (NOLOCK)
  423. INNER JOIN FastMoneyPro_Account.dbo.ac_master a WITH (NOLOCK) ON t.acct_num = a.ac_currency
  424. AND a.acct_rpt_code = 'MoneyEx'
  425. AND a.agent_id = @branchID
  426. WHERE sessionId = @sessionId AND tran_type = 'B'
  427. GROUP BY a.acct_num,lcyamt,fcyamt,APPRATE,t.acct_num,sysrate
  428. UNION ALL
  429. SELECT @WONAC,SUM(ROUND(ISNULL(lcyamt,0),2)) [lcyamt], 'CR' [tran_type]
  430. ,0 [fcyamt] , 0, 0,@currencyName [currency]
  431. FROM FastMoneyPro_Account.dbo.TEMP_TRANSACTION t WITH (NOLOCK)
  432. WHERE sessionId =@sessionId AND tran_type = 'B'
  433. END
  434. IF @type = 'C'
  435. BEGIN
  436. INSERT INTO #tempsumTrn(acct_num,TotalAmt,part_tran_type,fcy_amt,fcy_rate,sys_rate,currency)
  437. SELECT a.acct_num acct_num,SUM(ROUND(ISNULL(lcyamt,0),2)) [lcyamt], 'DR' [tran_type]
  438. ,SUM(ROUND(ISNULL(fcyamt,0),2))[fcyamt]
  439. , APPRATE, SYSRATE,t.acct_num [currency]
  440. FROM FastMoneyPro_Account.dbo.TEMP_TRANSACTION t WITH (NOLOCK)
  441. INNER JOIN FastMoneyPro_Account.dbo.ac_master a WITH (NOLOCK) ON t.acct_num = a.ac_currency
  442. AND t.acct_num = a.acct_rpt_code
  443. AND a.agent_id = @branchID
  444. WHERE sessionId = @sessionId AND tran_type = 'B'
  445. GROUP BY lcyamt,fcyamt,APPRATE,t.acct_num,sysrate,a.acct_num
  446. UNION ALL
  447. SELECT @CustacNum,SUM(ROUND(ISNULL(lcyamt,0),2)) [lcyamt], 'CR' [tran_type]
  448. ,0 [fcyamt] , 0, 0,@currencyName [currency]
  449. FROM FastMoneyPro_Account.dbo.TEMP_TRANSACTION t WITH (NOLOCK)
  450. WHERE sessionId =@sessionId AND tran_type = 'B'
  451. END
  452. SELECT @totalDR=isnull(sum(TotalAmt),0) FROM #tempsumTrn WITH (NOLOCK)
  453. WHERE part_tran_type='DR' GROUP BY part_tran_type
  454. SELECT @totalCR=isnull(sum(TotalAmt),0) FROM #tempsumTrn WITH (NOLOCK)
  455. WHERE part_tran_type='CR' GROUP BY part_tran_type
  456. --SELECT @totalDR,@totalCR
  457. --RETURN
  458. IF ISNULL(@totalDR,0)<>ISNULL(@totalCR,0)
  459. BEGIN
  460. SELECT 1 as code,'DR and CR amount NOT Equal' AS remarks
  461. RETURN;
  462. END
  463. --SELECT * FROM #tempsumTrn
  464. --RETURN
  465. IF EXISTS(SELECT 'A' FROM #tempsumTrn WHERE acct_num IS NULL)
  466. BEGIN
  467. SELECT 1 as code,'Some Account is blank..' AS remarks
  468. RETURN;
  469. END
  470. --ALTER TABLE EXCHANGE_TRANSACTION_INFO ADD operation CHAR(1),isverify CHAR(1)
  471. -------------#########################################
  472. BEGIN TRANSACTION
  473. DECLARE @BILLNO VARCHAR(30)
  474. IF NOT EXISTS(select 'a' from agentMaster(NOLOCK) where agentid = @branchId and extCode is null)
  475. BEGIN
  476. update agentMaster set extCode='1' where agentid=@branchId and extCode is null
  477. END
  478. SET @BILLNO = dbo.EXCHANGE_FNAGetBillNo(@branchID,'P')
  479. INSERT INTO EXCHANGE_TRANSACTION_INFO (
  480. branch_id,customer_name,id_type,id_number,country,id_issuedate,id_expdate,tran_type,total_amt,remarks,entered_by,entered_date,
  481. tran_date,contact,Nationality,issuedFrom,party,isverify,operation,billNo
  482. )
  483. SELECT
  484. @branchID,@customer,@idType,@idNumber,@country,@issuedate,@expdate,'P',ISNULL(@total_lcy,0),@remarks,@user,GETDATE()
  485. ,@tran_date,@contact,@Nationality,@issuefrom,@party,@isverify,@type,@BILLNO
  486. SET @LOG = @@IDENTITY
  487. UPDATE agentMaster SET extCode = cast(extCode as int)+1 WHERE agentId = @branchID
  488. IF @customer IS NOT NULL
  489. BEGIN
  490. INSERT INTO EXCHANGE_CUSTOMER (ct_name,ct_address,ct_card_type,ct_card_no,country,issuedate,expdate,occupation,employer_name,moneysource,
  491. purpose,tran_id,benefName,beneidtype,beneidnum,contact ,Nationality,issuedFrom,isOfac,remarks,ct_dob,CID,custAcNum,
  492. businessType,town,custState,postalCode,tran_type,party,ofacId,ofacStatus,modifyBy,modifyDate
  493. )
  494. SELECT @customer,@address,@idType,@idNumber,@country,@issuedate,@expdate,@occupation,@EMPNAME,@moneysource,
  495. @purpose,@LOG,@benefName,@beneidtype,@beneidnum,@contact,@Nationality,@issuefrom,CASE WHEN @isOfac IS NOT NULL THEN 'Y' ELSE NULL END,
  496. @remarks,@cntdob,@filterCust,@CustacNum,
  497. @businessType,@town,@custState,@postalCode,'P',@party,@ofacId,@saveOFACTxn,@user,GETDATE()
  498. END
  499. --IF @saveOFACTxn IS NOT NULL
  500. --BEGIN
  501. -- INSERT INTO EXCHANGE_OFACTRANSACTION (tran_id,sessionId,currency,fcyamt,sysrate,apprate,lcyamt,tran_date,tran_type,Branchid,entryby )
  502. -- SELECT @LOG,@sessionId,acct_num,fcyamt,sysrate,apprate,lcyamt,tran_date,tran_type,@branchID,@user
  503. -- FROM FastMoneyPro_Account.dbo.TEMP_TRANSACTION WHERE tran_type = 'B' AND sessionId = @sessionId AND BRANCH = @branchID
  504. --END
  505. IF @isNewCustomer = 'Y' AND @customer IS NOT NULL
  506. BEGIN
  507. INSERT INTO EXCHANGE_CUSTOMERSETUP(cName,cAddress,gender,country,idType,idNumber,dob,postalCode,contact,email,cType,occupation,branchId,createdDate,createdBy,town,custState,nativCountry,approvedBy,approvedDate,businessType,chkId)
  508. SELECT ct_name,ct_address,NULL,country,ct_card_type,ct_card_no,CAST(ct_dob AS DATE),@postalCode,contact,NULL,@party,occupation,@branchID
  509. ,GETDATE(),@user,town,custState,Nationality,@USER , GETDATE()
  510. ,businessType,REPLACE(REPLACE(REPLACE(ct_card_no,' ',''),'-',''),'/','')
  511. FROM Exchange_Customer WITH(NOLOCK)
  512. WHERE tran_id = @LOG
  513. SET @filterCust = @@IDENTITY
  514. UPDATE Exchange_Customer SET CID = @filterCust WHERE tran_id = @LOG
  515. END
  516. IF @isNewCustomer = 'N'
  517. BEGIN
  518. UPDATE CS SET
  519. CS.cName = C.ct_name
  520. ,CS.cAddress = C.ct_address
  521. ,CS.gender = NULL
  522. ,CS.country = C.country
  523. ,CS.idType = C.ct_card_type
  524. ,CS.idNumber = C.ct_card_no
  525. ,CS.chkId = REPLACE(REPLACE(REPLACE(C.ct_card_no,' ',''),'-',''),'/','')
  526. ,CS.dob = CASE WHEN C.ct_dob IS NOT NULL THEN CAST(C.ct_dob AS DATE) ELSE CS.dob END
  527. ,CS.postalCode = @postalCode
  528. ,CS.contact = C.contact
  529. ,CS.email = NULL
  530. ,CS.cType = @party
  531. ,CS.occupation = C.occupation
  532. ,CS.branchId = @branchID
  533. ,CS.town = C.town
  534. ,CS.custState = C.custState
  535. ,CS.nativCountry = C.Nationality
  536. ,cs.businessType = c.businessType
  537. ,CS.modifyBy = @user
  538. ,CS.modifyDate = GETDATE()
  539. FROM EXCHANGE_CUSTOMERSETUP CS
  540. INNER JOIN EXCHANGE_CUSTOMER C ON c.CID = CS.cid
  541. WHERE CS.cid = @filterCust AND C.tran_id = @LOG
  542. END
  543. --IF @oName IS NOT NULL
  544. --BEGIN
  545. -- INSERT INTO EXCHANGE_TRANSACTIONONBEHALF
  546. -- (tranId,custId,oName,oAddress,oTown,oState,oPostalCode,oCountry,oNationality,oidType,oidNo,oContact,oDob,sessionId
  547. -- ,oOccupation,oBussType)
  548. -- SELECT @LOG,@filterCust,@oName,@oAddress,@oTown,@oState,@oPostalCode,@oCountry,@oNationality,@oidType,@oidNo,@oContact,@oDob,NULL
  549. -- ,@oOccupation,@oBussType
  550. --END
  551. INSERT INTO EXCHANGE_CUSTOMERDOCUMENT(cId,fileName,fileDescription,fileType,createdBy,createdDate,approvedBy,approvedDate,branchId,tranId)
  552. SELECT @filterCust,docName,docDesc,docType,createdBy,createdDate,case when @party = '726' then createdBy END
  553. ,case when @party = '726' then createdDate END,branchId ,@LOG
  554. FROM EXCHANGE_TEMPCUSTOMERDOCUMENT WHERE sessionId = @sessionId AND branchId = @branchID AND docFor ='C'
  555. INSERT INTO EXCHANGE_TRANSACTIONDOCUMENT(tranId,fileName,fileDescription,fileType,createdBy,createdDate,branchId)
  556. SELECT @LOG,docName,docDesc,docType,createdBy,createdDate,branchId
  557. FROM EXCHANGE_TEMPCUSTOMERDOCUMENT WHERE sessionId = @sessionId AND branchId = @branchID AND docFor ='T'
  558. --IF @strMark ='Y'
  559. --BEGIN
  560. -- INSERT INTO EXCHANGE_SUSPICIOUSTRANSACTION(billNo,reason,remarks,createdBy,createdDate)
  561. -- SELECT @BILLNO,@strReason,@strRemark,@user,GETDATE()
  562. --END
  563. DELETE FROM EXCHANGE_TEMPCUSTOMERDOCUMENT WHERE sessionId = @sessionId AND branchId = @branchID
  564. ----------------------------------------
  565. IF ISNULL(@saveOFACTxn,'S') = 'S'
  566. BEGIN
  567. SELECT @Part_Id=max(Part_Id) FROM #tempsumTrn
  568. ---- Start loop count
  569. --SET @totalRows=1
  570. --WHILE @Part_Id >= @totalRows
  571. --BEGIN
  572. -- -- row wise trn VALUES
  573. -- SELECT @ACCTNUM=acct_num,@TotalAmt=TotalAmt,@trntype=part_tran_type
  574. -- FROM #tempsumTrn WHERE Part_Id=@totalRows
  575. -- EXEC ProcDrCrUpdateFinal @trntype ,@ACCTNUM, @TotalAmt,0
  576. --SET @totalRows=@totalRows+1
  577. --END
  578. -- Create Bill Number
  579. SELECT @ref_num= isnull(fcy_purchase,1) FROM FastMoneyPro_Account.dbo.BillSetting with (UPDLOCK) where company_id = 1
  580. UPDATE FastMoneyPro_Account.dbo.BillSetting SET fcy_purchase=isnull(fcy_purchase,1)+1 WHERE company_id= 1
  581. update FastMoneyPro_Account.dbo.ac_master set
  582. CLR_BAL_AMT=case
  583. when part_tran_type='dr' then isnull(CLR_BAL_AMT,0) - isnull(TotalAmt,0)
  584. else isnull(CLR_BAL_AMT,0) - isnull(-TotalAmt,0)
  585. end
  586. ,usd_amt=case
  587. when part_tran_type='dr' then isnull(usd_amt,0) - isnull(fcy_amt,0)
  588. else isnull(usd_amt,0) - isnull(-fcy_amt,0)
  589. end
  590. FROM FastMoneyPro_Account.dbo.ac_master A WITH (NOLOCK)
  591. INNER JOIN #tempsumTrn T ON T.acct_num =A.acct_num
  592. --SELECT * FROM tran_master
  593. INSERT INTO FastMoneyPro_Account.dbo.tran_master (tran_date,usd_amt,usd_rate,sys_rate ,entry_user_id
  594. ,acc_num,gl_sub_head_code ,part_tran_type ,ref_num
  595. ,tran_amt,tran_type,created_date,billno,fcy_Curr,company_id,part_tran_srl_num,field2)
  596. SELECT @tran_date,fcy_amt,fcy_rate,sys_rate,@user,acct_num,FastMoneyPro_Account.dbo.FunGetGLCode(acct_num),part_tran_type,@ref_num,TotalAmt,
  597. 'P',GETDATE(),@LOG,currency,1,
  598. ROW_NUMBER() OVER(ORDER BY part_tran_type desc),'MoneyEx'
  599. FROM (
  600. SELECT currency,fcy_amt,fcy_rate,sys_rate, acct_num,TotalAmt,part_tran_type FROM #tempsumTrn
  601. )a
  602. INSERT INTO FastMoneyPro_Account.dbo.tran_masterDetail(ref_num,tran_particular,tran_type,tranDate,company_id)
  603. VALUES (@ref_num, ISNULL(@remarks,'BUY'), 'P',@tran_date,1)
  604. UPDATE T SET T.DENOS = D.DENOS
  605. FROM FastMoneyPro_Account.dbo.tran_master T
  606. LEFT JOIN FastMoneyPro_Account.dbo.EXCHANGE_TEMPDENO D ON T.fcy_Curr = D.curr AND T.usd_amt = D.cAmt
  607. WHERE D.sessionId = @SESSIONID and D.tranType = 'B' and D.branchId = @branchID AND T.billno = @LOG
  608. DELETE FROM FastMoneyPro_Account.dbo.EXCHANGE_TEMPDENO WHERE sessionId = @SESSIONID and tranType = 'B' and branchId = @branchID
  609. --SELECT '<b><font color="red">Buy Success voucher No:<a target=''_blank'' href=''userreport_result.asp?trn_date='+CONVERT(VARCHAR,GETDATE(),101)+'&type=trannumber&tran_num='+ cast(@ref_num AS VARCHAR) +'&vouchertype=P'' > '+ cast(@ref_num AS VARCHAR) +' </a></font></b>'+
  610. --'<b><font color="red">Receipt No:<a target=''_blank'' href=''receipt_result.asp?tran_type=p&trn_id='+CONVERT(VARCHAR,@LOG)+''' title="Receipt" rel="gb_page_center[300,430]"> '+ CAST(@LOG AS VARCHAR) +' </a></font></b>' AS remarks
  611. SELECT 0 as code,CAST(@LOG AS VARCHAR) AS remarks
  612. END
  613. IF ISNULL(@saveOFACTxn,'N') = 'R'
  614. BEGIN
  615. SELECT 1 as code,'OFAC Transaction Rejected successfully!' AS remarks
  616. END
  617. DELETE FROM FastMoneyPro_Account.dbo.TEMP_TRANSACTION WHERE sessionId = @sessionId AND tran_type = 'B' AND BRANCH = @branchID
  618. IF @@TRANCOUNT > 0
  619. COMMIT TRANSACTION
  620. END
  621. END TRY
  622. BEGIN CATCH
  623. IF @@TRANCOUNT > 0
  624. ROLLBACK TRANSACTION
  625. SELECT 1 as code, ERROR_MESSAGE() remarks
  626. END CATCH
  627. GO