Bezeichnung des AlgorithmusXEN_Belegenheit_Liquiditaetsstufe
KurzbezeichnungErmittlung der Entität BL_Belegenheit_Liquiditaetsstufe und zugehöriger Wertarten auf der Entität BLW_Belegenheit_Liquiditaetsstufe_Wert.
Verbale Beschreibung/BeispieleDieser Algorithmus dient zur Abbildung der Belegenheit, der Liquiditätsstufe und der Kategorie der Anerkennungsfähigkeit von Deckungswerten, weil bei gewissen Deckungswerten eine Durchschau auf eines dieser Attribute notwendig ist.
Kommt vor in/wird verwendet für

SC_Belegenheit_Code

SC_Liquiditaetspufferzuordnung_Code

Formale Beschreibung

FUNKTION XEN_Belegenheit_Liquiditaetsstufe (AI_Mandant MA, AI_Stichtag_Datum repDate, AI_Kons_ID konsId)

// Selektiere alle Deckungswerte in allen Deckungsstöcken:

deckungswerte_gf = SELEKTIERE ALLE GF.AI_Geschaeftsfall_ID VON GF_Geschaeftsfall VON GP_Geschaeftsfall_Sicherheiten_Sachkonten_Pool MIT (GP.GPA01_Deckungsstock_Kennzeichen ISTGLEICH WAHR)

deckungswerte_sk = SELEKTIERE ALLE SK.AI_Sachkonto_ID VON SK_Sachkonto VON GP_Geschaeftsfall_Sicherheiten_Sachkonten_Pool MIT (GP.GPA01_Deckungsstock_Kennzeichen ISTGLEICH WAHR)


// Iteration über Geschäftsfälle:

ITERIERE gfId VON (1, MAX(deckungswerte_gf))

skId = NULL

poolId = SELEKTIERE GK.AI_Geschaeftsfall_Sicherheiten_Sachkonten_Pool_ID VON GK_Geschaeftsfall_Konsolidierungssicht MIT (GK.AI_Geschaeftsfall_ID ISTGLEICH gfId)

liPufferAnteil = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GK.AI_Geschaeftsfall_ID ISTGLEICH gfId UND GFW.AI_Wertart_Code ISTGLEICH "Anteil der Zuordnung zum Liquiditätspuffer (AZL)")

wid = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId UND GFW.AI_Wertart_Code ISTGLEICH „Widmungsanteil Pool (WID)“)

isin = SELEKTIERE GF.AI_ISIN VON GF_Geschaeftsfall MIT (GF.AI_Geschaeftsfall_ID ISTGLEICH gfId)

wpKlass = SELEKTIERE WM.WMA28_Wertpapierklassifikation_Code VON WM_Wertpapier_MS MIT (WM.AI_ISIN ISTGLEICH isin)

anlageklasse = SELEKTIERE GK.GK25_Anerkennungsfaehigkeit_PfandBG_Code VON GF_Geschaeftsfall MIT (GF.AI_Geschaeftsfall_ID ISTGLEICH gfId)


WENN (wpKlass ENTHAELT ("Investmentzertifikat (INVZ)", "Geldmarktfondsanteile (GMF)") UND liPufferAnteil ISTGLEICH 100) DANN // Fonds sind immer und zur Gänze dem Liquiditätspuffer zugeordnet

fondsbestand = SELEKTIERE ALLE GB.AI_Geschaeftsfall_ID2 VON GB_Geschaeftsfall_Sachkonto_Sicherheiten_Beziehung MIT (GB.AI_Geschaeftsfall_ID ISTGLEICH gfId UND GB.GB01_Beziehungsart_Code ISTGLEICH "Zerlegung (ZE)")

ITERIERE gfId2 VON (1, MAX(fondsbestand)) // Durchschau auf liStufe

hqlaStufe = SELEKTIERE GF.GF212_Liquide_Aktiva_Code VON GF_Geschaeftsfall MIT (GF.AI_Geschaeftsfall_ID ISTGLEICH gfId2)

einheitennummer = SELEKTIERE KR.AI_Einheitennummer_ID VON KR_Kundenrollen MIT (KR.AI_Rolle_Code ISTGLEICH "Inhaber (IH)" UND KR.AI_Geschaeftsfall_ID ISTGLEICH gfId)

WENN (NICHT(ISTLEER(hqlaStufe)) UND (hqlaStufe ENTHAELT "HQLA_GL")) DANN // Fonds dürfen gemäß Art. 15 DelV LCR nur in HQLA investieren

liStufe = hqlaStufe

belegenheit = NULL // weil für Fonds (als nicht anerkennungsfähige liquide Aktiva) als n/a definiert

liWert = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId2 UND GFW.AI_Wertart_Code ISTGLEICH "Marktwert nach Haircut und etwaigen Hedgingkosten (MWHH)")

wert = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId2 UND GFW.AI_Wertart_Code ISTGLEICH „Buchwert (BW)“)

gwd = wert * (wid / 100)

liPufferBetrag = liWert * (wid / 100) * (liPufferAnteil / 100)

NEUER_DATENSATZ (mandant, repDate, konsId, gfId, skId, poolId, einheitennummer, belegenheit, liStufe, anlageklasse, gwd, liPufferBetrag)

ENDE

ENDE ITERATION


SONST // kein Fonds, daher keine Durchschau auf liStufe notwendig

typInstr = SELEKTIERE GF.GFA240_Typ_des_Deckungswerts_Code VON GF_Geschaeftsfall MIT (GF.AI_Geschaeftsfall_ID ISTGLEICH gfId)


// Ermittlung von liStufe und liPufferBetrag:

WENN (ISTLEER(liPufferAnteil) ODER NICHT(liPufferAnteil > 0)) DANN // nicht dem Liquiditätspuffer zugeordnet oder nicht liquide oder Deckungsstock nicht bewilligt:

liStufe = NULL

liPufferBetrag = NULL

SONST WENN (liPufferAnteil > 0) DANN

hqlaStufe = SELEKTIERE GF.GF212_Liquide_Aktiva_Code VON GF_Geschaeftsfall MIT (GF.AI_Geschaeftsfall_ID ISTGLEICH gfId)

WENN (NICHT(ISTLEER(hqlaStufe)) UND (hqlaStufe ENTHAELT "HQLA_GL")) DANN // HQLA gemäß DelV LCR als liquides Aktivum

liStufe = hqlaStufe

liWert = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId UND GFW.AI_Wertart_Code ISTGLEICH "Marktwert nach Haircut und etwaigen Hedgingkosten (MWHH)")

SONST WENN ((anlageklasse ISTGLEICH "Risikopositionen gegenüber Kreditinstituten (C)") ODER (typInstr ISTGLEICH „Intern begebene gedeckte Schuldverschreibungen (IS)“)) DANN // Risikoposition ggü einem KI als liquides Aktivum

liStufe = "Risikopositionen gegenüber Kreditinstituten (KI)"

WENN (typInstr ISTGLEICH „Kredite (KR)“) DANN

liWert = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId UND GFW.AI_Wertart_Code ISTGLEICH „Ausstehender Nominalwert (ONA)“)

SONST WENN (typInstr ENTHAELT („Sonstige liquide Aktiva (SL)“, Schuldverschreibungen (exkl. intern begebene gedeckte Schuldverschreibungen) (ES)“, Intern begebene gedeckte Schuldverschreibungen (IS)“)) DANN

liWert = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId UND GFW.AI_Wertart_Code ISTGLEICH „Marktwert (MW)“)

ENDE

ENDE

liPufferBetrag = liWert * (wid / 100) * (liPufferAnteil / 100)

ENDE // Ermittlung von liStufe und liPufferBetrag


// Ermittlung von Belegenheit und GWD:

WENN (typInstr ENTHAELT (Derivate-Forderungen (DF)“, Derivate-Verbindlichkeiten (DV)“)) DANN

gegenpartei = SELEKTIERE KR.AI_Einheitennummer_ID VON KR_Kundenrollen MIT (KR.AI_Geschaeftsfall_ID ISTGLEICH gfId UND KR.AI_Rolle_Code ISTGLEICH „Inhaber (IH)“)

belegenheit = SELEKTIERE EM.EMA48_Land_fuer_Meldezwecke_Code VON EM_Einheit_MS MIT (EM.AI_Einheitennummer_ID ISTGLEICH gegenpartei)

mw = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId UND GFW.AI_Wertart_Code ISTGLEICH „Marktwert (MW)“)

zs = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId UND GFW.AI_Wertart_Code ISTGLEICH "Zinsabgrenzung Soll (Kundensicht) (ZS)")

zh = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId UND GFW.AI_Wertart_Code ISTGLEICH "Zinsabgrenzung Haben (Kundensicht) (ZH)")

wert = mw + zs ‒ zh

WENN (typInstr ISTGLEICH „Derivate-Verbindlichkeiten (DV)“) DANN // gestellte Sicherheiten abziehen

summe = 0

sicherheiten_gf = SELEKTIERE ALLE GB.AI_Geschaeftsfall_ID VON GB_Geschaeftsfall_Sachkonto_Sicherheiten_Beziehung MIT (GB.AI_Geschaeftsfall_ID2 ISTGLEICH gfId UND GB.GB01_Beziehungsart_Code ISTGLEICH "Belastung (BE)")

ITERIERE sicherheit VON (1, MAX(sicherheiten_gf))

mwSi = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Geschaeftsfall_ID ISTGLEICH sicherheit UND GFW.AI_Wertart_Code ISTGLEICH „Marktwert (MW)“)

bab = SELEKTIERE GBW.Wert VON GBW_Geschaeftsfall_Sachkonto_Sicherheiten_Beziehung_Wert MIT (GBW.AI_Wertart_Code ISTGLEICH „Belasteter Anteil (BAB)“ UND GBW.AI_Geschaeftsfall_ID ISTGLEICH sicherheit UND GBW.AI_Geschaeftsfall_ID2 ISTGLEICH gfId)

summe = summe + mwSi * (bab / 100)

ENDE ITERATION

sicherheit_sk = SELEKTIERE ALLE GB.AI_Sachkonto_ID VON GB_Geschaeftsfall_Sachkonto_Sicherheiten_Beziehung MIT (GB.AI_Geschaeftsfall_ID2 ISTGLEICH gfId UND GB.GB01_Beziehungsart_Code ISTGLEICH "Belastung (BE)")

ITERIERE sicherheit VON (1, MAX(sicherheiten_sk))

mwSi = SELEKTIERE SKW.Wert VON SKW_Sachkonten_Wert MIT (SKW.AI_Sachkonto_ID ISTGLEICH sicherheit UND SKW.AI_Wertart_Code ISTGLEICH „Buchwert (BW)“)

bab = SELEKTIERE GBW.Wert VON GBW_Geschaeftsfall_Sachkonto_Sicherheiten_Beziehung_Wert MIT (GBW.AI_Wertart_Code ISTGLEICH „Belasteter Anteil (BAB)“ UND GBW.AI_Sachkonto_ID ISTGLEICH sicherheit UND GBW.AI_Geschaeftsfall_ID2 ISTGLEICH gfId)

summe = summe + mwSi * (bab / 100)

ENDE ITERATION

wert = wert + summe

ENDE // gestellte Sicherheiten abziehen

gwd = wert * (wid / 100)

NEUER_DATENSATZ (mandant, repDate, konsId, gfId, skId, poolId, gegenpartei, belegenheit, liStufe, anlageklasse, gwd, liPufferBetrag)


SONST WENN (typInstr ENTHAELT ("Kredite (KR)", "Schuldverschreibungen (exkl. intern begebene gedeckte Schuldverschreibungen) (ES)") DANN


// Belegenheit und GWD je nach Kategorie der Anerkennungsfähigkeit:

WENN (anlageklasse ENTHAELT („Risikopositionen gegenüber Mitgliedstaaten (A)“, „Risikopositionen gegenüber Drittländern (B)“, "Öffentliche Deckungswerte (gemäß Vorgängerregelung) (OD)")) DANN

gegenpartei = SELEKTIERE KR.AI_Einheitennummer_ID VON KR_Kundenrollen MIT (KR.AI_Geschaeftsfall_ID ISTGLEICH gfId UND KR.AI_Rolle_Code ISTGLEICH „Inhaber (IH)“)

sektor = SELEKTIERE EM.EMA49_Sektor_fuer_Meldezwecke_Code VON EM_Einheit_MS MIT (EM.AI_Einheitennummer_ID ISTGLEICH gegenpartei)

io = SELEKTIERE EM.EM37_Internationale_Organisation_Code VON EM_Einheit_MS MIT (EM.AI_Einheitennummer_ID ISTGLEICH gegenpartei)

WENN (sektor ENTHAELT ("Zentralbank (1210)", "Zentralstaat (1311)", "Länder (inkl. Landeskammern, Landesfonds) (1312)", "Gemeinden (inkl. Gemeindefonds und -verbände) (1313)")) DANN

belegenheit = SELEKTIERE EM.EMA48_Land_fuer_Meldezwecke_Code VON EM_Einheit_MS MIT (EM.AI_Einheitennummer_ID ISTGLEICH gegenpartei)

einheitennummer = gegenpartei

SONST WENN NICHT(ISTLEER(io)) DANN

belegenheit = NULL // weil für internationale Organisationen und multilaterale Entwicklungsbanken als n/a definiert

einheitennummer = gegenpartei

SONST // garantierte Positionen:

garantiegeber = SELEKTIERE KR.AI_Einheitennummer_ID VON KR_Kundenrollen MIT (KR.AI_Geschaeftsfall_ID ISTGLEICH gfId UND KR.AI_Rolle_Code ISTGLEICH "Sicherungsgeber (SG)")

sektor = SELEKTIERE EM.EMA49_Sektor_fuer_Meldezwecke_Code VON EM_Einheit_MS MIT (EM.AI_Einheitennummer_ID ISTGLEICH garantiegeber)

io = SELEKTIERE EM.EM37_Internationale_Organisation_Code VON EM_Einheit_MS MIT (EM.AI_Einheitennummer_ID ISTGLEICH garantiegeber)

WENN (sektor ENTHAELT ("Zentralbank (1210)", "Zentralstaat (1311)", "Länder (inkl. Landeskammern, Landesfonds) (1312)", "Gemeinden (inkl. Gemeindefonds und -verbände) (1313)")) DANN

belegenheit = SELEKTIERE EM.EMA48_Land_fuer_Meldezwecke_Code VON EM_Einheit_MS MIT (EM.AI_Einheitennummer_ID ISTGLEICH garantiegeber)

einheitennummer = garantiegeber

SONST WENN NICHT(ISTLEER(io)) DANN

belegenheit = NULL // weil für internationale Organisationen und multilaterale Entwicklungsbanken als n/a definiert

einheitennummer = garantiegeber

ENDE

ENDE

wert = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId UND GFW.AI_Wertart_Code ISTGLEICH „Ausstehender Nominalwert (ONA)“)

gwd = wert * (wid / 100)

NEUER_DATENSATZ (mandant, repDate, konsId, gfId, skId, poolId, einheitennummer, belegenheit, liStufe, anlageklasse, gwd, liPufferBetrag)


SONST WENN (anlageklasse ISTGLEICH Risikopositionen gegenüber Kreditinstituten (C)“) DANN

wert = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId UND GFW.AI_Wertart_Code ISTGLEICH „Ausstehender Nominalwert (ONA)“)

gegenpartei = SELEKTIERE KR.AI_Einheitennummer_ID VON KR_Kundenrollen MIT (KR.AI_Geschaeftsfall_ID ISTGLEICH gfId UND KR.AI_Rolle_Code ISTGLEICH „Inhaber (IH)“)

belegenheit = SELEKTIERE EM.EMA48_Land_fuer_Meldezwecke_Code VON EM_Einheit_MS MIT (EM.AI_Einheitennummer_ID ISTGLEICH gegenpartei)

gwd = wert * (wid / 100)

NEUER_DATENSATZ (mandant, repDate, konsId, gfId, skId, poolId, gegenpartei, belegenheit, liStufe, anlageklasse, gwd, liPufferBetrag)


SONST WENN (anlageklasse ENTHAELT („Durch Wohnimmobilien besicherte Darlehen (D)“, „Durch Gewerbeimmobilien besicherte Darlehen (F)“, Durch Schiffspfandrechte besicherte Darlehen (G)“, „Sonstige Deckungswerte hoher Qualität (SD)“, "Hypothekarische Deckungswerte (gemäß Vorgängerregelung) (HD)")) DANN

gegenpartei = SELEKTIERE KR.AI_Einheitennummer_ID VON KR_Kundenrollen MIT (KR.AI_Geschaeftsfall_ID ISTGLEICH gfId UND KR.AI_Rolle_Code ISTGLEICH „Inhaber (IH)“)

wert = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId UND GFW.AI_Wertart_Code ISTGLEICH „Ausstehender Nominalwert (ONA)“)

exposureIds = SELEKTIERE ALLE GE.AI_Exposure_ID VON GE_Geschaeftsfall_Exposure MIT (GE.AI_Geschaeftsfall_ID ISTGLEICH gfId UND GE.AI_Zerlegungsansatz_Code ISTGLEICH „PfandBG (PFA)“)

ITERIERE expId VON (1, MAX(exposureIds))

sicherheitenIds = SELEKTIERE ALLE SZ.AI_Sicherheiten_ID VON SZ_Sicherheiten_Zerlegung MIT (SZ.AI_Exposure_ID ISTGLEICH expId UND SZ.AI_Zerlegungsansatz_Code ISTGLEICH „PfandBG (PFA)“)

ITERIERE stId VON (1, MAX(sicherheitenIds))

stKat = SELEKTIERE ST.ST03_Sicherheitenkategorie_Code VON ST_Sicherheiten_Stammdaten MIT (ST.AI_Sicherheiten_ID ISTGLEICH stId)

WENN (stKat ENTHAELT ("Wohnimmobilie (WI)", "Büros und sonstige Gewerberäume (GB)", "Sonstige Gewerbeimmobilien (SI)", "Sonstige Sachsicherheit (SS)")) DANN

einheitId = SELEKTIERE KR.AI_Einheitennummer_ID VON KR_Kundenrollen MIT (KR.AI_Sicherheiten_ID ISTGLEICH stId UND KR.AI_Rolle_Code ISTGLEICH "Der Sicherheit zugeordnete Einheit (SE)")

belegenheit = SELEKTIERE EM.EMA48_Land_fuer_Meldezwecke_Code VON EM_Einheit_MS MIT (EM.AI_Einheitennummer_ID ISTGLEICH einheitId)

wert_st = SELEKTIERE SZW.Wert VON SZW_Sicherheiten_Zerlegungs_Wert MIT (SZW.AI_Exposure_ID ISTGLEICH expId UND SZW.AI_Sicherheiten_ID ISTGLEICH stId UND SZW.AI_Wertart_Code ISTGLEICH „anrechenbarer Wert der Sicherheit (BEL))

gwd = wert_st * (wid / 100)

WENN NICHT(ISTLEER(liPufferBetrag)) DANN

liPufferBetrag_st = liPufferBetrag * (wert_st / wert)

SONST

liPufferBetrag_st = NULL

ENDE

NEUER_DATENSATZ (mandant, repDate, konsId, gfId, skId, poolId, gegenpartei, belegenheit, liStufe, anlageklasse, gwd, liPufferBetrag_st)

ENDE

ENDE ITERATION

ENDE ITERATION


SONST WENN (anlageklasse ISTGLEICHGarantierte Darlehen für Wohnimmobilien (E)) DANN

wert = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId UND GFW.AI_Wertart_Code ISTGLEICH „Ausstehender Nominalwert (ONA)“)

sicherungsgeber = SELEKTIERE KR.AI_Einheitennummer_ID VON KR_Kundenrollen MIT (KR.AI_Geschaeftsfall_ID ISTGLEICH gfId UND KR.AI_Rolle_Code ISTGLEICH "Sicherungsgeber (SG)")

belegenheit = SELEKTIERE EM.EMA48_Land_fuer_Meldezwecke_Code VON EM_Einheit_MS MIT (EM.AI_Einheitennummer_ID ISTGLEICH sicherungsgeber)

gwd = wert * (wid / 100)

NEUER_DATENSATZ (mandant, repDate, konsId, gfId, skId, poolId, sicherungsgeber, belegenheit, liStufe, anlageklasse, gwd, liPufferBetrag)


SONST WENN (anlageklasse ISTGLEICH "Liquide Aktiva, welche keine anerkennungsfähigen Deckungswerte sind (LA)") DANN

gegenpartei = SELEKTIERE KR.AI_Einheitennummer_ID VON KR_Kundenrollen MIT (KR.AI_Geschaeftsfall_ID ISTGLEICH gfId UND KR.AI_Rolle_Code ISTGLEICH „Inhaber (IH)“)

wert = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId UND GFW.AI_Wertart_Code ISTGLEICH „Ausstehender Nominalwert (ONA)“)

belegenheit = NULL // weil für nicht anerkennungsfähige liquide Aktiva als n/a definiert

gwd = wert * (wid / 100)

NEUER_DATENSATZ (mandant, repDate, konsId, gfId, skId, poolId, gegenpartei, belegenheit, liStufe, anlageklasse, gwd, liPufferBetrag)

ENDE // Belegenheit und GWD je nach Kategorie der Anerkennungsfähigkeit


SONST WENN (typInstr ISTGLEICH „Sonstige liquide Aktiva (SL)“) DANN

gegenpartei = SELEKTIERE KR.AI_Einheitennummer_ID VON KR_Kundenrollen MIT (KR.AI_Geschaeftsfall_ID ISTGLEICH gfId UND KR.AI_Rolle_Code ISTGLEICH „Inhaber (IH)“)

belegenheit = NULL // weil für nicht anerkennungsfähige liquide Aktiva als n/a definiert

wert = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId UND GFW.AI_Wertart_Code ISTGLEICH „Buchwert (BW)“)

gwd = wert * (wid / 100)

NEUER_DATENSATZ (mandant, repDate, konsId, gfId, skId, poolId, gegenpartei, belegenheit, liStufe, anlageklasse, gwd, liPufferBetrag)


SONST WENN (typInstr ISTGLEICH „Intern begebene gedeckte Schuldverschreibungen (IS)“) DANN

wert = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId UND GFW.AI_Wertart_Code ISTGLEICH „Ausstehender Nominalwert (ONA)“)

gegenpartei = SELEKTIERE KR.AI_Einheitennummer_ID VON KR_Kundenrollen MIT (KR.AI_Geschaeftsfall_ID ISTGLEICH gfId UND KR.AI_Rolle_Code ISTGLEICH „Inhaber (IH)“)

sitzland = SELEKTIERE EM.EMA48_Land_fuer_Meldezwecke_Code VON EM_Einheit_MS MIT (EM.AI_Einheitennummer_ID ISTGLEICH gegenpartei)

WENN (sitzland ISTGLEICH "AT") DANN

anlageklasse = NULL // weil für inländische gruppeninterne Pfandbriefe als n/a definiert

belegenheit = NULL // weil für inländische gruppeninterne Pfandbriefe als n/a definiert

gwd = wert * (wid / 100)

NEUER_DATENSATZ (mandant, repDate, konsId, gfId, skId, poolId, gegenpartei, belegenheit, liStufe, anlageklasse, gwd, liPufferBetrag)

SONST // grenzüberschreitende gruppeninterne Pfandbriefe: Durchschau auf die Belegenheit und Kategorie der Anerkennungsfähigkeit der zugrundeliegenden Deckungswerte

deckungswerte_intPfb_gf = SELEKTIERE ALLE GB.AI_Geschaeftsfall_ID2 VON GB_Geschaeftsfall_Sachkonto_Sicherheiten_Beziehung MIT (GB.AI_Geschaeftsfall_ID ISTGLEICH gfId UND GB.GB01_Beziehungsart_Code ISTGLEICH "Zerlegung (ZE)")

ITERIERE dwId VON (1, MAX(deckungswerte_intPfb_gf))

anlageklasse = SELEKTIERE GK.GK25_Anerkennungsfaehigkeit_PfandBG_Code VON GF_Geschaeftsfall MIT (GF.AI_Geschaeftsfall_ID ISTGLEICH dwId)

gegenpartei = SELEKTIERE KR.AI_Einheitennummer_ID VON KR_Kundenrollen MIT (KR.AI_Geschaeftsfall_ID ISTGLEICH dwId UND KR.AI_Rolle_Code ISTGLEICH „Inhaber (IH)“)

belegenheit = SELEKTIERE EM.EM02_Sitzland_MS_Code VON EM_Einheit_MS VON KR_Kundenrollen MIT (KR.AI_Rolle_Code ISTGLEICH "Inhaber (IH)") VON GF_Geschaeftsfall MIT (GF.AI_Geschaeftsfall_ID ISTGLEICH dwId)

wert_dw = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Geschaeftsfall_ID ISTGLEICH dwId UND GFW.AI_Wertart_Code ISTGLEICH „Ausstehender Nominalwert (ONA)“)

gwd = wert_dw * (wid / 100)

WENN NICHT(ISTLEER(liPufferBetrag)) DANN

liPufferBetrag_dw = liPufferBetrag * ( wert_dw / wert )

SONST

liPufferBetrag_dw = NULL

ENDE

NEUER_DATENSATZ (mandant, repDate, konsId, gfId, skId, poolId, gegenpartei, belegenheit, liStufe, anlageklasse, gwd, liPufferBetrag_dw)

ENDE ITERATION

deckungswerte_intPfb_sk = SELEKTIERE ALLE GB.AI_Sachkonto_ID2 VON GB_Geschaeftsfall_Sachkonto_Sicherheiten_Beziehung MIT (GB.AI_Geschaeftsfall_ID ISTGLEICH gfId UND GB.GB01_Beziehungsart_Code ISTGLEICH "Zerlegung (ZE)")

ITERIERE dwId VON (1, MAX(deckungswerte_intPfb_sk))

anlageklasse = "Liquide Aktiva, welche keine anerkennungsfähigen Deckungswerte sind (LA)" // SK kann nur Bargeld sein

belegenheit = NULL // weil für nicht anerkennungsfähige liquide Aktiva als n/a definiert

wert = SELEKTIERE SKW.Wert VON SKW_Sachkonten_Wert MIT (SKW.AI_Sachkonto_ID ISTGLEICH dwId UND SKW.AI_Wertart_Code ISTGLEICH „Buchwert (BW)“)

gwd = wert * (wid / 100)

NEUER_DATENSATZ (mandant, repDate, konsId, gfId, skId, poolId, NULL, belegenheit, liStufe, anlageklasse, gwd, liPufferBetrag)

ENDE ITERATION

ENDE // Sitzland des gruppenintern begebenen Pfandbriefs

ENDE // Ermittlung von belegenheit und wert

ENDE // Fonds oder kein Fonds

ITERATION ENDE // Iteration über Geschäftsfälle


// Iteration über Sachkonten:

ITERIERE skId VON (1, MAX(deckungswerte_sk)) // Sachkonten im Deckungsstock können nur Bargeld enthalten

typInstr = SELEKTIERE SK.SKA19_Typ_des_Deckungswerts_Code VON SK_Sachkonto MIT (SK.AI_Sachkonto_ID ISTGLEICH skId)

WENN (typInstr ISTGLEICH „Bargeld (BG)“) DANN

gfId = NULL

belegenheit = NULL // weil für nicht anerkennungsfähige liquide Aktiva als n/a definiert

wert = SELEKTIERE SKW.Wert VON SKW_Sachkonten_Wert MIT (SKW.AI_Sachkonto_ID ISTGLEICH skId UND SKW.AI_Wertart_Code ISTGLEICH „Buchwert (BW)“)

wid = SELEKTIERE SKW.Wert VON SKW_Sachkonten_Wert MIT (SKW.AI_Sachkonto_ID ISTGLEICH skId UND SKW.AI_Wertart_Code ISTGLEICH „Widmungsanteil Pool (WID)“)

gwd = wert * (wid / 100)

poolId = SELEKTIERE SK.AI_Geschaeftsfall_Sicherheiten_Sachkonten_Pool_ID VON SK_Sachkonto MIT (SK.AI_Sachkonto_ID ISTGLEICH skId)

bewilligt = SELEKTIERE GP.GP02_Bewilligung_PfandBG_Kennzeichen VON GP_Geschaeftsfall_Sicherheiten_Sachkonten_Pool MIT (GP.AI_Geschaeftsfall_Sicherheiten_Sachkonten_Pool_ID ISTGLEICH poolId)

WENN bewilligt DANN

anlageklasse = "Liquide Aktiva, welche keine anerkennungsfähigen Deckungswerte sind (LA)"

liStufe = "Aktiva der Stufe 1 (1)"

liPufferAnteil = SELEKTIERE SKW.Wert VON SKW_Sachkonten_Wert MIT (SKW.AI_Sachkonto_ID ISTGLEICH skId UND SKW.AI_Wertart_Code ISTGLEICH "Anteil der Zuordnung zum Liquiditätspuffer (AZL)")

liPufferBetrag = gwd * (liPufferAnteil / 100)

SONST

anlageklasse = "Ersatzdeckungswerte (gemäß Vorgängerregelung) (ED)"

liStufe = NULL

liPufferBetrag = NULL

ENDE

NEUER_DATENSATZ (mandant, repDate, konsId, gfId, skId, poolId, NULL, belegenheit, liStufe, anlageklasse, gwd, liPufferBetrag)

ENDE

ITERATION ENDE

FUNKTIONSENDE


// Subfunktion zur Erstellung neuer Datensätze auf BL_Belegenheit_Liquiditaetsstufe und BLW_Belegenheit_Liquiditaetsstufe_Wert:

FUNKTION NEUER_DATENSATZ (AI_Mandant mandant, AI_Stichtag_Datum repDate, AI_Kons_ID konsId, AI_Geschaeftsfall_ID gfId, AI_Sachkonto_ID skId, AI_Geschaeftsfall_Sicherheiten_Sachkonten_Pool_ID poolId, AI_Einheitennummer_ID einheitennummer, BL01_Belegenheit_Code belegenheit, BL02_Liquiditaetsstufe_Code liStufe, BL03_Anerkennungsfaehigkeit_PfandBG_Code anlageklasse, Wert gwd, Wert liPufferBetrag)

blId = EINDEUTIGE_ID()

ERSTELLE NEUEN BL_Belegenheit_Liquiditaetsstufe UND SETZE:

SETZE AI_Mandant = mandant

SETZE AI_Stichtag_Datum = repDate

SETZE AI_Kons_ID = konsId

SETZE AI_Belegenheit_Liquiditaetsstufe_ID = blId

SETZE AI_Geschaeftsfall_ID = gfId

SETZE AI_Sachkonto_ID = skId

SETZE AI_Geschaeftsfall_Sicherheiten_Sachkonten_Pool_ID = poolId

SETZE AI_Einheitennummer_ID = einheitennummer

SETZE BL01_Belegenheit_Code = belegenheit

SETZE BL02_Liquiditaetsstufe_Code = liStufe

SETZE BL03_Anerkennungsfaehigkeit_PfandBG_Code = anlageklasse

ERSTELLE NEUEN BLW_Belegenheit_Liquiditaetsstufe_Wert UND SETZE:

SETZE AI_Mandant = mandant

SETZE AI_Stichtag_Datum = repDate

SETZE AI_Kons_ID = konsId

SETZE AI_Belegenheit_Liquiditaetsstufe_ID = blId

SETZE AI_Wertart_Code = "Gewidmeter Wert des Deckungswertes (GWD)"

SETZE Wert = gwd

ERSTELLE NEUEN BLW_Belegenheit_Liquiditaetsstufe_Wert UND SETZE:

SETZE AI_Mandant = mandant

SETZE AI_Stichtag_Datum = repDate

SETZE AI_Kons_ID = konsId

SETZE AI_Belegenheit_Liquiditaetsstufe_ID = blId

SETZE AI_Wertart_Code = "Betrag der Zuordnung zum Liquiditätspuffer (BZL)"

SETZE Wert = liPufferBetrag

FUNKTIONSENDE



  • No labels