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 (12067B)


      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("LEGAL_STRUCTURE_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("LEGAL_STRUCTURE_TYPE")
     97   let entity_revoc = get("LEGAL_STRUCTURE_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("ORIGINATOR_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("NAME_OR_ENTITY")],
    141         [Actual address of domicile/registered office:], [#get_settlor("DOMICILE_OR_REGISTERED_OFFICE")],
    142         [Country:], [#get_settlor("DOMICILE_OR_REGISTERED_OFFICE_COUNTRY")],
    143         [Date of birth:], [#get_settlor("DATE_OF_BIRTH")],
    144         [Nationality:], [#get_settlor("NATIONALITY")],
    145         [Date of death (if deceased):], [#get_settlor("DATE_OF_DEATH")]
    146       )
    147     ]
    148     v(0.5em)
    149   }
    150 
    151   let settlor_revoc = get("ORIGINATOR_HAS_REVOCATION_RIGHT", default: false)
    152   if entity_revoc == "REVOCABLE" [
    153     #table(
    154         columns: (80%, 20%),
    155         stroke: 0.5pt + black,
    156         inset: 5pt,
    157         [In case of a revocable trust:
    158         \ Does the settlor have the right to revoke the trust?],
    159         [#grid(
    160           columns: (auto, auto),
    161           stroke: 0.5pt + black,
    162           inset: 5pt,
    163           [#checkbox(has_settlors and settlor_revoc) Yes],
    164           [#checkbox(has_settlors and not settlor_revoc) No],
    165         )]
    166     )
    167   ]
    168 
    169 
    170   v(1.5em)
    171 
    172   // Section 3: Pre-existing Trust
    173 [= 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:]
    174 
    175   v(0.5em)
    176 
    177   let pred_settlors = get("PREDECESSOR_ORIGINATOR_LIST", default: ())
    178   let has_pred_settlors = type(pred_settlors) == array and pred_settlors.len() > 0
    179 
    180   if has_pred_settlors {
    181     for pred in pred_settlors {
    182       let get_pred(key) = {
    183         pred.at(key, default: "")
    184       }
    185 
    186       block(breakable: false)[
    187         #table(
    188           columns: (35%, 65%),
    189           stroke: 0.5pt + black,
    190           inset: 5pt,
    191           [Full name/entity:], [#get_pred("NAME_OR_ENTITY")],
    192           [Actual address of domicile/registered office:], [#get_pred("DOMICILE_OR_REGISTERED_OFFICE")],
    193           [Country:], [#get_pred("DOMICILE_OR_REGISTERED_OFFICE_COUNTRY")],
    194           [Date of birth:], [#get_pred("DATE_OF_BIRTH")],
    195           [Nationality:], [#get_pred("NATIONALITY")],
    196           [Date of death (if deceased):], [#get_pred("DATE_OF_DEATH")]
    197         )
    198       ]
    199       v(0.5em)
    200     }
    201   } else {
    202     table(
    203       columns: (35%, 65%),
    204       stroke: 0.5pt + black,
    205       inset: 5pt,
    206       [Full name/entity:], [],
    207       [Actual address of domicile/registered office:], [],
    208       [Country:], [],
    209       [Date of birth:], [],
    210       [Nationality:], [],
    211       [Date of death (if deceased):], []
    212     )
    213   }
    214 
    215   // Section 4: Beneficiary Information
    216 [= 4. Information]
    217 
    218   v(0.5em)
    219 
    220 [== a) pertaining to the beneficiary/-ies at the time of the signing of this form:]
    221 
    222   v(0.5em)
    223 
    224   let beneficiaries = get("BENEFICIARY_LIST", default: ())
    225   let has_benef = type(beneficiaries) == array and beneficiaries.len() > 0
    226   let has_claim = get("BENEFICIARIES_HAVE_DISTRIBUTION_CLAIM", default: false)
    227 
    228   if has_benef {
    229     for benef in beneficiaries {
    230       let get_benef(key) = {
    231         benef.at(key, default: "")
    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("NAME_OR_ENTITY")],
    239           [Actual address of domicile/registered office:], [#get_benef("DOMICILE_OR_REGISTERED_OFFICE")],
    240           [Country:], [#get_benef("DOMICILE_OR_REGISTERED_OFFICE_COUNTRY")],
    241           [Date of birth:], [#get_benef("DATE_OF_BIRTH")],
    242           [Nationality:], [#get_benef("NATIONALITY")]
    243         )
    244       ]
    245       v(0.5em)
    246     }
    247   } else {
    248     table(
    249       columns: (35%, 65%),
    250       stroke: 0.5pt + black,
    251       inset: 5pt,
    252       [Full name/entity:], [],
    253       [Actual address of domicile/registered office:], [],
    254       [Country:], [],
    255       [Date of birth:], [],
    256       [Nationality:], []
    257     )
    258   }
    259 
    260   table(
    261     columns: (80%, 20%),
    262     stroke: 0.5pt + black,
    263     inset: 5pt,
    264     [Has/Have the beneficiary/-ies an actual right to claim a distribution?],
    265     [#grid(
    266       columns: (auto, auto),
    267       stroke: 0.5pt + black,
    268       inset: 5pt,
    269       [#checkbox(has_benef and has_claim) Yes],
    270       [#checkbox(has_benef and not has_claim) No],
    271     )]
    272   )
    273 
    274   v(1em)
    275 
    276 [== 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:]
    277 
    278   v(0.5em)
    279 
    280   table(
    281     columns: (1fr),
    282     stroke: 0.5pt + black,
    283     inset: 5pt,
    284     [#get("BENEFICIARY_GROUPS")]
    285   )
    286 
    287   v(1.5em)
    288 
    289   // Section 5: Protectors and Other Persons
    290 [= 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:]
    291 
    292   v(0.5em)
    293 
    294 [== a) Information pertaining to the protector(s)]
    295 
    296   v(0.5em)
    297 
    298   let protectors = get("PROTECTOR_LIST", default: ())
    299   let has_prot = type(protectors) == array and protectors.len() > 0
    300   let prot_revoc = get("PROTECTOR_HAS_REVOCATION_RIGHT", default: false)
    301 
    302   if has_prot {
    303     for prot in protectors {
    304       let get_prot(key) = {
    305         prot.at(key, default: "")
    306       }
    307 
    308       block(breakable: false)[
    309         #table(
    310           columns: (35%, 65%),
    311           stroke: 0.5pt + black,
    312           inset: 5pt,
    313           [Full name/entity:], [#get_prot("NAME_OR_ENTITY")],
    314           [Actual address of domicile/registered office:], [#get_prot("DOMICILE_OR_REGISTERED_OFFICE")],
    315           [Country:], [#get_prot("DOMICILE_OR_REGISTERED_OFFICE_COUNTRY")],
    316           [Date of birth:], [#get_prot("DATE_OF_BIRTH")],
    317           [Nationality:], [#get_prot("NATIONALITY")]
    318         )
    319       ]
    320       v(0.5em)
    321     }
    322   } else {
    323     block(breakable: false)[
    324     #table(
    325       columns: (35%, 65%),
    326       stroke: 0.5pt + black,
    327       inset: 5pt,
    328       [Full name/entity:], [],
    329       [Actual address of domicile/registered office:], [],
    330       [Country:], [],
    331       [Date of birth:], [],
    332       [Nationality:], []
    333     )
    334     ]
    335   }
    336 
    337   table(
    338     columns: (80%, 20%),
    339     stroke: 0.5pt + black,
    340     inset: 5pt,
    341     [In case of a revocable trust:
    342     \ Does the protector have the right to revoke the trust?],
    343     [#grid(
    344       columns: (auto, auto),
    345       stroke: 0.5pt + black,
    346       inset: 5pt,
    347       [#checkbox((entity_revoc == "REVOCABLE") and has_prot and prot_revoc) Yes],
    348       [#checkbox((entity_revoc == "REVOCABLE") and has_prot and not prot_revoc) No],
    349     )]
    350   )
    351 
    352   v(0.5em)
    353 
    354   v(1em)
    355 
    356 [== b) Information pertaining to (a) further person(s)]
    357 
    358   v(0.5em)
    359 
    360   let others = get("FURTHER_PERSON_LIST", default: ())
    361   let has_others = type(others) == array and others.len() > 0
    362 
    363   if has_others {
    364     for other in others {
    365       let get_other(key) = {
    366         other.at(key, default: "")
    367       }
    368 
    369       block(breakable: false)[
    370         #table(
    371           columns: (35%, 65%),
    372           stroke: 0.5pt + black,
    373           inset: 5pt,
    374           [Last name(s), first name(s)/entity:], [#get_other("NAME_OR_ENTITY")],
    375           [Actual address of domicile/registered office:], [#get_other("DOMICILE_OR_REGISTERED_OFFICE")],
    376           [Country:], [#get_other("DOMICILE_OR_REGISTERED_OFFICE_COUNTRY")],
    377           [Date(s) of birth:], [#get_other("DATE_OF_BIRTH")],
    378           [Nationality:], [#get_other("NATIONALITY")]
    379         )
    380       ]
    381       v(0.5em)
    382     }
    383   } else {
    384     table(
    385       columns: (35%, 65%),
    386       stroke: 0.5pt + black,
    387       inset: 5pt,
    388       [Last name(s), first name(s)/entity:], [],
    389       [Actual address of domicile/registered office:], [],
    390       [Country:], [],
    391       [Date(s) of birth:], [],
    392       [Nationality:], []
    393     )
    394   }
    395 
    396   v(0.5em)
    397 
    398   let other_revoc = get("FURTHER_PERSON_HAS_REVOCATION_RIGHT", default: false)
    399   if entity_revoc == "REVOCABLE" [
    400     #table(
    401       columns: (80%, 20%),
    402       stroke: 0.5pt + black,
    403       inset: 5pt,
    404       [In case of a revocable trust: Has/have this/these further person(s) the right to revoke the trust?],
    405       [#grid(
    406         columns: (auto, 1fr),
    407         gutter: 0.5em,
    408         checkbox(has_others and other_revoc), [Yes],
    409         checkbox(has_others and not other_revoc), [No],
    410       )]
    411     )
    412   ]
    413 
    414   v(1.5em)
    415 
    416   text()[The contracting partner(s) hereby declare(s) to be entitled to open a business relationship for the trust above or its underlying company.]
    417 
    418   v(0.5em)
    419 
    420   text()[The contracting partner(s) hereby undertake(s) to automatically inform of any changes to the information contained herein.]
    421 
    422   v(1.5em)
    423 
    424   // Signature
    425   table(
    426     columns: (1fr, 1fr),
    427     stroke: 0.5pt + black,
    428     inset: 5pt,
    429     [Date:], [Signature(s):],
    430     [#get("SIGN_DATE")], [#get("SIGNATURE")]
    431   )
    432 
    433   v(1em)
    434 
    435   text(size: 9pt, style: "italic")[
    436     It is a criminal offence to deliberately provide false information on this form (article 251 of the Swiss Criminal Code, document forgery).
    437   ]
    438 }