# Transformation Scheme ID

D_ENTRPRS_SZ_CLCLTD1

# Description

Derivation of “Enterprise size”

# Classification

Phase | Type | Subtype | Related entity |
---|---|---|---|

Enrichment | Derivation | Business | CNTRPRTS |

# Natural language

Create datasets, respectively containing:

– counterparties that are either *Not an enterprise (1)* or an *Autonomous enterprise (2)*

and for which enterprise size is calculated

– calculated values for the previous period

where missing values are assigned as null

– counterparties for which size is already provided in a structure comparable to the calculations

Aggregation of values:

– for Partner enterprises relevant figures have to multiplied by the percentage of interest in the capital of voting rights

– for Group enterprises relevant figures are taken from group data

– relevant figures for all counterparties are aggregated until there is one single value for each counterparty

The preliminary setting is:

– the pure calculation of enterprise size before considering previous period results

where *Enterprise size (preliminary)* is spread out in brackets determing by thresholds of the aggregated values of *Number of employees* and *Balance sheet total*

The final setting takes into account:

– if the enterprise is *Not an enterprise (1)*

– if the enterprise is controlled by public bodies

– if there was no input data (*Enterprise size (preliminary)* is *Large enterprise because of absence of input data (7)*)

– there was no information for previous periods

– mergers and acquisitions exception applies

– in any other case: the interaction between the result of the calculation for current period plus results for previous period applies

Calculated enterprise size is thus a union of:

– the final setting

– data for counterparties for which size was already provided

**Scheme dependencies:**

# VTL Syntax

0 | CNTRPRTS_ATNMS := CNTRPRTS [filter (ENTRPRS_SZ_CHC = "0" and TYP_ENTRPRS in ("1", "2")), keep (CNTRPRTY_ID, NMBR_EMPLYS, BLNC_SHT_TTL, ANNL_TRNVR, TYP_ENTRPRS, CNTRL_PBLC_BDS, EXCPTN_MRG_ACQSTN)]; |

1 | CNTRPRTS_PRVS := [left CNTRPRTS as "A", ENTRPRS_SZ_PRVS_PRD as "B" on A.CNTRPRTY_ID = B.CNTRPRTY_ID] {keep (A.CNTRPRTY_ID, B.ENTRPRS_SZ_CLCLTD, B.ENTRPRS_SZ_PRLMNRY)}; |

2 | PRTNR_ENTRPRSS_AGG := PRTNR_ENTRPRSS [calc PRCNTG_INTRST_CPTL_VTNG_RGHTS * BLNC_SHT_TTL as "AGGRGBL_BLNC_SHT_TTL" role Measure]; |

3 | GRP_ENTRPRSS_AGG := [inner GRP_DT as "A", GRP_CNTRPRTY_RLTNSHP as "B" on A.GRP_INTRNL_ID = B.GRP_INTRNL_ID] {keep (B.CNTRPRTY_ID, A.NMBR_EMPLYS as "AGGRGBL_NMBR_EMPLYS", A.BLNC_SHT_TTL as "AGGRGBL_BLNC_SHT_TTL", A.ANNL_TRNVR as "AGGRGBL_ANNL_TRNVR")}; |

4 | TTL_AGG := PRTNR_ENTRPRSS_AGG [keep (CNTRPRTY_ID, AGGRGBL_BLNC_SHT_TTL, AGGRGBL_NMBR_EMPLYS, AGGRGBL_ANNL_TRNVR)] + LNKD_ENTRPRSS [keep (CNTRPRTY_ID, NMBR_EMPLYS as "AGGRGBL_NMBR_EMPLYS", BLNC_SHT_TTL as "AGGRGBL_BLNC_SHT_TTL", ANNL_TRNVR as "AGGRGBL_ANNL_TRNVR")] + GRP_ENTRPRSS_AGG [keep (CNTRPRTY_ID, AGGRGBL_BLNC_SHT_TTL, AGGRGBL_NMBR_EMPLYS, AGGRGBL_ANNL_TRNVR)] + CNTRPRTS_ATNMS [keep (CNTRPRTY_ID, BLNC_SHT_TTL as "AGGRGBL_BLNC_SHT_TTL", NMBR_EMPLYS as "AGGRGBL_NMBR_EMPLYS", ANNL_TRNVR as "AGGRGBL_ANNL_TRNVR")]; |

5 | PRLMNRY_STTNG := TTL_AGG [calc (if isnull (AGGRGBL_NMBR_EMPLYS) or isnull (AGGRGBL_BLNC_SHT_TTL) and isnull (AGGRGBL_ANNL_TRNVR) then "7" elseif AGGRGBL_NMBR_EMPLYS < 10 and AGGRGBL_BLNC_SHT_TTL <= 2000000 or AGGRGBL_ANNL_TRNVR <= 2000000 then "4" elseif AGGRGBL_NMBR_EMPLYS < 50 and AGGRGBL_BLNC_SHT_TTL <= 10000000 or AGGRGBL_ANNL_TRNVR <= 10000000 then "3" elseif AGGRGBL_NMBR_EMPLYS < 250 and AGGRGBL_BLNC_SHT_TTL <= 43000000 or AGGRGBL_ANNL_TRNVR <= 50000000 then "2" else "6" |

6 | ALL := [inner PRLMNRY_STTNG as "A", CNTRPRTS_PRVS as "B" on A.CNTRPRTY_ID = B.CNTRPRTY_ID] {keep (A.CNTRPRTY_ID, A.ENTRPRS_SZ_PRLMNRY_T, B.ENTRPRS_SZ_CLCLTD, B.ENTRPRS_SZ_PRLMNRY)}; |

7 | ALL := [inner ALL as "A", CNTRPRTS as "C" on A.CNTRPRTY_ID = C.CNTRPRTY_ID] {keep (A.ALL_VARIABLES, C.TYP_ENTRPRS, C.CNTRL_PBLC_BDS, C.EXCPTN_MRG_ACQSTN as "MRGACQ")}; |

8 | FNL_STTNG := ALL [calc (if TYP_ENTRPRS = "1" then "9" elseif CNTRL_PBLC_BDS = "1" then "6" elseif ENTRPRS_SZ_PRLMNRY_T = "7" then "7" elseif ENTRPRS_SZ_CLCLTD = null then ENTRPRS_SZ_PRLMNRY_T elseif MRGACQ = 1 then ENTRPRS_SZ_PRLMNRY_T elseif ENTRPRS_SZ_PRLMNRY_T = "4" then ( if ENTRPRS_SZ_CLCLTD = "4" then "4" elseif ENTRPRS_SZ_CLCLTD in ( "6", "2", "3", "7") and ENTRPRS_SZ_PRLMNRY = "4" then "4" elseif ENTRPRS_SZ_CLCLTD = "3" and ENTRPRS_SZ_PRLMNRY in ("6", "2", "3", "7") then "3" elseif ENTRPRS_SZ_CLCLTD = "2" and ENTRPRS_SZ_PRLMNRY = "3" then "3" elseif ENTRPRS_SZ_CLCLTD = "2" and ENTRPRS_SZ_PRLMNRY in ("6", "2", "7") then "2" elseif ENTRPRS_SZ_CLCLTD in ( "6", "7") and ENTRPRS_SZ_PRLMNRY = "3" then "3" elseif ENTRPRS_SZ_CLCLTD in ( "6", "7") and ENTRPRS_SZ_PRLMNRY = "2" then "2" elseif ENTRPRS_SZ_CLCLTD in ( "6", "7") and ENTRPRS_SZ_PRLMNRY in ("6", "7") then "6" else null elseif ENTRPRS_SZ_PRLMNRY_T = "3" then ( if ENTRPRS_SZ_CLCLTD = "3" then "3" elseif ENTRPRS_SZ_CLCLTD in ( "6", "2", "4", "7") and ENTRPRS_SZ_PRLMNRY = "3" then "3" elseif ENTRPRS_SZ_CLCLTD = "4" and ENTRPRS_SZ_PRLMNRY = "4" then "4" elseif ENTRPRS_SZ_CLCLTD = "4" and ENTRPRS_SZ_PRLMNRY in ("6", "2", "7") then "3" elseif ENTRPRS_SZ_CLCLTD = "2" and ENTRPRS_SZ_PRLMNRY = "4" then "3" elseif ENTRPRS_SZ_CLCLTD = "2" and ENTRPRS_SZ_PRLMNRY in ("6", "2", "7") then "2" elseif ENTRPRS_SZ_CLCLTD in ( "6", "7") and ENTRPRS_SZ_PRLMNRY = "4" then "3" elseif ENTRPRS_SZ_CLCLTD in ( "6", "7") and ENTRPRS_SZ_PRLMNRY = "2" then "2" elseif ENTRPRS_SZ_CLCLTD in ( "6", "7") and ENTRPRS_SZ_PRLMNRY in ("6", "7") then "6" else null elseif ENTRPRS_SZ_PRLMNRY_T = "2" then ( if ENTRPRS_SZ_CLCLTD = "2" then "2" elseif ENTRPRS_SZ_CLCLTD in ( "6", "3", "4", "7") and ENTRPRS_SZ_PRLMNRY = "2" then "2" elseif ENTRPRS_SZ_CLCLTD = "4" and ENTRPRS_SZ_PRLMNRY = "4" then "4" elseif ENTRPRS_SZ_CLCLTD = "4" and ENTRPRS_SZ_PRLMNRY = "3" then "3" elseif ENTRPRS_SZ_CLCLTD = "4" and ENTRPRS_SZ_PRLMNRY in ("6", "7") then "2" elseif ENTRPRS_SZ_CLCLTD = "3" and ENTRPRS_SZ_PRLMNRY = "4" then "3" elseif ENTRPRS_SZ_CLCLTD = "3" and ENTRPRS_SZ_PRLMNRY in (6, 7) then "2" elseif ENTRPRS_SZ_CLCLTD = "3" and ENTRPRS_SZ_PRLMNRY = "3" then "3" elseif ENTRPRS_SZ_CLCLTD in ( "6", "7") and ENTRPRS_SZ_PRLMNRY in ("3", "4") then "2" else ( ) elseif ENTRPRS_SZ_PRLMNRY_T = 6 then ( if ENTRPRS_SZ_CLCLTD in ( "6", "7") then "6" elseif ENTRPRS_SZ_CLCLTD in ( "2", "3", "4") and ENTRPRS_SZ_PRLMNRY in ("6", "7") then "6" elseif ENTRPRS_SZ_CLCLTD = "2" and ENTRPRS_SZ_PRLMNRY in ("2", "3", "4") then "2" elseif ENTRPRS_SZ_CLCLTD = "3" and ENTRPRS_SZ_PRLMNRY = "2" then "2" elseif ENTRPRS_SZ_CLCLTD = "3" and ENTRPRS_SZ_PRLMNRY in ("3", "4") then "3" elseif ENTRPRS_SZ_CLCLTD = "4" and ENTRPRS_SZ_PRLMNRY = "2" then "2" elseif ENTRPRS_SZ_CLCLTD = "4" and ENTRPRS_SZ_PRLMNRY = "3" then "3" elseif ENTRPRS_SZ_CLCLTD = "4" and ENTRPRS_SZ_PRLMNRY = "4" then "4" else null else null |

9 | FNL_STTNG := FNL_STTNG [keep (CNTRPRTY_ID, ENTRPRS_SZ_CLCLTD_T as "ENTRPRS_SZ_CLCLTD"), calc "T" as "IS_DRVD_ENTRPRS_SZ" role Measure]; |

10 | CNTRPRTS_INPT := CNTRPRTS [filter (ENTRPRS_SZ_CHC = "1"), keep (CNTRPRTY_ID, ENTRPRS_SZ as "ENTRPRS_SZ_CLCLTD"), calc "F" as "IS_DRVD_ENTRPRS_SZ" role Measure]; |

11 | D_ENTRPRS_SZ_CLCLTD1 := union (FNL_STTNG, CNTRPRTS_INPT); |

12 | D_ENTRPRS_SZ_CLCLTD1 := D_ENTRPRS_SZ_CLCLTD1 [calc ( ) as "ENTRPRS_SZ"]; |

13 | D_ENTRPRS_SZ_CLCLTD1 := D_ENTRPRS_SZ_CLCLTD1 [keep (CNTRPRTY_ID, ENTRPRS_SZ, IS_DRVD_ENTRPRS_SZ)]; |