commit c36cde50657a2ce89d79b832208587dac72e7fff
parent b771198daedfa6f88230ac685bf1990c3ec9283a
Author: Florian Dold <dold@taler.net>
Date: Mon, 31 Aug 2026 21:55:57 +0200
render foundation and trust GANA fields
Diffstat:
4 files changed, 226 insertions(+), 181 deletions(-)
diff --git a/contrib/typst/vqf_902_12/template/main.typ b/contrib/typst/vqf_902_12/template/main.typ
@@ -4,20 +4,51 @@
"VQF_MEMBER_NUMBER": "12345",
"FILE_NUMBER": "42",
"IDENTITY_CONTRACTING_PARTNER": "Foundation Board AG\nExample Street 1\n8001 Zurich",
- "ENTITY_NAME": "Example Foundation",
- "ENTITY_TYPE": "DISCRETIONARY",
- "ENTITY_REVOCABILITY": "IRREVOCABLE",
- "EXTRA_REVOCATION_RIGHTS": false,
- "FOUNDER_LIST": (
+ "LEGAL_STRUCTURE_NAME": "Example Foundation",
+ "LEGAL_STRUCTURE_TYPE": "DISCRETIONARY",
+ "LEGAL_STRUCTURE_REVOCABILITY": "REVOCABLE",
+ "ORIGINATOR_LIST": (
(
- "PERSON_ENTITY_NAME": "John Doe",
- "PERSON_DOMICILE_REGISTERED_OFFICE": "Main St 123\n8001 Zurich",
- "PERSON_COUNTRY": "CH",
- "PERSON_DATE_OF_BIRTH": "01.01.1950",
- "PERSON_NATIONALITY": "CH",
+ "NAME_OR_ENTITY": "John Doe",
+ "DOMICILE_OR_REGISTERED_OFFICE": "Main St 123\n8001 Zurich",
+ "DOMICILE_OR_REGISTERED_OFFICE_COUNTRY": "CH",
+ "DATE_OF_BIRTH": "1950-01-01",
+ "NATIONALITY": "CH",
+ "DATE_OF_DEATH": "",
),
),
- "HAS_PREDECESSOR_ENTITY": false,
+ "ORIGINATOR_HAS_REVOCATION_RIGHT": true,
+ "PREDECESSOR_ORIGINATOR_LIST": (
+ (
+ "NAME_OR_ENTITY": "Predecessor Founder Ltd.",
+ "DOMICILE_OR_REGISTERED_OFFICE": "Old Road 4\n9490 Vaduz",
+ "DOMICILE_OR_REGISTERED_OFFICE_COUNTRY": "LI",
+ "DATE_OF_BIRTH": "",
+ "NATIONALITY": "",
+ "DATE_OF_DEATH": "",
+ ),
+ ),
+ "BENEFICIARY_LIST": (
+ (
+ "NAME_OR_ENTITY": "Jane Beneficiary",
+ "DOMICILE_OR_REGISTERED_OFFICE": "Lake Road 5\n6000 Lucerne",
+ "DOMICILE_OR_REGISTERED_OFFICE_COUNTRY": "CH",
+ "DATE_OF_BIRTH": "1985-06-15",
+ "NATIONALITY": "CH",
+ ),
+ ),
+ "BENEFICIARIES_HAVE_DISTRIBUTION_CLAIM": false,
+ "BENEFICIARY_GROUPS": "Descendants of John Doe",
+ "FURTHER_PERSON_LIST": (
+ (
+ "NAME_OR_ENTITY": "Alex Nominator",
+ "DOMICILE_OR_REGISTERED_OFFICE": "Board Street 7\n8002 Zurich",
+ "DOMICILE_OR_REGISTERED_OFFICE_COUNTRY": "CH",
+ "DATE_OF_BIRTH": "1975-02-20",
+ "NATIONALITY": "CH",
+ ),
+ ),
+ "FURTHER_PERSON_HAS_REVOCATION_RIGHT": true,
"SIGNATURE": "Board Member",
- "SIGN_DATE": "10.11.2025",
-))
-\ No newline at end of file
+ "SIGN_DATE": "2026-08-31",
+))
diff --git a/contrib/typst/vqf_902_12/vqf_902_12.typ b/contrib/typst/vqf_902_12/vqf_902_12.typ
@@ -79,7 +79,7 @@
columns: (1fr),
stroke: 0.5pt + black,
inset: 5pt,
- [#get("ENTITY_NAME")]
+ [#get("LEGAL_STRUCTURE_NAME")]
)
v(1em)
@@ -93,8 +93,8 @@
v(0.5em)
- let entity_type = get("ENTITY_TYPE")
- let entity_revoc = get("ENTITY_REVOCABILITY")
+ let entity_type = get("LEGAL_STRUCTURE_TYPE")
+ let entity_revoc = get("LEGAL_STRUCTURE_REVOCABILITY")
block(breakable: false)[
#grid(
@@ -120,7 +120,7 @@
v(0.5em)
- let founders = get("FOUNDER_LIST", default: ())
+ let founders = get("ORIGINATOR_LIST", default: ())
let has_founders = type(founders) == array and founders.len() > 0
for founder in (if has_founders {founders} else {((:),)}) {
@@ -137,18 +137,18 @@
columns: (35%, 65%),
stroke: 0.5pt + black,
inset: 5pt,
- [Last name(s), first name(s)/entity:], [#get_founder("PERSON_ENTITY_NAME")],
- [Actual address of domicile/registered office:], [#get_founder("PERSON_DOMICILE_REGISTERED_OFFICE")],
- [Country:], [#get_founder("PERSON_COUNTRY")],
- [Date(s) of birth:], [#get_founder("PERSON_DATE_OF_BIRTH")],
- [Nationality:], [#get_founder("PERSON_NATIONALITY")],
- [Date of death (if deceased):], [#get_founder("PERSON_DATE_OF_DEATH")]
+ [Last name(s), first name(s)/entity:], [#get_founder("NAME_OR_ENTITY")],
+ [Actual address of domicile/registered office:], [#get_founder("DOMICILE_OR_REGISTERED_OFFICE")],
+ [Country:], [#get_founder("DOMICILE_OR_REGISTERED_OFFICE_COUNTRY")],
+ [Date(s) of birth:], [#get_founder("DATE_OF_BIRTH")],
+ [Nationality:], [#get_founder("NATIONALITY")],
+ [Date of death (if deceased):], [#get_founder("DATE_OF_DEATH")]
)
]
v(0.5em)
}
- let founder_revoc = get("FOUNDER_HAS_REVOCATION_RIGHT")
+ let founder_revoc = get("ORIGINATOR_HAS_REVOCATION_RIGHT", default: false)
if entity_revoc == "REVOCABLE" [
#table(
columns: (70%, 30%),
@@ -171,9 +171,8 @@
v(0.5em)
- let has_pred = get("HAS_PREDECESSOR_ENTITY")
- let pred_founders = get("PREDECESSOR_FOUNDER_LIST", default: ())
- let has_pred_founders = has_pred and type(pred_founders) == array and pred_founders.len() > 0
+ let pred_founders = get("PREDECESSOR_ORIGINATOR_LIST", default: ())
+ let has_pred_founders = type(pred_founders) == array and pred_founders.len() > 0
if has_pred_founders {
for pred in pred_founders {
@@ -186,12 +185,12 @@
columns: (35%, 65%),
stroke: 0.5pt + black,
inset: 5pt,
- [Last name(s), first name(s)/entity:], [#get_pred("PERSON_ENTITY_NAME")],
- [Actual address of domicile/registered office:], [#get_pred("PERSON_DOMICILE_REGISTERED_OFFICE")],
- [Country:], [#get_pred("PERSON_COUNTRY")],
- [Date(s) of birth:], [#get_pred("PERSON_DATE_OF_BIRTH")],
- [Nationality:], [#get_pred("PERSON_NATIONALITY")],
- [Date of death (if deceased):], [#get_pred("PERSON_DATE_OF_DEATH")]
+ [Last name(s), first name(s)/entity:], [#get_pred("NAME_OR_ENTITY")],
+ [Actual address of domicile/registered office:], [#get_pred("DOMICILE_OR_REGISTERED_OFFICE")],
+ [Country:], [#get_pred("DOMICILE_OR_REGISTERED_OFFICE_COUNTRY")],
+ [Date(s) of birth:], [#get_pred("DATE_OF_BIRTH")],
+ [Nationality:], [#get_pred("NATIONALITY")],
+ [Date of death (if deceased):], [#get_pred("DATE_OF_DEATH")]
)
]
v(0.5em)
@@ -221,32 +220,23 @@
let beneficiaries = get("BENEFICIARY_LIST", default: ())
let has_benef = type(beneficiaries) == array and beneficiaries.len() > 0
+ let has_claim = get("BENEFICIARIES_HAVE_DISTRIBUTION_CLAIM", default: false)
if has_benef {
for benef in beneficiaries {
let get_benef(key) = {
benef.at(key, default: "")
}
- let has_claim = get_benef("BENEFICIARY_HAS_CLAIM_RIGHT")
-
block(breakable: false)[
#table(
columns: (35%, 65%),
stroke: 0.5pt + black,
inset: 5pt,
- [Full name/entity:], [#get_benef("PERSON_ENTITY_NAME")],
- [Actual address of domicile/registered office:], [#get_benef("PERSON_DOMICILE_REGISTERED_OFFICE")],
- [Country:], [#get_benef("PERSON_COUNTRY")],
- [Date of birth:], [#get_benef("PERSON_DATE_OF_BIRTH")],
- [Nationality:], [#get_benef("PERSON_NATIONALITY")],
- [Has the beneficiary an actual right to claim distribution?],
- [#grid(
- columns: (auto, auto),
- stroke: 0.5pt + black,
- inset: 5pt,
- [#checkbox(has_claim) Yes],
- [#checkbox(not has_claim) No],
- )]
+ [Full name/entity:], [#get_benef("NAME_OR_ENTITY")],
+ [Actual address of domicile/registered office:], [#get_benef("DOMICILE_OR_REGISTERED_OFFICE")],
+ [Country:], [#get_benef("DOMICILE_OR_REGISTERED_OFFICE_COUNTRY")],
+ [Date of birth:], [#get_benef("DATE_OF_BIRTH")],
+ [Nationality:], [#get_benef("NATIONALITY")]
)
]
v(0.5em)
@@ -260,18 +250,24 @@
[Actual address of domicile/registered office:], [],
[Country:], [],
[Date of birth:], [],
- [Nationality:], [],
- [Has the beneficiary an actual right to claim distribution?],
- [#grid(
- columns: (auto, auto),
- stroke: 0.5pt + black,
- inset: 5pt,
- [#checkbox(false) Yes],
- [#checkbox(false) No],
- )]
+ [Nationality:], []
)
}
+ table(
+ columns: (35%, 65%),
+ stroke: 0.5pt + black,
+ inset: 5pt,
+ [Has/have the beneficiary/ies an actual right to claim distribution?],
+ [#grid(
+ columns: (auto, auto),
+ stroke: 0.5pt + black,
+ inset: 5pt,
+ [#checkbox(has_benef and has_claim) Yes],
+ [#checkbox(has_benef and not has_claim) No],
+ )]
+ )
+
v(1em)
[== 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:]
@@ -282,7 +278,7 @@
columns: (1fr),
stroke: 0.5pt + black,
inset: 5pt,
- [#get("BENEFICIARY_GROUP_DESCRIPTION")]
+ [#get("BENEFICIARY_GROUPS")]
)
pagebreak()
@@ -292,7 +288,7 @@
v(0.5em)
- let nom_persons = get("NOMINATING_PERSON_LIST", default: ())
+ let nom_persons = get("FURTHER_PERSON_LIST", default: ())
let has_nom = type(nom_persons) == array and nom_persons.len() > 0
if has_nom {
@@ -306,11 +302,11 @@
columns: (35%, 65%),
stroke: 0.5pt + black,
inset: 5pt,
- [Full name/entity:], [#get_nom("PERSON_ENTITY_NAME")],
- [Actual address of domicile/registered office:], [#get_nom("PERSON_DOMICILE_REGISTERED_OFFICE")],
- [Country:], [#get_nom("PERSON_COUNTRY")],
- [Date of birth:], [#get_nom("PERSON_DATE_OF_BIRTH")],
- [Nationality:], [#get_nom("PERSON_NATIONALITY")]
+ [Full name/entity:], [#get_nom("NAME_OR_ENTITY")],
+ [Actual address of domicile/registered office:], [#get_nom("DOMICILE_OR_REGISTERED_OFFICE")],
+ [Country:], [#get_nom("DOMICILE_OR_REGISTERED_OFFICE_COUNTRY")],
+ [Date of birth:], [#get_nom("DATE_OF_BIRTH")],
+ [Nationality:], [#get_nom("NATIONALITY")]
)
]
v(0.5em)
@@ -330,8 +326,9 @@
v(0.5em)
- let nom_revoc = get("EXTRA_REVOCATION_RIGHTS")
- table(
+ let nom_revoc = get("FURTHER_PERSON_HAS_REVOCATION_RIGHT", default: false)
+ if entity_revoc == "REVOCABLE" [
+ #table(
columns: (70%, 30%),
stroke: 0.5pt + black,
inset: 5pt,
@@ -343,7 +340,8 @@
[#checkbox(nom_revoc) Yes],
[#checkbox(not nom_revoc) No],
)]
- )
+ )
+ ]
v(1.5em)
diff --git a/contrib/typst/vqf_902_13/template/main.typ b/contrib/typst/vqf_902_13/template/main.typ
@@ -4,19 +4,61 @@
"VQF_MEMBER_NUMBER": "12345",
"FILE_NUMBER": "42",
"IDENTITY_CONTRACTING_PARTNER": "Trustee Company AG\nExample Street 1\n8001 Zurich",
- "ENTITY_NAME": "Example Trust",
- "ENTITY_TYPE": "DISCRETIONARY",
- "ENTITY_REVOCABILITY": "IRREVOCABLE",
- "FOUNDER_LIST": (
+ "LEGAL_STRUCTURE_NAME": "Example Trust",
+ "LEGAL_STRUCTURE_TYPE": "DISCRETIONARY",
+ "LEGAL_STRUCTURE_REVOCABILITY": "REVOCABLE",
+ "ORIGINATOR_LIST": (
(
- "PERSON_ENTITY_NAME": "Jane Smith",
- "PERSON_DOMICILE_REGISTERED_OFFICE": "Main St 123\n8001 Zurich",
- "PERSON_COUNTRY": "CH",
- "PERSON_DATE_OF_BIRTH": "01.01.1955",
- "PERSON_NATIONALITY": "CH",
+ "NAME_OR_ENTITY": "Jane Smith",
+ "DOMICILE_OR_REGISTERED_OFFICE": "Main St 123\n8001 Zurich",
+ "DOMICILE_OR_REGISTERED_OFFICE_COUNTRY": "CH",
+ "DATE_OF_BIRTH": "1955-01-01",
+ "NATIONALITY": "CH",
+ "DATE_OF_DEATH": "",
),
),
- "HAS_PREDECESSOR_ENTITY": false,
+ "ORIGINATOR_HAS_REVOCATION_RIGHT": false,
+ "PREDECESSOR_ORIGINATOR_LIST": (
+ (
+ "NAME_OR_ENTITY": "Original Settlor",
+ "DOMICILE_OR_REGISTERED_OFFICE": "Old Lane 2\n1000 Lausanne",
+ "DOMICILE_OR_REGISTERED_OFFICE_COUNTRY": "CH",
+ "DATE_OF_BIRTH": "1935-03-12",
+ "NATIONALITY": "CH",
+ "DATE_OF_DEATH": "2015-04-01",
+ ),
+ ),
+ "BENEFICIARY_LIST": (
+ (
+ "NAME_OR_ENTITY": "Taylor Beneficiary",
+ "DOMICILE_OR_REGISTERED_OFFICE": "River Road 3\n3000 Bern",
+ "DOMICILE_OR_REGISTERED_OFFICE_COUNTRY": "CH",
+ "DATE_OF_BIRTH": "1990-07-10",
+ "NATIONALITY": "CH",
+ ),
+ ),
+ "BENEFICIARIES_HAVE_DISTRIBUTION_CLAIM": true,
+ "BENEFICIARY_GROUPS": "Descendants of Jane Smith",
+ "PROTECTOR_LIST": (
+ (
+ "NAME_OR_ENTITY": "Pat Protector",
+ "DOMICILE_OR_REGISTERED_OFFICE": "Hill Street 4\n4051 Basel",
+ "DOMICILE_OR_REGISTERED_OFFICE_COUNTRY": "CH",
+ "DATE_OF_BIRTH": "1970-09-08",
+ "NATIONALITY": "CH",
+ ),
+ ),
+ "PROTECTOR_HAS_REVOCATION_RIGHT": true,
+ "FURTHER_PERSON_LIST": (
+ (
+ "NAME_OR_ENTITY": "Robin Appointer",
+ "DOMICILE_OR_REGISTERED_OFFICE": "Trust Avenue 8\n8004 Zurich",
+ "DOMICILE_OR_REGISTERED_OFFICE_COUNTRY": "CH",
+ "DATE_OF_BIRTH": "1968-11-30",
+ "NATIONALITY": "CH",
+ ),
+ ),
+ "FURTHER_PERSON_HAS_REVOCATION_RIGHT": false,
"SIGNATURE": "Trustee",
- "SIGN_DATE": "10.11.2025",
-))
-\ No newline at end of file
+ "SIGN_DATE": "2026-08-31",
+))
diff --git a/contrib/typst/vqf_902_13/vqf_902_13.typ b/contrib/typst/vqf_902_13/vqf_902_13.typ
@@ -79,7 +79,7 @@
columns: (1fr),
stroke: 0.5pt + black,
inset: 5pt,
- [#get("ENTITY_NAME")]
+ [#get("LEGAL_STRUCTURE_NAME")]
)
v(1em)
@@ -93,8 +93,8 @@
v(0.5em)
- let entity_type = get("ENTITY_TYPE")
- let entity_revoc = get("ENTITY_REVOCABILITY")
+ let entity_type = get("LEGAL_STRUCTURE_TYPE")
+ let entity_revoc = get("LEGAL_STRUCTURE_REVOCABILITY")
block(breakable: false)[
#grid(
@@ -120,7 +120,7 @@
v(0.5em)
- let settlors = get("FOUNDER_LIST", default: ())
+ let settlors = get("ORIGINATOR_LIST", default: ())
let has_settlors = type(settlors) == array and settlors.len() > 0
for settlor in (if has_settlors {settlors} else {((:),)}) {
@@ -137,16 +137,20 @@
columns: (35%, 65%),
stroke: 0.5pt + black,
inset: 5pt,
- [Full name/entity:], [#get_settlor("PERSON_ENTITY_NAME")],
- [Actual address of domicile/registered office:], [#get_settlor("PERSON_DOMICILE_REGISTERED_OFFICE")],
- [Country:], [#get_settlor("PERSON_COUNTRY")],
- [Date of birth:], [#get_settlor("PERSON_DATE_OF_BIRTH")],
- [Nationality:], [#get_settlor("PERSON_NATIONALITY")],
- [Date of death (if deceased):], [#get_settlor("PERSON_DATE_OF_DEATH")]
+ [Full name/entity:], [#get_settlor("NAME_OR_ENTITY")],
+ [Actual address of domicile/registered office:], [#get_settlor("DOMICILE_OR_REGISTERED_OFFICE")],
+ [Country:], [#get_settlor("DOMICILE_OR_REGISTERED_OFFICE_COUNTRY")],
+ [Date of birth:], [#get_settlor("DATE_OF_BIRTH")],
+ [Nationality:], [#get_settlor("NATIONALITY")],
+ [Date of death (if deceased):], [#get_settlor("DATE_OF_DEATH")]
)
]
- let settlor_revoc = get_settlor("FOUNDER_HAS_REVOCATION_RIGHT")
- table(
+ v(0.5em)
+ }
+
+ let settlor_revoc = get("ORIGINATOR_HAS_REVOCATION_RIGHT", default: false)
+ if entity_revoc == "REVOCABLE" [
+ #table(
columns: (80%, 20%),
stroke: 0.5pt + black,
inset: 5pt,
@@ -156,13 +160,11 @@
columns: (auto, auto),
stroke: 0.5pt + black,
inset: 5pt,
- [#checkbox((entity_revoc == "REVOCABLE") and settlor_revoc) Yes],
- [#checkbox((entity_revoc == "REVOCABLE") and not settlor_revoc) No],
+ [#checkbox(has_settlors and settlor_revoc) Yes],
+ [#checkbox(has_settlors and not settlor_revoc) No],
)]
)
- v(0.5em)
-
- }
+ ]
v(1.5em)
@@ -172,9 +174,8 @@
v(0.5em)
- let has_pred = get("HAS_PREDECESSOR_ENTITY")
- let pred_settlors = get("PREDECESSOR_FOUNDER_LIST", default: ())
- let has_pred_settlors = has_pred and type(pred_settlors) == array and pred_settlors.len() > 0
+ let pred_settlors = get("PREDECESSOR_ORIGINATOR_LIST", default: ())
+ let has_pred_settlors = type(pred_settlors) == array and pred_settlors.len() > 0
if has_pred_settlors {
for pred in pred_settlors {
@@ -187,12 +188,12 @@
columns: (35%, 65%),
stroke: 0.5pt + black,
inset: 5pt,
- [Full name/entity:], [#get_pred("PERSON_ENTITY_NAME")],
- [Actual address of domicile/registered office:], [#get_pred("PERSON_DOMICILE_REGISTERED_OFFICE")],
- [Country:], [#get_pred("PERSON_COUNTRY")],
- [Date of birth:], [#get_pred("PERSON_DATE_OF_BIRTH")],
- [Nationality:], [#get_pred("PERSON_NATIONALITY")],
- [Date of death (if deceased):], [#get_pred("PERSON_DATE_OF_DEATH")]
+ [Full name/entity:], [#get_pred("NAME_OR_ENTITY")],
+ [Actual address of domicile/registered office:], [#get_pred("DOMICILE_OR_REGISTERED_OFFICE")],
+ [Country:], [#get_pred("DOMICILE_OR_REGISTERED_OFFICE_COUNTRY")],
+ [Date of birth:], [#get_pred("DATE_OF_BIRTH")],
+ [Nationality:], [#get_pred("NATIONALITY")],
+ [Date of death (if deceased):], [#get_pred("DATE_OF_DEATH")]
)
]
v(0.5em)
@@ -222,37 +223,23 @@
let beneficiaries = get("BENEFICIARY_LIST", default: ())
let has_benef = type(beneficiaries) == array and beneficiaries.len() > 0
+ let has_claim = get("BENEFICIARIES_HAVE_DISTRIBUTION_CLAIM", default: false)
if has_benef {
for benef in beneficiaries {
let get_benef(key) = {
benef.at(key, default: "")
}
- let has_claim = get_benef("BENEFICIARY_HAS_CLAIM_RIGHT")
-
block(breakable: false)[
#table(
columns: (35%, 65%),
stroke: 0.5pt + black,
inset: 5pt,
- [Full name/entity:], [#get_benef("PERSON_ENTITY_NAME")],
- [Actual address of domicile/registered office:], [#get_benef("PERSON_DOMICILE_REGISTERED_OFFICE")],
- [Country:], [#get_benef("PERSON_COUNTRY")],
- [Date of birth:], [#get_benef("PERSON_DATE_OF_BIRTH")],
- [Nationality:], [#get_benef("PERSON_NATIONALITY")]
- )
- #table(
- columns: (80%, 20%),
- stroke: 0.5pt + black,
- inset: 5pt,
- [Has the beneficiary an actual right to claim a distribution?],
- [#grid(
- columns: (auto, auto),
- stroke: 0.5pt + black,
- inset: 5pt,
- [#checkbox(has_claim) Yes],
- [#checkbox(not has_claim) No],
- )]
+ [Full name/entity:], [#get_benef("NAME_OR_ENTITY")],
+ [Actual address of domicile/registered office:], [#get_benef("DOMICILE_OR_REGISTERED_OFFICE")],
+ [Country:], [#get_benef("DOMICILE_OR_REGISTERED_OFFICE_COUNTRY")],
+ [Date of birth:], [#get_benef("DATE_OF_BIRTH")],
+ [Nationality:], [#get_benef("NATIONALITY")]
)
]
v(0.5em)
@@ -268,20 +255,21 @@
[Date of birth:], [],
[Nationality:], []
)
- table(
- columns: (80%, 20%),
+ }
+
+ table(
+ columns: (80%, 20%),
+ stroke: 0.5pt + black,
+ inset: 5pt,
+ [Has/Have the beneficiary/-ies an actual right to claim a distribution?],
+ [#grid(
+ columns: (auto, auto),
stroke: 0.5pt + black,
inset: 5pt,
- [Has the beneficiary an actual right to claim a distribution?],
- [#grid(
- columns: (auto, auto),
- stroke: 0.5pt + black,
- inset: 5pt,
- [#checkbox(false) Yes],
- [#checkbox(false) No],
- )]
- )
- }
+ [#checkbox(has_benef and has_claim) Yes],
+ [#checkbox(has_benef and not has_claim) No],
+ )]
+ )
v(1em)
@@ -293,7 +281,7 @@
columns: (1fr),
stroke: 0.5pt + black,
inset: 5pt,
- [#get("BENEFICIARY_GROUP_DESCRIPTION")]
+ [#get("BENEFICIARY_GROUPS")]
)
v(1.5em)
@@ -309,6 +297,7 @@
let protectors = get("PROTECTOR_LIST", default: ())
let has_prot = type(protectors) == array and protectors.len() > 0
+ let prot_revoc = get("PROTECTOR_HAS_REVOCATION_RIGHT", default: false)
if has_prot {
for prot in protectors {
@@ -316,31 +305,16 @@
prot.at(key, default: "")
}
- let prot_revoc = get_prot("PROTECTOR_HAS_REVOCATION_RIGHT")
block(breakable: false)[
#table(
columns: (35%, 65%),
stroke: 0.5pt + black,
inset: 5pt,
- [Full name)/entity:], [#get_prot("PERSON_ENTITY_NAME")],
- [Actual address of domicile/registered office:], [#get_prot("PERSON_DOMICILE_REGISTERED_OFFICE")],
- [Country:], [#get_prot("PERSON_COUNTRY")],
- [Date of birth:], [#get_prot("PERSON_DATE_OF_BIRTH")],
- [Nationality:], [#get_prot("PERSON_NATIONALITY")]
- )
- #table(
- columns: (80%, 20%),
- stroke: 0.5pt + black,
- inset: 5pt,
- [In case of a revocable trust:
- \ Does the protector have the right to revoke the trust?],
- [#grid(
- columns: (auto, auto),
- stroke: 0.5pt + black,
- inset: 5pt,
- [#checkbox(prot_revoc) Yes],
- [#checkbox(not prot_revoc) No],
- )]
+ [Full name/entity:], [#get_prot("NAME_OR_ENTITY")],
+ [Actual address of domicile/registered office:], [#get_prot("DOMICILE_OR_REGISTERED_OFFICE")],
+ [Country:], [#get_prot("DOMICILE_OR_REGISTERED_OFFICE_COUNTRY")],
+ [Date of birth:], [#get_prot("DATE_OF_BIRTH")],
+ [Nationality:], [#get_prot("NATIONALITY")]
)
]
v(0.5em)
@@ -357,21 +331,23 @@
[Date of birth:], [],
[Nationality:], []
)
- #table(
- columns: (80%, 20%),
+ ]
+ }
+
+ table(
+ columns: (80%, 20%),
+ stroke: 0.5pt + black,
+ inset: 5pt,
+ [In case of a revocable trust:
+ \ Does the protector have the right to revoke the trust?],
+ [#grid(
+ columns: (auto, auto),
stroke: 0.5pt + black,
inset: 5pt,
- [In case of a revocable trust:
- \ Does the protector have the right to revoke the trust?],
- [#grid(
- columns: (auto, auto),
- stroke: 0.5pt + black,
- inset: 5pt,
- [#checkbox(false) Yes],
- [#checkbox(false) No],
- )]
+ [#checkbox((entity_revoc == "REVOCABLE") and has_prot and prot_revoc) Yes],
+ [#checkbox((entity_revoc == "REVOCABLE") and has_prot and not prot_revoc) No],
)]
- }
+ )
v(0.5em)
@@ -381,7 +357,7 @@
v(0.5em)
- let others = get("OTHER_PERSON_LIST", default: ())
+ let others = get("FURTHER_PERSON_LIST", default: ())
let has_others = type(others) == array and others.len() > 0
if has_others {
@@ -395,11 +371,11 @@
columns: (35%, 65%),
stroke: 0.5pt + black,
inset: 5pt,
- [Last name(s), first name(s)/entity:], [#get_other("PERSON_ENTITY_NAME")],
- [Actual address of domicile/registered office:], [#get_other("PERSON_DOMICILE_REGISTERED_OFFICE")],
- [Country:], [#get_other("PERSON_COUNTRY")],
- [Date(s) of birth:], [#get_other("PERSON_DATE_OF_BIRTH")],
- [Nationality:], [#get_other("PERSON_NATIONALITY")]
+ [Last name(s), first name(s)/entity:], [#get_other("NAME_OR_ENTITY")],
+ [Actual address of domicile/registered office:], [#get_other("DOMICILE_OR_REGISTERED_OFFICE")],
+ [Country:], [#get_other("DOMICILE_OR_REGISTERED_OFFICE_COUNTRY")],
+ [Date(s) of birth:], [#get_other("DATE_OF_BIRTH")],
+ [Nationality:], [#get_other("NATIONALITY")]
)
]
v(0.5em)
@@ -419,7 +395,7 @@
v(0.5em)
- let other_revoc = get("OTHER_PERSON_HAS_REVOCATION_RIGHT")
+ let other_revoc = get("FURTHER_PERSON_HAS_REVOCATION_RIGHT", default: false)
if entity_revoc == "REVOCABLE" [
#table(
columns: (80%, 20%),
@@ -429,8 +405,8 @@
[#grid(
columns: (auto, 1fr),
gutter: 0.5em,
- checkbox(other_revoc), [Yes],
- checkbox(not other_revoc), [No],
+ checkbox(has_others and other_revoc), [Yes],
+ checkbox(has_others and not other_revoc), [No],
)]
)
]