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