Skip to content

Commit e4cb0f9

Browse files
committed
[28412] try recharge billed at new date after verifier result not ok
1 parent 34b3aa8 commit e4cb0f9

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
@@ -218,7 +218,9 @@ private void addVerrechnet(IEncounter encounter, ICodeElement billable, double a
218218
if (!addRes.isOK()) {
219219
String message = "Achtung: durch den Fall wechsel wurde die Position " + billable.getCode()
220220
+ " automatisch entfernt.\n" + addRes.toString();
221-
result.addMessage(SEVERITY.WARNING, message, encounter);
221+
if (result != null) {
222+
result.addMessage(SEVERITY.WARNING, message, encounter);
223+
}
222224
}
223225
}
224226
}
@@ -231,12 +233,16 @@ private void removeVerrechnet(IEncounter encounter, IBilled billed, Result<IEnco
231233
Result<?> removeRes = PortableServiceLoader.get(IBillingService.class).removeBilled(billed, encounter);
232234
if (!removeRes.isOK()) {
233235
String message = "Achtung: Position " + billed.getCode() + " konnte nicht entfernt werden.";
234-
result.addMessage(SEVERITY.WARNING, message, encounter);
236+
if (result != null) {
237+
result.addMessage(SEVERITY.WARNING, message, encounter);
238+
}
235239
}
236240
PortableServiceLoader.get(ILocalLockService.class).releaseLock(lockResult.getLockInfo());
237241
} else {
238242
String message = "Achtung: Locking von Position " + billed.getCode() + " fehlgeschlagen.";
239-
result.addMessage(SEVERITY.WARNING, message, encounter);
243+
if (result != null) {
244+
result.addMessage(SEVERITY.WARNING, message, encounter);
245+
}
240246
}
241247
}
242248

@@ -251,7 +257,9 @@ private Optional<ICodeElement> getMatchingVerrechenbar(IBilled billed, IEncounte
251257
if (matchingVerrechenbar.isEmpty()) {
252258
String message = "Achtung: durch den Fall wechsel wurde die Position " + billable.getCode()
253259
+ " automatisch entfernt, da diese im neuen Fall nicht vorhanden ist.";
254-
result.addMessage(SEVERITY.WARNING, message, encounter);
260+
if (result != null) {
261+
result.addMessage(SEVERITY.WARNING, message, encounter);
262+
}
255263
} else {
256264
return matchingVerrechenbar;
257265
}
@@ -592,16 +600,20 @@ public Result<IEncounter> setEncounterDate(IEncounter encounter, LocalDate newDa
592600
for (IBillableVerifier verifier : verifiers) {
593601
Result<IBilled> result = verifier.verify(encounter);
594602
if (!result.isOK()) {
603+
if (ret.isOK()) {
604+
ret = new Result<>(Result.SEVERITY.WARNING, 0, StringUtils.EMPTY, encounter, false);
605+
}
595606
// remove invalid billed on new date
596607
List<Result<IBilled>.msg> messages = result.getMessages();
597608
for (msg msg : messages) {
598609
if (msg.getObject() instanceof IBilled) {
599610
IBilled billed = (IBilled) msg.getObject();
600611
IBillable billable = billed.getBillable();
601612
if (billable != null) {
602-
encounter.removeBilled(billed);
613+
// reCharge removes and adds max amount if lower amount is allowed
614+
reCharge(Collections.singletonList(billed), encounter, null);
603615
String message = "Achtung: durch die Änderung wurde die Position " + billable.getCode()
604-
+ " automatisch entfernt.\nLimitation: " + msg.getText();
616+
+ " automatisch angepasst oder entfernt.\nLimitation: " + msg.getText();
605617
ret.addMessage(SEVERITY.WARNING, message, encounter);
606618
}
607619
}

0 commit comments

Comments
 (0)