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


      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("ENTITY_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("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 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("FOUNDER_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("PERSON_ENTITY_NAME")],
    141         [Actual address of domicile/registered office:], [#get_founder("PERSON_DOMICILE_REGISTERED_OFFICE")],
    142         [Country:], [#get_founder("PERSON_COUNTRY")],
    143         [Date(s) of birth:], [#get_founder("PERSON_DATE_OF_BIRTH")],
    144         [Nationality:], [#get_founder("PERSON_NATIONALITY")],
    145         [Date of death (if deceased):], [#get_founder("PERSON_DATE_OF_DEATH")]
    146       )
    147     ]
    148     v(0.5em)
    149   }
    150 
    151   let founder_revoc = get("FOUNDER_HAS_REVOCATION_RIGHT")
    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 has_pred = get("HAS_PREDECESSOR_ENTITY")
    175   let pred_founders = get("PREDECESSOR_FOUNDER_LIST", default: ())
    176   let has_pred_founders = has_pred and type(pred_founders) == array and pred_founders.len() > 0
    177 
    178   if has_pred_founders {
    179     for pred in pred_founders {
    180       let get_pred(key) = {
    181         pred.at(key, default: "")
    182       }
    183 
    184       block(breakable: false)[
    185         #table(
    186           columns: (35%, 65%),
    187           stroke: 0.5pt + black,
    188           inset: 5pt,
    189           [Last name(s), first name(s)/entity:], [#get_pred("PERSON_ENTITY_NAME")],
    190           [Actual address of domicile/registered office:], [#get_pred("PERSON_DOMICILE_REGISTERED_OFFICE")],
    191           [Country:], [#get_pred("PERSON_COUNTRY")],
    192           [Date(s) of birth:], [#get_pred("PERSON_DATE_OF_BIRTH")],
    193           [Nationality:], [#get_pred("PERSON_NATIONALITY")],
    194           [Date of death (if deceased):], [#get_pred("PERSON_DATE_OF_DEATH")]
    195         )
    196       ]
    197       v(0.5em)
    198     }
    199   } else {
    200     table(
    201       columns: (35%, 65%),
    202       stroke: 0.5pt + black,
    203       inset: 5pt,
    204       [Last name(s), first name(s)/entity:], [],
    205       [Actual address of domicile/registered office:], [],
    206       [Country:], [],
    207       [Date(s) of birth:], [],
    208       [Nationality:], [],
    209       [Date of death (if deceased):], []
    210     )
    211   }
    212 
    213   // Section 4: Beneficiary Information
    214 [= 4. Information]
    215 
    216   v(0.5em)
    217 
    218 [== a) pertaining to the beneficiary/ies at the time of the signing of this form:]
    219 
    220   v(0.5em)
    221 
    222   let beneficiaries = get("BENEFICIARY_LIST", default: ())
    223   let has_benef = type(beneficiaries) == array and beneficiaries.len() > 0
    224 
    225   if has_benef {
    226     for benef in beneficiaries {
    227       let get_benef(key) = {
    228         benef.at(key, default: "")
    229       }
    230       let has_claim = get_benef("BENEFICIARY_HAS_CLAIM_RIGHT")
    231 
    232       block(breakable: false)[
    233         #table(
    234           columns: (35%, 65%),
    235           stroke: 0.5pt + black,
    236           inset: 5pt,
    237           [Full name/entity:], [#get_benef("PERSON_ENTITY_NAME")],
    238           [Actual address of domicile/registered office:], [#get_benef("PERSON_DOMICILE_REGISTERED_OFFICE")],
    239           [Country:], [#get_benef("PERSON_COUNTRY")],
    240           [Date of birth:], [#get_benef("PERSON_DATE_OF_BIRTH")],
    241           [Nationality:], [#get_benef("PERSON_NATIONALITY")],
    242           [Has the beneficiary an actual right to claim distribution?],
    243           [#grid(
    244             columns: (auto, auto),
    245             stroke: 0.5pt + black,
    246             inset: 5pt,
    247             [#checkbox(has_claim) Yes],
    248             [#checkbox(not has_claim) No],
    249           )]
    250         )
    251       ]
    252       v(0.5em)
    253     }
    254   } else {
    255     table(
    256       columns: (35%, 65%),
    257       stroke: 0.5pt + black,
    258       inset: 5pt,
    259       [Full name/entity:], [],
    260       [Actual address of domicile/registered office:], [],
    261       [Country:], [],
    262       [Date of birth:], [],
    263       [Nationality:], [],
    264       [Has the beneficiary an actual right to claim distribution?],
    265       [#grid(
    266         columns: (auto, auto),
    267         stroke: 0.5pt + black,
    268         inset: 5pt,
    269         [#checkbox(false) Yes],
    270         [#checkbox(false) No],
    271       )]
    272     )
    273   }
    274 
    275   v(1em)
    276 
    277 [== 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:]
    278 
    279   v(0.5em)
    280 
    281   table(
    282     columns: (1fr),
    283     stroke: 0.5pt + black,
    284     inset: 5pt,
    285     [#get("BENEFICIARY_GROUP_DESCRIPTION")]
    286   )
    287 
    288   pagebreak()
    289 
    290   // Section 5: Nominating Persons
    291 [= 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:]
    292 
    293   v(0.5em)
    294 
    295   let nom_persons = get("NOMINATING_PERSON_LIST", default: ())
    296   let has_nom = type(nom_persons) == array and nom_persons.len() > 0
    297 
    298   if has_nom {
    299     for nom in nom_persons {
    300       let get_nom(key) = {
    301         nom.at(key, default: "")
    302       }
    303 
    304       block(breakable: false)[
    305         #table(
    306           columns: (35%, 65%),
    307           stroke: 0.5pt + black,
    308           inset: 5pt,
    309           [Full name/entity:], [#get_nom("PERSON_ENTITY_NAME")],
    310           [Actual address of domicile/registered office:], [#get_nom("PERSON_DOMICILE_REGISTERED_OFFICE")],
    311           [Country:], [#get_nom("PERSON_COUNTRY")],
    312           [Date of birth:], [#get_nom("PERSON_DATE_OF_BIRTH")],
    313           [Nationality:], [#get_nom("PERSON_NATIONALITY")]
    314         )
    315       ]
    316       v(0.5em)
    317     }
    318   } else {
    319     table(
    320       columns: (35%, 65%),
    321       stroke: 0.5pt + black,
    322       inset: 5pt,
    323       [Full name/entity:], [],
    324       [Actual address of domicile/registered office:], [],
    325       [Country:], [],
    326       [Date of birth:], [],
    327       [Nationality:], []
    328     )
    329   }
    330 
    331   v(0.5em)
    332 
    333   let nom_revoc = get("EXTRA_REVOCATION_RIGHTS")
    334   table(
    335       columns: (70%, 30%),
    336       stroke: 0.5pt + black,
    337       inset: 5pt,
    338       [In case of a revocable foundation: is/are there (a) further person(s) with the right to revoke the foundation?],
    339       [#grid(
    340         columns: (auto, auto),
    341         stroke: 0.5pt + black,
    342         inset: 5pt,
    343         [#checkbox(nom_revoc) Yes],
    344         [#checkbox(not nom_revoc) No],
    345       )]
    346   )
    347 
    348   v(1.5em)
    349 
    350   text()[The contracting partner(s) hereby undertake(s) to automatically inform of any changes to the information contained herein.]
    351 
    352   v(1.5em)
    353 
    354   // Signature
    355   table(
    356     columns: (1fr, 1fr),
    357     stroke: 0.5pt + black,
    358     inset: 5pt,
    359     [Date:], [Signature(s):],
    360     [#get("SIGN_DATE")], [#get("SIGNATURE")]
    361   )
    362 
    363   v(1em)
    364 
    365   text(size: 9pt, style: "italic")[
    366     It is a criminal offence to deliberately provide false information on this form (article 251 of the Swiss Criminal Code, document forgery).
    367   ]
    368 }