exchange

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

vqf_902_13.typ (12744B)


      1 // VQF 902.13 Declaration for trusts (T) Template
      2 // Pass JSON data as content dictionary
      3 #import "@taler-exchange/common:0.0.0": vqflogo, checkbox
      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.13#linebreak()
     15           Version of 1 September 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")[Declaration for trusts (T)])
     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()[The undersigned hereby declare(s) that as trustee or a member of highest supervisory body of an underlying company of a trust known as:]
     75 
     76   v(0.5em)
     77 
     78   table(
     79     columns: (1fr),
     80     stroke: 0.5pt + black,
     81     inset: 5pt,
     82     [#get("ENTITY_NAME")]
     83   )
     84 
     85   v(1em)
     86 
     87   text()[and, such capacity, provide(s) to best of his/her/their knowledge the following information:]
     88 
     89   v(1.5em)
     90 
     91   // Section 1: Trust Information
     92 [= 1. Name and information pertaining to the trust (tick the two boxes applicable):]
     93 
     94   v(0.5em)
     95 
     96   let entity_type = get("ENTITY_TYPE")
     97   let entity_revoc = get("ENTITY_REVOCABILITY")
     98 
     99   block(breakable: false)[
    100     #grid(
    101       columns: (auto, 1fr, auto, 1fr),
    102       gutter: 1em,
    103       row-gutter: 0.8em,
    104       [Type of trust:],
    105       [#checkbox(entity_type == "DISCRETIONARY") Discretionary trust],
    106       [or],
    107       [#checkbox(entity_type == "NON_DISCRETIONARY") Non-discretionary trust],
    108       [and], [], [], [],
    109       [Revocability:],
    110       [#checkbox(entity_revoc == "REVOCABLE") Revocable trust],
    111       [or],
    112       [#checkbox(entity_revoc == "IRREVOCABLE") Irrevocable trust],
    113     )
    114   ]
    115 
    116   v(1.5em)
    117 
    118   // Section 2: Settlor Information
    119 [= 2. Information pertaining to the (ultimate economic, not fiduciary) settlor of the trust (individual(s) or entity/-ies):]
    120 
    121   v(0.5em)
    122 
    123   let settlors = get("FOUNDER_LIST", default: ())
    124   let has_settlors = type(settlors) == array and settlors.len() > 0
    125 
    126   for settlor in (if has_settlors {settlors} else {((:),)}) {
    127     let get_settlor(key) = {
    128       if settlor != (:) {
    129         settlor.at(key, default: "")
    130       } else {
    131         ""
    132       }
    133     }
    134 
    135     block(breakable: false)[
    136       #table(
    137         columns: (35%, 65%),
    138         stroke: 0.5pt + black,
    139         inset: 5pt,
    140         [Full name/entity:], [#get_settlor("PERSON_ENTITY_NAME")],
    141         [Actual address of domicile/registered office:], [#get_settlor("PERSON_DOMICILE_REGISTERED_OFFICE")],
    142         [Country:], [#get_settlor("PERSON_COUNTRY")],
    143         [Date of birth:], [#get_settlor("PERSON_DATE_OF_BIRTH")],
    144         [Nationality:], [#get_settlor("PERSON_NATIONALITY")],
    145         [Date of death (if deceased):], [#get_settlor("PERSON_DATE_OF_DEATH")]
    146       )
    147     ]
    148     let settlor_revoc = get_settlor("FOUNDER_HAS_REVOCATION_RIGHT")
    149     table(
    150         columns: (80%, 20%),
    151         stroke: 0.5pt + black,
    152         inset: 5pt,
    153         [In case of a revocable trust:
    154         \ Does the settlor have the right to revoke the trust?],
    155         [#grid(
    156           columns: (auto, auto),
    157           stroke: 0.5pt + black,
    158           inset: 5pt,
    159           [#checkbox((entity_revoc == "REVOCABLE") and settlor_revoc) Yes],
    160           [#checkbox((entity_revoc == "REVOCABLE") and not settlor_revoc) No],
    161         )]
    162     )
    163     v(0.5em)
    164 
    165   }
    166 
    167 
    168   v(1.5em)
    169 
    170   // Section 3: Pre-existing Trust
    171 [= 3. If the trust results from a restructuring of a pre-existing trust (re-settlement) or a merger of pre-existing trusts, the following information pertaining to the (actual) settlor of the pre-existing trust(s) has to be given:]
    172 
    173   v(0.5em)
    174 
    175   let has_pred = get("HAS_PREDECESSOR_ENTITY")
    176   let pred_settlors = get("PREDECESSOR_FOUNDER_LIST", default: ())
    177   let has_pred_settlors = has_pred and type(pred_settlors) == array and pred_settlors.len() > 0
    178 
    179   if has_pred_settlors {
    180     for pred in pred_settlors {
    181       let get_pred(key) = {
    182         pred.at(key, default: "")
    183       }
    184 
    185       block(breakable: false)[
    186         #table(
    187           columns: (35%, 65%),
    188           stroke: 0.5pt + black,
    189           inset: 5pt,
    190           [Full name/entity:], [#get_pred("PERSON_ENTITY_NAME")],
    191           [Actual address of domicile/registered office:], [#get_pred("PERSON_DOMICILE_REGISTERED_OFFICE")],
    192           [Country:], [#get_pred("PERSON_COUNTRY")],
    193           [Date of birth:], [#get_pred("PERSON_DATE_OF_BIRTH")],
    194           [Nationality:], [#get_pred("PERSON_NATIONALITY")],
    195           [Date of death (if deceased):], [#get_pred("PERSON_DATE_OF_DEATH")]
    196         )
    197       ]
    198       v(0.5em)
    199     }
    200   } else {
    201     table(
    202       columns: (35%, 65%),
    203       stroke: 0.5pt + black,
    204       inset: 5pt,
    205       [Full name/entity:], [],
    206       [Actual address of domicile/registered office:], [],
    207       [Country:], [],
    208       [Date of birth:], [],
    209       [Nationality:], [],
    210       [Date of death (if deceased):], []
    211     )
    212   }
    213 
    214   // Section 4: Beneficiary Information
    215 [= 4. Information]
    216 
    217   v(0.5em)
    218 
    219 [== a) pertaining to the beneficiary/-ies at the time of the signing of this form:]
    220 
    221   v(0.5em)
    222 
    223   let beneficiaries = get("BENEFICIARY_LIST", default: ())
    224   let has_benef = type(beneficiaries) == array and beneficiaries.len() > 0
    225 
    226   if has_benef {
    227     for benef in beneficiaries {
    228       let get_benef(key) = {
    229         benef.at(key, default: "")
    230       }
    231       let has_claim = get_benef("BENEFICIARY_HAS_CLAIM_RIGHT")
    232 
    233       block(breakable: false)[
    234         #table(
    235           columns: (35%, 65%),
    236           stroke: 0.5pt + black,
    237           inset: 5pt,
    238           [Full name/entity:], [#get_benef("PERSON_ENTITY_NAME")],
    239           [Actual address of domicile/registered office:], [#get_benef("PERSON_DOMICILE_REGISTERED_OFFICE")],
    240           [Country:], [#get_benef("PERSON_COUNTRY")],
    241           [Date of birth:], [#get_benef("PERSON_DATE_OF_BIRTH")],
    242           [Nationality:], [#get_benef("PERSON_NATIONALITY")]
    243         )
    244         #table(
    245           columns: (80%, 20%),
    246           stroke: 0.5pt + black,
    247           inset: 5pt,
    248           [Has the beneficiary an actual right to claim a distribution?],
    249           [#grid(
    250             columns: (auto, auto),
    251             stroke: 0.5pt + black,
    252             inset: 5pt,
    253             [#checkbox(has_claim) Yes],
    254             [#checkbox(not has_claim) No],
    255           )]
    256         )
    257       ]
    258       v(0.5em)
    259     }
    260   } else {
    261     table(
    262       columns: (35%, 65%),
    263       stroke: 0.5pt + black,
    264       inset: 5pt,
    265       [Full name/entity:], [],
    266       [Actual address of domicile/registered office:], [],
    267       [Country:], [],
    268       [Date of birth:], [],
    269       [Nationality:], []
    270     )
    271     table(
    272       columns: (80%, 20%),
    273       stroke: 0.5pt + black,
    274       inset: 5pt,
    275       [Has the beneficiary an actual right to claim a distribution?],
    276       [#grid(
    277         columns: (auto, auto),
    278         stroke: 0.5pt + black,
    279         inset: 5pt,
    280         [#checkbox(false) Yes],
    281         [#checkbox(false) No],
    282       )]
    283     )
    284   }
    285 
    286   v(1em)
    287 
    288 [== b) and in addition to certain beneficiaries or if no beneficiary/-ies has/have been determined, pertaining to (a) group(s) of beneficiaries (e.g. descendants of the settlor) known at the time of the signing of this form:]
    289 
    290   v(0.5em)
    291 
    292   table(
    293     columns: (1fr),
    294     stroke: 0.5pt + black,
    295     inset: 5pt,
    296     [#get("BENEFICIARY_GROUP_DESCRIPTION")]
    297   )
    298 
    299   v(1.5em)
    300 
    301   // Section 5: Protectors and Other Persons
    302 [= 5. Information pertaining to the protector(s) as well as (a) further person(s) having the right to revoke the trust (in case of revocable trusts) or to appoint the trustee of a trust:]
    303 
    304   v(0.5em)
    305 
    306 [== a) Information pertaining to the protector(s)]
    307 
    308   v(0.5em)
    309 
    310   let protectors = get("PROTECTOR_LIST", default: ())
    311   let has_prot = type(protectors) == array and protectors.len() > 0
    312 
    313   if has_prot {
    314     for prot in protectors {
    315       let get_prot(key) = {
    316         prot.at(key, default: "")
    317       }
    318 
    319       let prot_revoc = get_prot("PROTECTOR_HAS_REVOCATION_RIGHT")
    320       block(breakable: false)[
    321         #table(
    322           columns: (35%, 65%),
    323           stroke: 0.5pt + black,
    324           inset: 5pt,
    325           [Full name)/entity:], [#get_prot("PERSON_ENTITY_NAME")],
    326           [Actual address of domicile/registered office:], [#get_prot("PERSON_DOMICILE_REGISTERED_OFFICE")],
    327           [Country:], [#get_prot("PERSON_COUNTRY")],
    328           [Date of birth:], [#get_prot("PERSON_DATE_OF_BIRTH")],
    329           [Nationality:], [#get_prot("PERSON_NATIONALITY")]
    330         )
    331         #table(
    332           columns: (80%, 20%),
    333           stroke: 0.5pt + black,
    334           inset: 5pt,
    335           [In case of a revocable trust:
    336           \ Does the protector have the right to revoke the trust?],
    337           [#grid(
    338             columns: (auto, auto),
    339             stroke: 0.5pt + black,
    340             inset: 5pt,
    341             [#checkbox(prot_revoc) Yes],
    342             [#checkbox(not prot_revoc) No],
    343           )]
    344         )
    345       ]
    346       v(0.5em)
    347     }
    348   } else {
    349     block(breakable: false)[
    350     #table(
    351       columns: (35%, 65%),
    352       stroke: 0.5pt + black,
    353       inset: 5pt,
    354       [Full name/entity:], [],
    355       [Actual address of domicile/registered office:], [],
    356       [Country:], [],
    357       [Date of birth:], [],
    358       [Nationality:], []
    359     )
    360     #table(
    361       columns: (80%, 20%),
    362       stroke: 0.5pt + black,
    363       inset: 5pt,
    364       [In case of a revocable trust:
    365       \ Does the protector have the right to revoke the trust?],
    366       [#grid(
    367         columns: (auto, auto),
    368         stroke: 0.5pt + black,
    369         inset: 5pt,
    370         [#checkbox(false) Yes],
    371         [#checkbox(false) No],
    372       )]
    373     )]
    374   }
    375 
    376   v(0.5em)
    377 
    378   v(1em)
    379 
    380 [== b) Information pertaining to (a) further person(s)]
    381 
    382   v(0.5em)
    383 
    384   let others = get("OTHER_PERSON_LIST", default: ())
    385   let has_others = type(others) == array and others.len() > 0
    386 
    387   if has_others {
    388     for other in others {
    389       let get_other(key) = {
    390         other.at(key, default: "")
    391       }
    392 
    393       block(breakable: false)[
    394         #table(
    395           columns: (35%, 65%),
    396           stroke: 0.5pt + black,
    397           inset: 5pt,
    398           [Last name(s), first name(s)/entity:], [#get_other("PERSON_ENTITY_NAME")],
    399           [Actual address of domicile/registered office:], [#get_other("PERSON_DOMICILE_REGISTERED_OFFICE")],
    400           [Country:], [#get_other("PERSON_COUNTRY")],
    401           [Date(s) of birth:], [#get_other("PERSON_DATE_OF_BIRTH")],
    402           [Nationality:], [#get_other("PERSON_NATIONALITY")]
    403         )
    404       ]
    405       v(0.5em)
    406     }
    407   } else {
    408     table(
    409       columns: (35%, 65%),
    410       stroke: 0.5pt + black,
    411       inset: 5pt,
    412       [Last name(s), first name(s)/entity:], [],
    413       [Actual address of domicile/registered office:], [],
    414       [Country:], [],
    415       [Date(s) of birth:], [],
    416       [Nationality:], []
    417     )
    418   }
    419 
    420   v(0.5em)
    421 
    422   let other_revoc = get("OTHER_PERSON_HAS_REVOCATION_RIGHT")
    423   if entity_revoc == "REVOCABLE" [
    424     #table(
    425       columns: (80%, 20%),
    426       stroke: 0.5pt + black,
    427       inset: 5pt,
    428       [In case of a revocable trust: Has/have this/these further person(s) the right to revoke the trust?],
    429       [#grid(
    430         columns: (auto, 1fr),
    431         gutter: 0.5em,
    432         checkbox(other_revoc), [Yes],
    433         checkbox(not other_revoc), [No],
    434       )]
    435     )
    436   ]
    437 
    438   v(1.5em)
    439 
    440   text()[The contracting partner(s) hereby declare(s) to be entitled to open a business relationship for the trust above or its underlying company.]
    441 
    442   v(0.5em)
    443 
    444   text()[The contracting partner(s) hereby undertake(s) to automatically inform of any changes to the information contained herein.]
    445 
    446   v(1.5em)
    447 
    448   // Signature
    449   table(
    450     columns: (1fr, 1fr),
    451     stroke: 0.5pt + black,
    452     inset: 5pt,
    453     [Date:], [Signature(s):],
    454     [#get("SIGN_DATE")], [#get("SIGNATURE")]
    455   )
    456 
    457   v(1em)
    458 
    459   text(size: 9pt, style: "italic")[
    460     It is a criminal offence to deliberately provide false information on this form (article 251 of the Swiss Criminal Code, document forgery).
    461   ]
    462 }