exchange

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

vqf_902_12.typ (10276B)


      1 // VQF 902.12 Foundations (S) 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.12#linebreak()
     15           Version of 1 December 2015
     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")[Foundations (as well as similar constructs) (S)])
     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 board member of the foundation, or of the highest supervisory body of an underlying company of a foundation, 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 the best of his/her/their knowledge the following:]
     88 
     89   v(1.5em)
     90 
     91   // Section 1: Foundation Information
     92 [= 1. Name and information pertaining to the foundation (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 foundation:],
    105       [#checkbox(entity_type == "DISCRETIONARY") Discretionary foundation],
    106       [or],
    107       [#checkbox(entity_type == "NON_DISCRETIONARY") Non-discretionary foundation],
    108       [and], [], [], [],
    109       [Revocability:],
    110       [#checkbox(entity_revoc == "REVOCABLE") Revocable foundation],
    111       [or],
    112       [#checkbox(entity_revoc == "IRREVOCABLE") Irrevocable foundation],
    113     )
    114   ]
    115 
    116   v(1.5em)
    117 
    118   // Section 2: Founder Information
    119 [= 2. Information pertaining to the (ultimate economic, not fiduciary) founder (individual(s) or entity/ies):]
    120 
    121   v(0.5em)
    122 
    123   let founders = get("ORIGINATOR_LIST", default: ())
    124   let has_founders = type(founders) == array and founders.len() > 0
    125 
    126   for founder in (if has_founders {founders} else {((:),)}) {
    127     let get_founder(key) = {
    128       if founder != (:) {
    129         founder.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         [Last name(s), first name(s)/entity:], [#get_founder("NAME_OR_ENTITY")],
    141         [Actual address of domicile/registered office:], [#get_founder("DOMICILE_OR_REGISTERED_OFFICE")],
    142         [Country:], [#get_founder("DOMICILE_OR_REGISTERED_OFFICE_COUNTRY")],
    143         [Date(s) of birth:], [#get_founder("DATE_OF_BIRTH")],
    144         [Nationality:], [#get_founder("NATIONALITY")],
    145         [Date of death (if deceased):], [#get_founder("DATE_OF_DEATH")]
    146       )
    147     ]
    148     v(0.5em)
    149   }
    150 
    151   let founder_revoc = get("ORIGINATOR_HAS_REVOCATION_RIGHT", default: false)
    152   if entity_revoc == "REVOCABLE" [
    153     #table(
    154       columns: (70%, 30%),
    155       stroke: 0.5pt + black,
    156       inset: 5pt,
    157       [In case of a revocable foundation: does the founder have the right to revoke the foundation?],
    158       [#grid(
    159         columns: (auto, 1fr),
    160         gutter: 0.5em,
    161         checkbox(founder_revoc), [Yes],
    162         checkbox(not founder_revoc), [No],
    163       )]
    164     )
    165   ]
    166 
    167   pagebreak()
    168 
    169   // Section 3: Pre-existing Foundation
    170 [= 3. If the foundation results from the restructuring of pre-existing foundation (re-settlement) or the merger of pre-existing foundations, the following information pertaining to the (actual) founder(s) of the pre-existing foundation(s) has to be given:]
    171 
    172   v(0.5em)
    173 
    174   let pred_founders = get("PREDECESSOR_ORIGINATOR_LIST", default: ())
    175   let has_pred_founders = type(pred_founders) == array and pred_founders.len() > 0
    176 
    177   if has_pred_founders {
    178     for pred in pred_founders {
    179       let get_pred(key) = {
    180         pred.at(key, default: "")
    181       }
    182 
    183       block(breakable: false)[
    184         #table(
    185           columns: (35%, 65%),
    186           stroke: 0.5pt + black,
    187           inset: 5pt,
    188           [Last name(s), first name(s)/entity:], [#get_pred("NAME_OR_ENTITY")],
    189           [Actual address of domicile/registered office:], [#get_pred("DOMICILE_OR_REGISTERED_OFFICE")],
    190           [Country:], [#get_pred("DOMICILE_OR_REGISTERED_OFFICE_COUNTRY")],
    191           [Date(s) of birth:], [#get_pred("DATE_OF_BIRTH")],
    192           [Nationality:], [#get_pred("NATIONALITY")],
    193           [Date of death (if deceased):], [#get_pred("DATE_OF_DEATH")]
    194         )
    195       ]
    196       v(0.5em)
    197     }
    198   } else {
    199     table(
    200       columns: (35%, 65%),
    201       stroke: 0.5pt + black,
    202       inset: 5pt,
    203       [Last name(s), first name(s)/entity:], [],
    204       [Actual address of domicile/registered office:], [],
    205       [Country:], [],
    206       [Date(s) of birth:], [],
    207       [Nationality:], [],
    208       [Date of death (if deceased):], []
    209     )
    210   }
    211 
    212   // Section 4: Beneficiary Information
    213 [= 4. Information]
    214 
    215   v(0.5em)
    216 
    217 [== a) pertaining to the beneficiary/ies at the time of the signing of this form:]
    218 
    219   v(0.5em)
    220 
    221   let beneficiaries = get("BENEFICIARY_LIST", default: ())
    222   let has_benef = type(beneficiaries) == array and beneficiaries.len() > 0
    223   let has_claim = get("BENEFICIARIES_HAVE_DISTRIBUTION_CLAIM", default: false)
    224 
    225   if has_benef {
    226     for benef in beneficiaries {
    227       let get_benef(key) = {
    228         benef.at(key, default: "")
    229       }
    230       block(breakable: false)[
    231         #table(
    232           columns: (35%, 65%),
    233           stroke: 0.5pt + black,
    234           inset: 5pt,
    235           [Full name/entity:], [#get_benef("NAME_OR_ENTITY")],
    236           [Actual address of domicile/registered office:], [#get_benef("DOMICILE_OR_REGISTERED_OFFICE")],
    237           [Country:], [#get_benef("DOMICILE_OR_REGISTERED_OFFICE_COUNTRY")],
    238           [Date of birth:], [#get_benef("DATE_OF_BIRTH")],
    239           [Nationality:], [#get_benef("NATIONALITY")]
    240         )
    241       ]
    242       v(0.5em)
    243     }
    244   } else {
    245     table(
    246       columns: (35%, 65%),
    247       stroke: 0.5pt + black,
    248       inset: 5pt,
    249       [Full name/entity:], [],
    250       [Actual address of domicile/registered office:], [],
    251       [Country:], [],
    252       [Date of birth:], [],
    253       [Nationality:], []
    254     )
    255   }
    256 
    257   table(
    258     columns: (35%, 65%),
    259     stroke: 0.5pt + black,
    260     inset: 5pt,
    261     [Has/have the beneficiary/ies an actual right to claim distribution?],
    262     [#grid(
    263       columns: (auto, auto),
    264       stroke: 0.5pt + black,
    265       inset: 5pt,
    266       [#checkbox(has_benef and has_claim) Yes],
    267       [#checkbox(has_benef and not has_claim) No],
    268     )]
    269   )
    270 
    271   v(1em)
    272 
    273 [== b) and in addition to certain beneficiaries or if there is/are no defined beneficiary/ies pertaining to (a) group(s) of beneficiaries (e.g. descendants of the founder) known at the time of the signing of this form:]
    274 
    275   v(0.5em)
    276 
    277   table(
    278     columns: (1fr),
    279     stroke: 0.5pt + black,
    280     inset: 5pt,
    281     [#get("BENEFICIARY_GROUPS")]
    282   )
    283 
    284   pagebreak()
    285 
    286   // Section 5: Nominating Persons
    287 [= 5. Information pertaining to (a) further person(s) having the right to determine or nominate representatives (e.g. members of the foundation board), if these representatives may dispose over the assets or have the right to change the distribution of the assets or the nomination of beneficiaries:]
    288 
    289   v(0.5em)
    290 
    291   let nom_persons = get("FURTHER_PERSON_LIST", default: ())
    292   let has_nom = type(nom_persons) == array and nom_persons.len() > 0
    293 
    294   if has_nom {
    295     for nom in nom_persons {
    296       let get_nom(key) = {
    297         nom.at(key, default: "")
    298       }
    299 
    300       block(breakable: false)[
    301         #table(
    302           columns: (35%, 65%),
    303           stroke: 0.5pt + black,
    304           inset: 5pt,
    305           [Full name/entity:], [#get_nom("NAME_OR_ENTITY")],
    306           [Actual address of domicile/registered office:], [#get_nom("DOMICILE_OR_REGISTERED_OFFICE")],
    307           [Country:], [#get_nom("DOMICILE_OR_REGISTERED_OFFICE_COUNTRY")],
    308           [Date of birth:], [#get_nom("DATE_OF_BIRTH")],
    309           [Nationality:], [#get_nom("NATIONALITY")]
    310         )
    311       ]
    312       v(0.5em)
    313     }
    314   } else {
    315     table(
    316       columns: (35%, 65%),
    317       stroke: 0.5pt + black,
    318       inset: 5pt,
    319       [Full name/entity:], [],
    320       [Actual address of domicile/registered office:], [],
    321       [Country:], [],
    322       [Date of birth:], [],
    323       [Nationality:], []
    324     )
    325   }
    326 
    327   v(0.5em)
    328 
    329   let nom_revoc = get("FURTHER_PERSON_HAS_REVOCATION_RIGHT", default: false)
    330   if entity_revoc == "REVOCABLE" [
    331     #table(
    332       columns: (70%, 30%),
    333       stroke: 0.5pt + black,
    334       inset: 5pt,
    335       [In case of a revocable foundation: is/are there (a) further person(s) with the right to revoke the foundation?],
    336       [#grid(
    337         columns: (auto, auto),
    338         stroke: 0.5pt + black,
    339         inset: 5pt,
    340         [#checkbox(nom_revoc) Yes],
    341         [#checkbox(not nom_revoc) No],
    342       )]
    343     )
    344   ]
    345 
    346   v(1.5em)
    347 
    348   text()[The contracting partner(s) hereby undertake(s) to automatically inform of any changes to the information contained herein.]
    349 
    350   v(1.5em)
    351 
    352   // Signature
    353   table(
    354     columns: (1fr, 1fr),
    355     stroke: 0.5pt + black,
    356     inset: 5pt,
    357     [Date:], [Signature(s):],
    358     [#get("SIGN_DATE")], [#get("SIGNATURE")]
    359   )
    360 
    361   v(1em)
    362 
    363   text(size: 9pt, style: "italic")[
    364     It is a criminal offence to deliberately provide false information on this form (article 251 of the Swiss Criminal Code, document forgery).
    365   ]
    366 }