KODIAK Derivatives 1.9.2.3

New Features and fixes for the KODIAK Derivatives Client

Released 20 September 2013

Bug fix

  • [KODIAKDER-387] - Netting - Closing date á gömlu samningum er ekki alltaf sá sami og start date á nýja samningi
  • [KODIAKDER-390] - Kodiak Derivatives Netting - Ekki hægt að prenta receipt
  • [KODIAKDER-391] - Kodiak Derivatives Print contract virkar ekki
  • [KODIAKDER-394] - Samnings númer í Contracts Grid birtist ekki rétt eftir Rollover
  • [KODIAKDER-400] - Netting - Contract Value Today og New Contract Amount ekki deild með Nominal Value
  • [KODIAKDER-401] - Netting - Ekki hægt að setja inn neikvætt New Interest Fee
  • [KODIAKDER-402] - Accrued Interest ekki reiknaðir frá start date á gömlu samningum
  • [KODIAKDER-403] - Birta framlengda samninga í multiple rollover og change of terms
  • [KODIAKDER-404] - Netting Fee og Transaction Fee oftalin í gagnagrunn
  • [KODIAKDER-406] - Rekjanleiki

Rekjanleiki

Rekjaleikakerfið sem sér um sambönd milli samninga t.d. milli lokaðra og nýrra samninga við change of terms, rollover og partially close var gallað og þurfti að endurhanna. Sökum þessa galla er ekki alltaf hægt að rekja uppruna samninga sem eru þegar í kerfinu. Slík rakning er t.a.m. notuð í útprentun sem mun þá ekki vera rétt í fyrir þá samninga sem þessar aðgerðir hafa þegar verið gerðar á nema að það sé lagað handvirkt í gagnagrunninum.

Gagnagrunnsbreytingar

ATH. OriginialContractId dálkurinn í ForwardContracts er ekki lengur notaður. Númer samnings er nú geymt í ContractNumber og ExtensionCount dálkum. Þegar framkvæmd er aðgerð í kerfinu sem við kemur einum eða fleiri samningum þá er búin til færsla í nýrri tölfu, Operations. Allar aðgerðir nema create hafa target (parametrar inn í aðgerðina) sem vísað er í í tölfunni OperationTargets. Allar aðgerðir hafa svo ResultId sem er vísun í samning sem var breytt eða búinn til.

USE Orion
GO
CREATE TABLE OperationTypes
(
Id INT UNIQUE,
Name VARCHAR(50)
)
GO
CREATE TABLE Operations
(
Id INT PRIMARY KEY IDENTITY,
OperationTypeId INT NOT NULL,
ResultId INT NOT NULL,
UserId INT NULL,
DateExecuted DATETIME NOT NULL DEFAULT GetDate(),

CONSTRAINT FK_ForwardContractOperations_ResultId FOREIGN KEY (ResultId) REFERENCES ForwardContracts (Id),
CONSTRAINT FK_ForwardContractOperations_OperationTypeId FOREIGN KEY (OperationTypeId) REFERENCES OperationTypes (Id),
)
GO
CREATE INDEX Operations_ResultId ON Operations(ResultId)
GO
CREATE TABLE OperationTargets
(
OperationId INT NOT NULL,
TargetId INT NOT NULL,
CONSTRAINT PK_OperationTargets_OperationId_TargetId PRIMARY KEY CLUSTERED (OperationId, TargetId),
CONSTRAINT FK_OperationTargets_OperationId FOREIGN KEY (OperationId) REFERENCES Operations (Id),
CONSTRAINT FK_OperationTargets_ResultId FOREIGN KEY (TargetId) REFERENCES ForwardContracts (Id)
)
GO
CREATE INDEX OperationTargets_TargetId ON OperationTargets(TargetId)
GO
ALTER TABLE ForwardContracts
ADD ContractNumber INT NOT NULL DEFAULT 0
GO
INSERT INTO OperationTypes VALUES (1, 'Create')
INSERT INTO OperationTypes VALUES (2, 'Close')
INSERT INTO OperationTypes VALUES (3, 'Partially Close')
INSERT INTO OperationTypes VALUES (4, 'Rollover')
INSERT INTO OperationTypes VALUES (5, 'Change of Terms')
INSERT INTO OperationTypes VALUES (6, 'Netting')
INSERT INTO OperationTypes VALUES (7, 'Sign Contract')
INSERT INTO OperationTypes VALUES (8, 'Sign Receipt')

UPDATE ForwardContracts SET ContractNumber = OriginialContractId
UPDATE ForwardContracts SET ContractNumber = Id WHERE OriginialContractId = 0 OR [State] = 'New Rollover'
EXEC sp_rename @objname = 'ForwardContracts.OriginialContractId', @newname = 'ObsoleteOriginalContractId', @objtype = 'COLUMN'
INSERT INTO Operations (ResultId, OperationTypeId, UserId, DateExecuted) SELECT NettingForwardContractId, 6, MAX(UserId), MAX(ClosingDate) FROM ForwardContracts WHERE NettingForwardContractId IS NOT NULL GROUP BY NettingForwardContractId
INSERT INTO OperationTargets (TargetId, OperationId) SELECT fc.Id, o.Id FROM ForwardContracts fc, Operations o WHERE fc.NettingForwardContractId = o.ResultId
ALTER TABLE ForwardContracts ALTER COLUMN ObsoleteOriginalContractId INT NULL