@@ -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.\n Limitation: " + msg .getText ();
580+ + " automatisch angepasst oder entfernt.\n Limitation: " + msg .getText ();
569581 ret .addMessage (SEVERITY .WARNING , message , encounter );
570582 }
571583 }
0 commit comments