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.

191 lines
9.2 KiB

  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: UserDefinedFunction [dbo].[FNAGetExRate] Script Date: 3/21/2024 12:16:20 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. /*
  9. IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[FNAGetExRate]') AND TYPE IN (N'FN', N'IF', N'TF', N'FS', N'FT'))
  10. DROP FUNCTION [dbo].FNAGetExRate
  11. GO
  12. */
  13. /*
  14. SELECT * FROM dbo.FNAGetExRate(133,13345,NULL,'MYR',16,NULL,'BDT',NULL)
  15. */
  16. CREATE FUNCTION [dbo].[FNAGetExRate](@cCountry INT, @cAgent INT, @cBranch INT, @cCurrency VARCHAR(3), @pCountry INT, @pAgent INT, @pCurrency VARCHAR(3), @tranType INT)
  17. RETURNS @list TABLE (
  18. exRateTreasuryId BIGINT
  19. ,customerRate FLOAT
  20. ,sCurrCostRate FLOAT
  21. ,sCurrHoMargin FLOAT
  22. ,sCurrAgentMargin FLOAT
  23. ,pCurrCostRate FLOAT
  24. ,pCurrHoMargin FLOAT
  25. ,pCurrAgentMargin FLOAT
  26. ,sAgentSettRate FLOAT
  27. ,pAgentSettRate FLOAT
  28. ,agentCrossSettRate FLOAT
  29. ,treasuryTolerance FLOAT
  30. ,customerPremium FLOAT
  31. ,sharingValue MONEY
  32. ,sharingType CHAR(1)
  33. )
  34. AS
  35. BEGIN
  36. DECLARE @exRateTreasuryId BIGINT, @premium FLOAT
  37. DECLARE @customerRate FLOAT
  38. ----FETCH EXRATE FROM COST RATE SETUP FOR DIRECT DEALING WITH KRW (BNI:KRW VS IDR)
  39. IF EXISTS(SELECT 'A' FROM defExRate(NOLOCK) WHERE country = @pCountry AND currency = @pCurrency AND baseCurrency = 'KRW' AND IsActive='Y') --FOR INDONESIA
  40. BEGIN
  41. DECLARE @sCurrCostRate MONEY
  42. SELECT @sCurrCostRate = cRate
  43. FROM defExRate(NOLOCK)
  44. WHERE country = 118 AND currency = 'KRW' AND baseCurrency = 'USD' AND IsActive='Y'
  45. INSERT INTO @list
  46. SELECT defExRateId,pRate - ISNULL(pMargin,0) AS customerRate,@sCurrCostRate sCurrCostRate,0 sCurrHoMargin ,0 sCurrAgentMargin,pRate AS pCurrCostRate,pMargin AS pCurrHoMargin,0 pCurrAgentMargin
  47. , 0 sAgentSettRate, 0 pAgentSettRate ,pRate - ISNULL(pMargin,0) AS agentCrossSettRate,0 treasuryTolerance,0 customerPremium,0 sharingValue,'' sharingType
  48. FROM defExRate(NOLOCK)
  49. WHERE country = @pCountry AND currency = @pCurrency
  50. AND baseCurrency = 'KRW' AND IsActive='Y'
  51. AND ISNULL(tranType,@tranType) = @tranType
  52. RETURN
  53. END
  54. --1. Search By Sending Branch and Receiving Agent
  55. IF EXISTS(SELECT 'X' FROM exRateTreasury ert WITH(NOLOCK) INNER JOIN exRateBranchWise erbw WITH(NOLOCK)
  56. ON ert.exRateTreasuryId = erbw.exRateTreasuryId
  57. WHERE
  58. cBranch = @cBranch AND ISNULL(ert.isActive, 'N') = 'Y' AND ISNULL(erbw.isActive, 'N') = 'Y'
  59. AND pCurrency = @pCurrency
  60. AND pCountry = @pCountry
  61. AND (pAgent = @pAgent)
  62. )
  63. BEGIN
  64. SELECT @exRateTreasuryId = ert.exRateTreasuryId, @premium = erbw.premium FROM exRateTreasury ert WITH(NOLOCK) INNER JOIN exRateBranchWise erbw WITH(NOLOCK)
  65. ON ert.exRateTreasuryId = erbw.exRateTreasuryId
  66. WHERE
  67. cBranch = @cBranch AND ISNULL(ert.isActive, 'N') = 'Y' AND ISNULL(erbw.isActive, 'N') = 'Y'
  68. AND pCurrency = @pCurrency
  69. AND pCountry = @pCountry
  70. AND (pAgent = @pAgent)
  71. SELECT @customerRate = ISNULL(crossRateOperation,customerRate) + ISNULL(@premium, 0) FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId
  72. INSERT INTO @list
  73. SELECT @exRateTreasuryId, @customerRate, sCurrCostRate, sCurrHoMargin, sCurrAgentMargin, pCurrCostRate, pCurrHoMargin, pCurrAgentMargin, sAgentSettRate, pAgentSettRate
  74. , agentCrossSettRate, treasuryTolerance, ISNULL(@premium, customerPremium), sharingValue, sharingType FROM dbo.FNAGetExRateDetails(@exRateTreasuryId)
  75. RETURN
  76. END
  77. --2. Search By Sending Agent and Receiving Agent
  78. IF EXISTS(SELECT 'X' FROM exRateTreasury WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND cCurrency = @cCurrency AND pCurrency = @pCurrency AND cAgent = @cAgent AND (pAgent = @pAgent) AND (pCountry = @pCountry) AND (tranType = @tranType OR tranType IS
  79. NULL))
  80. BEGIN
  81. SELECT @exRateTreasuryId = exRateTreasuryId FROM exRateTreasury WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND cCurrency = @cCurrency AND pCurrency = @pCurrency AND cAgent = @cAgent AND pAgent = @pAgent AND tranType = @tranType
  82. IF @exRateTreasuryId IS NULL
  83. SELECT @exRateTreasuryId = exRateTreasuryId FROM exRateTreasury WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND cCurrency = @cCurrency AND pCurrency = @pCurrency AND cAgent = @cAgent AND pAgent = @pAgent AND tranType IS NULL
  84. INSERT INTO @list
  85. SELECT @exRateTreasuryId, customerRate, sCurrCostRate, sCurrHoMargin, sCurrAgentMargin, pCurrCostRate, pCurrHoMargin, pCurrAgentMargin, sAgentSettRate, pAgentSettRate, agentCrossSettRate
  86. , treasuryTolerance, customerPremium, sharingValue, sharingType FROM dbo.FNAGetExRateDetails(@exRateTreasuryId)
  87. RETURN
  88. --INSERT INTO @list
  89. --SELECT 1,1,1,1,1,1,1,1,1,1,1,1,1,1
  90. --RETURN
  91. END
  92. --3. Search By Sending Branch and Receiving Country
  93. IF EXISTS(SELECT 'X' FROM exRateTreasury ert WITH(NOLOCK) INNER JOIN exRateBranchWise erbw WITH(NOLOCK)
  94. ON ert.exRateTreasuryId = erbw.exRateTreasuryId
  95. WHERE
  96. cBranch = @cBranch AND ISNULL(ert.isActive, 'N') = 'Y' AND ISNULL(erbw.isActive, 'N') = 'Y'
  97. AND pCurrency = @pCurrency
  98. AND pCountry = @pCountry
  99. AND (pAgent IS NULL)
  100. )
  101. BEGIN
  102. SELECT @exRateTreasuryId = ert.exRateTreasuryId, @premium = erbw.premium FROM exRateTreasury ert WITH(NOLOCK) INNER JOIN exRateBranchWise erbw WITH(NOLOCK)
  103. ON ert.exRateTreasuryId = erbw.exRateTreasuryId
  104. WHERE
  105. cBranch = @cBranch AND ISNULL(ert.isActive, 'N') = 'Y' AND ISNULL(erbw.isActive, 'N') = 'Y'
  106. AND pCurrency = @pCurrency
  107. AND pCountry = @pCountry
  108. AND (pAgent IS NULL)
  109. SELECT @customerRate = ISNULL(crossRateOperation,customerRate) + ISNULL(@premium, 0) FROM exRateTreasury WITH(NOLOCK) WHERE exRateTreasuryId = @exRateTreasuryId
  110. INSERT INTO @list
  111. SELECT @exRateTreasuryId, @customerRate, sCurrCostRate, sCurrHoMargin, sCurrAgentMargin, pCurrCostRate, pCurrHoMargin, pCurrAgentMargin, sAgentSettRate, pAgentSettRate, agentCrossSettRate
  112. , treasuryTolerance, customerPremium, sharingValue, sharingType FROM dbo.FNAGetExRateDetails(@exRateTreasuryId)
  113. RETURN
  114. END
  115. --4. Search By Sending Agent and Receiving Country
  116. IF EXISTS(SELECT 'X' FROM exRateTreasury WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND cCurrency = @cCurrency AND pCurrency = @pCurrency AND cAgent = @cAgent AND (pAgent IS NULL)
  117. AND (pCountry = @pCountry) AND (tranType = @tranType OR tranType IS NULL))
  118. BEGIN
  119. SELECT @exRateTreasuryId = exRateTreasuryId FROM exRateTreasury WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND cCurrency = @cCurrency AND pCurrency = @pCurrency AND cAgent = @cAgent
  120. AND pCountry = @pCountry AND pAgent IS NULL AND tranType = @tranType
  121. IF @exRateTreasuryId IS NULL
  122. SELECT @exRateTreasuryId = exRateTreasuryId FROM exRateTreasury WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND cCurrency = @cCurrency AND pCurrency = @pCurrency AND cAgent = @cAgent AND pCountry = @pCountry AND pAgent IS NULL AND tranType IS NULL
  123. INSERT INTO @list
  124. SELECT @exRateTreasuryId, customerRate, sCurrCostRate, sCurrHoMargin, sCurrAgentMargin, pCurrCostRate, pCurrHoMargin, pCurrAgentMargin, sAgentSettRate, pAgentSettRate, agentCrossSettRate,
  125. treasuryTolerance, customerPremium, sharingValue, sharingType FROM dbo.FNAGetExRateDetails(@exRateTreasuryId)
  126. RETURN
  127. --INSERT INTO @list
  128. --SELECT 1,1,1,1,1,1,1,1,1,1,1,1,1,1
  129. --RETURN
  130. END
  131. --3. Search By Sending Country and Receiving Agent/Country
  132. IF EXISTS(SELECT 'X' FROM exRateTreasury WITH(NOLOCK) WHERE ISNULL(isActive, 'N') = 'Y' AND cCurrency = @cCurrency AND pCurrency = @pCurrency AND cCountry = @cCountry AND cAgent IS NULL
  133. AND (pAgent = @pAgent OR pAgent IS NULL) AND (pCountry = @pCountry) AND (tranType = @tranType OR tranType IS NULL))
  134. BEGIN
  135. SELECT @exRateTreasuryId = exRateTreasuryId FROM exRateTreasury WITH(NOLOCK)
  136. WHERE ISNULL(isActive, 'N') = 'Y' AND cCurrency = @cCurrency AND pCurrency = @pCurrency AND cCountry = @cCountry
  137. AND cAgent IS NULL AND pAgent = @pAgent AND tranType = @tranType
  138. IF @exRateTreasuryId IS NULL
  139. BEGIN
  140. SELECT @exRateTreasuryId = exRateTreasuryId
  141. FROM exRateTreasury WITH(NOLOCK)
  142. WHERE ISNULL(isActive, 'N') = 'Y' AND cCurrency = @cCurrency AND pCurrency = @pCurrency AND cCountry = @cCountry AND cAgent IS NULL AND pAgent = @pAgent AND tranType IS NULL
  143. END
  144. IF @exRateTreasuryId IS NULL
  145. BEGIN
  146. SELECT @exRateTreasuryId = exRateTreasuryId
  147. FROM exRateTreasury WITH(NOLOCK)
  148. WHERE ISNULL(isActive, 'N') = 'Y' AND cCurrency = @cCurrency AND pCurrency = @pCurrency AND cCountry = @cCountry AND cAgent IS NULL
  149. AND pCountry = @pCountry AND pAgent IS NULL AND tranType = @tranType
  150. END
  151. IF @exRateTreasuryId IS NULL
  152. BEGIN
  153. SELECT @exRateTreasuryId = exRateTreasuryId
  154. FROM exRateTreasury WITH(NOLOCK)
  155. WHERE ISNULL(isActive, 'N') = 'Y' AND cCurrency = @cCurrency AND pCurrency = @pCurrency AND cCountry = @cCountry
  156. AND cAgent IS NULL AND pCountry = @pCountry AND pAgent IS NULL AND tranType IS NULL
  157. END
  158. INSERT INTO @list
  159. SELECT @exRateTreasuryId, customerRate, sCurrCostRate, sCurrHoMargin, sCurrAgentMargin, pCurrCostRate, pCurrHoMargin, pCurrAgentMargin, sAgentSettRate, pAgentSettRate, agentCrossSettRate,
  160. treasuryTolerance, customerPremium, sharingValue, sharingType
  161. FROM dbo.FNAGetExRateDetails(@exRateTreasuryId)
  162. RETURN
  163. END
  164. INSERT INTO @list
  165. SELECT NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
  166. RETURN
  167. END
  168. GO