Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE PROCEDURE [dbo].[sp_GL_Prop_SecAgent_PrevMonth_MtMValue_toCleanPrice_Profit]
- @BookingID varchar(32),
- @Date datetime,
- @LastDate datetime,
- @Value float output
- AS
- declare @Agent varchar(10)
- ,@ValueId int
- ,@MtmValue float
- ,@Currency varchar(3)
- ,@LastDayOfPreviousMonth datetime
- ,@AccruedDiscount float
- --A ticket esetünkben Agent Ticket lesz
- select @Agent = Ticket
- from GL_Transaction
- where BookingId = @BookingId
- select @LastDayOfPreviousMonth = dateadd(month, -1, @Date)
- select @LastDayOfPreviousMonth = dbo.f_LastDayOfMonth(@LastDayOfPreviousMonth)
- ---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
- select @ValueId = max(ValueId)
- from MtMSaved
- where ValueDate = @LastDayOfPreviousMonth
- --diszkont papírok esetén nincs interest, ilyenkor az elhatárolt discount kell
- exec sp_GL_Prop_SecAgent_Bill_Accrual @BookingID, @LastDayOfPreviousMonth, @LastDate, @AccruedDiscount output
- --már forintosítva kerüljenek be az értékek
- --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
- declare @temporaryMTM table(ticket varchar(10), value float)
- --egy értékpapírügylet valós érték különbözete:
- --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)
- insert into @temporaryMTM (ticket, value)
- select i.ticket
- ,case when dbo.f_Currency_RateOrder('HUF') > dbo.f_Currency_RateOrder(v.Currency)
- 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)
- 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
- - i.pieces * (case when dbo.f_Currency_RateOrder('HUF') > dbo.f_Currency_RateOrder(i.Currency)
- then i.FaceValue * dbo.f_Get_Last_GL_Reval_Rate(i.Currency, @LastDayOfPreviousMonth)
- else i.FaceValue / dbo.f_Get_Last_GL_Reval_Rate(i.Currency, @LastDayOfPreviousMonth) end) * d.NetPrice / 100
- from v_Security_Info i
- inner join Mtmvalues v on v.ticket = i.ticket and v.id = @ValueId
- inner join Security_Deal d on i.ticket = d.ticket
- inner join Security s on s.Id = i.Security
- left outer join CashflowTemplate cft on cft.Id = s.Cashflow
- where i.Date = @LastDayOfPreviousMonth
- and i. Agent = @Agent
- --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)
- select @MtmValue = SUM(mtm.value)
- from @temporaryMTM mtm
- --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
- if @MtmValue < 0
- select @Value = 0
- else
- select @Value = @MtmValue
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement