diff --git a/languages/owc-gravityforms-zgw.pot b/languages/owc-gravityforms-zgw.pot index 14ec7ee..dec9bab 100644 --- a/languages/owc-gravityforms-zgw.pot +++ b/languages/owc-gravityforms-zgw.pot @@ -1,15 +1,15 @@ -# Copyright (C) 2025 Yard | Digital Agency +# Copyright (C) 2026 Yard | Digital Agency # This file is distributed under the EUPL. msgid "" msgstr "" -"Project-Id-Version: OWC | GravityForms ZGW 1.1.3\n" +"Project-Id-Version: OWC | GravityForms ZGW 1.1.7\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/owc-gravityforms-zgw\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"POT-Creation-Date: 2025-12-19T13:00:19+00:00\n" +"POT-Creation-Date: 2026-01-12T15:32:45+00:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.12.0\n" "X-Domain: owc-gravityforms-zgw\n" @@ -77,34 +77,46 @@ msgid "BSN vervangen door dummywaarde (BSN)" msgstr "" #: src/GravityForms/FormSettings.php:51 -msgid "Vul hier een 9 cijferig BSN in die gebruikt wordt bij het aanmaken van een zaak. Handig voor zaken waarbij er geen BSN vereist is van een burger." +msgid "Vul hier een 9 cijferig BSN in die gebruikt wordt bij het aanmaken van een zaak. Handig wanneer er geen BSN van de burger aanwezig of vereist is." msgstr "" #: src/GravityForms/FormSettings.php:56 -#: src/GravityForms/FormSettings.php:58 +msgid "Dummy KVK" +msgstr "" + +#: src/GravityForms/FormSettings.php:57 +msgid "KVK-nummer vervangen door dummywaarde (KVK)" +msgstr "" + +#: src/GravityForms/FormSettings.php:57 +msgid "Vul hier een 8 cijferig KVK-nummer in die gebruikt wordt bij het aanmaken van een zaak. Handig wanneer er geen KVK-nummer van een onderneming aanwezig of vereist is." +msgstr "" + +#: src/GravityForms/FormSettings.php:62 +#: src/GravityForms/FormSettings.php:64 msgid "Leverancier instellingen" msgstr "" -#: src/GravityForms/FormSettings.php:56 +#: src/GravityForms/FormSettings.php:62 msgid "Kies hoe de leverancier instellingen geconfigureerd moeten worden." msgstr "" -#: src/GravityForms/FormSettings.php:62 +#: src/GravityForms/FormSettings.php:68 msgid "Selecteer instellingen (opgehaald vanuit zaaksysteem)" msgstr "" -#: src/GravityForms/FormSettings.php:67 +#: src/GravityForms/FormSettings.php:73 msgid "Configureer instellingen handmatig (invoeren van URL's)" msgstr "" -#: src/GravityForms/FormSettings.php:166 -#: src/GravityForms/FormSettings.php:206 +#: src/GravityForms/FormSettings.php:172 +#: src/GravityForms/FormSettings.php:212 #: src/Views/partials/gf-field-zgw-mapping-options.php:24 msgid "Zaaktype" msgstr "" -#: src/GravityForms/FormSettings.php:185 -#: src/GravityForms/FormSettings.php:224 +#: src/GravityForms/FormSettings.php:191 +#: src/GravityForms/FormSettings.php:230 msgid "Informatie object type" msgstr "" diff --git a/src/Contracts/AbstractCreateZaakAction.php b/src/Contracts/AbstractCreateZaakAction.php index ccb3a35..4666104 100644 --- a/src/Contracts/AbstractCreateZaakAction.php +++ b/src/Contracts/AbstractCreateZaakAction.php @@ -157,14 +157,11 @@ public function add_rol_to_zaak(Zaak $zaak ): ?Rol throw new Exception( 'No role types found for this "zaaktype"', 400 ); } - $current_bsn = ContainerResolver::make()->get( 'digid.current_user_bsn' ); + $current_bsn = $this->get_bsn_for_zaak_rol(); + $current_kvk = $this->get_kvk_for_zaak_rol(); - if ( ! is_string( $current_bsn ) || '' === $current_bsn ) { - $current_bsn = FormUtils::overwrite_bsn_form_setting( $this->form ); - } - - if ( ! is_string( $current_bsn ) || '' === $current_bsn ) { - throw new Exception( 'This session appears to have no BSN', 400 ); + if ( ( ! is_string( $current_bsn ) || '' === $current_bsn ) && ( ! is_string( $current_kvk ) || '' === $current_kvk ) ) { + throw new Exception( 'This session appears to have no BSN or KVK', 400 ); } foreach ( $rol_types as $rol_type ) { @@ -173,15 +170,13 @@ public function add_rol_to_zaak(Zaak $zaak ): ?Rol } $args = array( - 'betrokkeneIdentificatie' => array( - 'inpBsn' => $current_bsn, - ), - 'betrokkeneType' => 'natuurlijk_persoon', - 'roltoelichting' => $rol_type['omschrijvingGeneriek'], - 'roltype' => $rol_type['url'], - 'zaak' => $zaak->url, + 'roltoelichting' => $rol_type['omschrijvingGeneriek'], + 'roltype' => $rol_type['url'], + 'zaak' => $zaak->url, ); + $args = $this->add_identification_to_rol_args( $args, $current_bsn, $current_kvk ); + try { $rol = $this->client->rollen()->create( new Rol( $args, $this->client ) ); } catch ( BadRequestError $e ) { @@ -207,6 +202,54 @@ public function get_rol_types(): PagedCollection return $this->client->roltypen()->filter( $filter ); } + /** + * Retrieve BSN from the current user or from the overwrite form setting. + * + * @since NEXT + */ + private function get_bsn_for_zaak_rol(): ?string + { + $bsn_overwrite = FormUtils::overwrite_bsn_form_setting( $this->form ); + + if ( is_string( $bsn_overwrite ) && '' !== $bsn_overwrite ) { + return $bsn_overwrite; + } + + return ContainerResolver::make()->get( 'digid.current_user_bsn' ); + } + + /** + * Retrieve KVK from the current user or from the overwrite form setting. + * + * @since NEXT + */ + private function get_kvk_for_zaak_rol(): ?string + { + $kvk_overwrite = FormUtils::overwrite_kvk_form_setting( $this->form ); + + if ( is_string( $kvk_overwrite ) && '' !== $kvk_overwrite ) { + return $kvk_overwrite; + } + + return ContainerResolver::make()->get( 'eherkenning.current_user_kvk' ); + } + + /** + * @since NEXT + */ + private function add_identification_to_rol_args(array $args, ?string $current_bsn, ?string $current_kvk ): array + { + if ( is_string( $current_bsn ) && '' !== $current_bsn ) { + $args['betrokkeneType'] = 'natuurlijk_persoon'; + $args['betrokkeneIdentificatie']['inpBsn'] = $current_bsn; + } elseif ( is_string( $current_kvk ) && '' !== $current_kvk ) { + $args['betrokkeneType'] = 'vestiging'; + $args['betrokkeneIdentificatie']['kvkNummer'] = $current_kvk; + } + + return $args; + } + public function create_zaak_properties(Zaak $zaak ): void { $zaak_properties = $this->map_zaak_properties_args(); @@ -250,6 +293,7 @@ protected function map_zaak_properties_args(): array } $property_value = rgar( $this->entry, (string) $field->id ); + dd( $property_value, $field ); if ( empty( $property_value ) ) { continue; diff --git a/src/GravityForms/FormSettings.php b/src/GravityForms/FormSettings.php index f948af9..5735b1f 100644 --- a/src/GravityForms/FormSettings.php +++ b/src/GravityForms/FormSettings.php @@ -48,7 +48,13 @@ public function add_form_settings(array $fields, array $form ): array 'name' => "{$this->prefix}-form-setting-overwrite-bsn", 'type' => 'text', 'label' => esc_html__( 'Dummy BSN', 'owc-gravityforms-zgw' ), - 'tooltip' => '
' . __( 'BSN vervangen door dummywaarde (BSN)', 'owc-gravityforms-zgw' ) . '
' . __( 'Vul hier een 9 cijferig BSN in die gebruikt wordt bij het aanmaken van een zaak. Handig voor zaken waarbij er geen BSN vereist is van een burger.', 'owc-gravityforms-zgw' ), + 'tooltip' => '
' . __( 'BSN vervangen door dummywaarde (BSN)', 'owc-gravityforms-zgw' ) . '
' . __( 'Vul hier een 9 cijferig BSN in die gebruikt wordt bij het aanmaken van een zaak. Handig wanneer er geen BSN van de burger aanwezig of vereist is.', 'owc-gravityforms-zgw' ), + ), + array( + 'name' => "{$this->prefix}-form-setting-overwrite-kvk", + 'type' => 'text', + 'label' => esc_html__( 'Dummy KVK', 'owc-gravityforms-zgw' ), + 'tooltip' => '
' . __( 'KVK-nummer vervangen door dummywaarde (KVK)', 'owc-gravityforms-zgw' ) . '
' . __( 'Vul hier een 8 cijferig KVK-nummer in die gebruikt wordt bij het aanmaken van een zaak. Handig wanneer er geen KVK-nummer van een onderneming aanwezig of vereist is.', 'owc-gravityforms-zgw' ), ), array( 'name' => "{$this->prefix}-form-setting-supplier-manually", diff --git a/src/GravityForms/FormUtils.php b/src/GravityForms/FormUtils.php index 979db58..d1ead2b 100644 --- a/src/GravityForms/FormUtils.php +++ b/src/GravityForms/FormUtils.php @@ -129,12 +129,35 @@ public static function information_object_type_form_setting(array $form, string } /** - * Return the value of the overwrite bsn form setting. + * Return the value of the overwrite BSN form setting. + * + * @since 1.1.0 */ public static function overwrite_bsn_form_setting(array $form ): ?string { - $bsn = $form[ sprintf( '%s-form-setting-overwrite-bsn', OWC_GRAVITYFORMS_ZGW_SETTINGS_PREFIX ) ] ?? null; + return self::get_overwrite_form_setting( $form, 'form-setting-overwrite-bsn' ); + } + + /** + * Return the value of the overwrite KVK form setting. + * + * @since NEXT + */ + public static function overwrite_kvk_form_setting(array $form ): ?string + { + return self::get_overwrite_form_setting( $form, 'form-setting-overwrite-kvk' ); + } + + /** + * Return the value of an overwrite form setting. + * + * @since NEXT + */ + private static function get_overwrite_form_setting(array $form, string $setting_key ): ?string + { + $value = (string) ( $form[ sprintf( '%s-%s', OWC_GRAVITYFORMS_ZGW_SETTINGS_PREFIX, $setting_key ) ] ?? '' ); + $value = trim( $value ); - return is_string( $bsn ) && '' !== $bsn ? $bsn : null; + return '' !== $value ? $value : null; } }