From 9d723ff758bd8b2d1990a8706cee26a08f73f185 Mon Sep 17 00:00:00 2001 From: Yaroslav Kosterin Date: Fri, 22 Aug 2025 17:17:12 +0300 Subject: [PATCH 01/29] add prefill fund request fields with person bsn data --- .../pages/funds-request/FundRequest.tsx | 26 +++++++++++++++++++ react/src/webshop/services/FundService.ts | 4 +++ 2 files changed, 30 insertions(+) diff --git a/react/src/webshop/components/pages/funds-request/FundRequest.tsx b/react/src/webshop/components/pages/funds-request/FundRequest.tsx index 2dc507a39..054249407 100644 --- a/react/src/webshop/components/pages/funds-request/FundRequest.tsx +++ b/react/src/webshop/components/pages/funds-request/FundRequest.tsx @@ -102,6 +102,7 @@ export default function FundRequest() { const [vouchers, setVouchers] = useState>(null); const [recordTypes, setRecordTypes] = useState>(null); const [fundRequests, setFundRequests] = useState>(null); + const [personApiRecordsFetch, setPersonApiRecordsFetch] = useState(false); const bsnIsKnown = useMemo(() => !!authIdentity?.bsn, [authIdentity]); const emailSetupShow = useMemo(() => !authIdentity?.email, [authIdentity]); @@ -461,6 +462,28 @@ export default function FundRequest() { .finally(() => setProgress(100)); }, [authIdentity, fund, fundRequestService, setProgress]); + const checkPersonBsnApiRecords = useCallback(() => { + if (!bsnIsKnown || !fund || !authIdentity || !fund.organization.has_person_bsn_api || personApiRecordsFetch) { + return; + } + + setPersonApiRecordsFetch(true); + + fundService.getPersonRecords(fund.id).then((res) => { + setPendingCriteria((criteria) => { + return [ + ...criteria.map((criterion) => { + criterion.input_value = + res.data.filter((item) => item.record_type_key === criterion.record_type_key)[0]?.value || + criterion.input_value; + + return criterion; + }), + ]; + }); + }); + }, [bsnIsKnown, fund, fundService, authIdentity, personApiRecordsFetch]); + useEffect(() => { fetchFund(); }, [fetchFund]); @@ -540,6 +563,8 @@ export default function FundRequest() { setPendingCriteria(pendingCriteria.map((criterion) => transformInvalidCriteria(criterion))); + checkPersonBsnApiRecords(); + setAutoSubmit( digidAvailable && fund.auto_validation && @@ -558,6 +583,7 @@ export default function FundRequest() { goToActivationComponent, navigateState, vouchers, + checkPersonBsnApiRecords, ]); useEffect(() => { diff --git a/react/src/webshop/services/FundService.ts b/react/src/webshop/services/FundService.ts index 5a4f6ddbf..2ae6d104d 100644 --- a/react/src/webshop/services/FundService.ts +++ b/react/src/webshop/services/FundService.ts @@ -58,6 +58,10 @@ export class FundService { return this.apiRequest.post(`${this.prefix}/redeem`, { code }); } + public getPersonRecords(id: number): Promise>> { + return this.apiRequest.get(`${this.prefix}/${id}/person/records`); + } + public getCriterionControlType(record_type: RecordType, operator = null) { const control_type = record_type.control_type === 'select' ? 'select_control' : `ui_control_${record_type.control_type}`; From aa0127f6210f975cadaea69b3dcdc9e09f690e3f Mon Sep 17 00:00:00 2001 From: dev-rminds Date: Thu, 4 Sep 2025 14:34:16 +0300 Subject: [PATCH 02/29] prefill fund request fields refactoring --- .../webshop/components/pages/funds-request/FundRequest.tsx | 2 +- react/src/webshop/services/FundService.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/react/src/webshop/components/pages/funds-request/FundRequest.tsx b/react/src/webshop/components/pages/funds-request/FundRequest.tsx index 054249407..9c3d5baea 100644 --- a/react/src/webshop/components/pages/funds-request/FundRequest.tsx +++ b/react/src/webshop/components/pages/funds-request/FundRequest.tsx @@ -469,7 +469,7 @@ export default function FundRequest() { setPersonApiRecordsFetch(true); - fundService.getPersonRecords(fund.id).then((res) => { + fundService.getPersonPrefills(fund.id).then((res) => { setPendingCriteria((criteria) => { return [ ...criteria.map((criterion) => { diff --git a/react/src/webshop/services/FundService.ts b/react/src/webshop/services/FundService.ts index 2ae6d104d..dff3efcde 100644 --- a/react/src/webshop/services/FundService.ts +++ b/react/src/webshop/services/FundService.ts @@ -58,8 +58,8 @@ export class FundService { return this.apiRequest.post(`${this.prefix}/redeem`, { code }); } - public getPersonRecords(id: number): Promise>> { - return this.apiRequest.get(`${this.prefix}/${id}/person/records`); + public getPersonPrefills(id: number): Promise>> { + return this.apiRequest.get(`${this.prefix}/${id}/prefills`); } public getCriterionControlType(record_type: RecordType, operator = null) { From 947a429dfb3cf2377dd1b4d0e1d38c913a5fc355 Mon Sep 17 00:00:00 2001 From: dev-rminds Date: Thu, 4 Sep 2025 14:44:20 +0300 Subject: [PATCH 03/29] add flag to allow fund-request prefill --- react/src/dashboard/props/models/Fund.tsx | 1 + .../components/pages/funds-request/FundRequest.tsx | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/react/src/dashboard/props/models/Fund.tsx b/react/src/dashboard/props/models/Fund.tsx index 8b4538554..ff71bc323 100644 --- a/react/src/dashboard/props/models/Fund.tsx +++ b/react/src/dashboard/props/models/Fund.tsx @@ -97,6 +97,7 @@ export default interface Fund { auth_2fa_restrict_bi_connections?: boolean; }; allow_fund_requests?: boolean; + allow_fund_request_prefill?: boolean; allow_prevalidations?: boolean; tags: Array; faq?: Array; diff --git a/react/src/webshop/components/pages/funds-request/FundRequest.tsx b/react/src/webshop/components/pages/funds-request/FundRequest.tsx index 9c3d5baea..013034707 100644 --- a/react/src/webshop/components/pages/funds-request/FundRequest.tsx +++ b/react/src/webshop/components/pages/funds-request/FundRequest.tsx @@ -463,7 +463,14 @@ export default function FundRequest() { }, [authIdentity, fund, fundRequestService, setProgress]); const checkPersonBsnApiRecords = useCallback(() => { - if (!bsnIsKnown || !fund || !authIdentity || !fund.organization.has_person_bsn_api || personApiRecordsFetch) { + if ( + !bsnIsKnown || + !fund || + !authIdentity || + !fund.allow_fund_request_prefill || + !fund.organization.has_person_bsn_api || + personApiRecordsFetch + ) { return; } From 5202aa2d63a083d17dc1c674047625ac31fda2eb Mon Sep 17 00:00:00 2001 From: Yaroslav Kosterin Date: Thu, 11 Sep 2025 12:47:10 +0300 Subject: [PATCH 04/29] change products count on provider page, fix link to provider products --- .../components/elements/block-products/BlockProducts.tsx | 2 +- .../webshop/components/pages/providers-show/ProvidersShow.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/react/src/webshop/components/elements/block-products/BlockProducts.tsx b/react/src/webshop/components/elements/block-products/BlockProducts.tsx index 504b05a51..cf2e6c681 100644 --- a/react/src/webshop/components/elements/block-products/BlockProducts.tsx +++ b/react/src/webshop/components/elements/block-products/BlockProducts.tsx @@ -52,7 +52,7 @@ export default function BlockProducts({ {showLoadMore && (
- + {translate(`block_products.buttons.more`)}