vqf_902_15.typ (6123B)
1 // VQF 902.15 Life Insurance Policies (I) Template 2 // Pass JSON data as content dictionary 3 #import "@taler-exchange/common:0.0.0": vqflogo 4 5 #let form(data) = { 6 set page( 7 paper: "a4", 8 margin: (left: 2cm, right: 2cm, top: 2cm, bottom: 2.5cm), 9 footer: context [ 10 #grid( 11 columns: (1fr, 1fr), 12 align: (left, right), 13 text(size: 8pt)[ 14 VQF doc. Nr. 902.15#linebreak() 15 Version of 22 January 2021 16 ], 17 text(size: 8pt)[ 18 Page #here().page() of #counter(page).final().first() 19 ] 20 ) 21 ] 22 ) 23 24 set text(font: "Liberation Sans", size: 10pt) 25 set par(justify: false, leading: 0.65em) 26 27 let get(key, default: "") = { 28 data.at(key, default: default) 29 } 30 31 // Header 32 align(center, text(size: 11pt, weight: "bold")[CONFIDENTIAL]) 33 34 v(0.5em) 35 36 grid( 37 columns: (50%, 50%), 38 gutter: 1em, 39 vqflogo(), 40 align(right)[ 41 #table( 42 columns: (1fr, 1fr), 43 stroke: 0.5pt + black, 44 inset: 5pt, 45 align: (left, left), 46 [VQF member no.], [AMLA File No.], 47 [#get("VQF_MEMBER_NUMBER")], [#get("FILE_NUMBER")] 48 ) 49 ] 50 ) 51 52 v(1em) 53 54 align(left, text(size: 14pt, weight: "bold")[Information on life insurance policies with separately managed accounts/securities accounts (so-called insurance wrappers) (I)]) 55 56 v(-1em) 57 line(length:100%) 58 59 v(1em) 60 61 text(weight: "bold")[Contracting partner:] 62 63 v(0.5em) 64 65 table( 66 columns: (1fr), 67 stroke: 0.5pt + black, 68 inset: 5pt, 69 [#get("IDENTITY_CONTRACTING_PARTNER")] 70 ) 71 72 v(1em) 73 74 text(weight: "bold")[Name or number of the contractual relationship between the contracting party and the financial intermediary:] 75 76 v(0.5em) 77 78 table( 79 columns: (1fr), 80 stroke: 0.5pt + black, 81 inset: 5pt, 82 [#get("CONTRACTUAL_RELATIONSHIP_NAME")] 83 ) 84 85 v(1em) 86 87 text(weight: "bold")[Insurance policy:] 88 89 v(0.5em) 90 91 table( 92 columns: (1fr), 93 stroke: 0.5pt + black, 94 inset: 5pt, 95 [#get("INSURANCE_POLICY_DETAILS")] 96 ) 97 98 v(1em) 99 100 text()[The contracting partner confirms in accordance with Art. 41a SRO Regulations that it is a licensed and state-supervised insurance company and that it has entered into the above-mentioned contractual relationship the assets connected to the life insurance policy also mentioned above.] 101 102 v(0.5em) 103 104 text()[In relation with the above insurance policy, the contracting partner gives the following further details:] 105 106 v(1.5em) 107 108 // Section 1: Policy Holder 109 [= 1. Policy holder] 110 111 v(0.5em) 112 113 let policy_holders = get("POLICY_HOLDER_LIST", default: ()) 114 let has_holders = type(policy_holders) == array and policy_holders.len() > 0 115 116 for holder in (if has_holders {policy_holders} else {((:),)}) { 117 let get_holder(key) = { 118 if holder != (:) { 119 holder.at(key, default: "") 120 } else { 121 "" 122 } 123 } 124 125 text()[Full name/entity:] 126 127 v(0.3em) 128 129 table( 130 columns: (1fr), 131 stroke: 0.5pt + black, 132 inset: 5pt, 133 [#get_holder("PERSON_ENTITY_NAME")] 134 ) 135 136 v(0.5em) 137 138 table( 139 columns: (40%, 10%, 50%), 140 stroke: 0.5pt + black, 141 inset: 5pt, 142 [Date of birth:], 143 [], 144 [Nationality:], 145 [#get_holder("PERSON_DATE_OF_BIRTH")], 146 [], 147 [#get_holder("PERSON_NATIONALITY")] 148 ) 149 150 v(0.5em) 151 152 text()[Actual address of domicile/registered office (incl. country):] 153 154 v(0.3em) 155 156 table( 157 columns: (1fr), 158 stroke: 0.5pt + black, 159 inset: 5pt, 160 [#get_holder("PERSON_DOMICILE_REGISTERED_OFFICE")] 161 ) 162 163 v(1em) 164 } 165 166 v(0.5em) 167 168 // Section 2: Premium Payer 169 [= 2. Person actually (not in a fiduciary capacity) paying the premiums (to be filled in if not identical with point 1 above):] 170 171 v(0.5em) 172 173 let same_payer = get("PREMIUM_PAYER_SAME_AS_HOLDER") 174 let premium_payers = get("PREMIUM_PAYER_LIST", default: ()) 175 let has_payers = not same_payer and type(premium_payers) == array and premium_payers.len() > 0 176 177 if has_payers { 178 for payer in premium_payers { 179 let get_payer(key) = { 180 payer.at(key, default: "") 181 } 182 183 text()[Full anme/entity:] 184 185 v(0.3em) 186 187 table( 188 columns: (1fr), 189 stroke: 0.5pt + black, 190 inset: 5pt, 191 [#get_payer("PERSON_ENTITY_NAME")] 192 ) 193 194 v(0.5em) 195 196 table( 197 columns: (40%, 10%, 50%), 198 stroke: 0.5pt + black, 199 inset: 5pt, 200 [Date of birth:], 201 [], 202 [Nationality:], 203 [#get_payer("PERSON_DATE_OF_BIRTH")], 204 [], 205 [#get_payer("PERSON_NATIONALITY")] 206 ) 207 208 v(0.5em) 209 210 text()[Actual address of domicile/registered office (incl. country):] 211 212 v(0.3em) 213 214 table( 215 columns: (1fr), 216 stroke: 0.5pt + black, 217 inset: 5pt, 218 [#get_payer("PERSON_DOMICILE_REGISTERED_OFFICE")] 219 ) 220 221 v(1em) 222 } 223 } else { 224 text()[Full name/entity:] 225 226 v(0.3em) 227 228 table( 229 columns: (1fr), 230 stroke: 0.5pt + black, 231 inset: 5pt, 232 [] 233 ) 234 235 v(0.5em) 236 237 table( 238 columns: (40%, 10%, 50%), 239 stroke: 0.5pt + black, 240 inset: 5pt, 241 [Date of birth:], 242 [], 243 [Nationality:], 244 [], 245 [], 246 [] 247 ) 248 249 v(0.5em) 250 251 text()[Actual address of domicile/registered office (incl. country):] 252 253 v(0.3em) 254 255 table( 256 columns: (1fr), 257 stroke: 0.5pt + black, 258 inset: 5pt, 259 [] 260 ) 261 262 v(1em) 263 } 264 265 v(1em) 266 267 text()[The contracting partner hereby undertakes to automatically inform the financial intermediary of any changes. The contracting partner hereby also declares having been given permission by the above individuals and/or entities to transmit their data to the financial intermediary.] 268 269 v(1.5em) 270 271 // Signature 272 table( 273 columns: (40%, 10%, 50%), 274 stroke: 0.5pt + black, 275 inset: 5pt, 276 [Date:], 277 [], 278 [Signature(s):], 279 [#get("SIGN_DATE")], 280 [], 281 [#get("SIGNATURE")] 282 ) 283 284 v(1em) 285 286 text(size: 9pt, style: "italic")[ 287 It is a criminal offence to deliberately provide false information on this form (article 251 of the Swiss Criminal Code, document forgery). 288 ] 289 }