exchange

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

vqf_902_1_officer.typ (7137B)


      1 // VQF 902.1 Identification Form Template
      2 // Pass JSON data as content dictionary
      3 
      4 #let form(data) = {
      5   set page(
      6     paper: "a4",
      7     margin: (left: 2cm, right: 2cm, top: 2cm, bottom: 2.5cm),
      8     footer: context [
      9       #grid(
     10         columns: (1fr, 1fr),
     11         align: (left, right),
     12         text(size: 8pt)[
     13           VQF doc. Nr. 902.1-officer#linebreak()
     14           Version of 1 September 2021
     15         ],
     16         text(size: 8pt)[
     17           Page #here().page() of #counter(page).final().first()
     18         ]
     19       )
     20     ]
     21   )
     22 
     23   set text(font: "Liberation Sans", size: 10pt)
     24   set par(justify: false, leading: 0.65em)
     25 
     26   // Helper function to get value or empty string
     27   let get(key, default: "") = {
     28     data.at(key, default: default)
     29   }
     30 
     31   // Helper function to get value or false
     32   let getb(key, default: false) = {
     33     data.at(key, default: default)
     34   }
     35 
     36   // Helper function for checkbox
     37   let checkbox(checked) = {
     38     box(
     39       width: 3mm,
     40       height: 3mm,
     41       stroke: 0.5pt + black,
     42       inset: 0.3mm,
     43       if checked == true or checked == "true" {
     44         place(center + horizon, text(size: 8pt, sym.checkmark))
     45       }
     46     )
     47   }
     48 
     49   // Header
     50   align(center, text(size: 11pt, weight: "bold")[CONFIDENTIAL])
     51 
     52   v(0.5em)
     53 
     54 
     55   grid(
     56     columns: (50%, 50%),
     57     gutter: 1em,
     58     image("vss_vqf_verein.png", width: 80%),
     59 
     60     align(right)[
     61       #table(
     62         columns: (1fr, 1fr),
     63         stroke: 0.5pt + black,
     64         inset: 5pt,
     65         align: (left, left),
     66         [VQF member no.], [AMLA File No.],
     67         [#get("VQF_MEMBER_NUMBER")], [#get("FILE_NUMBER")]
     68       )
     69     ]
     70   )
     71 
     72   v(1em)
     73 
     74   align(left, text(size: 14pt, weight: "bold")[Identification Form])
     75 
     76   v(-1em)
     77   line(length:100%)
     78 
     79   grid(
     80     columns: (auto, 1fr),
     81     gutter: 0.5em,
     82     align: (left, left),
     83     image("pointing_finger.svg", height: 2em),
     84     text(size: 9pt)[
     85       The customer has to be identified on entering into a permanent business relationship or on concluding a cash transaction, which meets the according threshold.
     86     ]
     87   )
     88 
     89   v(1em)
     90 
     91   text(weight: "bold")[This form was completed by:]
     92 
     93   v(0.3em)
     94 
     95   table(
     96     columns: (1fr, 1fr),
     97     stroke: 0.5pt + black,
     98     inset: 5pt,
     99     align: (left, left),
    100     [Full name], [#get("AML_STAFF_NAME")],
    101     [Date], [#get("FILING_DATE")],
    102   )
    103 
    104   v(1.5em)
    105 
    106   // Section 3: Acceptance of business relationship
    107   text(size: 11pt, weight: "bold")[3. Acceptance of business relationship]
    108 
    109   v(0.5em)
    110 
    111   let acceptance = get("ACCEPTANCE_METHOD")
    112   table(
    113     columns: (35%, 65%),
    114     stroke: 0.5pt + black,
    115     inset: 5pt,
    116     [Date (conclusion of contract)], get("ACCEPTANCE_DATE"),
    117     [Accepted by],
    118     [#grid(
    119       columns: (auto, 1fr),
    120       gutter: 0.5em,
    121       checkbox(acceptance == "FACE_TO_FACE"),
    122       [Face-to-face meeting with customer],
    123       checkbox(acceptance == "WAY_OF_CORRESPONDENCE"),
    124       [Way of correspondence:
    125        \ #v(-0.7em) #grid(
    126          columns: (0.2em, auto),
    127          gutter: 0.5em,
    128          row-gutter: 0.3em,
    129          [],
    130          [#checkbox(acceptance == "AUTHENTICATED_COPY")
    131           authenticated copy of identification document obtained],
    132          [],
    133          [#checkbox(acceptance == "RESIDENTIAL_ADDRESS_VALIDATED")
    134           residential address validated]
    135        )
    136      ]
    137     )],
    138     [Type of correspondence service],
    139     [#grid(
    140       columns: (auto),
    141       gutter: 0.2em,
    142       [#checkbox(true) to the customer],
    143       [#checkbox(false) hold at bank],
    144       [#checkbox(false) to the member],
    145       [#checkbox(false)
    146        to a third party (full name and address):],
    147     )],
    148     [Further information],
    149     [#get("ACCEPTANCE_FURTHER_INFO")]
    150   )
    151 
    152   v(2em)
    153 
    154   // Section 5: Embargo/terrorism evaluation
    155   text(size: 11pt, weight: "bold")[5. Evaluation with regard to embargo procedures/terrorism lists on establishing the business relationship]
    156 
    157   v(0.5em)
    158 
    159   table(
    160     columns: (35%, 65%),
    161     stroke: 0.5pt + black,
    162     inset: 5pt,
    163     [Verification whether the customer, beneficial owners of the assets, controlling persons, authorised representatives or other involved persons are listed on an embargo-/terrorism list (date of verification/result)#footnote[The evaluation must be made at the beginning of the business relationship and has to be repeated in the case of permanent business relationship every time the according lists are updated.]],
    164     [Date: #get("EMBARGO_TERRORISM_CHECK_DATE")
    165      \ Result: #get("EMBARGO_TERRORISM_CHECK_RESULT")],
    166   )
    167 
    168   v(2em)
    169 
    170   // Section 6: Cash transactions
    171   text(size: 11pt, weight: "bold")[6. In the case of cash transactions/occasional customers: Information on type and purpose of business relationship]
    172 
    173   v(0.5em)
    174 
    175   grid(
    176     columns: (auto, 1fr),
    177     gutter: 0.5em,
    178     align: (left, left),
    179     image("pointing_finger.svg", height: 2em),
    180     text(size: 9pt)[
    181       These details are only necessary for occasional customers, i.e. money exchange, money and asset transfer or other cash transactions provided that #underline([no]) customer profile (VQF doc. No. 902.5) is created
    182     ]
    183   )
    184 
    185   v(1em)
    186 
    187   table(
    188     columns: (35%, 65%),
    189     stroke: 0.5pt + black,
    190     inset: 5pt,
    191     [Type of business relationship],
    192     [#grid(
    193       columns: (auto),
    194       gutter: 0.2em,
    195       [#checkbox(false) Money exchange],
    196       [#checkbox(false) Money and asset transfer],
    197       [#checkbox(false) Other cash transaction, specify?],
    198     )],
    199     [Purpose of the business relationship\ (purpose of service requested)], [],
    200   )
    201 
    202   // Section 7: Enclosures
    203   text(size: 11pt, weight: "bold")[7. Enclosures]
    204 
    205   v(0.5em)
    206 
    207   grid(
    208     columns: (auto, 1fr),
    209     stroke: 0.5pt + black,
    210     inset: 5pt,
    211     checkbox("" != get("CUSTOMER_ID_AMLA_FILE_REFERENCE_NO")), [Customer identification documents (or: reference#footnote[If the identification document is lists kept in another AMLA-File (in the case of Art. 15 para. 3 SRO Regulations) a reference to the according AMLA-File is sufficient.] to AMLA File No.: #underline([#get("CUSTOMER_ID_AMLA_FILE_REFERENCE_NO")]))],
    212     checkbox("" != get("ESTABLISHER_ID_AMLA_FILE_REFERENCE_NO")), [Identification document of persons establishing the business relationship (or: reference to AMLA File No.: #underline([#get("ESTABLISHER_ID_AMLA_FILE_REFERENCE_NO")]))],
    213     checkbox(getb("HAVE_vqf_902_9") or getb("HAVE_vqf_902_11_customer") or getb("HAVE_vqf_902_11_officer") or getb("HAVE_vqf_902_12") or getb("HAVE_vqf_902_13") or getb("HAVE_vqf_902_15")), [Establishing of the beneficial owner of the assets/controlling person (VQF Doc No. 902.15, 902.9, 902.11, 902.12 or 902.13)],
    214     checkbox(getb("HAVE_vqf_902_5")), [Customer profile (VQF doc. No. 902.5; only in the case of permanent business relationship and regular customers)],
    215     checkbox(getb("HAVE_vqf_902_4")), [Risk profile (VQF doc. No. 902.4)],
    216   )
    217 
    218   v(1em)
    219 
    220   text(size: 9pt, style: "italic")[⚠ *This form has to be updated when changes occur.*]
    221 
    222 }
    223 
    224 // Example usage:
    225 #form((
    226    "VQF_MEMBER_NUMBER": "12345",
    227    "FILE_NUMBER": "42",
    228    "AML_STAFF_NAME": "Manuela",
    229    "FILING_DATE": "2000-4-1",
    230    "ACCEPTANCE_DATE": "2000-4-1",
    231    "ACCEPTANCE_METHOD" : "FACE_TO_FACE",
    232    // ... other fields
    233  ))