Skip to content

Commit 5a2a391

Browse files
committed
[28412] try recharge billed at new date after verifier result not ok
1 parent d21a589 commit 5a2a391

1 file changed

Lines changed: 18 additions & 6 deletions

File tree

bundles/ch.elexis.core.services/src/ch/elexis/core/services/EncounterService.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,9 @@ private void addVerrechnet(IEncounter encounter, ICodeElement billable, double a
212212
if (!addRes.isOK()) {
213213
String message = "Achtung: durch den Fall wechsel wurde die Position " + billable.getCode()
214214
+ " automatisch entfernt.\n" + addRes.toString();
215-
result.addMessage(SEVERITY.WARNING, message, encounter);
215+
if (result != null) {
216+
result.addMessage(SEVERITY.WARNING, message, encounter);
217+
}
216218
}
217219
}
218220
}
@@ -225,12 +227,16 @@ private void removeVerrechnet(IEncounter encounter, IBilled billed, Result<IEnco
225227
Result<?> removeRes = BillingServiceHolder.get().removeBilled(billed, encounter);
226228
if (!removeRes.isOK()) {
227229
String message = "Achtung: Position " + billed.getCode() + " konnte nicht entfernt werden.";
228-
result.addMessage(SEVERITY.WARNING, message, encounter);
230+
if (result != null) {
231+
result.addMessage(SEVERITY.WARNING, message, encounter);
232+
}
229233
}
230234
LocalLockServiceHolder.get().releaseLock(lockResult.getLockInfo());
231235
} else {
232236
String message = "Achtung: Locking von Position " + billed.getCode() + " fehlgeschlagen.";
233-
result.addMessage(SEVERITY.WARNING, message, encounter);
237+
if (result != null) {
238+
result.addMessage(SEVERITY.WARNING, message, encounter);
239+
}
234240
}
235241
}
236242

@@ -245,7 +251,9 @@ private Optional<ICodeElement> getMatchingVerrechenbar(IBilled billed, IEncounte
245251
if (matchingVerrechenbar.isEmpty()) {
246252
String message = "Achtung: durch den Fall wechsel wurde die Position " + billable.getCode()
247253
+ " automatisch entfernt, da diese im neuen Fall nicht vorhanden ist.";
248-
result.addMessage(SEVERITY.WARNING, message, encounter);
254+
if (result != null) {
255+
result.addMessage(SEVERITY.WARNING, message, encounter);
256+
}
249257
} else {
250258
return matchingVerrechenbar;
251259
}
@@ -556,16 +564,20 @@ public Result<IEncounter> setEncounterDate(IEncounter encounter, LocalDate newDa
556564
for (IBillableVerifier verifier : verifiers) {
557565
Result<IBilled> result = verifier.verify(encounter);
558566
if (!result.isOK()) {
567+
if (ret.isOK()) {
568+
ret = new Result<>(Result.SEVERITY.WARNING, 0, StringUtils.EMPTY, encounter, false);
569+
}
559570
// remove invalid billed on new date
560571
List<Result<IBilled>.msg> messages = result.getMessages();
561572
for (msg msg : messages) {
562573
if (msg.getObject() instanceof IBilled) {
563574
IBilled billed = (IBilled) msg.getObject();
564575
IBillable billable = billed.getBillable();
565576
if (billable != null) {
566-
encounter.removeBilled(billed);
577+
// reCharge removes and adds max amount if lower amount is allowed
578+
reCharge(Collections.singletonList(billed), encounter, null);
567579
String message = "Achtung: durch die Änderung wurde die Position " + billable.getCode()
568-
+ " automatisch entfernt.\nLimitation: " + msg.getText();
580+
+ " automatisch angepasst oder entfernt.\nLimitation: " + msg.getText();
569581
ret.addMessage(SEVERITY.WARNING, message, encounter);
570582
}
571583
}

0 commit comments

Comments
 (0)