vqf_902_9.typ (4473B)
1 // VQF 902.9 Declaration of identity of the beneficial owner (A) 2 // Pass JSON data as content dictionary 3 // NOTE: This is the original form. We don't use 4 // it as this form was split in customer + officer parts. 5 // Preserved here in case some auditor insists on us 6 // combining the two! 7 #import "@taler-exchange/common:0.0.0": vqflogo 8 9 #let form(data) = { 10 set page( 11 paper: "a4", 12 margin: (left: 2cm, right: 2cm, top: 2cm, bottom: 2.5cm), 13 footer: context [ 14 #grid( 15 columns: (1fr, 1fr), 16 align: (left, right), 17 text(size: 8pt)[ 18 VQF doc. Nr. 902.9#linebreak() 19 Version of 1 December 2015 20 ], 21 text(size: 8pt)[ 22 Page #here().page() of #counter(page).final().first() 23 ] 24 ) 25 ] 26 ) 27 28 set text(font: "Liberation Sans", size: 10pt) 29 set par(justify: false, leading: 0.65em) 30 31 // Helper function to get value or empty string 32 let get(key, default: "") = { 33 data.at(key, default: default) 34 } 35 36 // Header 37 align(center, text(size: 11pt, weight: "bold")[CONFIDENTIAL]) 38 39 v(0.5em) 40 41 grid( 42 columns: (50%, 50%), 43 gutter: 1em, 44 vqflogo(), 45 align(right)[ 46 #table( 47 columns: (1fr, 1fr), 48 stroke: 0.5pt + black, 49 inset: 5pt, 50 align: (left, left), 51 [VQF member no.], [AMLA File No.], 52 [#get("VQF_MEMBER_NUMBER")], [#get("FILE_NUMBER")] 53 ) 54 ] 55 ) 56 57 v(1em) 58 59 align(left, text(size: 14pt, weight: "bold")[Declaration of identity of the beneficial owner (A)]) 60 61 v(-1em) 62 line(length:100%) 63 64 v(1em) 65 66 // Section 1: Contracting Partner 67 text(size: 11pt, weight: "bold")[Contracting partner:] 68 69 v(0.5em) 70 71 table( 72 columns: (1fr), 73 stroke: 0.5pt + black, 74 inset: 5pt, 75 [#get("IDENTITY_CONTRACTING_PARTNER")] 76 ) 77 78 v(1em) 79 80 text()[The contracting partner hereby declares that the person(s) listed below is/are the beneficial owner(s) of the assets involved in the business relationship. If the contracting partner is also the sole beneficial owner of the assets, the contracting partner's detail must be set out below] 81 82 v(1em) 83 84 // Section 2: Beneficial Owners 85 let owners = get("IDENTITY_LIST", default: ()) 86 let has_owners = type(owners) == array and owners.len() > 0 87 88 if has_owners { 89 for owner in owners { 90 let get_owner(key) = { 91 owner.at(key, default: "") 92 } 93 94 block(breakable: false)[ 95 #v(0.5em) 96 #table( 97 columns: (35%, 65%), 98 stroke: 0.5pt + black, 99 inset: 5pt, 100 [Fullname:], [#get_owner("FULL_NAME")], 101 [Date of birth:], [#get_owner("DATE_OF_BIRTH")], 102 [Nationality:], [#get_owner("NATIONALITY")], 103 [Actual address of domicile:], [#get_owner("DOMICILE_ADDRESS")] 104 ) 105 #v(0.5em) 106 ] 107 } 108 } else { 109 block(breakable: false)[ 110 #v(0.5em) 111 #table( 112 columns: (35%, 65%), 113 stroke: 0.5pt + black, 114 inset: 5pt, 115 [Surname(s):], [], 116 [First name(s):], [], 117 [Date(s) of birth:], [], 118 [Nationality:], [], 119 [Actual address of domicile:], [] 120 ) 121 #v(0.5em) 122 ] 123 } 124 125 v(1em) 126 127 text()[The contracting partner hereby undertakes to inform automatically of any changes to the information contained herein.] 128 129 v(1.5em) 130 131 // Signature Section 132 let submitted_by_officer = get("BY_AML_OFFICER") 133 134 if submitted_by_officer == false { 135 table( 136 columns: (40%, 10%, 50%), 137 stroke: 0.5pt + black, 138 inset: 5pt, 139 [Date:], 140 [], 141 [Signature(s):], 142 [#get("SIGN_DATE")], 143 [], 144 [#get("SIGNATURE")] 145 ) 146 147 v(1em) 148 149 text(size: 9pt, style: "italic")[ 150 It is a criminal offence to deliberately provide false information on this form (article 251 of the Swiss Criminal Code, document forgery) 151 ] 152 } else if submitted_by_officer == true { 153 text(weight: "bold")[Signed declaration by the customer] 154 155 v(0.5em) 156 157 text(size: 9pt)[This form was submitted by #get("AML_STAFF_NAME").] 158 159 v(0.5em) 160 161 text(size: 9pt)[The attachment contains the customer's signature on the beneficial owner declaration.] 162 163 v(0.5em) 164 165 table( 166 columns: (1fr), 167 stroke: 0.5pt + black, 168 inset: 5pt, 169 [Signed Document:], 170 [#if (get("ATTACHMENT_SIGNED_DOCUMENT") != ""){ 171 [Document attached] 172 } else { 173 [No document] 174 } 175 ] 176 ) 177 } else { 178 text(weight: "bold")[Invalid submitter (#submitted_by_officer)] 179 } 180 }