From 5bd8efe1bdd0378181f39a12a6bea22f871ad6d1 Mon Sep 17 00:00:00 2001 From: Markus Weigelt Date: Fri, 9 Oct 2026 15:37:10 +0200 Subject: [PATCH 1/2] Allow default EDI configuration without vendor account numbers A default integration covers all accounts not listed by other configurations, so the UI hides its account numbers. The shared validator now skips the account number check for it, like the worker already does. --- .../AbstractExportParametersValidator.java | 3 +- ...ctOrdersExportParametersValidatorTest.java | 34 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/folio/des/validator/acquisition/AbstractExportParametersValidator.java b/src/main/java/org/folio/des/validator/acquisition/AbstractExportParametersValidator.java index c906267e..69f46118 100644 --- a/src/main/java/org/folio/des/validator/acquisition/AbstractExportParametersValidator.java +++ b/src/main/java/org/folio/des/validator/acquisition/AbstractExportParametersValidator.java @@ -65,7 +65,8 @@ protected void validateFileFormat(VendorEdiOrdersExportConfig exportConfig) { protected void validateEdiConfig(VendorEdiOrdersExportConfig exportConfig) { var ediConfig = exportConfig.getEdiConfig(); if (ediConfig != null) { - if (CollectionUtils.isEmpty(ediConfig.getAccountNoList())) { + // A default configuration has no account numbers: it covers all accounts not listed by other configurations + if (!Boolean.TRUE.equals(exportConfig.getIsDefaultConfig()) && CollectionUtils.isEmpty(ediConfig.getAccountNoList())) { throw new IllegalArgumentException("Export configuration is incomplete, missing Vendor Account Number(s)"); } diff --git a/src/test/java/org/folio/des/validator/acquisition/EdifactOrdersExportParametersValidatorTest.java b/src/test/java/org/folio/des/validator/acquisition/EdifactOrdersExportParametersValidatorTest.java index 30eeb84b..f174ccf0 100644 --- a/src/test/java/org/folio/des/validator/acquisition/EdifactOrdersExportParametersValidatorTest.java +++ b/src/test/java/org/folio/des/validator/acquisition/EdifactOrdersExportParametersValidatorTest.java @@ -1,8 +1,11 @@ package org.folio.des.validator.acquisition; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.mock; +import org.folio.des.domain.dto.EdiConfig; import org.folio.des.domain.dto.ExportTypeSpecificParameters; import org.folio.des.domain.dto.VendorEdiOrdersExportConfig; import org.junit.jupiter.api.DisplayName; @@ -43,4 +46,35 @@ void shouldPassValidationIfEdifactConfigIsNotNull() { specificParameters.setVendorEdiOrdersExportConfig(config); validator.validate(specificParameters, errors); } + + @Test + @DisplayName("Should pass validation if default edi config has no account numbers") + void shouldPassValidationIfDefaultEdiConfigHasNoAccountNumbers() { + Errors errors = mock(Errors.class); + var specificParameters = getEdiParameters(true); + assertDoesNotThrow(() -> validator.validate(specificParameters, errors)); + } + + @Test + @DisplayName("Should throw exception if non-default edi config has no account numbers") + void shouldThrowExceptionIfNonDefaultEdiConfigHasNoAccountNumbers() { + Errors errors = mock(Errors.class); + var specificParameters = getEdiParameters(false); + var exception = assertThrows(IllegalArgumentException.class, () -> validator.validate(specificParameters, errors)); + assertEquals("Export configuration is incomplete, missing Vendor Account Number(s)", exception.getMessage()); + } + + private ExportTypeSpecificParameters getEdiParameters(boolean isDefaultConfig) { + VendorEdiOrdersExportConfig config = new VendorEdiOrdersExportConfig(); + config.setIntegrationType(VendorEdiOrdersExportConfig.IntegrationTypeEnum.ORDERING); + config.setFileFormat(VendorEdiOrdersExportConfig.FileFormatEnum.EDI); + config.setTransmissionMethod(VendorEdiOrdersExportConfig.TransmissionMethodEnum.FILE_DOWNLOAD); + config.setIsDefaultConfig(isDefaultConfig); + config.setEdiConfig(new EdiConfig() + .libEdiCode("libCode") + .libEdiType(EdiConfig.LibEdiTypeEnum._014_EAN) + .vendorEdiCode("vendorCode") + .vendorEdiType(EdiConfig.VendorEdiTypeEnum._014_EAN)); + return new ExportTypeSpecificParameters().vendorEdiOrdersExportConfig(config); + } } From 6890c1ede9370ef3c8939ae06405399de7b1a7cb Mon Sep 17 00:00:00 2001 From: Markus Weigelt Date: Fri, 9 Oct 2026 17:24:33 +0200 Subject: [PATCH 2/2] Add default EDI configuration fix to NEWS --- NEWS.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/NEWS.md b/NEWS.md index aa6e041c..4c2c03b4 100644 --- a/NEWS.md +++ b/NEWS.md @@ -7,6 +7,9 @@ * [MODEXPW-635](https://folio-org.atlassian.net/browse/MODEXPW-635) Add request permissions to retrieve user and contributor name types * [MODEXPW-625](https://folio-org.atlassian.net/browse/MODEXPW-625) Send the export by email +### Bug fixes +* [MODEXPS-322](https://folio-org.atlassian.net/browse/MODEXPS-322) Allow default EDI configuration without vendor account numbers + ### Technical tasks * [MODEXPS-311](https://folio-org.atlassian.net/browse/MODEXPS-311) Share validation logic between Claims and EDIFACT order parameter validators