Rechnungskennzeichen in REA für ASVREC fachlich einschränken
This commit is contained in:
@@ -676,8 +676,20 @@ public class DefaultStructureValidator implements StructureValidator {
|
|||||||
"LEA-Segment verboten bei Rechnungskennzeichen '1'"
|
"LEA-Segment verboten bei Rechnungskennzeichen '1'"
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// Ungültiges Rechnungskennzeichen: nur "0" oder "1" sind erlaubt
|
||||||
|
errors.add(createError(
|
||||||
|
"STRUCTURE_026",
|
||||||
|
"Rechnungskennzeichen in REA muss '0' oder '1' sein",
|
||||||
|
ValidationSeverity.ERROR,
|
||||||
|
"REA",
|
||||||
|
message.messagePosition(),
|
||||||
|
"",
|
||||||
|
0,
|
||||||
|
kennzeichen,
|
||||||
|
"Rechnungskennzeichen muss '0' oder '1' sein"
|
||||||
|
));
|
||||||
}
|
}
|
||||||
// Anderes Kennzeichen: keine Prüfung durch diese Regel
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -259,4 +259,104 @@ class DefaultStructureValidatorAsvrecRechnungskennzeichenTest {
|
|||||||
|| "STRUCTURE_020".equals(e.errorCode())),
|
|| "STRUCTURE_020".equals(e.errorCode())),
|
||||||
"Kein Rechnungskennzeichen-Fehler erwartet wenn REA keine Felder hat");
|
"Kein Rechnungskennzeichen-Fehler erwartet wenn REA keine Felder hat");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --- Test 9: Kennzeichen "2" -> genau ein Fehler STRUCTURE_026 ---
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void validate_kennzeichen2_fehlerSTRUCTURE026() {
|
||||||
|
InputFile inputFile = buildAsvrec(List.of(
|
||||||
|
new Segment("IFA", 2),
|
||||||
|
rea(3, "2"),
|
||||||
|
new Segment("IVA", 4)
|
||||||
|
));
|
||||||
|
|
||||||
|
ValidationResult result = validator.validate(inputFile);
|
||||||
|
|
||||||
|
assertTrue(result.hasErrors());
|
||||||
|
assertEquals(1, result.getErrors().size());
|
||||||
|
|
||||||
|
ValidationError error = result.getErrors().get(0);
|
||||||
|
assertEquals("STRUCTURE_026", error.errorCode());
|
||||||
|
assertEquals("Rechnungskennzeichen in REA muss '0' oder '1' sein",
|
||||||
|
error.description());
|
||||||
|
assertEquals("REA", error.segmentName());
|
||||||
|
assertEquals(1, error.segmentPosition());
|
||||||
|
assertEquals("2", error.actualValue());
|
||||||
|
assertEquals("Rechnungskennzeichen muss '0' oder '1' sein", error.expectedRule());
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- Test 10: Kennzeichen "" (leer) -> genau ein Fehler STRUCTURE_026 ---
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void validate_kennzeichenLeer_fehlerSTRUCTURE026() {
|
||||||
|
InputFile inputFile = buildAsvrec(List.of(
|
||||||
|
new Segment("IFA", 2),
|
||||||
|
rea(3, ""),
|
||||||
|
new Segment("IVA", 4)
|
||||||
|
));
|
||||||
|
|
||||||
|
ValidationResult result = validator.validate(inputFile);
|
||||||
|
|
||||||
|
assertTrue(result.hasErrors());
|
||||||
|
assertEquals(1, result.getErrors().size());
|
||||||
|
|
||||||
|
ValidationError error = result.getErrors().get(0);
|
||||||
|
assertEquals("STRUCTURE_026", error.errorCode());
|
||||||
|
assertEquals("Rechnungskennzeichen in REA muss '0' oder '1' sein",
|
||||||
|
error.description());
|
||||||
|
assertEquals("REA", error.segmentName());
|
||||||
|
assertEquals(1, error.segmentPosition());
|
||||||
|
assertEquals("", error.actualValue());
|
||||||
|
assertEquals("Rechnungskennzeichen muss '0' oder '1' sein", error.expectedRule());
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- Test 11: Kennzeichen "X" -> genau ein Fehler STRUCTURE_026 ---
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void validate_kennzeichenX_fehlerSTRUCTURE026() {
|
||||||
|
InputFile inputFile = buildAsvrec(List.of(
|
||||||
|
new Segment("IFA", 2),
|
||||||
|
rea(3, "X"),
|
||||||
|
new Segment("IVA", 4)
|
||||||
|
));
|
||||||
|
|
||||||
|
ValidationResult result = validator.validate(inputFile);
|
||||||
|
|
||||||
|
assertTrue(result.hasErrors());
|
||||||
|
assertEquals(1, result.getErrors().size());
|
||||||
|
|
||||||
|
ValidationError error = result.getErrors().get(0);
|
||||||
|
assertEquals("STRUCTURE_026", error.errorCode());
|
||||||
|
assertEquals("Rechnungskennzeichen in REA muss '0' oder '1' sein",
|
||||||
|
error.description());
|
||||||
|
assertEquals("REA", error.segmentName());
|
||||||
|
assertEquals(1, error.segmentPosition());
|
||||||
|
assertEquals("X", error.actualValue());
|
||||||
|
assertEquals("Rechnungskennzeichen muss '0' oder '1' sein", error.expectedRule());
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- Test 12: Kennzeichen "01" -> genau ein Fehler STRUCTURE_026 ---
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void validate_kennzeichen01_fehlerSTRUCTURE026() {
|
||||||
|
InputFile inputFile = buildAsvrec(List.of(
|
||||||
|
new Segment("IFA", 2),
|
||||||
|
rea(3, "01"),
|
||||||
|
new Segment("IVA", 4)
|
||||||
|
));
|
||||||
|
|
||||||
|
ValidationResult result = validator.validate(inputFile);
|
||||||
|
|
||||||
|
assertTrue(result.hasErrors());
|
||||||
|
assertEquals(1, result.getErrors().size());
|
||||||
|
|
||||||
|
ValidationError error = result.getErrors().get(0);
|
||||||
|
assertEquals("STRUCTURE_026", error.errorCode());
|
||||||
|
assertEquals("Rechnungskennzeichen in REA muss '0' oder '1' sein",
|
||||||
|
error.description());
|
||||||
|
assertEquals("REA", error.segmentName());
|
||||||
|
assertEquals(1, error.segmentPosition());
|
||||||
|
assertEquals("01", error.actualValue());
|
||||||
|
assertEquals("Rechnungskennzeichen muss '0' oder '1' sein", error.expectedRule());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,10 +54,11 @@ class DefaultStructureValidatorTestAdditional {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void validate_shouldNotReportErrorWhenMessageTypeIsASVFEH() {
|
void validate_shouldNotReportErrorWhenMessageTypeIsASVFEH() {
|
||||||
// Given
|
// Given: ASVFEH-Nachricht mit erforderlichem FHL-Segment
|
||||||
Segment unh = new Segment("UNH", 1, List.of(new Field(1, "12345"), new Field(2, "ASVFEH:D:03B:UN:EAN008")));
|
Segment unh = new Segment("UNH", 1, List.of(new Field(1, "12345"), new Field(2, "ASVFEH:D:03B:UN:EAN008")));
|
||||||
Segment unt = new Segment("UNT", 2, List.of(new Field(1, "2"), new Field(2, "12345")));
|
Segment fhl = new Segment("FHL", 2, List.of(new Field(1, "1")));
|
||||||
Message message = new Message(1, List.of(unh, unt));
|
Segment unt = new Segment("UNT", 3, List.of(new Field(1, "3"), new Field(2, "12345")));
|
||||||
|
Message message = new Message(1, List.of(unh, fhl, unt));
|
||||||
InputFile inputFile = new InputFile("test.txt", List.of(message));
|
InputFile inputFile = new InputFile("test.txt", List.of(message));
|
||||||
|
|
||||||
// When
|
// When
|
||||||
|
|||||||
Reference in New Issue
Block a user