exchange

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

vqf_902_9.typ (4473B)


      1 // VQF 902.9 Declaration of identity of the beneficial owner (A)
      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
      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.9#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")[Declaration of identity of the beneficial owner (A)])
     60 
     61   v(-1em)
     62   line(length:100%)
     63 
     64   v(1em)
     65 
     66   // Section 1: Contracting Partner
     67   text(size: 11pt, weight: "bold")[Contracting partner:]
     68 
     69   v(0.5em)
     70 
     71   table(
     72     columns: (1fr),
     73     stroke: 0.5pt + black,
     74     inset: 5pt,
     75     [#get("IDENTITY_CONTRACTING_PARTNER")]
     76   )
     77 
     78   v(1em)
     79 
     80   text()[The contracting partner hereby declares that the person(s) listed below is/are the beneficial owner(s) of the assets involved in the business relationship. If the contracting partner is also the sole beneficial owner of the assets, the contracting partner's detail must be set out below]
     81 
     82   v(1em)
     83 
     84   // Section 2: Beneficial Owners
     85   let owners = get("IDENTITY_LIST", default: ())
     86   let has_owners = type(owners) == array and owners.len() > 0
     87 
     88   if has_owners {
     89     for owner in owners {
     90       let get_owner(key) = {
     91         owner.at(key, default: "")
     92       }
     93 
     94       block(breakable: false)[
     95         #v(0.5em)
     96         #table(
     97           columns: (35%, 65%),
     98           stroke: 0.5pt + black,
     99           inset: 5pt,
    100           [Fullname:], [#get_owner("FULL_NAME")],
    101           [Date of birth:], [#get_owner("DATE_OF_BIRTH")],
    102           [Nationality:], [#get_owner("NATIONALITY")],
    103           [Actual address of domicile:], [#get_owner("DOMICILE_ADDRESS")]
    104         )
    105         #v(0.5em)
    106       ]
    107     }
    108   } else {
    109     block(breakable: false)[
    110       #v(0.5em)
    111       #table(
    112         columns: (35%, 65%),
    113         stroke: 0.5pt + black,
    114         inset: 5pt,
    115         [Surname(s):], [],
    116         [First name(s):], [],
    117         [Date(s) of birth:], [],
    118         [Nationality:], [],
    119         [Actual address of domicile:], []
    120       )
    121       #v(0.5em)
    122     ]
    123   }
    124 
    125   v(1em)
    126 
    127   text()[The contracting partner hereby undertakes to inform automatically of any changes to the information contained herein.]
    128 
    129   v(1.5em)
    130 
    131   // Signature Section
    132   let submitted_by_officer = get("BY_AML_OFFICER")
    133 
    134   if submitted_by_officer == false {
    135     table(
    136       columns: (40%, 10%, 50%),
    137       stroke: 0.5pt + black,
    138       inset: 5pt,
    139       [Date:],
    140       [],
    141       [Signature(s):],
    142       [#get("SIGN_DATE")],
    143       [],
    144       [#get("SIGNATURE")]
    145     )
    146 
    147     v(1em)
    148 
    149     text(size: 9pt, style: "italic")[
    150       It is a criminal offence to deliberately provide false information on this form (article 251 of the Swiss Criminal Code, document forgery)
    151     ]
    152   } else if submitted_by_officer == true {
    153     text(weight: "bold")[Signed declaration by the customer]
    154 
    155     v(0.5em)
    156 
    157     text(size: 9pt)[This form was submitted by #get("AML_STAFF_NAME").]
    158 
    159     v(0.5em)
    160 
    161     text(size: 9pt)[The attachment contains the customer's signature on the beneficial owner declaration.]
    162 
    163     v(0.5em)
    164 
    165     table(
    166       columns: (1fr),
    167       stroke: 0.5pt + black,
    168       inset: 5pt,
    169       [Signed Document:],
    170       [#if (get("ATTACHMENT_SIGNED_DOCUMENT") != ""){
    171         [Document attached]
    172        } else {
    173         [No document]
    174        }
    175       ]
    176     )
    177   } else {
    178     text(weight: "bold")[Invalid submitter (#submitted_by_officer)]
    179   }
    180 }