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'"
|
||||
));
|
||||
}
|
||||
} 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())),
|
||||
"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
|
||||
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 unt = new Segment("UNT", 2, List.of(new Field(1, "2"), new Field(2, "12345")));
|
||||
Message message = new Message(1, List.of(unh, unt));
|
||||
Segment fhl = new Segment("FHL", 2, List.of(new Field(1, "1")));
|
||||
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));
|
||||
|
||||
// When
|
||||
|
||||
Reference in New Issue
Block a user