exchange

Base system with REST service to issue digital coins, run by the payment service provider
Log | Files | Refs | Submodules | README | LICENSE

vqf_902_11.typ (5931B)


      1 // VQF 902.11 Establishing of the controlling person (K)
      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, checkbox
      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.11#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")[Establishing of the controlling person of operating legal entities and partnerships both not quoted on the stock exchange (K)])
     60 
     61   v(0.3em)
     62 
     63   text(size: 9pt, style: "italic")[
     64     (for operating legal entities and partnership that are contracting partner as well as analogously for operating legal entities and partnership that are beneficial owners)
     65   ]
     66 
     67   v(-1em)
     68   line(length:100%)
     69 
     70   v(1em)
     71 
     72   // Section 1: Contracting Partner
     73   text(size: 11pt, weight: "bold")[Contracting partner:]
     74 
     75   v(0.5em)
     76 
     77   table(
     78     columns: (1fr),
     79     stroke: 0.5pt + black,
     80     inset: 5pt,
     81     [#get("IDENTITY_CONTRACTING_PARTNER")]
     82   )
     83 
     84   v(1em)
     85 
     86   // Section 2: Declaration
     87   let control_reason = get("CONTROL_REASON")
     88 
     89   text()[The contracting partner hereby declares that (tick the appropriate box):]
     90 
     91   block(breakable: false)[
     92     #grid(
     93       columns: (auto, 1fr),
     94       gutter: 0.5em,
     95       row-gutter: 0.8em,
     96       checkbox(control_reason == "HAS_25_MORE_RIGHTS"),
     97       [the person(s) listed below is/are *holding 25% or more of the contracting partner's shares (capital shares or voting rights)*; or],
     98 
     99       checkbox(control_reason == "OTHER_WAY"),
    100       [if the capital shares or voting rights cannot be determined or in case there are no capital shares or voting rights 25% or more, the contracting partner hereby declares that the person(s) listed below *is/are controlling the contracting partner in other ways*; or],
    101 
    102       checkbox(control_reason == "DIRECTOR"),
    103       [in case this/these person(s) cannot be determined or this/these person(s) does/do not exist, the contracting partner hereby declares that the person(s) listed below is/are the *managing director(s)*]
    104     )
    105   ]
    106 
    107   v(1em)
    108 
    109   // Section 3: Controlling Persons
    110   let persons = get("IDENTITY_LIST", default: ())
    111   let has_persons = type(persons) == array and persons.len() > 0
    112 
    113   if has_persons {
    114     for person in persons {
    115       let get_person(key) = {
    116         person.at(key, default: "")
    117       }
    118 
    119       block(breakable: false)[
    120         #v(0.5em)
    121         #table(
    122           columns: (35%, 65%),
    123           stroke: 0.5pt + black,
    124           inset: 5pt,
    125           [Full name:], [#get_person("FULL_NAME")],
    126           [Actual address of domicile:], [#get_person("DOMICILE_ADDRESS")]
    127         )
    128         #v(0.5em)
    129       ]
    130     }
    131   } else {
    132     block(breakable: false)[
    133       #v(0.5em)
    134       #table(
    135         columns: (35%, 65%),
    136         stroke: 0.5pt + black,
    137         inset: 5pt,
    138         [Last name(s):], [],
    139         [First name(s):], [],
    140         [Actual address of domicile:], []
    141       )
    142       #v(0.5em)
    143     ]
    144   }
    145 
    146   v(1.5em)
    147 
    148   // Section 4: Fiduciary Holding
    149   text(size: 11pt, weight: "bold")[Fiduciary holding assets]
    150 
    151   v(0.5em)
    152 
    153   let third_party = get("THIRD_PARTY_OWNERSHIP")
    154 
    155   block(breakable: false)[
    156     #text()[Is a third person the beneficial owner of the assets held in the account/securities account?]
    157 
    158     #grid(
    159       columns: (auto, 1fr),
    160       gutter: 0.5em,
    161       row-gutter: 0.5em,
    162       checkbox(not third_party), [No.],
    163       checkbox(third_party), [Yes. $=>$ The relevant information regarding the beneficial owner has to be obtained by filling in a separate VQF doc. No. 902.9.]
    164     )
    165   ]
    166 
    167   v(0.5em)
    168 
    169   text()[The contracting partner hereby undertakes to automatically inform of any changes to the information contained herein.]
    170 
    171   v(0.5em)
    172 
    173   // Signature Section
    174   let submitted_by_officer = get("BY_AML_OFFICER")
    175 
    176   if submitted_by_officer == false {
    177     table(
    178       columns: (40%, 10%, 50%),
    179       stroke: 0.5pt + black,
    180       inset: 5pt,
    181       [Date:],
    182       [],
    183       [Signature(s):],
    184       [#get("SIGN_DATE")],
    185       [],
    186       [#get("SIGNATURE")]
    187     )
    188 
    189     v(1em)
    190 
    191     text(size: 9pt, style: "italic")[
    192       It is a criminal offence to deliberately provide false information on this form (article 251 of the Swiss Criminal Code, documents forgery).
    193     ]
    194   } else if submitted_by_officer == true {
    195     text(weight: "bold")[Signed declaration by the customer]
    196 
    197     v(0.5em)
    198 
    199     text(size: 9pt)[This form was submitted by #get("AML_STAFF_NAME").]
    200 
    201     v(0.5em)
    202 
    203     text(size: 9pt)[The attachment contains the customer's signature on the beneficial owner declaration.]
    204 
    205     v(0.5em)
    206 
    207     table(
    208       columns: (1fr),
    209       stroke: 0.5pt + black,
    210       inset: 5pt,
    211       [Signed Document:],
    212       [#if get("ATTACHMENT_SIGNED_DOCUMENT") != "" [Document attached] else [No document]]
    213     )
    214   } else {
    215     text(weight: "bold")[Invalid submitter (#submitted_by_officer)]
    216   }
    217 }