Advertisement
Guest User

Untitled

a guest
Nov 20th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.33 KB | None | 0 0
  1. CREATE PROCEDURE [dbo].[sp_GL_Prop_SecAgent_PrevMonth_MtMValue_toCleanPrice_Profit]
  2.  
  3. @BookingID varchar(32),
  4.  
  5. @Date datetime,
  6.  
  7. @LastDate datetime,
  8.  
  9. @Value float output
  10.  
  11. AS
  12.  
  13.  
  14.  
  15. declare @Agent varchar(10)
  16.  
  17. ,@ValueId int
  18.  
  19. ,@MtmValue float
  20.  
  21. ,@Currency varchar(3)
  22.  
  23. ,@LastDayOfPreviousMonth datetime
  24.  
  25. ,@AccruedDiscount float
  26.  
  27.  
  28.  
  29. --A ticket esetünkben Agent Ticket lesz
  30.  
  31. select @Agent = Ticket
  32.  
  33. from GL_Transaction
  34.  
  35. where BookingId = @BookingId
  36.  
  37.  
  38.  
  39. select @LastDayOfPreviousMonth = dateadd(month, -1, @Date)
  40.  
  41. select @LastDayOfPreviousMonth = dbo.f_LastDayOfMonth(@LastDayOfPreviousMonth)
  42.  
  43.  
  44.  
  45. ---ha egy napon többször is mentettek valós értéket, akkor a legutolsó mentett valós értéket vegye ki: MtMSaved legutolsó id-hoz tartozó MtmValue érték
  46.  
  47. select @ValueId = max(ValueId)
  48.  
  49. from MtMSaved
  50.  
  51. where ValueDate = @LastDayOfPreviousMonth
  52.  
  53.  
  54.  
  55. --diszkont papírok esetén nincs interest, ilyenkor az elhatárolt discount kell
  56.  
  57. exec sp_GL_Prop_SecAgent_Bill_Accrual @BookingID, @LastDayOfPreviousMonth, @LastDate, @AccruedDiscount output
  58.  
  59.  
  60.  
  61. --már forintosítva kerüljenek be az értékek
  62.  
  63. --amennyiben nem forintban mentették le a valós értéket, akkor a legutolsó MNB közép árfolyammal forintosítsuk ezt az értéket
  64.  
  65. declare @temporaryMTM table(ticket varchar(10), value float)
  66.  
  67.  
  68.  
  69. --egy értékpapírügylet valós érték különbözete:
  70.  
  71. --adott értékpapírügylet valós értéke (MtmValues tábla) - felhalmozott kamat (értéknapon lévő v_Security_info accruedinterest értéke) - ügylet nettó értéke (nominal value * net price)
  72.  
  73. insert into @temporaryMTM (ticket, value)
  74.  
  75. select i.ticket
  76.  
  77. ,case when dbo.f_Currency_RateOrder('HUF') > dbo.f_Currency_RateOrder(v.Currency)
  78.  
  79. then (v.MtMValue - v.Interest - case when cft.InterestCalculation = 1 then isnull(@AccruedDiscount,0) else 0 end) * dbo.f_Get_Last_GL_Reval_Rate(v.Currency, @LastDayOfPreviousMonth)
  80.  
  81. else (v.MtMValue - v.Interest - case when cft.InterestCalculation = 1 then isnull(@AccruedDiscount,0) else 0 end) / dbo.f_Get_Last_GL_Reval_Rate(v.Currency, @LastDayOfPreviousMonth) end
  82.  
  83. - i.pieces * (case when dbo.f_Currency_RateOrder('HUF') > dbo.f_Currency_RateOrder(i.Currency)
  84.  
  85. then i.FaceValue * dbo.f_Get_Last_GL_Reval_Rate(i.Currency, @LastDayOfPreviousMonth)
  86.  
  87. else i.FaceValue / dbo.f_Get_Last_GL_Reval_Rate(i.Currency, @LastDayOfPreviousMonth) end) * d.NetPrice / 100
  88.  
  89. from v_Security_Info i
  90.  
  91. inner join Mtmvalues v on v.ticket = i.ticket and v.id = @ValueId
  92.  
  93. inner join Security_Deal d on i.ticket = d.ticket
  94.  
  95. inner join Security s on s.Id = i.Security
  96.  
  97. left outer join CashflowTemplate cft on cft.Id = s.Cashflow
  98.  
  99. where i.Date = @LastDayOfPreviousMonth
  100.  
  101. and i. Agent = @Agent
  102.  
  103.  
  104.  
  105. --adott értékpapírügylet valós értéke (MtmValues tábla) - felhalmozott kamat (értéknapon lévő v_Security_info accruedinterest értéke) - ügylet nettó értéke (nem tudom melyik táblában van benne, de ügyletben szereplő nominal value * net price)
  106.  
  107. select @MtmValue = SUM(mtm.value)
  108.  
  109. from @temporaryMTM mtm
  110.  
  111.  
  112.  
  113. --az eljárás csak akkor adjon vissza értéket, ha < 0, különben nullát adjon vissza. abszolút értékben adja vissza
  114.  
  115. if @MtmValue < 0
  116.  
  117. select @Value = 0
  118.  
  119. else
  120.  
  121. select @Value = @MtmValue
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement