vqf_902_5.typ (6382B)
1 // VQF 902.5 Customer Profile Template 2 // Pass JSON data as content dictionary 3 4 #let form(data) = { 5 set page( 6 paper: "a4", 7 margin: (left: 2cm, right: 2cm, top: 2cm, bottom: 2.5cm), 8 footer: context [ 9 #grid( 10 columns: (1fr, 1fr), 11 align: (left, right), 12 text(size: 8pt)[ 13 VQF doc. Nr. 902.5#linebreak() 14 Version of 1 December 2015 15 ], 16 text(size: 8pt)[ 17 Page #here().page() of #counter(page).final().first() 18 ] 19 ) 20 ] 21 ) 22 23 set text(font: "Liberation Sans", size: 10pt) 24 set par(justify: false, leading: 0.65em) 25 26 // Helper function to get value or empty string 27 let get(key, default: "") = { 28 data.at(key, default: default) 29 } 30 31 // Helper function for checkbox 32 let checkbox(checked) = { 33 box( 34 width: 3mm, 35 height: 3mm, 36 stroke: 0.5pt + black, 37 inset: 0.3mm, 38 if checked == true or checked == "true" { 39 place(center + horizon, text(size: 8pt, sym.checkmark)) 40 } 41 ) 42 } 43 44 // Header 45 align(center, text(size: 11pt, weight: "bold")[CONFIDENTIAL]) 46 47 v(0.5em) 48 49 grid( 50 columns: (50%, 50%), 51 gutter: 1em, 52 image("vss_vqf_verein.png", width: 80%), 53 align(right)[ 54 #table( 55 columns: (1fr, 1fr), 56 stroke: 0.5pt + black, 57 inset: 5pt, 58 align: (left, left), 59 [VQF member no.], [AMLA File No.], 60 [#get("VQF_MEMBER_NUMBER")], [#get("FILE_NUMBER")] 61 ) 62 ] 63 ) 64 65 v(1em) 66 67 align(left, text(size: 14pt, weight: "bold")[Customer Profile]) 68 69 v(0.3em) 70 71 text(size: 9pt, style: "italic")[For permanent business relationship and regular customers] 72 73 v(-1em) 74 line(length:100%) 75 76 grid( 77 columns: (auto, 1fr), 78 gutter: 0.5em, 79 align: (left, left), 80 image("pointing_finger.svg", height: 2em), 81 text(size: 9pt)[ 82 The information below has to refer to the persons from whom the assets originate ultimately (e.g. beneficial owner of the assets, founder/creator of a trust or foundation). Is the customer an operational legal entity or partnership the information may refer to the entity itself (not to the controlling person), unless the entity holds the assets in trust for a third party. 83 ] 84 ) 85 86 v(1em) 87 88 v(0.3em) 89 90 table( 91 columns: (20%,80%), 92 stroke: 0.5pt + black, 93 inset: 5pt, 94 [Customer:#footnote[Pursuant Identification Form (VQF doc. No. 902.1) numeral 1.]], 95 [#get("CUSTOMER_NAME")] 96 ) 97 98 v(0.5em) 99 100 text(weight: "bold")[This form was completed by:] 101 102 v(0.3em) 103 104 table( 105 columns: (20%, 80%), 106 stroke: 0.5pt + black, 107 inset: 5pt, 108 align: (left, left), 109 [Full name], [#get("AML_STAFF_NAME")], 110 [Date], [#get("FILING_DATE")], 111 ) 112 113 v(1.5em) 114 115 // Section 1: Business Activity 116 text(size: 11pt, weight: "bold")[1. Business activity] 117 118 v(0.5em) 119 120 table( 121 columns: (40%, 60%), 122 stroke: 0.5pt + black, 123 inset: 5pt, 124 [Profession, business activities etc. (former, current, potentially planned)], 125 [#get("BIZREL_PROFESSION")] 126 ) 127 128 v(1.5em) 129 130 // Section 2: Financial Circumstances 131 text(size: 11pt, weight: "bold")[2. Financial circumstances] 132 133 v(0.5em) 134 135 table( 136 columns: (40%, 60%), 137 stroke: 0.5pt + black, 138 inset: 5pt, 139 [Income and assets, liabilities (estimated)], 140 [#get("BIZREL_INCOME")] 141 ) 142 143 v(1.5em) 144 145 // Section 3: Origin of Deposited Assets 146 text(size: 11pt, weight: "bold")[3. Origin of the deposited assets involved] 147 148 v(0.5em) 149 150 let origin_cat = get("BIZREL_ORIGIN_CATEGORY") 151 152 block(breakable: false)[ 153 #table( 154 columns: (40%, 60%), 155 stroke: 0.5pt + black, 156 inset: 5pt, 157 [Nature, amount and currency of the involved assets], 158 [#get("BIZREL_ORIGIN_NATURE")], 159 [Category], 160 [#grid( 161 columns: (auto, 1fr), 162 gutter: 0.5em, 163 checkbox(origin_cat == "SAVINGS"), [Savings], 164 checkbox(origin_cat == "OWN_BUSINESS"), [Own business operations], 165 checkbox(origin_cat == "INHERITANCE"), [Inheritance], 166 checkbox(origin_cat == "OTHER"), [Other, what? #get("BIZREL_ORIGIN_CATEGORY_OTHER")], 167 )], 168 [Detailed description of the origins/economical background of the assets involved in the business relationship], 169 [#get("BIZREL_ORIGIN_DETAIL")] 170 ) 171 ] 172 173 v(1.5em) 174 pagebreak() 175 176 // Section 4: Nature and Purpose 177 text(size: 11pt, weight: "bold")[4. Nature and purpose of the business relationship] 178 179 v(0.5em) 180 181 table( 182 columns: (40%, 60%), 183 stroke: 0.5pt + black, 184 inset: 5pt, 185 [Purpose of the business relationship], 186 [#get("BIZREL_PURPOSE")], 187 [Information on the planned development of the business relationship and the assets], 188 [#get("BIZREL_DEVELOPMENT")], 189 [Especially in the case of cash or money and asset transfer transactions with regular customers: 190 \ - Details on usual business volume 191 \ - Information on the beneficiaries 192 \ (Full name, address, bank account)], 193 [#get("BIZREL_FINANCIAL_VOLUME")] 194 ) 195 196 v(1.5em) 197 198 // Section 5: Relationship with Third Parties 199 text(size: 11pt, weight: "bold")[5. Relationship with third parties] 200 201 v(0.5em) 202 203 table( 204 columns: (40%, 60%), 205 stroke: 0.5pt + black, 206 inset: 5pt, 207 [Relation of the customer to the beneficial owner, controlling persons, authorised signatories and other persons involved in the business relationship], 208 [#get("BIZREL_THIRDPARTY_RELATIONSHIP")], 209 [Relation to other AMLA-Files], 210 [#get("BIZREL_THIRDPARTY_AMLA_FILES")], 211 [Introducer / agents / references], 212 [#get("BIZREL_THIRDPARTY_REFERENCES")] 213 ) 214 215 v(1.5em) 216 217 // Section 6: Further Information 218 text(size: 11pt, weight: "bold")[6. Further information] 219 220 v(0.5em) 221 222 table( 223 columns: (40%, 60%), 224 stroke: 0.5pt + black, 225 inset: 5pt, 226 [Other relevant information], 227 [#get("BIZREL_FURTHER_INFO")] 228 ) 229 230 v(2em) 231 232 text(size: 9pt, style: "italic")[⚠ *This form has to be updated when changes occur.*] 233 } 234 235 // Example usage: 236 #form(( 237 "VQF_MEMBER_NUMBER": "12345", 238 "FILE_NUMBER": "42", 239 "CUSTOMER_NAME": "John Doe", 240 "FILED_BY_NAME": "Jane Smith", 241 "FILING_DATE": "10.11.2025", 242 "BIZREL_PROFESSION": "Software Engineer", 243 "BIZREL_INCOME": "Annual income CHF 150,000", 244 "BIZREL_ORIGIN_NATURE": "CHF 50,000 in cash", 245 "BIZREL_ORIGIN_CATEGORY": "SAVINGS", 246 "BIZREL_PURPOSE": "Payment services", 247 "BIZREL_DEVELOPMENT": "Regular transactions expected", 248 ))