diff --git a/react/src/dashboard/components/modals/ModalFundRequestClarify.tsx b/react/src/dashboard/components/modals/ModalFundRequestClarify.tsx
index 9b8c81af5..18b068593 100644
--- a/react/src/dashboard/components/modals/ModalFundRequestClarify.tsx
+++ b/react/src/dashboard/components/modals/ModalFundRequestClarify.tsx
@@ -1,7 +1,6 @@
import React from 'react';
import { ModalState } from '../../modules/modals/context/ModalContext';
import useFormBuilder from '../../hooks/useFormBuilder';
-import FormError from '../elements/forms/errors/FormError';
import { ResponseError } from '../../props/ApiResponses';
import useSetProgress from '../../hooks/useSetProgress';
import FundRequest from '../../props/models/FundRequest';
@@ -9,6 +8,12 @@ import { useFundRequestValidatorService } from '../../services/FundRequestValida
import Organization from '../../props/models/Organization';
import FundRequestRecord from '../../props/models/FundRequestRecord';
import classNames from 'classnames';
+import FormGroup from '../elements/forms/elements/FormGroup';
+import FormPane from '../elements/forms/elements/FormPane';
+import InfoBox from '../elements/info-box/InfoBox';
+import SelectControl from '../elements/select-control/SelectControl';
+
+type Requirement = 'no' | 'optional' | 'required';
export default function ModalFundRequestClarify({
modal,
@@ -28,32 +33,43 @@ export default function ModalFundRequestClarify({
const setProgress = useSetProgress();
const fundRequestService = useFundRequestValidatorService();
- const form = useFormBuilder({ question: '' }, async () => {
- setProgress(0);
+ const form = useFormBuilder<{
+ text_requirement: Requirement;
+ files_requirement: Requirement;
+ question: string;
+ }>(
+ {
+ text_requirement: 'required',
+ files_requirement: 'required',
+ question: '',
+ },
+ async () => {
+ setProgress(0);
- return fundRequestService
- .requestRecordClarification(
- organization.id,
- fundRequestRecord.fund_request_id,
- fundRequestRecord.id,
- form.values.question,
- )
- .then(() => {
- modal.close();
- onSubmitted();
- })
- .catch((err: ResponseError) => {
- form.setIsLocked(false);
+ return fundRequestService
+ .requestRecordClarification(organization.id, fundRequestRecord.fund_request_id, {
+ fund_request_record_id: fundRequestRecord.id,
+ text_requirement: form.values.text_requirement,
+ files_requirement: form.values.files_requirement,
+ question: form.values.question,
+ })
+ .then(() => {
+ modal.close();
+ onSubmitted();
+ })
+ .catch((err: ResponseError) => {
+ form.setIsLocked(false);
- if (err.status === 422) {
- return form.setErrors(err.data.errors);
- }
+ if (err.status === 422) {
+ return form.setErrors(err.data.errors);
+ }
- modal.close();
- onSubmitted(err);
- })
- .finally(() => setProgress(100));
- });
+ modal.close();
+ onSubmitted(err);
+ })
+ .finally(() => setProgress(100));
+ },
+ );
return (
@@ -66,7 +82,7 @@ export default function ModalFundRequestClarify({
-
+
Aanvullingsverzoek
@@ -74,16 +90,74 @@ export default function ModalFundRequestClarify({
Voeg een bericht toe aan dit verzoek.
-
+
+
+ Gebruik deze functie om de aanvrager te vragen om extra informatie of documenten, zodat
+ de aanvraag alsnog beoordeeld kan worden. Geef aan wat bij de aanvraag nodig is. Een
+ tekstuele uitleg bij de aanvraag, een document dat ingevuld dient te worden en het
+ bericht met de vraag voor de aanvrager
+
diff --git a/react/src/dashboard/components/modals/ModalVoucherCreate.tsx b/react/src/dashboard/components/modals/ModalVoucherCreate.tsx
index c6b312a83..cffcdee9b 100644
--- a/react/src/dashboard/components/modals/ModalVoucherCreate.tsx
+++ b/react/src/dashboard/components/modals/ModalVoucherCreate.tsx
@@ -295,6 +295,10 @@ export default function ModalVoucherCreate({
per_page: 1000,
order_by: 'name',
order_dir: 'asc',
+ free: 1,
+ regular: 1,
+ discount_fixed: 1,
+ discount_percentage: 1,
})
.then((res) => {
setProducts(
@@ -450,6 +454,7 @@ export default function ModalVoucherCreate({
propKey={'id'}
options={products}
placeholder="Selecteer aanbod..."
+ allowSearch={true}
onChange={(product_id: number) => form.update({ product_id })}
/>
@@ -479,7 +484,7 @@ export default function ModalVoucherCreate({
{fund?.backoffice?.backoffice_enabled && assignType.key !== 'bsn' && (
-
+
Let op! De backoffice integratie stuurt mogelijk geen data
diff --git a/react/src/dashboard/components/modals/ModalVoucherTransaction/ModalVoucherTransaction.tsx b/react/src/dashboard/components/modals/ModalVoucherTransaction/ModalVoucherTransaction.tsx
index 348810684..565c56787 100644
--- a/react/src/dashboard/components/modals/ModalVoucherTransaction/ModalVoucherTransaction.tsx
+++ b/react/src/dashboard/components/modals/ModalVoucherTransaction/ModalVoucherTransaction.tsx
@@ -470,11 +470,9 @@ export default function ModalVoucherTransaction({
-
-
- Controleer de gegevens. Na het aanmaken kan de transactie niet worden
- verwijderd.
-
+
+ Controleer de gegevens. Na het aanmaken kan de transactie niet worden
+ verwijderd.
)}
diff --git a/react/src/dashboard/components/pages/bi-connection/BiConnection.tsx b/react/src/dashboard/components/pages/bi-connection/BiConnection.tsx
index f66b8dc26..6dab4aa58 100644
--- a/react/src/dashboard/components/pages/bi-connection/BiConnection.tsx
+++ b/react/src/dashboard/components/pages/bi-connection/BiConnection.tsx
@@ -466,7 +466,7 @@ export default function BiConnection() {
-
+
Gegevens exporteren naar de BI-tool
- Open de BI-tool en ga naar instellingen.
@@ -585,15 +585,13 @@ export default function BiConnection() {
-
-
- Het whitelisten van IP-adressen is een veiligheidsmaatregel om de
- lijst van gebruikers te beperken die gegevens van het account kunnen
- downloaden. Bij het gebruik van een zelf gehoste BI-tool of
- handmatige gegevensexport, vraag dan de IT-afdeling om het IP-adres.
- Bij het gebruik van een BI-tool als SaaS-product is het whitelisten
- van IP-adressen niet van toepassing.
-
+
+ Het whitelisten van IP-adressen is een veiligheidsmaatregel om de lijst
+ van gebruikers te beperken die gegevens van het account kunnen
+ downloaden. Bij het gebruik van een zelf gehoste BI-tool of handmatige
+ gegevensexport, vraag dan de IT-afdeling om het IP-adres. Bij het
+ gebruik van een BI-tool als SaaS-product is het whitelisten van
+ IP-adressen niet van toepassing.
diff --git a/react/src/dashboard/components/pages/fund-provider-product-view/FundProviderProductView.tsx b/react/src/dashboard/components/pages/fund-provider-product-view/FundProviderProductView.tsx
index 07b3d306d..fde904320 100644
--- a/react/src/dashboard/components/pages/fund-provider-product-view/FundProviderProductView.tsx
+++ b/react/src/dashboard/components/pages/fund-provider-product-view/FundProviderProductView.tsx
@@ -44,7 +44,9 @@ export default function FundProviderProductView() {
const tableRef = useRef
(null);
- const { headElement, configsElement } = useConfigurableTable(fundService.getProviderProductColumns(fund, true));
+ const { headElement, configsElement } = useConfigurableTable(
+ fundService.getProviderProductColumns(fund, product, true),
+ );
const { disableProduct, editProduct, mapProduct, isProductConfigurable } = useUpdateProduct();
const { openProductChat, makeProductChat } = useProductChat(fund, fundProvider, activeOrganization);
diff --git a/react/src/dashboard/components/pages/fund-provider/elements/FundProviderProductRowData.tsx b/react/src/dashboard/components/pages/fund-provider/elements/FundProviderProductRowData.tsx
index 343e7c977..474551c1a 100644
--- a/react/src/dashboard/components/pages/fund-provider/elements/FundProviderProductRowData.tsx
+++ b/react/src/dashboard/components/pages/fund-provider/elements/FundProviderProductRowData.tsx
@@ -1,4 +1,4 @@
-import React, { Fragment, MouseEvent, useCallback } from 'react';
+import React, { Fragment, MouseEvent, useCallback, useMemo } from 'react';
import TableEntityMain from '../../../elements/tables/elements/TableEntityMain';
import TableEmptyValue from '../../../elements/table-empty-value/TableEmptyValue';
import classNames from 'classnames';
@@ -43,6 +43,10 @@ export default function FundProviderProductRowData({
const translate = useTranslate();
const { disableProduct, deleteSponsorProduct, editProduct, isProductConfigurable } = useUpdateProduct();
+ const isInformationalProduct = useMemo(() => {
+ return product?.price_type === 'informational';
+ }, [product?.price_type]);
+
const disableProviderProduct = useCallback(
(product: ProductLocal) => {
disableProduct(fundProvider, product).then((res) => onChangeProvider(res));
@@ -73,11 +77,15 @@ export default function FundProviderProductRowData({
titleLimit={45}
subtitleProperties={[
{ label: 'Prijs:', value: product.price_locale },
- {
- label: 'Totaal:',
- value: product.unlimited_stock ? 'Ongelimiteerd' : product.stock_amount,
- },
- { label: 'Gebruikt:', value: product.sold_amount },
+ ...(product.price_type != 'informational'
+ ? [
+ {
+ label: 'Totaal:',
+ value: product.unlimited_stock ? 'Ongelimiteerd' : product.stock_amount,
+ },
+ { label: 'Gebruikt:', value: product.sold_amount },
+ ]
+ : []),
]}
media={product.photo}
mediaRound={false}
@@ -86,7 +94,8 @@ export default function FundProviderProductRowData({
/>
)}
- {fund.show_subsidies && (
+
+ {fund.show_subsidies && (!isInformationalProduct || !history) && (
{deal ? (
@@ -106,7 +115,7 @@ export default function FundProviderProductRowData({
|
)}
- {fund.show_subsidies && (
+ {fund.show_subsidies && (!isInformationalProduct || !history) && (
{deal ? (
@@ -126,7 +135,7 @@ export default function FundProviderProductRowData({
|
)}
- {fund.show_requester_limits && (
+ {fund.show_requester_limits && (!isInformationalProduct || !history) && (
{deal?.limit_total ? deal.limit_total : } |
{deal?.limit_per_identity ? deal.limit_per_identity : } |
diff --git a/react/src/dashboard/components/pages/fund-provider/elements/FundProviderProducts.tsx b/react/src/dashboard/components/pages/fund-provider/elements/FundProviderProducts.tsx
index 4f9139458..cc80695a5 100644
--- a/react/src/dashboard/components/pages/fund-provider/elements/FundProviderProducts.tsx
+++ b/react/src/dashboard/components/pages/fund-provider/elements/FundProviderProducts.tsx
@@ -49,7 +49,9 @@ export default function FundProviderProducts({
const filter = useFilter({ q: '', per_page: 15, type: source });
- const { headElement, configsElement } = useConfigurableTable(fundService.getProviderProductColumns(fund, false));
+ const { headElement, configsElement } = useConfigurableTable(
+ fundService.getProviderProductColumns(fund, null, false),
+ );
const fetchProducts = useCallback(() => {
setProgress(0);
diff --git a/react/src/dashboard/components/pages/fund-requests-view/FundRequestsView.tsx b/react/src/dashboard/components/pages/fund-requests-view/FundRequestsView.tsx
index aa98aa1ce..82b418dfe 100644
--- a/react/src/dashboard/components/pages/fund-requests-view/FundRequestsView.tsx
+++ b/react/src/dashboard/components/pages/fund-requests-view/FundRequestsView.tsx
@@ -774,23 +774,29 @@ export default function FundRequestsView() {
{fundRequestMeta.is_assigned ? (
(
+ content={(e) => (
+
{
+ e.close();
+ clarifyRecord(record);
+ }}>
+
+ Aanvullingsverzoek
+
{activeOrganization.allow_fund_request_record_edit && (
editRecord(record)}
+ onClick={() => {
+ e.close();
+ editRecord(record);
+ }}
data-dusk="fundRequestRecordEditBtn">
Bewerking
)}
-
clarifyRecord(record)}>
-
- Aanvullingsverzoek
-
)}
/>
diff --git a/react/src/dashboard/components/pages/fund-requests-view/elements/FundRequestRecordTabs.tsx b/react/src/dashboard/components/pages/fund-requests-view/elements/FundRequestRecordTabs.tsx
index c8ec3d26a..735b1211f 100644
--- a/react/src/dashboard/components/pages/fund-requests-view/elements/FundRequestRecordTabs.tsx
+++ b/react/src/dashboard/components/pages/fund-requests-view/elements/FundRequestRecordTabs.tsx
@@ -59,6 +59,10 @@ export default function FundRequestRecordTabs({ fundRequestRecord }: { fundReque
)}
+ {shownType == 'clarifications' && fundRequestRecord.clarifications.length > 0 && (
+
+ )}
+
{shownType == 'history' && fundRequestRecord.history.length > 0 && (
)}
@@ -71,10 +75,6 @@ export default function FundRequestRecordTabs({ fundRequestRecord }: { fundReque
}))}
/>
)}
-
- {shownType == 'clarifications' && fundRequestRecord.clarifications.length > 0 && (
-
- )}
);
}
diff --git a/react/src/dashboard/components/pages/fund-requests-view/elements/record-tabs/FundRequestRecordAttachmentsTab.tsx b/react/src/dashboard/components/pages/fund-requests-view/elements/record-tabs/FundRequestRecordAttachmentsTab.tsx
index fdd07cdb8..82044c24b 100644
--- a/react/src/dashboard/components/pages/fund-requests-view/elements/record-tabs/FundRequestRecordAttachmentsTab.tsx
+++ b/react/src/dashboard/components/pages/fund-requests-view/elements/record-tabs/FundRequestRecordAttachmentsTab.tsx
@@ -40,30 +40,28 @@ export default function FundRequestRecordAttachmentsTab({
);
return (
-
diff --git a/react/src/dashboard/components/pages/pre-check/PreCheck.tsx b/react/src/dashboard/components/pages/pre-check/PreCheck.tsx
index 26790ff8f..e37ee3729 100644
--- a/react/src/dashboard/components/pages/pre-check/PreCheck.tsx
+++ b/react/src/dashboard/components/pages/pre-check/PreCheck.tsx
@@ -421,14 +421,12 @@ export default function PreCheck() {
)}
-
- De Regelingencheck begint standaard met één stap waarin alle voorwaarden van de
- regelingen worden geplaatst. U kunt zelf extra stappen toevoegen om de voorwaarden
- logisch te groeperen. Dit helpt om de Regelingencheck overzichtelijker te maken,
- zodat niet alle vragen in één lange lijst worden getoond. Voorwaarden kunnen
- eenvoudig worden verplaatst naar een andere stap door erop te klikken en deze naar
- de gewenste stap te slepen.
-
+ De Regelingencheck begint standaard met één stap waarin alle voorwaarden van de
+ regelingen worden geplaatst. U kunt zelf extra stappen toevoegen om de voorwaarden
+ logisch te groeperen. Dit helpt om de Regelingencheck overzichtelijker te maken, zodat
+ niet alle vragen in één lange lijst worden getoond. Voorwaarden kunnen eenvoudig worden
+ verplaatst naar een andere stap door erop te klikken en deze naar de gewenste stap te
+ slepen.