taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 2d2873b38ec9ce8e6535f0c8630ac00610013fef
parent d19de01aab70596c6944c4f0a6be2059e10d80a6
Author: Sebastian <sebasjm@gmail.com>
Date:   Sun,  5 Jan 2025 18:08:57 -0300

show error when link/challenger failed

Diffstat:
Mpackages/kyc-ui/src/forms/VQF_902_1.ts | 5+++--
Mpackages/kyc-ui/src/forms/taler_aml_attributes.ts | 520++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mpackages/kyc-ui/src/pages/Start.tsx | 73++++++++++++++++++++++++++++++++++++++++++++-----------------------------
3 files changed, 307 insertions(+), 291 deletions(-)

diff --git a/packages/kyc-ui/src/forms/VQF_902_1.ts b/packages/kyc-ui/src/forms/VQF_902_1.ts @@ -8,8 +8,9 @@ import { TalerAmlAttributes } from "./taler_aml_attributes.js"; export function countryList(i18n: InternationalizationAPI): SelectUiChoice[] { return [ - { label: i18n.str`AR`, value: "AR" }, - { label: i18n.str`DE`, value: "DE" }, + { label: i18n.str`Argentina`, value: "AR" }, + { label: i18n.str`Spain`, value: "ES" }, + { label: i18n.str`Germany`, value: "DE" }, ]; } diff --git a/packages/kyc-ui/src/forms/taler_aml_attributes.ts b/packages/kyc-ui/src/forms/taler_aml_attributes.ts @@ -1,6 +1,6 @@ /* This file is part of GNU Taler - Copyright (C) 2012-2020 Taler Systems SA + Copyright (C) 2012-2025 Taler Systems SA GNU Taler is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published @@ -37,59 +37,59 @@ export namespace TalerAmlAttributes { export interface VQF_902_1 { /** * - * Required: + * Required: false */ - ACCEPTANCE_CORRESPONDENCE_SERVICE_TYPE: + ACCEPTANCE_CORRESPONDENCE_SERVICE_TYPE?: | "TO_THE_CUSTOMER" | "HOLD_AT_BANK" | "TO_THE_MEMBER" | "TO_A_THIRD_PARTY" | String; /** - * - * Required: + * Conclusion of the conract + * Required: false */ - ACCEPTANCE_DATE: AbsoluteDate; + ACCEPTANCE_DATE?: AbsoluteDate; /** * - * Required: + * Required: false */ - ACCEPTANCE_FURTHER_INFO: String; + ACCEPTANCE_FURTHER_INFO?: String; /** * - * Required: + * Required: false */ - ACCEPTANCE_LANGUAGE: LangCode; + ACCEPTANCE_LANGUAGE?: LangCode; /** * - * Required: + * Required: false */ - ACCEPTANCE_METHOD: + ACCEPTANCE_METHOD?: | "FACE_TO_FACE" | "AUTHENTICATED_COPY" | "RESIDENTIAL_ADDRESS_VALIDATED"; /** - * + * If the customer is a legal entity. * Required: true */ CUSTOMER_ENTITY_ADDRESS: BusinessAddress; /** - * + * If the customer is a legal entity. * Required: true */ CUSTOMER_ENTITY_COMPANY_NAME: String; /** - * - * Required: + * If the customer is a legal entity. + * Required: false */ - CUSTOMER_ENTITY_CONTACT_PERSON_NAME: String; + CUSTOMER_ENTITY_CONTACT_PERSON_NAME?: String; /** - * - * Required: + * If the customer is a legal entity. + * Required: false */ - CUSTOMER_ENTITY_EMAIL: Email; + CUSTOMER_ENTITY_EMAIL?: Email; /** - * + * Not older than 12 month * Required: true */ CUSTOMER_ENTITY_ID: String; @@ -99,77 +99,77 @@ export namespace TalerAmlAttributes { */ CUSTOMER_ENTITY_ID_COPY: File; /** - * - * Required: + * If the customer is a legal entity. + * Required: false */ - CUSTOMER_ENTITY_PHONE: Phone; + CUSTOMER_ENTITY_PHONE?: Phone; /** - * + * Customer system ID required to correlate different AML forms. * Required: true */ CUSTOMER_ID: String; /** - * + * If the customer is a natural person. * Required: true */ CUSTOMER_NATURAL_BIRTHDATE: AbsoluteDate; /** - * - * Required: + * If the customer is a natural person. + * Required: false */ - CUSTOMER_NATURAL_COMPANY_ID: String; + CUSTOMER_NATURAL_COMPANY_ID?: String; /** - * - * Required: + * If the customer is a natural person. + * Required: false */ - CUSTOMER_NATURAL_COMPANY_ID_COPY: File; + CUSTOMER_NATURAL_COMPANY_ID_COPY?: File; /** - * - * Required: + * If the customer is a natural person. + * Required: false */ - CUSTOMER_NATURAL_COMPANY_NAME: String; + CUSTOMER_NATURAL_COMPANY_NAME?: String; /** - * - * Required: + * If the customer is a natural person. + * Required: false */ - CUSTOMER_NATURAL_EMAIL: Email; + CUSTOMER_NATURAL_EMAIL?: Email; /** * * Required: true */ CUSTOMER_NATURAL_FULL_NAME: String; /** - * + * If the customer is a natural person. * Required: true */ CUSTOMER_NATURAL_NATIONALITY: CountryCode; /** - * + * If the customer is a natural person. * Required: true */ CUSTOMER_NATURAL_NATIONAL_ID: String; /** - * + * If the customer is a natural person. * Required: true */ CUSTOMER_NATURAL_NATIONAL_ID_COPY: File; /** - * - * Required: + * If the customer is a natural person. + * Required: false */ - CUSTOMER_NATURAL_PHONE: Phone; + CUSTOMER_NATURAL_PHONE?: Phone; /** - * - * Required: + * If the customer is a natural person. + * Required: false */ - CUSTOMER_NATURAL_REGISTERED_OFFICE: String; + CUSTOMER_NATURAL_REGISTERED_OFFICE?: String; /** - * + * If the customer is a natural person. * Required: true */ CUSTOMER_NATURAL_RESIDENTIAL: ResidentialAddress; /** - * + * Establishment of the beneficial owner of the assets and/or contrilling person * Required: true */ CUSTOMER_TYPE: @@ -180,60 +180,60 @@ export namespace TalerAmlAttributes { | "LIFE_INSURANCE" | "OTHER"; /** - * - * Required: + * 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) + * Required: false */ - EMBARGO_TERRORISM_INFO: Paragraph; + EMBARGO_TERRORISM_INFO?: Paragraph; /** * - * Required: + * Required: false */ - ENCLOSURE_BENEFICIAL_OWNER: Boolean; + ENCLOSURE_BENEFICIAL_OWNER?: Boolean; /** * - * Required: + * Required: false */ - ENCLOSURE_CUSTOMER_DOCUMENTS: Boolean; + ENCLOSURE_CUSTOMER_DOCUMENTS?: Boolean; /** * - * Required: + * Required: false */ - ENCLOSURE_CUSTOMER_PROFILE: Boolean; + ENCLOSURE_CUSTOMER_PROFILE?: Boolean; /** * - * Required: + * Required: false */ - ENCLOSURE_IDENTIFICATION_DOCUMENTS: Boolean; + ENCLOSURE_IDENTIFICATION_DOCUMENTS?: Boolean; /** * - * Required: + * Required: false */ - ENCLOSURE_RISK_PROFILE: Boolean; + ENCLOSURE_RISK_PROFILE?: Boolean; /** - * + * When the form was completed. * Required: true */ FORM_FILLING_DATE: AbsoluteDateTime; /** - * + * List of founder with the fields below. * Required: true */ FOUNDER_LIST: Form<VQF_902_1_founder>[]; /** - * + * Full legal name of the officer filling the form. * Required: true */ OFFICER_FULL_NAME: String; /** - * - * Required: + * Purpose of service requested + * Required: false */ - RELATIONSHIP_PURPOSE: Paragraph; + RELATIONSHIP_PURPOSE?: Paragraph; /** * - * Required: + * Required: false */ - RELATIONSHIP_TYPE: "MONEY_EXCHANGE" | "MONEY_ASSET_TRANSFER" | String; + RELATIONSHIP_TYPE?: "MONEY_EXCHANGE" | "MONEY_ASSET_TRANSFER" | String; } export interface VQF_902_11 { /** @@ -257,22 +257,22 @@ export namespace TalerAmlAttributes { */ CONTROLLING_ENTITY_LEVEL: "25_MORE_RIGHTS" | "OTHER_WAY" | "DIRECTOR"; /** - * + * Is a third person the beneficial owner of the assets? * Required: true */ CONTROLLING_ENTITY_THIRD_PERSON: Boolean; /** - * + * Customer system ID required to correlate different AML forms. * Required: true */ CUSTOMER_ID: String; /** - * + * When the form was completed. * Required: true */ FORM_FILLING_DATE: AbsoluteDateTime; /** - * + * Full legal name of the officer filling the form. * Required: true */ OFFICER_FULL_NAME: String; @@ -282,27 +282,27 @@ export namespace TalerAmlAttributes { */ SIGNATURE: String; /** - * + * Contracing partner signature, * Required: true */ SIGN_DATE: AbsoluteDateTime; } export interface VQF_902_12 { /** - * + * Customer system ID required to correlate different AML forms. * Required: true */ CUSTOMER_ID: String; /** - * + * When the form was completed. * Required: true */ FORM_FILLING_DATE: AbsoluteDateTime; /** * - * Required: + * Required: false */ - FOUNDATION_BENEFICIARY_ADDITION: Paragraph; + FOUNDATION_BENEFICIARY_ADDITION?: Paragraph; /** * * Required: true @@ -349,7 +349,7 @@ export namespace TalerAmlAttributes { */ FOUNDATION_REVOCABLE: Boolean; /** - * + * Full legal name of the officer filling the form. * Required: true */ OFFICER_FULL_NAME: String; @@ -359,7 +359,7 @@ export namespace TalerAmlAttributes { */ SIGNATURE: String; /** - * + * Contracing partner signature, * Required: true */ SIGN_DATE: AbsoluteDateTime; @@ -367,34 +367,34 @@ export namespace TalerAmlAttributes { export interface VQF_902_12_beneficiary { /** * - * Required: + * Required: false */ - FOUNDATION_BENEFICIARY_BIRTHDATE: AbsoluteDate; + FOUNDATION_BENEFICIARY_BIRTHDATE?: AbsoluteDate; /** * - * Required: + * Required: false */ - FOUNDATION_BENEFICIARY_COUNTRY: CountryCode; + FOUNDATION_BENEFICIARY_COUNTRY?: CountryCode; /** * - * Required: + * Required: false */ - FOUNDATION_BENEFICIARY_DOMICILE: ResidentialAddress; + FOUNDATION_BENEFICIARY_DOMICILE?: ResidentialAddress; /** * - * Required: + * Required: false */ - FOUNDATION_BENEFICIARY_FULL_NAME: String; + FOUNDATION_BENEFICIARY_FULL_NAME?: String; /** * - * Required: + * Required: false */ - FOUNDATION_BENEFICIARY_NATIONALITY: CountryCode; + FOUNDATION_BENEFICIARY_NATIONALITY?: CountryCode; /** * - * Required: + * Required: false */ - FOUNDATION_BENEFICIARY_RIGHT_TO_CLAIM: Boolean; + FOUNDATION_BENEFICIARY_RIGHT_TO_CLAIM?: Boolean; } export interface VQF_902_12_founder { /** @@ -494,17 +494,17 @@ export namespace TalerAmlAttributes { } export interface VQF_902_13 { /** - * + * Customer system ID required to correlate different AML forms. * Required: true */ CUSTOMER_ID: String; /** - * + * When the form was completed. * Required: true */ FORM_FILLING_DATE: AbsoluteDateTime; /** - * + * Full legal name of the officer filling the form. * Required: true */ OFFICER_FULL_NAME: String; @@ -514,7 +514,7 @@ export namespace TalerAmlAttributes { */ SIGNATURE: String; /** - * + * Contracing partner signature, * Required: true */ SIGN_DATE: AbsoluteDateTime; @@ -567,61 +567,61 @@ export namespace TalerAmlAttributes { export interface VQF_902_13_beneficiary { /** * - * Required: + * Required: false */ - TRUST_BENEFICIARY_ADDITION: Paragraph; + TRUST_BENEFICIARY_ADDITION?: Paragraph; /** * - * Required: + * Required: false */ - TRUST_BENEFICIARY_BIRTHDATE: AbsoluteDate; + TRUST_BENEFICIARY_BIRTHDATE?: AbsoluteDate; /** * - * Required: + * Required: false */ - TRUST_BENEFICIARY_COUNTRY: CountryCode; + TRUST_BENEFICIARY_COUNTRY?: CountryCode; /** * - * Required: + * Required: false */ - TRUST_BENEFICIARY_DOMICILE: ResidentialAddress; + TRUST_BENEFICIARY_DOMICILE?: ResidentialAddress; /** * - * Required: + * Required: false */ - TRUST_BENEFICIARY_FULL_NAME: String; + TRUST_BENEFICIARY_FULL_NAME?: String; /** * - * Required: + * Required: false */ - TRUST_BENEFICIARY_NATIONALITY: CountryCode; + TRUST_BENEFICIARY_NATIONALITY?: CountryCode; /** * - * Required: + * Required: false */ - TRUST_BENEFICIARY_RIGHT_TO_CLAIM: Boolean; + TRUST_BENEFICIARY_RIGHT_TO_CLAIM?: Boolean; } export interface VQF_902_13_further { /** * - * Required: + * Required: false */ - TRUST_FURTHER_BIRTHDATE: AbsoluteDate; + TRUST_FURTHER_BIRTHDATE?: AbsoluteDate; /** * - * Required: + * Required: false */ - TRUST_FURTHER_COUNTRY: CountryCode; + TRUST_FURTHER_COUNTRY?: CountryCode; /** * - * Required: + * Required: false */ - TRUST_FURTHER_DOMICILE: ResidentialAddress; + TRUST_FURTHER_DOMICILE?: ResidentialAddress; /** * - * Required: + * Required: false */ - TRUST_FURTHER_FULL_NAME: String; + TRUST_FURTHER_FULL_NAME?: String; /** * * Required: true @@ -629,78 +629,78 @@ export namespace TalerAmlAttributes { TRUST_FURTHER_LIST: Form<VQF_902_13_further>[]; /** * - * Required: + * Required: false */ - TRUST_FURTHER_NATIONALITY: CountryCode; + TRUST_FURTHER_NATIONALITY?: CountryCode; /** * - * Required: + * Required: false */ - TRUST_FURTHER_RIGHT_TO_REVOKE: Boolean; + TRUST_FURTHER_RIGHT_TO_REVOKE?: Boolean; } export interface VQF_902_13_pre { /** * - * Required: + * Required: false */ - TRUST_PRE_BIRTHDATE: AbsoluteDate; + TRUST_PRE_BIRTHDATE?: AbsoluteDate; /** * - * Required: + * Required: false */ - TRUST_PRE_COUNTRY: CountryCode; + TRUST_PRE_COUNTRY?: CountryCode; /** * - * Required: + * Required: false */ - TRUST_PRE_DEATHDATE: AbsoluteDate; + TRUST_PRE_DEATHDATE?: AbsoluteDate; /** * - * Required: + * Required: false */ - TRUST_PRE_DOMICILE: ResidentialAddress; + TRUST_PRE_DOMICILE?: ResidentialAddress; /** * - * Required: + * Required: false */ - TRUST_PRE_FULL_NAME: String; + TRUST_PRE_FULL_NAME?: String; /** * - * Required: + * Required: false */ - TRUST_PRE_NATIONALITY: CountryCode; + TRUST_PRE_NATIONALITY?: CountryCode; } export interface VQF_902_13_protector { /** * - * Required: + * Required: false */ - TRUST_PROTECTOR_BIRTHDATE: AbsoluteDate; + TRUST_PROTECTOR_BIRTHDATE?: AbsoluteDate; /** * - * Required: + * Required: false */ - TRUST_PROTECTOR_COUNTRY: CountryCode; + TRUST_PROTECTOR_COUNTRY?: CountryCode; /** * - * Required: + * Required: false */ - TRUST_PROTECTOR_DOMICILE: ResidentialAddress; + TRUST_PROTECTOR_DOMICILE?: ResidentialAddress; /** * - * Required: + * Required: false */ - TRUST_PROTECTOR_FULL_NAME: String; + TRUST_PROTECTOR_FULL_NAME?: String; /** * - * Required: + * Required: false */ - TRUST_PROTECTOR_NATIONALITY: CountryCode; + TRUST_PROTECTOR_NATIONALITY?: CountryCode; /** * - * Required: + * Required: false */ - TRUST_PROTECTOR_RIGHT_TO_REVOKE: Boolean; + TRUST_PROTECTOR_RIGHT_TO_REVOKE?: Boolean; } export interface VQF_902_13_settlor { /** @@ -736,17 +736,17 @@ export namespace TalerAmlAttributes { } export interface VQF_902_14 { /** - * + * Customer system ID required to correlate different AML forms. * Required: true */ CUSTOMER_ID: String; /** - * + * When the form was completed. * Required: true */ FORM_FILLING_DATE: AbsoluteDateTime; /** - * + * Gathered or consulted documents * Required: true */ INCRISK_DOCUMENTS: File[]; @@ -756,7 +756,7 @@ export namespace TalerAmlAttributes { */ INCRISK_MEANS: "GATHERING" | "CONSULTATION" | "ENQUIRIES" | String; /** - * + * Description of the circumstances/transactions, which triggered the special clarifications * Required: true */ INCRISK_REASON: String; @@ -774,19 +774,19 @@ export namespace TalerAmlAttributes { */ INCRISK_SUMMARY: Paragraph; /** - * + * Full legal name of the officer filling the form. * Required: true */ OFFICER_FULL_NAME: String; } export interface VQF_902_15 { /** - * + * Customer system ID required to correlate different AML forms. * Required: true */ CUSTOMER_ID: String; /** - * + * When the form was completed. * Required: true */ FORM_FILLING_DATE: AbsoluteDateTime; @@ -806,10 +806,10 @@ export namespace TalerAmlAttributes { */ INSURANCE_HOLDER_DOMICILE: ResidentialAddress; /** - * - * Required: + * The beneficial owners of the assets involved in the business relationship. + * Required: false */ - INSURANCE_HOLDER_FULL_NAME: String; + INSURANCE_HOLDER_FULL_NAME?: String; /** * * Required: true @@ -826,17 +826,17 @@ export namespace TalerAmlAttributes { */ INSURANCE_PAYER_DOMICILE: ResidentialAddress; /** - * - * Required: + * The beneficial owners of the assets involved in the business relationship. + * Required: false */ - INSURANCE_PAYER_FULL_NAME: String; + INSURANCE_PAYER_FULL_NAME?: String; /** * * Required: true */ INSURANCE_PAYER_NATIONALITY: CountryCode; /** - * + * Name or number of the contractual relationship between the contracting party and the financial intermediary * Required: true */ INSURANCE_RELATIONSHIP_NAME: String; @@ -846,7 +846,7 @@ export namespace TalerAmlAttributes { */ INSURANCE_RELATIONSHIP_POLICY: String; /** - * + * Full legal name of the officer filling the form. * Required: true */ OFFICER_FULL_NAME: String; @@ -856,14 +856,14 @@ export namespace TalerAmlAttributes { */ SIGNATURE: String; /** - * + * Contracing partner signature, * Required: true */ SIGN_DATE: AbsoluteDateTime; } export interface VQF_902_1_founder { /** - * + * Signatory of representation * Required: true */ FOUNDER_AUTHORIZATION_TYPE: String; @@ -905,20 +905,20 @@ export namespace TalerAmlAttributes { } export interface VQF_902_4 { /** - * - * Required: + * Based on 902.4.1 country list + * Required: false */ - CONTACT_RISK_LEVEL: "LOW" | "MEDIUM" | "HIGH"; + CONTACT_RISK_LEVEL?: "LOW" | "MEDIUM" | "HIGH"; /** - * - * Required: + * Based on 902.4.1 country list + * Required: false */ - COUNTRY_RISK_LEVEL: "LOW" | "MEDIUM" | "HIGH"; + COUNTRY_RISK_LEVEL?: "LOW" | "MEDIUM" | "HIGH"; /** * - * Required: + * Required: false */ - COUNTRY_RISK_TYPE: + COUNTRY_RISK_TYPE?: | "NATIONALITY_CUSTOMER" | "NATIONALITY_OWNER" | "DOMICILE_CUSTOMER" @@ -927,50 +927,50 @@ export namespace TalerAmlAttributes { | "BUSINESS_ACTIVITY" | "PAYMENTS"; /** - * + * Customer system ID required to correlate different AML forms. * Required: true */ CUSTOMER_ID: String; /** - * - * Required: + * Criteria description + * Required: false */ - EXTRA_CRITERA_1_RISK_DEFINITION: String; + EXTRA_CRITERA_1_RISK_DEFINITION?: String; /** - * - * Required: + * Based on 902.4.1 country list + * Required: false */ - EXTRA_CRITERA_1_RISK_LEVEL: "LOW" | "MEDIUM" | "HIGH"; + EXTRA_CRITERA_1_RISK_LEVEL?: "LOW" | "MEDIUM" | "HIGH"; /** - * - * Required: + * Criteria description + * Required: false */ - EXTRA_CRITERA_2_RISK_DEFINITION: String; + EXTRA_CRITERA_2_RISK_DEFINITION?: String; /** - * - * Required: + * Based on 902.4.1 country list + * Required: false */ - EXTRA_CRITERA_2_RISK_LEVEL: "LOW" | "MEDIUM" | "HIGH"; + EXTRA_CRITERA_2_RISK_LEVEL?: "LOW" | "MEDIUM" | "HIGH"; /** - * + * When the form was completed. * Required: true */ FORM_FILLING_DATE: AbsoluteDateTime; /** - * - * Required: + * The decision of the Senior executive body on the acceptance of a business relationsip was obtained on ___ + * Required: false */ - HIGH_RISK_ACCEPTANCE_DATE: AbsoluteDateTime; + HIGH_RISK_ACCEPTANCE_DATE?: AbsoluteDateTime; /** - * + * True if the person is in a country for which FATF requires incresed dilegence. * Required: true */ HIGH_RISK_COUNTRY: Boolean; /** * - * Required: + * Required: false */ - INDUSTRY_RISK_LEVEL: + INDUSTRY_RISK_LEVEL?: | "TRANSPARENT" | "HIGH_CASH_TRANSACTION" | "NOT_WELL_KNOWN" @@ -978,39 +978,39 @@ export namespace TalerAmlAttributes { | "UNKNOWN_INDUSTRY"; /** * - * Required: + * Required: false */ - INDUSTRY_RISK_TYPE: "CUSTOMER" | "OWNER"; + INDUSTRY_RISK_TYPE?: "CUSTOMER" | "OWNER"; /** - * + * Full legal name of the officer filling the form. * Required: true */ OFFICER_FULL_NAME: String; /** - * - * Required: + * The decision of the Senior executive body on the acceptance of a business relationsip was obtained on ___ + * Required: false */ - PEP_ACCEPTANCE_DATE: AbsoluteDateTime; + PEP_ACCEPTANCE_DATE?: AbsoluteDateTime; /** - * + * True if the person is a PEP defined by 'Art 7 lit. g numeral 2' * Required: true */ PEP_DOMESTIC: Boolean; /** - * + * True if the person is a PEP defined by 'Art 7 lit. g numeral 1' * Required: true */ PEP_FOREIGN: Boolean; /** - * + * True if the person is a PEP defined by 'Art 7 lit. g numeral 3' * Required: true */ PEP_INTERNATIONAL_ORGANIZATION: Boolean; /** * - * Required: + * Required: false */ - PRODUCT_RISK_LEVEL: + PRODUCT_RISK_LEVEL?: | "EASY" | "SOPHISTICATED" | "OFFSHORE" @@ -1019,54 +1019,54 @@ export namespace TalerAmlAttributes { | "COMPLEX_SERVICE" | "FREQ_TRANS_WITH_HIGH_RISK"; /** - * - * Required: + * The decision of the Senior executive body on the acceptance of a business relationsip was obtained on ___ + * Required: false */ - RISK_CLASIFICATION_ACCEPTANCE_DATE: AbsoluteDateTime; + RISK_CLASIFICATION_ACCEPTANCE_DATE?: AbsoluteDateTime; /** * - * Required: + * Required: false */ - RISK_CLASIFICATION_LEVEL: "WITH" | "WITHOUT"; + RISK_CLASIFICATION_LEVEL?: "WITH" | "WITHOUT"; } export interface VQF_902_5 { /** - * - * Required: + * Information on the planned development of the business relationship and the assets. + * Required: false */ - BIZREL_DEVELOPMENT: String; + BIZREL_DEVELOPMENT?: String; /** - * - * Required: + * In the case of cash or money and asset transfer transacction with regular customer + * Required: false */ - BIZREL_FINANCIAL_BENEFICIARIES_ADDRESS: BusinessAddress; + BIZREL_FINANCIAL_BENEFICIARIES_ADDRESS?: BusinessAddress; /** - * - * Required: + * In the case of cash or money and asset transfer transacction with regular customer + * Required: false */ - BIZREL_FINANCIAL_BENEFICIARIES_BANK_ACCOUNT: String; + BIZREL_FINANCIAL_BENEFICIARIES_BANK_ACCOUNT?: String; /** - * - * Required: + * In the case of cash or money and asset transfer transacction with regular customer + * Required: false */ - BIZREL_FINANCIAL_BENEFICIARIES_FULL_NAME: String; + BIZREL_FINANCIAL_BENEFICIARIES_FULL_NAME?: String; /** - * - * Required: + * In the case of cash or money and asset transfer transacction with regular customer + * Required: false */ - BIZREL_FINANCIAL_VOLUME: String; + BIZREL_FINANCIAL_VOLUME?: String; /** - * - * Required: + * Other relevant information. + * Required: false */ - BIZREL_FURTHER_INFO: String; + BIZREL_FURTHER_INFO?: String; /** - * - * Required: + * Income and assets, liabilities (estimated) + * Required: false */ - BIZREL_INCOME: String; + BIZREL_INCOME?: String; /** - * + * Nature, amount and currency of the involved assets. * Required: true */ BIZREL_ORIGIN_AMOUNT: Amount; @@ -1081,63 +1081,63 @@ export namespace TalerAmlAttributes { | "OTHER"; /** * - * Required: + * Required: false */ - BIZREL_ORIGIN_CATEGORY_OTHER: String; + BIZREL_ORIGIN_CATEGORY_OTHER?: String; /** - * - * Required: + * Define the category if 'other'. + * Required: false */ - BIZREL_ORIGIN_DETAIL: Paragraph; + BIZREL_ORIGIN_DETAIL?: Paragraph; /** - * - * Required: + * Profession, business activities, etc. (former, current, potentially planned) + * Required: false */ - BIZREL_PROFESSION: String; + BIZREL_PROFESSION?: String; /** - * - * Required: + * Purpose of the business relationship. + * Required: false */ - BIZREL_PURPOSE: String; + BIZREL_PURPOSE?: String; /** - * - * Required: + * Relation to other AMLA-files. + * Required: false */ - BIZREL_THIRDPARTY_AMLA_FILES: String; + BIZREL_THIRDPARTY_AMLA_FILES?: String; /** - * - * Required: + * Introducer / agents / references. + * Required: false */ - BIZREL_THIRDPARTY_REFERENCES: String; + BIZREL_THIRDPARTY_REFERENCES?: String; /** - * - * Required: + * Relation of the customer to the beneficial owner, controlling persons, authorised signatories and other persons involved in the business relationship. + * Required: false */ - BIZREL_THIRDPARTY_RELATIONSHIP: String; + BIZREL_THIRDPARTY_RELATIONSHIP?: String; /** - * + * Customer system ID required to correlate different AML forms. * Required: true */ CUSTOMER_ID: String; /** - * + * When the form was completed. * Required: true */ FORM_FILLING_DATE: AbsoluteDateTime; /** - * + * Full legal name of the officer filling the form. * Required: true */ OFFICER_FULL_NAME: String; } export interface VQF_902_9 { /** - * + * Customer system ID required to correlate different AML forms. * Required: true */ CUSTOMER_ID: String; /** - * + * When the form was completed. * Required: true */ FORM_FILLING_DATE: AbsoluteDateTime; @@ -1147,12 +1147,12 @@ export namespace TalerAmlAttributes { */ IDENTITY_CONTRACTING_PARTNER: Paragraph; /** - * - * Required: + * The beneficial owners of the assets involved in the business relationship. + * Required: false */ - IDENTITY_LIST: Form<VQF_902_9_identity>[]; + IDENTITY_LIST?: Form<VQF_902_9_identity>[]; /** - * + * Full legal name of the officer filling the form. * Required: true */ OFFICER_FULL_NAME: String; @@ -1162,7 +1162,7 @@ export namespace TalerAmlAttributes { */ SIGNATURE: String; /** - * + * Contracing partner signature, * Required: true */ SIGN_DATE: AbsoluteDateTime; diff --git a/packages/kyc-ui/src/pages/Start.tsx b/packages/kyc-ui/src/pages/Start.tsx @@ -214,22 +214,48 @@ export function ShowReqList({ } export function Start({ token, onLoggedOut }: Props): VNode { const [req, setReq] = useState<KycRequirementInformation>(); - // if (!state) { - // return <Loading />; - // } - + const { lib } = useExchangeApiContext(); + const [notification, withErrorHandler] = useLocalNotificationHandler(); if (!req) { - return <ShowReqList token={token} onFormSelected={(r) => setReq(r)} />; + return ( + <Fragment> + <LocalNotificationBanner notification={notification} /> + + <ShowReqList + token={token} + onFormSelected={async (r) => { + const reqId = r.id; + if (r.form === "LINK" && reqId) { + // const result = await lib.exchange.startExternalKycProcess(r.id); + const action = withErrorHandler( + async () => { + return lib.exchange.startExternalKycProcess(reqId); + }, + (res) => { + window.open(res.body.redirect_url, "_blank"); + }, + ); + await action.onClick(); + } else { + setReq(r); + } + }} + /> + </Fragment> + ); } return ( - <FillForm - formId={req.form} - requirement={req} - token={token} - onComplete={() => { - setReq(undefined); - }} - /> + <Fragment> + <LocalNotificationBanner notification={notification} /> + <FillForm + formId={req.form} + requirement={req} + token={token} + onComplete={() => { + setReq(undefined); + }} + /> + </Fragment> ); } @@ -241,19 +267,6 @@ function RequirementRow({ onFormSelected: () => void; }): VNode { const { i18n } = useTranslationContext(); - const { lib } = useExchangeApiContext(); - const [notification, withErrorHandler] = useLocalNotificationHandler(); - const reqId = req.id; - const startHandler = !reqId - ? undefined - : withErrorHandler( - async () => { - return lib.exchange.startExternalKycProcess(reqId); - }, - (res) => { - window.open(res.body.redirect_url, "_blank"); - }, - ); switch (req.form) { case "INFO": { @@ -313,12 +326,12 @@ function RequirementRow({ </div> <div class="min-w-0 flex-auto"> <p class="text-sm font-semibold leading-6 text-gray-900"> - <Button type="submit" handler={startHandler}> + <button onClick={onFormSelected}> <span class="absolute inset-x-0 -top-px bottom-0"></span> <i18n.Translate context="KYC_REQUIREMENT_LINK_DESCRIPTION"> {req.description} </i18n.Translate> - </Button> + </button> </p> </div> </div> @@ -378,7 +391,9 @@ function RequirementRow({ </div> <div class="flex shrink-0 items-center gap-x-4"> <div class="hidden sm:flex sm:flex-col sm:items-end"> - <p class="text-sm leading-6 text-gray-900">Fill form</p> + <p class="text-sm leading-6 text-gray-900"> + <i18n.Translate>Fill form</i18n.Translate> + </p> </div> <svg class="h-5 w-5 flex-none text-gray-400"