commit 32a668f3f9cad7f8146a60d796765e99263d41e1
parent f724484ccf1e193f28c38159bb12ef8fd896b724
Author: Sebastian <sebasjm@gmail.com>
Date: Sun, 27 Apr 2025 11:20:16 -0300
pep should only be triggered on vqf 902
Diffstat:
4 files changed, 49 insertions(+), 15 deletions(-)
diff --git a/packages/aml-backoffice-ui/src/hooks/decision-request.ts b/packages/aml-backoffice-ui/src/hooks/decision-request.ts
@@ -27,6 +27,7 @@ import {
codecForNumber,
codecForString,
codecOptional,
+ codecOptionalDefault,
KycRule,
MeasureInformation,
} from "@gnu-taler/taler-util";
@@ -107,9 +108,9 @@ export interface DecisionRequest {
export const codecForMeasure = (): Codec<MeasureInformation> =>
buildCodecForObject<MeasureInformation>()
- .property("check_name", codecForString())
+ .property("check_name", codecOptionalDefault(codecForString(), "SKIP"))
.property("prog_name", codecForString())
- .property("context", codecOptional(codecForMap(codecForString())))
+ .property("context", codecOptional(codecForMap(codecForAny())))
.build("MeasureInformation");
export const codecForAccountAttributes = (): Codec<AccountAttributes> =>
diff --git a/packages/aml-backoffice-ui/src/pages/NewMeasure.tsx b/packages/aml-backoffice-ui/src/pages/NewMeasure.tsx
@@ -32,9 +32,11 @@ export type MeasureDefinition = {
*/
export function NewMeasure({
initial,
+ isNew,
onCancel,
}: {
initial?: Partial<MeasureDefinition>;
+ isNew?: boolean;
onCancel: () => void;
}): VNode {
const measures = useServerMeasures();
@@ -53,14 +55,12 @@ export function NewMeasure({
);
}
- const addingNew = !undefinedIfEmpty(initial);
-
return (
<MeasureForm
summary={summary}
initial={initial}
onCancel={onCancel}
- addingNew={addingNew}
+ addingNew={isNew}
/>
);
}
@@ -102,7 +102,6 @@ export function MeasureForm({
!addingNew,
);
- initial?.context;
const form = useForm<MeasureDefinition>(design, initial ?? {});
const name = !form.status.result ? undefined : form.status.result.name;
diff --git a/packages/aml-backoffice-ui/src/pages/decision/Measures.tsx b/packages/aml-backoffice-ui/src/pages/decision/Measures.tsx
@@ -29,14 +29,18 @@ import { MeasureDefinition, NewMeasure } from "../NewMeasure.js";
* @returns
*/
export function Measures({}: {}): VNode {
- const [initMeasure, setAddMeasure] = useState<Partial<MeasureDefinition>>(); //test;
- if (initMeasure) {
+ const [addMeasure, setAddMeasure] = useState<{
+ isNew: boolean;
+ template: Partial<MeasureDefinition>;
+ }>(); //test;
+ if (addMeasure) {
return (
<NewMeasure
onCancel={() => {
setAddMeasure(undefined);
}}
- initial={initMeasure}
+ initial={addMeasure.template}
+ isNew={addMeasure.isNew}
/>
);
}
@@ -45,8 +49,17 @@ export function Measures({}: {}): VNode {
<Fragment>
<ActiveMeasureForm />
<ShowAllMeasures
- addNewMeasure={(m) => {
- setAddMeasure(m);
+ addNewMeasure={(template) => {
+ setAddMeasure({
+ isNew: true,
+ template,
+ });
+ }}
+ editMeasure={(template) => {
+ setAddMeasure({
+ isNew: false,
+ template,
+ });
}}
/>
</Fragment>
@@ -89,8 +102,10 @@ function ActiveMeasureForm(): VNode {
function ShowAllMeasures({
addNewMeasure,
+ editMeasure,
}: {
addNewMeasure: (m: Partial<MeasureDefinition>) => void;
+ editMeasure: (m: Partial<MeasureDefinition>) => void;
}): VNode {
const { i18n } = useTranslationContext();
const measures = useServerMeasures();
@@ -128,7 +143,7 @@ function ShowAllMeasures({
measureBody,
)}
onSelect={(m) => {
- addNewMeasure({
+ editMeasure({
check: m.type === "form" ? m.checkName : undefined,
context: !m.context
? []
@@ -153,6 +168,19 @@ function ShowAllMeasures({
<div class="p-2">
<CurrentMeasureTable
measures={computeAvailableMesaures(measureBody)}
+ onSelect={(m) => {
+ addNewMeasure({
+ check: m.type === "form" ? m.checkName : undefined,
+ context: !m.context
+ ? []
+ : Object.entries(m.context).map(([key, value]) => ({
+ key,
+ value,
+ })),
+ name: m.name,
+ program: m.programName,
+ });
+ }}
/>
</div>
</div>
diff --git a/packages/taler-util/src/aml/aml-properties.ts b/packages/taler-util/src/aml/aml-properties.ts
@@ -63,7 +63,7 @@ export const TOPS_AML_PROPERTIES: PropertiesMapInfo<
},
PEP_DOMESTIC: {
deriveProperty(formId, limits, state, attributes) {
- if (formId === "vqf_902_1_officer") {
+ if (formId === "vqf_902_4") {
return !!attributes[TalerFormAttributes.PEP_DOMESTIC];
}
return undefined;
@@ -71,12 +71,18 @@ export const TOPS_AML_PROPERTIES: PropertiesMapInfo<
},
PEP_FOREIGN: {
deriveProperty(formId, limits, state, attributes) {
- return !!attributes[TalerFormAttributes.PEP_FOREIGN];
+ if (formId === "vqf_902_4") {
+ return !!attributes[TalerFormAttributes.PEP_FOREIGN];
+ }
+ return undefined;
},
},
PEP_INTERNATIONAL_ORGANIZATION: {
deriveProperty(formId, limits, state, attributes) {
- return !!attributes[TalerFormAttributes.PEP_INTERNATIONAL_ORGANIZATION];
+ if (formId === "vqf_902_4") {
+ return !!attributes[TalerFormAttributes.PEP_INTERNATIONAL_ORGANIZATION];
+ }
+ return undefined;
},
},
HIGH_RISK_CUSTOMER: {