Skip to content

Commit

Permalink
Vorzeichentest abgespeckt
Browse files Browse the repository at this point in the history
  • Loading branch information
Oli B committed Sep 4, 2024
1 parent 93f19ec commit aa759dd
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 17 deletions.
7 changes: 1 addition & 6 deletions lib/src/main/java/gdv/xport/satz/Satz.java
Original file line number Diff line number Diff line change
Expand Up @@ -615,18 +615,13 @@ public <T extends Feld> T getFeld(final Bezeichner bezeichner, final Class<T> cl

private BetragMitVorzeichen getBetragMitVorzeichen(final Bezeichner bezeichner) {
Betrag betrag = getFeld(bezeichner, Betrag.class);

// Das Vorzeichenfeld darf leer sein (aber nur, wenn der Betrag dazu 0 ist!), in diesem Fall ersetzen wir es vor
// Das Vorzeichenfeld darf leer sein (s. Issue #95), in diesem Fall ersetzen wir es vor
// der Instanziierung von BetragMitVorzeichen durch ein "+", damit die weitere numerische Verarbeitung funktioniert.
Feld vorzeichen = getVorzeichenOf(bezeichner);
String vorzeichenInhalt = vorzeichen.getInhalt();
if (StringUtils.isBlank(vorzeichenInhalt)) {
// if (StringUtils.isNotBlank(betrag.getInhalt()) && !StringUtils.repeat('0', betrag.getAnzahlBytes()).equals(betrag.getInhalt())) {
// throw new ValidationException("Vorzeichenfeld ist leer fuer " + bezeichner + ", aber Betrag ist nicht 0.");
// }
vorzeichenInhalt = "+";
}

BetragMitVorzeichen bmv = new BetragMitVorzeichen(
Bezeichner.of(bezeichner.getName() + " mit Vorzeichen"),
betrag.getAnzahlBytes() + 1, ByteAdresse.of(betrag.getByteAdresse())
Expand Down
14 changes: 3 additions & 11 deletions lib/src/test/java/gdv/xport/satz/SatzTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -220,17 +220,9 @@ public void testGetBetragMitLeeremVorzeichen() {
Satz satz = SatzFactory.getSatz(SatzTyp.of(500));
satz.setFeld(Bezeichner.SCHADENBEARBEITUNGSKOSTEN_IN_WAEHRUNGSEINHEITEN, "00000001234");
satz.getTeildatensatz(1).setFeld(ByteAdresse.of(167), "");

// Leeres Vorzeichen, aber nicht leerer Betrag -> IllegalStateException
//assertThrows(ValidationException.class, () -> satz.getFeld(Bezeichner.SCHADENBEARBEITUNGSKOSTEN_IN_WAEHRUNGSEINHEITEN, BetragMitVorzeichen.class));

// Leeres Vorzeichen und Betrag 0 -> Vorzeichen-Feld weiter leer, aber der Betrag mit Vorzeichen ist "+0"
satz.setFeld(Bezeichner.SCHADENBEARBEITUNGSKOSTEN_IN_WAEHRUNGSEINHEITEN, "00000000000");
BetragMitVorzeichen betrag = satz.getFeld(Bezeichner.SCHADENBEARBEITUNGSKOSTEN_IN_WAEHRUNGSEINHEITEN, BetragMitVorzeichen.class);
assertEquals(14, betrag.getAnzahlBytes());
//assertEquals('+', betrag.getVorzeichen());
//assertEquals(" ", satz.getFeld(ByteAdresse.of(167)).getInhalt());
assertEquals(0, betrag.toBigDecimal().compareTo(BigDecimal.ZERO));
// Leeres Vorzeichen, aber nicht leerer Betrag -> erlaubt
BetragMitVorzeichen kosten = satz.getFeld(Bezeichner.SCHADENBEARBEITUNGSKOSTEN_IN_WAEHRUNGSEINHEITEN, BetragMitVorzeichen.class);
assertEquals(BigDecimal.valueOf(12.34), kosten.toBigDecimal());
}

/**
Expand Down

0 comments on commit aa759dd

Please sign in to comment.