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.

706 lines
29 KiB

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