1 package stammDatenTools
;
3 import hauptFenster
.Reha
;
6 import java
.math
.BigDecimal
;
7 import java
.text
.DecimalFormat
;
8 import java
.util
.ArrayList
;
9 import java
.util
.Arrays
;
10 import java
.util
.Collections
;
11 import java
.util
.Comparator
;
12 import java
.util
.List
;
13 import java
.util
.Vector
;
15 import javax
.swing
.JOptionPane
;
17 import org
.jdesktop
.swingworker
.SwingWorker
;
19 import CommonTools
.SqlInfo
;
20 import systemEinstellungen
.SystemConfig
;
21 import systemEinstellungen
.SystemPreislisten
;
22 import CommonTools
.StringTools
;
23 import terminKalender
.BestaetigungsDaten
;
24 import terminKalender
.DatFunk
;
25 import terminKalender
.TerminBestaetigenAuswahlFenster
;
26 import terminKalender
.TermineErfassen
;
28 public class RezTools
{
29 public static final int REZEPT_IST_JETZ_VOLL
= 0;
30 public static final int REZEPT_IST_BEREITS_VOLL
= 1;
31 public static final int REZEPT_HAT_LUFT
= 2;
32 public static final int REZEPT_FEHLER
= 3;
33 public static final int REZEPT_ABBRUCH
= 4;
34 public static final int DIALOG_ABBRUCH
= -1;
35 public static final int DIALOG_OK
= 0;
36 public static int DIALOG_WERT
= 0;
38 public static boolean mitJahresWechsel(String datum
){
41 if( (Integer
.parseInt(datum
.substring(6))-Integer
.parseInt(SystemConfig
.aktJahr
)) < 0){
50 public static Vector
<ArrayList
<?
>> Y_holePosUndAnzahlAusRezept(String xreznr
){
51 Vector
<ArrayList
<?
>> xvec
= new Vector
<ArrayList
<?
>>();
52 ArrayList
<String
> positionen
= new ArrayList
<String
>();
53 ArrayList
<String
> doppeltest
= new ArrayList
<String
>();
54 ArrayList
<Integer
>anzahl
= new ArrayList
<Integer
>();
56 Vector
<String
> rezvec
= null;
58 rezvec
= SqlInfo
.holeSatz("verordn", "art_dbeh1,art_dbeh2,art_dbeh3,art_dbeh4,"+
59 "anzahl1,anzahl2,anzahl3,anzahl4", "rez_nr='"+xreznr
+"'", Arrays
.asList(new String
[] {}));
60 for(int i
= 0; i
< 4; i
++){
61 if(! rezvec
.get(i
).equals("0")){
63 positionen
.add( holePosAusIdUndRezNr( rezvec
.get(i
), xreznr
) );
64 anzahl
.add(Integer
.parseInt(rezvec
.get(i
+4)));
65 doppeltest
.add(rezvec
.get(i
));
67 doppeltest
.add(rezvec
.get(i
));
69 if(rezvec
.indexOf(rezvec
.get(i
))!=i
){ //Doppelbehandlung, wenn die HMPos vor i schon mal aufgeführt ist. Hintergrund: Doppelbehandlungen müssen nicht auf i=0 und i=1 sein
70 anzahl
.set(0, Integer
.parseInt(rezvec
.get(i
+4))+Integer
.parseInt(rezvec
.get(rezvec
.indexOf(rezvec
.get(i
))+4)));
72 positionen
.add( holePosAusIdUndRezNr( rezvec
.get(i
), xreznr
) );
73 anzahl
.add(Integer
.parseInt(rezvec
.get(i
+4)));
76 //positionen.add( holePosAusIdUndRezNr( rezvec.get(i), xreznr) );
77 //anzahl.add(Integer.parseInt(rezvec.get(i+4)));
79 doppeltest
.add(rezvec
.get(i
));
80 positionen
.add( holePosAusIdUndRezNr( rezvec
.get(i
),xreznr
) );
81 anzahl
.add(Integer
.parseInt(rezvec
.get(i
+4)));
85 xvec
.add((ArrayList
<?
>)positionen
.clone());
86 xvec
.add((ArrayList
<?
>)anzahl
.clone());
87 xvec
.add((ArrayList
<?
>)doppeltest
.clone()); //zum Test ausgeschaltet
91 private static Object
[] sucheDoppel(int pos
,List
<String
> list
,String comperator
){
92 //System.out.println("Position="+pos+" fistIndex="+list.indexOf(comperator)+" lastIndex="+list.lastIndexOf(comperator));
93 if(pos
== list
.indexOf(comperator
)){
94 Object
[] obj
= {true,list
.indexOf(comperator
),list
.lastIndexOf(comperator
)};
97 Object
[] obj
= {true,list
.lastIndexOf(comperator
),list
.indexOf(comperator
)};
104 * Mistding - elendes aber jetzt haben wir dich!
107 public static Vector
<ArrayList
<?
>> holePosUndAnzahlAusTerminen(String xreznr
){
108 Vector
<ArrayList
<?
>> xvec
= new Vector
<ArrayList
<?
>>();
110 Vector
<String
> rezvec
= SqlInfo
.holeSatz("verordn", "termine,pos1,pos2,pos3,"+
111 "pos4,kuerzel1,kuerzel2,kuerzel3,kuerzel4,preisgruppe", "rez_nr='"+xreznr
+"'", Arrays
.asList(new String
[] {}));
112 Vector
<String
> termvec
= holeEinzelZiffernAusRezept(null,rezvec
.get(0));
114 List
<String
> list
= Arrays
.asList(rezvec
.get(1),rezvec
.get(2),rezvec
.get(3),rezvec
.get(4));
118 ArrayList
<String
> positionen
= new ArrayList
<String
>();
119 String behandlungen
= null;
120 String
[] einzelbehandlung
= null;
121 ArrayList
<Integer
>anzahl
= new ArrayList
<Integer
>();
122 ArrayList
<Boolean
>vorrangig
= new ArrayList
<Boolean
>();
123 ArrayList
<Boolean
>einzelerlaubt
= new ArrayList
<Boolean
>();
124 ArrayList
<Object
[]>doppelpos
= new ArrayList
<Object
[]>();
125 boolean[] bvorrangig
= null;
126 //String aktpos = "";
127 for(int i
= 1; i
< 5; i
++ ){
129 if(rezvec
.get(i
).trim().equals("")){
133 positionen
.add(String
.valueOf(rezvec
.get(i
)));
134 bvorrangig
= isVorrangigAndExtra(rezvec
.get(i
+4),xreznr
);
135 vorrangig
.add(Boolean
.valueOf(bvorrangig
[0]));
136 einzelerlaubt
.add(Boolean
.valueOf(bvorrangig
[1]));
139 if(countOccurence(list
,rezvec
.get(i
)) > 1){
140 doppelpos
.add(sucheDoppel(i
-1,list
,rezvec
.get(i
)));
142 Object
[] obj
= {false,i
-1,i
-1};
143 doppelpos
.add(obj
.clone());
149 Vector
<String
> imtag
= new Vector
<String
>();
150 Object
[] tests
= null;
151 for(int i
= 0; i
< termvec
.size();i
++){
152 //Über alle Tage hinweg
154 behandlungen
= termvec
.get(i
);
155 if(! behandlungen
.equals("")){
156 einzelbehandlung
= behandlungen
.split(",");
159 for(i2
=0;i2
<einzelbehandlung
.length
;i2
++){
161 //Jetzt testen ob Doppelbehandlung
162 tests
= doppelpos
.get(list
.indexOf(einzelbehandlung
[i2
]));
163 if((Boolean
) tests
[0]){
164 //Ja Doppelbehandlung
165 imtag
.add(String
.valueOf(einzelbehandlung
[i2
]));
166 //Jetzt testen ob erste oder Zweite
167 if(imtag
.indexOf(einzelbehandlung
[i2
]) == imtag
.lastIndexOf(einzelbehandlung
[i2
]) ){
169 anzahl
.set((Integer
)tests
[1], anzahl
.get((Integer
)tests
[1])+1);
172 anzahl
.set((Integer
)tests
[2], anzahl
.get((Integer
)tests
[2])+1);
175 //Nein keine Doppelbehandlung
176 anzahl
.set((Integer
)tests
[1], anzahl
.get((Integer
)tests
[1])+1);
178 }catch(Exception ex
){
180 String disziplin
= RezTools
.putRezNrGetDisziplin(xreznr
);
181 String kuerzel
= RezTools
.getKurzformFromPos(einzelbehandlung
[i2
], rezvec
.get(9), SystemPreislisten
.hmPreise
.get(disziplin
).get(Integer
.parseInt(rezvec
.get(9))-1));
182 JOptionPane
.showMessageDialog(null,"<html><font color='#ff0000' size=+2>Fehler in der Ermittlung der Behandlungspositionen!</font><br><br>"+
183 "<b>Bitte kontrollieren sie die bereits gespeicherten Behandlungspositionen!!<br><br>"+
184 "Der problematische Termin ist der <font color='#ff0000'>"+(i
+1)+".Termin</font>,<br>bestätigte Behandlungsart ist <font color='#ff0000'>"+kuerzel
+" ("+einzelbehandlung
[i2
]+")<br>"+
185 "<br>Diese Behandlungsart ist im Rezeptblatt nicht, oder nicht mehr verzeichnet</font><br><br>"+
187 "<b><font color='#ff0000'>Lösung:</font> Klicken Sie die Termintabelle an, drücken Sie dann die rechte Maustaste und wählen Sie dann die Option<br><br>"+
188 "<b><u>\"alle Behandlungsarten den Rezeptdaten angleichen\"</u></b><br>"+
189 "</b>oder<br><b><u>\"alle im Rezept gespeicherten Behandlungsarten löschen\"</u></b><br></html>");
191 }catch(Exception ex2
){
192 JOptionPane
.showMessageDialog(null,"<html><font color='#ff0000' size=+2>Fehler in der Ermittlung der Behandlungspositionen!</font><br><br>"+
193 "<b>Bitte kontrollieren sie die bereits gespeicherten Behandlungspositionen!!<br><br>"+
194 "Der Fehler kann nicht genau lokalisiert werden!<br><br>"+
195 "Vermutlich wurden in den bisherigen Terminen Positionen bestätigt, die im Rezeptblatt<br>"+
196 "<u>nicht oder nicht mehr aufgeführt sind.</u><br><br>"+
197 "<b>Klicken Sie die Termintabelle an, drücken Sie dann die rechte Maustaste und wählen Sie eine Option aus.<b><br></html>");
204 for(int i3
=0;i3
<positionen
.size();i3
++)
205 anzahl
.set(i3
, anzahl
.get(i3
)+1);
207 }catch(Exception ex
){
208 ex
.printStackTrace();
212 System.out.println("*************************************************");
213 System.out.println(positionen);
214 System.out.println(anzahl);
215 System.out.println(vorrangig);
216 System.out.println(einzelerlaubt);
217 System.out.println("*************************************************");
219 xvec
.add((ArrayList
<?
>)positionen
.clone());
220 xvec
.add((ArrayList
<?
>)anzahl
.clone());
221 xvec
.add((ArrayList
<?
>)vorrangig
.clone());
222 xvec
.add((ArrayList
<?
>)einzelerlaubt
.clone());
223 xvec
.add((ArrayList
<?
>)doppelpos
.clone());
227 public static Vector
<ArrayList
<?
>> X_holePosUndAnzahlAusTerminen(String xreznr
){
228 Vector
<ArrayList
<?
>> xvec
= new Vector
<ArrayList
<?
>>();
229 Vector
<String
> termvec
= holeEinzelZiffernAusRezept(xreznr
,"");
230 String behandlungen
= null;
231 String
[] einzelbehandlung
= null;
232 ArrayList
<String
> positionen
= new ArrayList
<String
>();
233 ArrayList
<Integer
>anzahl
= new ArrayList
<Integer
>();
235 for(int i
= 0; i
< termvec
.size();i
++){
236 behandlungen
= termvec
.get(i
);
237 if(! behandlungen
.equals("")){
238 einzelbehandlung
= behandlungen
.split(",");
239 //Scheiße weil Doppelbehandlungen zusammengefaßt werden
240 //Wird verwendet von: TerminFenster.terminBestaetigen()
241 //dort werden Doppelbehandlungen nachträglich erkannt und korrigiert
242 for(int i2
= 0; i2
< einzelbehandlung
.length
;i2
++){
243 trefferbei
= positionen
.indexOf(einzelbehandlung
[i2
]);
245 anzahl
.set(trefferbei
,anzahl
.get(trefferbei
)+1 );
247 positionen
.add(einzelbehandlung
[i2
]);
253 xvec
.add((ArrayList
<?
>)positionen
.clone());
254 xvec
.add((ArrayList
<?
>)anzahl
.clone());
257 public static int countOccurence(List
<String
> list
, String comperator
){
259 for(int i
= 0; i
< list
.size();i
++){
260 if(list
.get(i
).trim().equals(comperator
.trim())){
267 public static boolean[] isVorrangigAndExtra(String kuerzel
,String xreznr
){
268 boolean[] bret
= {false,false};
269 Vector
<Vector
<String
>> vec
= SqlInfo
.holeFelder("select vorrangig,extraok from kuerzel where kuerzel='"+kuerzel
+
270 "' and disziplin ='"+xreznr
.substring(0,2)+"' LIMIT 1");
272 String msg
= "Achtung!\n\n"+
273 "Ihre Kürzelzuordnung in den Preislisten ist nicht korrekt!!!!!\n"+
274 "Kürzel: "+kuerzel
+"\n"+
275 "Disziplin: "+xreznr
.substring(0,2)+"\n\n"+
276 "Für die ausgewählte Diziplin ist das angegebene Kürzel nicht in der Kürzeltabelle vermerkt!";
277 JOptionPane
.showMessageDialog(null, msg
);
280 bret
[0] = vec
.get(0).get(0).equals("T");
281 bret
[1] = vec
.get(0).get(1).equals("T");
285 @SuppressWarnings("unchecked")
286 public static Vector
<String
> holeEinzelZiffernAusRezept(String xreznr
,String termine
){
287 Vector
<String
> xvec
= null;
288 Vector
<String
> retvec
= new Vector
<String
>();
290 if(termine
.equals("")){
291 xvec
= SqlInfo
.holeSatz("verordn", "termine,pat_intern", "rez_nr='"+xreznr
+"'", Arrays
.asList(new String
[] {}));
293 return (Vector
<String
>)retvec
.clone();
295 terms
= (String
) xvec
.get(0);
301 return (Vector
<String
>)retvec
.clone();
303 if(terms
.equals("")){
304 return (Vector
<String
>)retvec
.clone();
306 String
[] tlines
= terms
.split("\n");
307 int lines
= tlines
.length
;
309 for(int i
= 0;i
<lines
;i
++){
310 String
[] terdat
= tlines
[i
].split("@");
311 //int ieinzel = terdat.length;
312 retvec
.add(terdat
[3].trim());
314 return (Vector
<String
>)retvec
.clone();
317 public static Object
[] holeTermineAnzahlUndLetzter(String termine
){
318 Object
[] retobj
= {null,null};
320 String
[] tlines
= termine
.split("\n");
321 int lines
= tlines
.length
;
327 String
[] terdat
= null;
328 terdat
= tlines
[lines
-1].split("@");
329 retobj
[0] = Integer
.valueOf(lines
);
330 retobj
[1] = String
.valueOf(terdat
[0]);
331 }catch(Exception ex
){
337 @SuppressWarnings("unchecked")
338 public static Vector
<String
> holeEinzelTermineAusRezept(String xreznr
,String termine
){
339 Vector
<String
> xvec
= null;
340 Vector
<String
> retvec
= new Vector
<String
>();
342 if(termine
.equals("")){
343 xvec
= SqlInfo
.holeSatz("verordn", "termine,pat_intern", "rez_nr='"+xreznr
+"'", Arrays
.asList(new String
[] {}));
345 return (Vector
<String
>)retvec
.clone();
347 terms
= (String
) xvec
.get(0);
353 return (Vector
<String
>)retvec
.clone();
355 if(terms
.equals("")){
356 return (Vector
<String
>)retvec
.clone();
358 String
[] tlines
= terms
.split("\n");
359 int lines
= tlines
.length
;
360 String
[] terdat
= null;
361 for(int i
= 0;i
<lines
;i
++){
362 terdat
= tlines
[i
].split("@");
363 //int ieinzel = terdat.length;
364 retvec
.add((terdat
[0].trim().equals("") ?
" . . " : String
.valueOf(terdat
[0])));
366 Comparator
<String
> comparator
= new Comparator
<String
>() {
367 public int compare(String s1
, String s2
) {
368 String strings1
= DatFunk
.sDatInSQL(s1
);
369 String strings2
= DatFunk
.sDatInSQL(s2
);
370 return strings1
.compareTo(strings2
);
373 Collections
.sort(retvec
,comparator
);
374 return (Vector
<String
>)retvec
.clone();
376 public static String
holePosAusIdUndRezNr(String id
,String reznr
){
377 String diszi
= RezTools
.putRezNrGetDisziplin(reznr
);
378 String preisgruppe
= SqlInfo
.holeEinzelFeld("select preisgruppe from verordn where rez_nr='"+reznr
+"' LIMIT 1");
379 Vector
<Vector
<String
>> preisvec
= (Vector
<Vector
<String
>>) SystemPreislisten
.hmPreise
.get(diszi
).get(Integer
.parseInt(preisgruppe
)-1);
380 String pos
= RezTools
.getPosFromID(id
, preisgruppe
, preisvec
) ;
381 return (pos
==null ?
"" : pos
);
383 /********************************************************************************/
384 @SuppressWarnings("unchecked")
385 public static Vector
<Vector
<String
>> macheTerminVector(String termine
){
386 String
[] tlines
= termine
.split("\n");
387 int lines
= tlines
.length
;
388 ////System.out.println("Anzahl Termine = "+lines);
389 Vector
<Vector
<String
>> tagevec
= new Vector
<Vector
<String
>>();
390 Vector
<String
> tvec
= new Vector
<String
>();
391 String
[] terdat
= null;
392 for(int i
= 0;i
<lines
;i
++){
393 terdat
= tlines
[i
].split("@");
394 int ieinzel
= terdat
.length
;
395 ////System.out.println("Anzahl Splits = "+ieinzel);
397 for(int y
= 0; y
< ieinzel
;y
++){
399 tvec
.add(String
.valueOf((terdat
[y
].trim().equals("") ?
" . . " : terdat
[y
])));
401 SystemConfig
.hmAdrRDaten
.put("<Rerstdat>",String
.valueOf((terdat
[y
].trim().equals("") ?
" . . " : terdat
[y
])));
404 tvec
.add(String
.valueOf(terdat
[y
]));
406 ////System.out.println("Feld "+y+" = "+terdat[y]);
408 ////System.out.println("Termivector = "+tvec);
409 tagevec
.add((Vector
<String
>)tvec
.clone());
411 if(tagevec
.size() > 0 ){
412 Comparator
<Vector
<String
>> comparator
= new Comparator
<Vector
<String
>>() {
414 public int compare(Vector
<String
> o1
, Vector
<String
> o2
) {
415 String s1
= (String
)o1
.get(4);
416 String s2
= (String
)o2
.get(4);
417 return s1
.compareTo(s2
);
420 Collections
.sort(tagevec
,comparator
);
423 return (Vector
<Vector
<String
>>)tagevec
.clone();
426 /********************************************************************************/
427 public static boolean zweiPositionenBeiHB(String disziplin
,String preisgruppe
){
428 int pg
= Integer
.parseInt(preisgruppe
)-1;
429 if(SystemPreislisten
.hmHBRegeln
.get(disziplin
).get(pg
).get(2).trim().equals("") &&
430 SystemPreislisten
.hmHBRegeln
.get(disziplin
).get(pg
).get(3).trim().equals("") ){
435 public static boolean keineWeggebuehrBeiHB(String disziplin
,String preisgruppe
){
436 int pg
= Integer
.parseInt(preisgruppe
)-1;
437 if(SystemPreislisten
.hmHBRegeln
.get(disziplin
).get(pg
).get(2).trim().equals("") &&
438 SystemPreislisten
.hmHBRegeln
.get(disziplin
).get(pg
).get(3).trim().equals("") ){
444 /********************************************************************************/
446 public static String
getLangtextFromID(String id
,String preisgruppe
,Vector
<Vector
<String
>> vec
){
447 int lang
= vec
.size(),i
;
448 int idpos
= vec
.get(0).size()-1;
449 String ret
= "kein Lantext vorhanden";
450 for(i
= 0; i
< lang
;i
++){
451 if( vec
.get(i
).get(idpos
).equals(id
)){
452 ret
= vec
.get(i
).get(0).toString();
459 public static String
getPreisAktFromID(String id
,String preisgruppe
,Vector
<Vector
<String
>> vec
){
460 int lang
= vec
.size(),i
;
461 int idpos
= vec
.get(0).size()-1;
463 for(i
= 0; i
< lang
;i
++){
464 if( vec
.get(i
).get(idpos
).equals(id
)){
465 ret
= vec
.get(i
).get(3).toString();
471 public static String
getPreisAltFromID(String id
,String preisgruppe
,Vector
<Vector
<String
>> vec
){
472 int lang
= vec
.size(),i
;
473 int idpos
= vec
.get(0).size()-1;
475 for(i
= 0; i
< lang
;i
++){
476 if( vec
.get(i
).get(idpos
).equals(id
)){
477 ret
= vec
.get(i
).get(4).toString();
483 /***************************************/
484 public static String
getPreisAktFromPos(String pos
,String preisgruppe
,Vector
<Vector
<String
>> vec
){
486 int lang
= vec
.size(),i
;
488 for(i
= 0; i
< lang
;i
++){
489 if( vec
.get(i
).get(2).equals(pos
)){
490 ret
= vec
.get(i
).get(3).toString();
495 }catch(Exception ex
){
496 ex
.printStackTrace();
500 public static String
getPreisAltFromPos(String pos
,String preisgruppe
,Vector
<Vector
<String
>> vec
){
501 int lang
= vec
.size(),i
;
503 for(i
= 0; i
< lang
;i
++){
504 if( vec
.get(i
).get(1).equals(pos
)){
505 ret
= vec
.get(i
).get(4).toString();
511 public static String
getPreisAltFromPosNeu(String pos
,String preisgruppe
,Vector
<Vector
<String
>> vec
){
512 int lang
= vec
.size(),i
;
514 for(i
= 0; i
< lang
;i
++){
515 if( vec
.get(i
).get(2).equals(pos
)){
516 ret
= vec
.get(i
).get(4).toString();
523 /***************************************/
524 public static String
getIDFromPos(String pos
,String preisgruppe
,Vector
<Vector
<String
>> vec
){
525 int lang
= vec
.size(),i
;
526 int idpos
= vec
.get(0).size()-1;
528 for(i
= 0; i
< lang
;i
++){
529 if( vec
.get(i
).get(2).equals(pos
)){
530 ret
= vec
.get(i
).get(idpos
).toString();
536 public static String
getIDFromPosX(String pos
,String preisgruppe
,String disziplin
){
537 Vector
<Vector
<String
>> vec
= holePreisVector(disziplin
,Integer
.parseInt(preisgruppe
)-1);
538 int lang
= vec
.size(),i
;
539 int idpos
= vec
.get(0).size()-1;
541 for(i
= 0; i
< lang
;i
++){
542 if( vec
.get(i
).get(2).equals(pos
)){
543 ret
= vec
.get(i
).get(idpos
).toString();
550 public static String
getPosFromID(String id
,String preisgruppe
,Vector
<Vector
<String
>> vec
){
551 int lang
= vec
.size(),i
;
552 int idpos
= vec
.get(0).size()-1;
554 for(i
= 0; i
< lang
;i
++){
555 if( vec
.get(i
).get(idpos
).equals(id
)){
556 ret
= vec
.get(i
).get(2).toString();
563 public static String
getKurzformFromID(String id
,Vector
<Vector
<String
>> vec
){
564 int lang
= vec
.size(),i
;
565 int idpos
= vec
.get(0).size()-1;
567 for(i
= 0; i
< lang
;i
++){
568 if(vec
.get(i
).get(idpos
).equals(id
)){
569 ret
= vec
.get(i
).get(1).toString();
575 public static String
getKurzformFromPos(String pos
,String preisgruppe
,Vector
<Vector
<String
>> vec
){
576 //Parameter preisgruppe wird nicht ausgewertet
577 int lang
= vec
.size(),i
;
578 //int suchenin = (Integer.parseInt(preisgruppe)*4)-2;
581 for(i
= 0; i
< lang
;i
++){
582 if(vec
.get(i
).get(2).trim().equals(pos
.trim()) && (!vec
.get(i
).get(1).equals("Isokin")) ){
583 ret
= vec
.get(i
).get(1).toString();
587 }catch(Exception ex
){
588 System
.out
.println("Parameter pos = "+pos
);
589 System
.out
.println("Parameter preisgruppe = "+preisgruppe
);
590 System
.out
.println("Parameter vec = "+vec
);
591 System
.out
.println("Parameter ret = "+ret
);
592 System
.out
.println("Nachfolgend die Excepiton von getKurzformFromPos");
593 ex
.printStackTrace();
597 public static Object
[] getKurzformUndIDFromPos(String pos
,String preisgruppe
,Vector
<Vector
<String
>> vec
){
598 int lang
= vec
.size(),i
;
599 //int suchenin = (Integer.parseInt(preisgruppe)*4)-2;
600 int idpos
= vec
.get(0).size()-1;
601 Object
[] retobj
= {"",""};
602 for(i
= 0; i
< lang
;i
++){
603 if(vec
.get(i
).get(2).equals(pos
) && (!vec
.get(i
).get(1).equals("Isokin"))){
604 retobj
[0] = vec
.get(i
).get(1).toString();
605 retobj
[1] = vec
.get(i
).get(idpos
).toString();
609 return retobj
.clone();
612 public static String
getIDFromKurzform(String kurzform
,Vector
<Vector
<String
>> vec
){
613 int lang
= vec
.size(),i
;
614 int idpos
= vec
.get(0).size()-1;
616 for(i
= 0; i
< lang
;i
++){
617 if(vec
.get(i
).get(1).equals(kurzform
)){
618 ret
= vec
.get(i
).get(idpos
).toString();
625 public static Vector
<Vector
<String
>> holePreisVector(String disziplin
,int preisgruppe
){
626 if(disziplin
.startsWith("KG")){
627 //return (Vector<Vector<String>>)ParameterLaden.vKGPreise;
628 return SystemPreislisten
.hmPreise
.get("Physio").get(preisgruppe
);
629 }else if(disziplin
.startsWith("MA")){
630 //return (Vector<Vector<String>>)ParameterLaden.vMAPreise;
631 return SystemPreislisten
.hmPreise
.get("Massage").get(preisgruppe
);
632 }else if(disziplin
.startsWith("ER")){
633 //return (Vector<Vector<String>>)ParameterLaden.vERPreise;
634 return SystemPreislisten
.hmPreise
.get("Ergo").get(preisgruppe
);
635 }else if(disziplin
.startsWith("LO")){
636 //return (Vector<Vector<String>>)ParameterLaden.vLOPreise;
637 return SystemPreislisten
.hmPreise
.get("Logo").get(preisgruppe
);
638 }else if(disziplin
.startsWith("RH")){
639 //return (Vector<Vector<String>>)ParameterLaden.vRHPreise;
640 return SystemPreislisten
.hmPreise
.get("Reha").get(preisgruppe
);
641 }else if(disziplin
.startsWith("PO")){
642 //return (Vector<Vector<String>>)ParameterLaden.vRHPreise;
643 return SystemPreislisten
.hmPreise
.get("Podo").get(preisgruppe
);
651 public int gesamtZahl;
652 public boolean allefrei;
653 public boolean allezuzahl;
654 public boolean anfangfrei;
657 public boolean hausbes;
658 public boolean mithausbes;
659 public ZuzahlModell(int gesamt,boolean allefrei){
664 public static boolean neuePreisNachRezeptdatumOderStichtag(String aktDisziplin
,int tarifgruppe
,String rez_datum
,boolean neuanlage
,Vector
<String
> rezvec
){
666 String datum
= SystemPreislisten
.hmNeuePreiseAb
.get(aktDisziplin
).get(tarifgruppe
);
667 int regel
= SystemPreislisten
.hmNeuePreiseRegel
.get(aktDisziplin
).get(tarifgruppe
);
668 Vector
<String
> tage
= null;
669 //Regel 1=nach Behandlungsbeginn, 2=nach Rezeptdatum, 3=irgend eine Behandlung ab Datum //der Rest wird nicht ausgewertet
670 if(!datum
.trim().equals("") && regel
==2){
671 if(DatFunk
.TageDifferenz(datum
, rez_datum
) < 0){
675 }else if(!datum
.trim().equals("") && regel
==1){
678 if(DatFunk
.TageDifferenz(datum
,DatFunk
.sHeute() ) < 0){
684 tage
= RezTools
.holeEinzelTermineAusRezept(null, rezvec
.get(34));
686 //keine Tage vorhanden und Datum heute >= Regeldatum
687 if(DatFunk
.TageDifferenz(datum
,DatFunk
.sHeute() ) < 0){
691 }else if(tage
.size() > 0 ){
692 //Tage vorhanden dann Datum testen
693 if(DatFunk
.TageDifferenz(datum
, tage
.get(0)) < 0){
698 }else if(!datum
.trim().equals("") && regel
==3){
701 if(DatFunk
.TageDifferenz(datum
,DatFunk
.sHeute() ) < 0){
707 tage
= RezTools
.holeEinzelTermineAusRezept(null, rezvec
.get(34));
709 //keine Tage vorhanden und Datum heute >= Regeldatum
710 if(DatFunk
.TageDifferenz(datum
,DatFunk
.sHeute() ) < 0){
714 }else if(tage
.size() > 0 ){
715 //Tage vorhanden dann Datum testen ob irgend ein Datum >=
716 for(int i
= 0; i
< tage
.size();i
++){
717 if(DatFunk
.TageDifferenz(datum
, tage
.get(i
)) >= 0){
727 if(DatFunk.TageDifferenz(datum,DatFunk.sHeute() ) < 0){
734 if(!datum
.trim().equals("") && regel
==4){
735 if(DatFunk
.TageDifferenz(datum
,DatFunk
.sHeute() ) < 0){
741 }catch(Exception ex
){
742 ex
.printStackTrace();
744 //Bei Regel 0 oder wenn alles nicht zutrifft
748 public static int testeRezGebArt(boolean testefuerbarcode
,boolean hintergrund
,String srez
,String termine
){
750 Vector
<String
> vAktTermine
= null;
751 boolean bTermine
= false;
753 boolean u18Test
= false;
754 boolean bMitJahresWechsel
= false;
755 ZuzahlModell zm
= new ZuzahlModell();
756 //Vector<String> patvec = SqlInfo.holeSatz("pat5", "geboren,jahrfrei", "pat_intern='"+xvec.get(1)+"'", Arrays.asList(new String[] {}));
757 //String patGeboren = datFunk.sDatInDeutsch(patvec.get(0));
758 //String patJahrfrei = datFunk.sDatInDeutsch(patvec.get(0));
762 //1. Schritt haben wir bereits Termineintr�ge die man auswerten kann
763 if( (vAktTermine
= holeEinzelTermineAusRezept("",termine
)).size() > 0 ){
764 // Es gibt Termine in der Tabelle
766 //iTermine = vAktTermine.size();
767 if( ((String
)vAktTermine
.get(0)).substring(6).equals(SystemConfig
.vorJahr
)){
768 bMitJahresWechsel
= true;
770 if(DatFunk
.Unter18(vAktTermine
.get(0),
771 DatFunk
.sDatInDeutsch(Reha
.thisClass
.patpanel
.patDaten
.get(4)))){
772 //System.out.println(vAktTermine);
778 //System.out.println(vAktTermine);
779 for(int i
= 0;i
< 1;i
++){
781 if(Integer
.parseInt(((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(63))) <= 0){
782 // Kasse erfordert keine Zuzahlung
783 //System.out.println("Kasse erfordert keine Zuzahlung");
788 if(Integer
.parseInt(((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(39))) == 1){
789 // Hat bereits bezahlt normal behandeln (zzstatus == 1)
790 //System.out.println("Hat bereits bezahlt normal behandeln (zzstatus == 1)");
791 zm
.allezuzahl
= true;
796 /************************ Jetzt der Ober-Scheißdreck für den Achtzehner-Test***********************/
797 if( ((Boolean
) ((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(60)).equals("T")) || (u18Test
)){
798 // Es ist ein unter 18 Jahre Test notwendig
799 //System.out.println("Es ist ein unter 18 Jahre Test notwendig");
802 int [] test
= ZuzahlTools
.terminNachAchtzehn(vAktTermine
,DatFunk
.sDatInDeutsch((String
)Reha
.thisClass
.patpanel
.patDaten
.get(4)));
805 //System.out.println("Parameter 1 = "+test[0]);
806 //System.out.println("Parameter 2 = "+test[1]);
811 zm
.allezuzahl
= false;
812 zm
.anfangfrei
= true;
814 zm
.teil2
= maxAnzahl()-test
[1];
815 //System.out.println("Splitten frei für "+test[1]+" Tage, bezahlen für "+(maxAnzahl()-test[1]));
818 zm
.allezuzahl
= true;
820 //System.out.println("Jeden Termin bezahlen insgesamt bezahlen für "+(maxAnzahl()-test[1]));
825 //System.out.println("Frei für "+test[1]+" Tage - also alle");
830 //Es stehen keine Termine für Analyse zur Verfügung also muß das Fenster für manuelle Eingabe geöffnet werden!!
831 String geburtstag
= DatFunk
.sDatInDeutsch(Reha
.thisClass
.patpanel
.patDaten
.get(4));
832 String stichtag
= DatFunk
.sHeute().substring(0,6)+Integer
.valueOf(Integer
.valueOf(SystemConfig
.aktJahr
)-18).toString();
833 if(DatFunk
.TageDifferenz(geburtstag
,stichtag
) >= 0 ){
834 //System.out.println("Normale Zuzahlung....");
836 zm
.allezuzahl
= true;
839 //System.out.println("Alle Frei....");
841 zm
.allezuzahl
= false;
849 /************************ Keine Befreiung Aktuell und keine Vorjahr (Normalfall************************/
850 if((boolean) ((String
)Reha
.thisClass
.patpanel
.patDaten
.get(30)).equals("F") &&
851 (((String
)Reha
.thisClass
.patpanel
.patDaten
.get(69)).trim().equals("")) ){
852 // Es liegt weder eine Befreiung für dieses noch für letztes Jahr vor.
854 //System.out.println("Es liegt weder eine Befreiung für dieses noch für letztes Jahr vor.");
858 /************************ Aktuell Befreit und im Vorjahr auch befreit************************/
859 if((boolean) ((String
)Reha
.thisClass
.patpanel
.patDaten
.get(30)).equals("T") &&
860 (!((String
)Reha
.thisClass
.patpanel
.patDaten
.get(69)).equals("")) ){
861 // Es liegt eine Befreiung vor und im Vorjahr ebenfenfalls befreit
862 //System.out.println("Es liegt eine Befreiung vor und im Vorjahr ebenfenfalls befreit");
866 /************************ aktuell Nicht frei, Vorjahr frei************************/
867 if((boolean) (((String
)Reha
.thisClass
.patpanel
.patDaten
.get(30)).equals("F")) &&
868 (!((String
)Reha
.thisClass
.patpanel
.patDaten
.get(69)).equals("")) ){
869 //System.out.println("aktuell Nicht frei, Vorjahr frei");
870 if(!bMitJahresWechsel
){//Alle Termine aktuell
872 }else{// es gibt Termine im Vorjahr
873 Object
[] obj
= JahresWechsel(vAktTermine
,SystemConfig
.vorJahr
);
874 if(!(Boolean
)obj
[0]){// alle Termine waren im Vorjahr
875 //System.out.println("1 - Termine aus dem Vorjahr(frei) = "+obj[1]+" Termine aus diesem Jahr(Zuzahlung) = "+obj[2]);
876 if(vAktTermine
.size() < maxAnzahl()){
877 String meldung
= "<html>Während der Befreiung wurden <b>"+Integer
.toString(vAktTermine
.size())+" von "+
878 Integer
.toString(maxAnzahl())+" Behandlungen</b> durchgeführt!<br>"+
879 "Rezeptgebühren müssen also noch für <b>"+Integer
.toString(maxAnzahl()-vAktTermine
.size())+" Behandlungen</b> entrichtet werden.<br>"+
880 "<br><br>Ist das korrekt?<br><br></html>";
881 int anfrage
= JOptionPane
.showConfirmDialog(null, meldung
, "Achtung wichtige Benutzeranfrage", JOptionPane
.YES_NO_CANCEL_OPTION
);
882 if(anfrage
== JOptionPane
.YES_OPTION
){
884 zm
.allezuzahl
= false;
885 zm
.anfangfrei
= true;
886 zm
.teil1
= vAktTermine
.size();
887 zm
.teil2
= maxAnzahl()-vAktTermine
.size();
889 }else if(anfrage
== JOptionPane
.CANCEL_OPTION
){
893 Object ret
= JOptionPane
.showInputDialog(null, "Geben Sie bitte die Anzahl Behandlungen ein für die\nRezeptgebühren berechnet werden sollen:", Integer
.toString(maxAnzahl()-vAktTermine
.size()));
899 zm
.allezuzahl
= false;
900 zm
.anfangfrei
= true;
901 zm
.teil1
= maxAnzahl()-Integer
.parseInt((String
)ret
);
902 zm
.teil2
= Integer
.parseInt((String
)ret
);
910 }else{// gemischte Termine
911 //System.out.println("2 -Termine aus dem Vorjahr(frei) = "+obj[1]+" Termine aus diesem Jahr(Zuzahlung) = "+obj[2]);
913 zm
.allezuzahl
= false;
914 zm
.anfangfrei
= true;
915 zm
.teil1
= (Integer
)obj
[1];
916 zm
.teil2
= (Integer
)obj
[2];
922 /************************Aktuelle Befreiung aber nicht im Vorjahr************************/
923 // Fehler !!!!!!!!!!!!!!!!!!!!!!! muß korrigiert werden!!!!!!!!!!!!!!!!!!!!!!!
924 if((boolean) ((String
)Reha
.thisClass
.patpanel
.patDaten
.get(30)).equals("T") &&
925 (((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(59)).trim().equals("")) ){
926 //System.out.println("Aktuelle Befreiung aber nicht im Vorjahr");
927 if(!bMitJahresWechsel
){//Alle Termine aktuell
929 }else{// es gibt Termine im Vorjahr
930 Object
[] obj
= JahresWechsel(vAktTermine
,SystemConfig
.vorJahr
);
931 if(!(Boolean
)obj
[0]){// alle Termine waren im Vorjahr
933 }else{// gemischte Termine
934 //System.out.println("Termine aus dem Vorjahr(Zuzahlung) = "+obj[1]+" Termine aus diesem Jahr(frei) = "+obj[2]);
936 zm
.allezuzahl
= false;
937 zm
.anfangfrei
= false;
938 zm
.teil1
= (Integer
)obj
[1];
939 zm
.teil2
= (Integer
)obj
[2];
948 zm
.hausbesuch
= ((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(43)).equals("T");
949 zm
.hbvoll
= ((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(61)).equals("T");
950 zm
.hbheim
= ((String
)Reha
.thisClass
.patpanel
.patDaten
.get(44)).equals("T");
951 zm
.km
= StringTools
.ZahlTest(((String
)Reha
.thisClass
.patpanel
.patDaten
.get(48)));
952 zm
.preisgruppe
= Integer
.parseInt(((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(41)));
953 zm
.gesamtZahl
= Integer
.parseInt(((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(64)));
954 //Hausbesuch als logischen wert
955 //System.out.println("Rückgabewert iret = "+iret);
957 if(testefuerbarcode
){
958 constructGanzFreiRezHMap(zm
);
959 constructNormalRezHMap(zm
,false);
960 SystemConfig
.hmAdrRDaten
.put("<Rendbetrag>", "0,00" );
962 constructGanzFreiRezHMap(zm
);
966 constructAnfangFreiRezHMap(zm
,true);
969 constructNormalRezHMap(zm
,false);
972 constructEndeFreiRezHMap(zm
,false);
975 System.out.println(macheUmsatzZeile(
976 SqlInfo.holeFelder("select * from verordn where rez_nr='"+
977 Reha.thisClass.patpanel.vecaktrez.get(1)+"' LIMIT 1"),"")
980 //System.out.println("ZZ-Variante = "+iret);
992 public static void constructNormalRezHMap(ZuzahlModell zm
,boolean unregelmaessig
){
993 /************************************/
994 //System.out.println("*****In Normal HMap*********");
995 Double rezgeb
= new Double(0.000);
996 BigDecimal
[] preise
= {null,null,null,null};
997 BigDecimal xrezgeb
= BigDecimal
.valueOf(new Double(0.000));
999 ////System.out.println("nach nullzuweisung " +xrezgeb.toString());
1000 int[] anzahl
= {0,0,0,0};
1001 int[] artdbeh
= {0,0,0,0};
1004 BigDecimal einzelpreis
= null;
1005 BigDecimal poswert
= null;
1006 BigDecimal rezwert
= BigDecimal
.valueOf(new Double(0.000));
1007 BigDecimal preistest
= null;
1009 String meldung
= null;
1010 DecimalFormat dfx
= new DecimalFormat( "0.00" );
1011 String xdiszi
= RezTools
.putRezNrGetDisziplin(Reha
.thisClass
.patpanel
.vecaktrez
.get(1));
1012 int xpreisgr
= Integer
.parseInt(Reha
.thisClass
.patpanel
.vecaktrez
.get(41))-1;
1013 String xrezdatum
= DatFunk
.sDatInDeutsch((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(2));
1015 SystemConfig
.hmAdrRDaten
.put("<Rid>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(35) );
1016 SystemConfig
.hmAdrRDaten
.put("<Rnummer>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1) );
1017 SystemConfig
.hmAdrRDaten
.put("<Rdatum>",DatFunk
.sDatInDeutsch((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(2)) );
1018 boolean neuerpreis
= neuePreisNachRezeptdatumOderStichtag(xdiszi
,xpreisgr
,xrezdatum
,false,Reha
.thisClass
.patpanel
.vecaktrez
);
1019 //System.out.println("Neuer Preis = "+neuerpreis+"\n");
1021 for(i
= 0;i
< 4;i
++){
1022 anzahl
[i
] = Integer
.valueOf((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(i
+3));
1023 artdbeh
[i
] = Integer
.valueOf((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(i
+8));
1026 preise
[i
] = BigDecimal
.valueOf(new Double(RezTools
.getPreisAltFromID(Integer
.toString(artdbeh
[i
]), Integer
.toString(xpreisgr
), SystemPreislisten
.hmPreise
.get(xdiszi
).get(xpreisgr
))));
1028 preise
[i
] = BigDecimal
.valueOf(new Double("0.00"));
1033 preistest
= BigDecimal
.valueOf(new Double((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(i
+18)));
1034 preise
[i
] = BigDecimal
.valueOf(new Double(RezTools
.getPreisAktFromID(Integer
.toString(artdbeh
[i
]), Integer
.toString(xpreisgr
), SystemPreislisten
.hmPreise
.get(xdiszi
).get(xpreisgr
))));
1035 if( (preistest
.compareTo(preise
[i
]) != 0) ){
1036 meldung
= "Achtung Unterschiedliche Preise!!!\n\n"+
1037 "Im Rezept gespeicherter Preis für Position "+(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(48+i
)+" = "+dfx
.format(preistest
)+"\n"+
1038 "In der Preisliste gespeicherter Preis für Position "+(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(48+i
)+" = "+dfx
.format(preise
[i
])+"\n\n"+
1039 "Vermutete Ursache: Die Preisliste wurde nach der Rezeptanlage aktualisiert\n"+
1040 "Berechung erfolgt mit dem Preis aus der Preisliste, Rezept wird aktualisiert!";
1041 JOptionPane
.showMessageDialog(null,meldung
);
1042 stmt
= "update verordn set preise"+Integer
.toString(i
+1)+"='"+dfx
.format(preise
[i
]).replace(",",".")+"' where id='"+Reha
.thisClass
.patpanel
.vecaktrez
.get(35)+"' LIMIT 1";
1043 ///System.out.println(stmt);
1044 SqlInfo
.sqlAusfuehren(stmt
);
1047 preise
[i
] = BigDecimal
.valueOf(new Double("0.00"));
1049 }catch(Exception ex
){
1050 preise
[i
] = BigDecimal
.valueOf(new Double((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(i
+18)));
1056 xrezgeb
= xrezgeb
.add(BigDecimal
.valueOf(new Double(10.00)));
1058 ////System.out.println("nach 10.00 zuweisung " +rezgeb.toString());
1062 SystemConfig
.hmAdrRDaten
.put("<Rnummer>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1) );
1063 SystemConfig
.hmAdrRDaten
.put("<Rpatid>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(0) );
1064 SystemConfig
.hmAdrRDaten
.put("<Rdatum>",DatFunk
.sDatInDeutsch( (String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(2)) );
1065 SystemConfig
.hmAdrRDaten
.put("<Rpauschale>",dfx
.format(rezgeb
) );
1067 for(i
= 0; i
< 4; i
++){
1069 //System.out.println(Integer.valueOf(anzahl[i]).toString()+" / "+
1070 Integer.valueOf(artdbeh[i]).toString()+" / "+
1071 preise[i].toString() );
1074 SystemConfig
.hmAdrRDaten
.put("<Rposition"+(i
+1)+">",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(48+i
) );
1076 SystemConfig
.hmAdrRDaten
.put("<Rpreis"+(i
+1)+">", dfx
.format(preise
[i
]) );
1078 einzelpreis
= preise
[i
].divide(BigDecimal
.valueOf(new Double(10.000)));
1080 poswert
= preise
[i
].multiply(BigDecimal
.valueOf(new Double(anzahl
[i
])));
1081 rezwert
= rezwert
.add(poswert
);
1082 ////System.out.println("Einzelpreis "+i+" = "+einzelpreis);
1083 BigDecimal testpr
= einzelpreis
.setScale(2, BigDecimal
.ROUND_HALF_UP
);
1084 ////System.out.println("test->Einzelpreis "+i+" = "+testpr);
1086 SystemConfig
.hmAdrRDaten
.put("<Rproz"+(i
+1)+">", dfx
.format(testpr
) );
1087 SystemConfig
.hmAdrRDaten
.put("<Ranzahl"+(i
+1)+">", Integer
.valueOf(anzahl
[i
]).toString() );
1089 endpos
= testpr
.multiply(BigDecimal
.valueOf(new Double(anzahl
[i
])));
1090 SystemConfig
.hmAdrRDaten
.put("<Rgesamt"+(i
+1)+">", dfx
.format(endpos
) );
1091 rezgeb
= rezgeb
+ endpos
.doubleValue();
1092 ////System.out.println(rezgeb.toString());
1095 SystemConfig
.hmAdrRDaten
.put("<Rposition"+(i
+1)+">","----");
1096 SystemConfig
.hmAdrRDaten
.put("<Rpreis"+(i
+1)+">", "0,00" );
1097 SystemConfig
.hmAdrRDaten
.put("<Rproz"+(i
+1)+">", "0,00");
1098 SystemConfig
.hmAdrRDaten
.put("<Rgesamt"+(i
+1)+">", "0,00" );
1099 SystemConfig
.hmAdrRDaten
.put("<Ranzahl"+(i
+1)+">", "----" );
1103 //System.out.println(SystemConfig.hmAdrRDaten);
1104 /*****************************************************/
1105 if(zm
.hausbesuch
){ //Hausbesuch
1106 Object
[] obi
= hbNormal(zm
,rezwert
,rezgeb
,Integer
.valueOf(((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(64))),neuerpreis
);
1107 rezwert
= ((BigDecimal
)obi
[0]);
1108 rezgeb
= (Double
)obi
[1];
1112 /*****************************************************/
1113 Double drezwert
= rezwert
.doubleValue();
1114 SystemConfig
.hmAdrRDaten
.put("<Rendbetrag>", dfx
.format(rezgeb
) );
1115 SystemConfig
.hmAdrRDaten
.put("<Rwert>", dfx
.format(drezwert
) );
1116 DecimalFormat df
= new DecimalFormat( "0.00" );
1118 ////System.out.println("----------------------------------------------------");
1119 ////System.out.println("Endgültige und geparste Rezeptgebühr = "+s+" EUR");
1120 ////System.out.println(SystemConfig.hmAdrRDaten);
1121 /***********************/
1123 // Hier muß noch Hausbesuchshandling eingebaut werden
1124 // Ebenso das Wegegeldhandling
1128 public static void constructRawHMap(){
1129 new SwingWorker
<Void
,Void
>(){
1131 protected Void
doInBackground() throws Exception
{
1133 DecimalFormat df
= new DecimalFormat( "0.00" );
1134 String diszi
= RezTools
.putRezNrGetDisziplin((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1));
1136 int pg
= Integer
.parseInt((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(41))-1;
1138 SystemConfig
.hmAdrRDaten
.put("<Rid>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(35) );
1139 SystemConfig
.hmAdrRDaten
.put("<Rnummer>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1) );
1140 SystemConfig
.hmAdrRDaten
.put("<Rdatum>",DatFunk
.sDatInDeutsch((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(2)) );
1142 for(int i
= 0;i
<4;i
++){
1143 id
= (String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(8+i
);
1144 SystemConfig
.hmAdrRDaten
.put("<Rposition"+(i
+1)+">",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(48+i
));
1145 SystemConfig
.hmAdrRDaten
.put("<Rpreis"+(i
+1)+">", (String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(18+i
).replace(".",",") );
1146 SystemConfig
.hmAdrRDaten
.put("<Ranzahl"+(i
+1)+">", (String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(3+i
) );
1147 SystemConfig
.hmAdrRDaten
.put("<Rgesamt"+(i
+1)+">", df
.format( ((BigDecimal
)BigDecimal
.valueOf(Double
.valueOf(SystemConfig
.hmAdrRDaten
.get("<Ranzahl"+(i
+1)+">"))).multiply(BigDecimal
.valueOf(Double
.valueOf(SystemConfig
.hmAdrRDaten
.get("<Rpreis"+(i
+1)+">").replace(",","."))))).doubleValue() ));
1148 if(!id
.equals("0")){
1149 SystemConfig
.hmAdrRDaten
.put("<Rkuerzel"+(i
+1)+">", RezTools
.getKurzformFromID(id
, SystemPreislisten
.hmPreise
.get(diszi
).get(pg
) ) );
1150 SystemConfig
.hmAdrRDaten
.put("<Rlangtext"+(i
+1)+">", RezTools
.getLangtextFromID(id
, "", SystemPreislisten
.hmPreise
.get(diszi
).get(pg
) ) );
1152 SystemConfig
.hmAdrRDaten
.put("<Rkuerzel"+(i
+1)+">", "");
1153 SystemConfig
.hmAdrRDaten
.put("<Rlangtext"+(i
+1)+">", "");
1157 if( ((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(43)).equals("T") ){
1158 SystemConfig
.hmAdrRDaten
.put("<Rhbpos>", SystemPreislisten
.hmHBRegeln
.get(diszi
).get(pg
).get(0));
1159 SystemConfig
.hmAdrRDaten
.put("<Rhbanzahl>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(64) );
1160 SystemConfig
.hmAdrRDaten
.put("<Rhbpreis>",RezTools
.getPreisAktFromPos(SystemConfig
.hmAdrRDaten
.get("<Rhbpos>"), "", SystemPreislisten
.hmPreise
.get(diszi
).get(pg
)).replace(".",",") );
1161 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>", SystemPreislisten
.hmHBRegeln
.get(diszi
).get(pg
).get(2));
1162 SystemConfig
.hmAdrRDaten
.put("<Rweganzahl>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(7) );
1163 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>",RezTools
.getPreisAktFromPos(SystemConfig
.hmAdrRDaten
.get("<Rwegpos>"), "", SystemPreislisten
.hmPreise
.get(diszi
).get(pg
)).replace(".",",") );
1165 SystemConfig
.hmAdrRDaten
.put("<Rhbpos>", "");
1166 SystemConfig
.hmAdrRDaten
.put("<Rhbanzahl>","");
1167 SystemConfig
.hmAdrRDaten
.put("<Rhbpreis>","");
1168 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>", "");
1169 SystemConfig
.hmAdrRDaten
.put("<Rweganzahl>","");
1170 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>","");
1172 }catch(Exception ex
){
1173 ex
.printStackTrace();
1179 public static void constructGanzFreiRezHMap(ZuzahlModell zm
){
1180 SystemConfig
.hmAdrRDaten
.put("<Rid>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(35) );
1181 SystemConfig
.hmAdrRDaten
.put("<Rnummer>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1) );
1182 SystemConfig
.hmAdrRDaten
.put("<Rdatum>",DatFunk
.sDatInDeutsch((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(2)) );
1183 SystemConfig
.hmAdrRDaten
.put("<Rpatid>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(0) );
1184 SystemConfig
.hmAdrRDaten
.put("<Rpauschale>","0,00");
1185 for(int i
= 0;i
<5;i
++){
1186 SystemConfig
.hmAdrRDaten
.put("<Rposition"+(i
+1)+">","----");
1187 SystemConfig
.hmAdrRDaten
.put("<Rpreis"+(i
+1)+">", "0,00" );
1188 SystemConfig
.hmAdrRDaten
.put("<Rproz"+(i
+1)+">", "0,00");
1189 SystemConfig
.hmAdrRDaten
.put("<Rgesamt"+(i
+1)+">", "0,00" );
1190 SystemConfig
.hmAdrRDaten
.put("<Ranzahl"+(i
+1)+">", "----" );
1192 SystemConfig
.hmAdrRDaten
.put("<Rhbpos>","----");
1193 SystemConfig
.hmAdrRDaten
.put("<Rhbpreis>", "0,00");
1194 SystemConfig
.hmAdrRDaten
.put("<Rhbproz>", "0,00");
1195 SystemConfig
.hmAdrRDaten
.put("<Rhbgesamt>", "0,00");
1196 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>","----");
1197 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>", "0,00");
1198 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", "0,00");
1199 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", "0,00");
1200 SystemConfig
.hmAdrRDaten
.put("<Rendbetrag>", "0,00" );
1201 SystemConfig
.hmAdrRDaten
.put("<Rwert>", "0,00" );
1203 public static void constructAnfangFreiRezHMap(ZuzahlModell zm
,boolean anfang
){
1205 //System.out.println("*****In Anfang-frei*********");
1207 zm
.gesamtZahl
= Integer
.valueOf(zm
.teil2
);
1208 //System.out.println("Restliche Behandlungen berechnen = "+zm.gesamtZahl);
1210 zm
.gesamtZahl
= Integer
.valueOf(zm
.teil1
);
1211 //System.out.println("Beginn der Behandlung berechnen = "+zm.gesamtZahl);
1213 }catch(Exception ex
){
1214 ex
.printStackTrace();
1217 Double rezgeb
= new Double(0.000);
1218 BigDecimal
[] preise
= {null,null,null,null};
1219 BigDecimal xrezgeb
= BigDecimal
.valueOf(new Double(0.000));
1221 String xdiszi
= RezTools
.putRezNrGetDisziplin(Reha
.thisClass
.patpanel
.vecaktrez
.get(1));
1222 int xpreisgr
= Integer
.parseInt(Reha
.thisClass
.patpanel
.vecaktrez
.get(41))-1;
1223 String xrezdatum
= DatFunk
.sDatInDeutsch((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(2));
1224 boolean neuerpreis
= neuePreisNachRezeptdatumOderStichtag(xdiszi
,xpreisgr
,xrezdatum
,false,Reha
.thisClass
.patpanel
.vecaktrez
);
1227 ////System.out.println("nach nullzuweisung " +xrezgeb.toString());
1228 int[] anzahl
= {0,0,0,0};
1229 int[] artdbeh
= {0,0,0,0};
1230 /***************/ //Einbauen für Barcode
1231 int[] gesanzahl
= {0,0,0,0};
1233 BigDecimal einzelpreis
= null;
1234 BigDecimal poswert
= null;
1235 BigDecimal rezwert
= BigDecimal
.valueOf(new Double(0.000));
1236 SystemConfig
.hmAdrRDaten
.put("<Rid>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(35) );
1237 SystemConfig
.hmAdrRDaten
.put("<Rnummer>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1) );
1238 SystemConfig
.hmAdrRDaten
.put("<Rdatum>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(2) );
1239 for(i
= 0;i
< 4;i
++){
1240 gesanzahl
[i
] = Integer
.valueOf((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(i
+3));
1241 anzahl
[i
] = Integer
.valueOf((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(i
+3));
1242 if(! (anzahl
[i
] < zm
.gesamtZahl
)){
1243 anzahl
[i
] = Integer
.valueOf(zm
.gesamtZahl
);
1245 artdbeh
[i
] = Integer
.valueOf((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(i
+8));
1249 preise
[i
] = BigDecimal
.valueOf(new Double(RezTools
.getPreisAltFromID(Integer
.toString(artdbeh
[i
]), Integer
.toString(xpreisgr
), SystemPreislisten
.hmPreise
.get(xdiszi
).get(xpreisgr
))));
1251 preise
[i
] = BigDecimal
.valueOf(new Double("0.00"));
1254 preise
[i
] = BigDecimal
.valueOf(new Double((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(i
+18)));
1256 //preise[i] = BigDecimal.valueOf(new Double((String)Reha.thisClass.patpanel.vecaktrez.get(i+18)));
1259 xrezgeb
= xrezgeb
.add(BigDecimal
.valueOf(new Double(10.00)));
1267 ////System.out.println("nach 10.00 zuweisung " +rezgeb.toString());
1269 DecimalFormat dfx
= new DecimalFormat( "0.00" );
1271 SystemConfig
.hmAdrRDaten
.put("<Rnummer>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1) );
1272 SystemConfig
.hmAdrRDaten
.put("<Rpatid>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(0) );
1273 SystemConfig
.hmAdrRDaten
.put("<Rdatum>",DatFunk
.sDatInDeutsch( (String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(2) ) );
1274 SystemConfig
.hmAdrRDaten
.put("<Rpauschale>",dfx
.format(rezgeb
) );
1276 for(i
= 0; i
< 4; i
++){
1278 //System.out.println(Integer.valueOf(anzahl[i]).toString()+" / "+
1279 Integer.valueOf(artdbeh[i]).toString()+" / "+
1280 preise[i].toString() );
1283 SystemConfig
.hmAdrRDaten
.put("<Rposition"+(i
+1)+">",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(48+i
) );
1284 SystemConfig
.hmAdrRDaten
.put("<Rpreis"+(i
+1)+">", dfx
.format(preise
[i
]) );
1286 einzelpreis
= preise
[i
].divide(BigDecimal
.valueOf(new Double(10.000)));
1287 //***********vorher nur anzahl[]*****************/
1288 poswert
= preise
[i
].multiply(BigDecimal
.valueOf(new Double(gesanzahl
[i
])));
1289 rezwert
= rezwert
.add(poswert
);
1290 ////System.out.println("Einzelpreis "+i+" = "+einzelpreis);
1291 BigDecimal testpr
= einzelpreis
.setScale(2, BigDecimal
.ROUND_HALF_UP
);
1292 ////System.out.println("test->Einzelpreis "+i+" = "+testpr);
1294 SystemConfig
.hmAdrRDaten
.put("<Rproz"+(i
+1)+">", dfx
.format(testpr
) );
1295 SystemConfig
.hmAdrRDaten
.put("<Ranzahl"+(i
+1)+">", Integer
.toString(anzahl
[i
]) );
1297 endpos
= testpr
.multiply(BigDecimal
.valueOf(new Double(anzahl
[i
])));
1298 SystemConfig
.hmAdrRDaten
.put("<Rgesamt"+(i
+1)+">", dfx
.format(endpos
) );
1299 rezgeb
= rezgeb
+ endpos
.doubleValue();
1300 ////System.out.println(rezgeb.toString());
1303 SystemConfig
.hmAdrRDaten
.put("<Rposition"+(i
+1)+">","----");
1304 SystemConfig
.hmAdrRDaten
.put("<Rpreis"+(i
+1)+">", "0,00" );
1305 SystemConfig
.hmAdrRDaten
.put("<Rproz"+(i
+1)+">", "0,00");
1306 SystemConfig
.hmAdrRDaten
.put("<Rgesamt"+(i
+1)+">", "0,00" );
1307 SystemConfig
.hmAdrRDaten
.put("<Ranzahl"+(i
+1)+">", "----" );
1311 /*****************************************************/
1312 if(zm
.hausbesuch
){ //Hausbesuch
1313 if(zm
.gesamtZahl
> Integer
.valueOf(((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(64)))){
1314 zm
.gesamtZahl
= Integer
.valueOf(((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(64)));
1316 Object
[] obi
= hbNormal(zm
,rezwert
,rezgeb
,Integer
.valueOf(((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(64))),neuerpreis
);
1317 rezwert
= ((BigDecimal
)obi
[0]);
1318 rezgeb
= (Double
)obi
[1];
1320 /*****************************************************/
1321 Double drezwert
= rezwert
.doubleValue();
1322 SystemConfig
.hmAdrRDaten
.put("<Rendbetrag>", dfx
.format(rezgeb
) );
1323 SystemConfig
.hmAdrRDaten
.put("<Rwert>", dfx
.format(drezwert
) );
1324 DecimalFormat df
= new DecimalFormat( "0.00" );
1326 //System.out.println("----------------------------------------------------");
1327 //System.out.println("Endgültige und geparste Rezeptgebühr = "+s+" EUR");
1328 ////System.out.println(SystemConfig.hmAdrRDaten);
1329 /***********************/
1333 public static void constructEndeFreiRezHMap(ZuzahlModell zm
,boolean anfang
){
1334 //System.out.println("*****Über Ende Frei*********");
1335 constructAnfangFreiRezHMap(zm
,anfang
);
1337 @SuppressWarnings("unchecked")
1338 public static Vector
<Vector
<String
>>splitteTermine(String terms
){
1339 Vector
<Vector
<String
>> termine
= new Vector
<Vector
<String
>>();
1340 String
[] tlines
= terms
.split("\n");
1341 int lines
= tlines
.length
;
1342 ////System.out.println("Anzahl Termine = "+lines);
1343 Vector
<String
> tvec
= new Vector
<String
>();
1344 String
[] terdat
= null;
1345 for(int i
= 0;i
<lines
;i
++){
1346 terdat
= tlines
[i
].split("@");
1347 int ieinzel
= terdat
.length
;
1349 return (Vector
<Vector
<String
>>) termine
.clone();
1351 ////System.out.println("Anzahl Splits = "+ieinzel);
1353 for(int y
= 0; y
< ieinzel
;y
++){
1354 tvec
.add((terdat
[y
].trim().equals("") ?
" . . " : terdat
[y
]));
1356 termine
.add((Vector
<String
>)tvec
.clone());
1358 return (Vector
<Vector
<String
>>) termine
.clone();
1361 public static Object
[] JahrEnthalten(Vector
<String
>vtage
,String jahr
){
1362 Object
[] ret
= {Boolean
.valueOf(false),-1};
1363 for(int i
= 0; i
< vtage
.size();i
++){
1364 if( ((String
)vtage
.get(i
)).equals(jahr
) ){
1366 ret
[1] = Integer
.valueOf(i
);
1372 public static Object
[] JahresWechsel(Vector
<String
>vtage
,String jahr
){
1373 Object
[] ret
= {Boolean
.valueOf(false),-1,-1};
1374 for(int i
= 0; i
< vtage
.size();i
++){
1375 if(!((String
)vtage
.get(i
)).substring(6).equals(jahr
) ){
1377 ret
[1] = Integer
.valueOf(i
);
1378 ret
[2] = maxAnzahl()-(Integer
)ret
[1];
1383 if(maxAnzahl() > vtage.size()){
1385 ret[1] = Integer.valueOf(vtage.size());
1386 ret[2] = maxAnzahl()-(Integer)ret[1];
1388 System.out.println("maximale Anzahl "+maxAnzahl());
1392 public static int maxAnzahl(){
1395 for(int i
= 3; i
< 7;i
++){
1396 test
= Integer
.valueOf(((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(i
)));
1398 ret
= Integer
.valueOf(test
);
1403 public static String
PreisUeberPosition(String position
,int preisgruppe
,String disziplin
,boolean neu
){
1404 //JOptionPane.showMessageDialog(null, "Aufruf der Funktion PreisUeberPosition");
1406 Vector
<?
> preisvec
= null;
1407 preisvec
= SystemPreislisten
.hmPreise
.get(putRezNrGetDisziplin(disziplin
)).get(preisgruppe
-1);
1408 for(int i
= 0; i
< preisvec
.size();i
++){
1409 if( ((String
)((Vector
<?
>)preisvec
.get(i
)).get(2)).equals(position
) ){
1410 ret
= ((String
)((Vector
<?
>)preisvec
.get(i
)).get(3+(neu ?
0 : 1)));
1411 // //System.out.println("Der Preis von "+position+" = "+ret);
1415 ////System.out.println("Der Preis von "+position+" wurde nicht gefunden!!");
1419 public static String
putRezNrGetDisziplin(String reznr
){
1420 if(reznr
.startsWith("KG")){
1422 }else if(reznr
.startsWith("MA")){
1424 }else if(reznr
.startsWith("ER")){
1426 }else if(reznr
.startsWith("LO")){
1428 }else if(reznr
.startsWith("RH")){
1430 }else if(reznr
.startsWith("PO")){
1435 public static Object
[] ermittleRezeptwert(Vector
<String
> vec
){
1436 Object
[] retobj
= {null,null,null};
1439 public static Object
[] ermittleHBwert(Vector
<String
> vec
){
1440 Object
[] retobj
= {null,null,null};
1441 String disziplin
= putRezNrGetDisziplin(vec
.get(1));
1443 Double preis
= 0.00;
1444 Double wgkm
= (vec
.get(7).equals("") ?
0.00 : Double
.parseDouble(vec
.get(7)) );
1446 @SuppressWarnings("unused")
1447 String pospauschale
= "";
1448 Double preispauschale
=0.00;
1449 //Double wgpauschal = 0.00;
1450 // erst testen ob HB-Einzeln oder HB-Mehrere
1451 int anzahl
= Integer
.parseInt(vec
.get(64));
1452 int preisgruppe
= Integer
.parseInt(vec
.get(41));
1453 if(vec
.get(61).equals("T")){
1455 pos
= SystemPreislisten
.hmHBRegeln
.get(disziplin
).get(preisgruppe
-1).get(0);
1456 preis
= Double
.parseDouble(RezTools
.getPreisAktFromPos(pos
, Integer
.toString(preisgruppe
), SystemPreislisten
.hmPreise
.get(disziplin
).get(preisgruppe
-1)));
1457 retobj
[0] = BigDecimal
.valueOf(preis
).multiply(BigDecimal
.valueOf(Double
.parseDouble(Integer
.toString(anzahl
)))).doubleValue();
1458 //testen ob Fahrtgeldüberhaupt gezahlt wird;
1459 if(keineWeggebuehrBeiHB(disziplin
,Integer
.toString(preisgruppe
))){
1462 if(zweiPositionenBeiHB(disziplin
,Integer
.toString(preisgruppe
))){
1463 //Weggebühr und pauschale
1464 /* In Betrieb bis 26.11.2010 *****************
1465 if( (wgkm=Double.parseDouble(vec.get(7))) > 7 ){
1466 //Kilometer verwenden
1467 pos = SystemPreislisten.hmHBRegeln.get(disziplin).get(preisgruppe-1).get(2);
1468 preis = Double.parseDouble(RezTools.getPreisAktFromPos(pos, Integer.toString(preisgruppe), SystemPreislisten.hmPreise.get(disziplin).get(preisgruppe-1)));
1469 BigDecimal kms = BigDecimal.valueOf(preis).multiply(BigDecimal.valueOf(Double.parseDouble(Integer.toString(anzahl))));
1470 kms = kms.multiply(BigDecimal.valueOf(wgkm));
1471 retobj[1] = kms.doubleValue();
1474 //Pauschale verwenden
1475 pos = SystemPreislisten.hmHBRegeln.get(disziplin).get(preisgruppe-1).get(3);
1476 preis = Double.parseDouble(RezTools.getPreisAktFromPos(pos, Integer.toString(preisgruppe), SystemPreislisten.hmPreise.get(disziplin).get(preisgruppe-1)));
1477 retobj[1] = BigDecimal.valueOf(preis).multiply(BigDecimal.valueOf(Double.parseDouble(Integer.toString(anzahl)))).doubleValue();
1481 pos
= SystemPreislisten
.hmHBRegeln
.get(disziplin
).get(preisgruppe
-1).get(2);
1482 preis
= Double
.parseDouble(RezTools
.getPreisAktFromPos(pos
, Integer
.toString(preisgruppe
), SystemPreislisten
.hmPreise
.get(disziplin
).get(preisgruppe
-1)));
1483 BigDecimal kms
= BigDecimal
.valueOf(preis
).multiply(BigDecimal
.valueOf(Double
.parseDouble(Integer
.toString(anzahl
))));
1484 kms
= kms
.multiply(BigDecimal
.valueOf(wgkm
));
1486 pospauschale
= SystemPreislisten
.hmHBRegeln
.get(disziplin
).get(preisgruppe
-1).get(3);
1487 preispauschale
= Double
.parseDouble(RezTools
.getPreisAktFromPos(pospauschale
, Integer
.toString(preisgruppe
), SystemPreislisten
.hmPreise
.get(disziplin
).get(preisgruppe
-1)));
1488 //System.out.println("kms="+kms);
1489 //System.out.println(BigDecimal.valueOf(preispauschale).multiply(BigDecimal.valueOf(Double.parseDouble(Integer.toString(anzahl)))));
1490 //System.out.println("pospauschale="+pospauschale);
1491 //System.out.println("preispauschale="+preispauschale);
1492 if(kms
.doubleValue() > BigDecimal
.valueOf(preispauschale
).multiply(BigDecimal
.valueOf(Double
.parseDouble(Integer
.toString(anzahl
)))).doubleValue()){
1493 retobj
[1] = kms
.doubleValue();
1495 retobj
[1] = BigDecimal
.valueOf(preispauschale
).multiply(BigDecimal
.valueOf(Double
.parseDouble(Integer
.toString(anzahl
)))).doubleValue();
1500 //Mehrere Hausbesuch
1501 pos
= SystemPreislisten
.hmHBRegeln
.get(disziplin
).get(preisgruppe
-1).get(1);
1502 preis
= Double
.parseDouble(RezTools
.getPreisAktFromPos(pos
, Integer
.toString(preisgruppe
), SystemPreislisten
.hmPreise
.get(disziplin
).get(preisgruppe
-1)));
1503 retobj
[0] = BigDecimal
.valueOf(preis
).multiply(BigDecimal
.valueOf(Double
.parseDouble(Integer
.toString(anzahl
)))).doubleValue();
1508 public static Vector
<String
> macheUmsatzZeile(Vector
<Vector
<String
>> vec
,String tag
,String kaluser
){
1509 Vector
<String
> retvec
= new Vector
<String
>();
1510 for(int i
= 0; i
< 13;i
++){
1514 String disziplin
= putRezNrGetDisziplin(vec
.get(0).get(1));
1517 String pospauschale
= "";
1518 @SuppressWarnings("unused")
1519 String preispauschale
= "";
1520 int preisgruppe
= Integer
.parseInt(vec
.get(0).get(41));
1521 String termine
= vec
.get(0).get(34);
1522 boolean rezept
= false;
1524 int fehlerstufe
= 0;
1527 String
[] posbestaetigt
= null;;
1528 Object
[][] preisobj
= {{null,null,null,null},{null,null,null,null}};
1529 /************************/
1530 //1. Termine aus Rezept holen
1531 String bestaetigte
= vec
.get(0).get(34);
1532 //2. Testen ob der Tag erfaßt wenn nicht weiter mit der vollen Packung + Fehlerstufe 1
1533 if(!termine
.contains(tag
)){
1536 //3. Sofern der Tagin der Termintabelle vorhanden ist,
1537 // die Positionen ermitteln
1538 // wenn keine Positionen vorhanden, weiter mit voller Packung + Fehlerstufe 2
1539 posbestaetigt
= bestaetigte
.substring(bestaetigte
.indexOf(tag
)).split("@")[3].split(",");
1540 if(posbestaetigt
[0].trim().equals("")){
1545 //4. Überprüfen ob die Positionen in der Tarifgruppe existieren,
1546 // sofern nicht, Preise und Positionen aus Rezept entnehmen, also volle Packung + Fehlerstufe 3
1548 for(int j
= 0; j
< posbestaetigt
.length
;j
++){
1549 if(! posbestaetigt
[j
].trim().equals("")){
1550 if((kform
=RezTools
.getKurzformFromPos(posbestaetigt
[j
].trim(), Integer
.toString(preisgruppe
), SystemPreislisten
.hmPreise
.get(disziplin
).get( (preisgruppe
==0 ?
0 : preisgruppe
-1) ))).equals("")){
1554 preisobj
[0][j
] = kform
;
1555 preisobj
[1][j
] = RezTools
.getPreisAktFromPos(posbestaetigt
[j
], Integer
.toString(preisgruppe
), SystemPreislisten
.hmPreise
.get(disziplin
).get( (preisgruppe
==0 ?
0 : preisgruppe
-1) ));
1561 //5. Wenn hier angekommen die Preise und Positionen aus der Preisliste entnehmen
1562 for(int j
= 0; j
< 4;j
++){
1563 retvec
.set(j
,String
.valueOf((String
) (preisobj
[0][j
] != null ? preisobj
[0][j
] : "-----")));
1564 retvec
.set(j
+6,String
.valueOf((String
) (preisobj
[1][j
] != null ? preisobj
[1][j
] : "0.00")));
1568 for(int i
= 0;i
<4;i
++){
1569 if(!vec
.get(0).get(i
+8).trim().equals("0")){
1570 pos
= RezTools
.getKurzformFromID(vec
.get(0).get(i
+8).trim(),SystemPreislisten
.hmPreise
.get(disziplin
).get( (preisgruppe
==0 ?
0 : preisgruppe
-1) ));
1571 if(pos
.trim().equals("")){
1572 pos
= RezTools
.getKurzformFromPos(vec
.get(0).get(i
+48).trim(), Integer
.toString(preisgruppe
), SystemPreislisten
.hmPreise
.get(disziplin
).get( (preisgruppe
==0 ?
0 : preisgruppe
-1) ));
1575 retvec
.set(i
+6,vec
.get(0).get(i
+18).trim());
1577 retvec
.set(i
, "-----");
1578 retvec
.set(i
+6,"0.00");
1581 retvec
.set(12,Integer
.toString(fehlerstufe
));
1583 /************************/
1585 if(vec
.get(0).get(43).equals("T")){
1586 //Hausbesuch einzeln?
1587 if(vec
.get(0).get(61).equals("T")){
1588 pos
= SystemPreislisten
.hmHBRegeln
.get(disziplin
).get( (preisgruppe
==0 ?
0 : preisgruppe
-1) ).get(0);
1589 preis
= RezTools
.getPreisAktFromPos(pos
, Integer
.toString(preisgruppe
), SystemPreislisten
.hmPreise
.get(disziplin
).get( (preisgruppe
==0 ?
0 : preisgruppe
-1) ));
1591 retvec
.set(10,preis
);
1593 if(! keineWeggebuehrBeiHB(disziplin
,Integer
.toString((preisgruppe
==0 ?
1 : preisgruppe
)))){
1594 ////System.out.println("Kasse kennt Weggebühr...");
1595 if(zweiPositionenBeiHB(disziplin
,Integer
.toString((preisgruppe
==0 ?
1 : preisgruppe
)))){
1596 //Weggebühr und pauschale
1597 ////System.out.println("Kasse kennt km und Pauschale...");
1598 pos
= SystemPreislisten
.hmHBRegeln
.get(disziplin
).get((preisgruppe
==0 ?
0 : preisgruppe
-1)).get(2);
1599 pospauschale
= SystemPreislisten
.hmHBRegeln
.get(disziplin
).get((preisgruppe
==0 ?
0 : preisgruppe
-1)).get(3);
1600 wgkm
= Double
.parseDouble(vec
.get(0).get(7));
1602 if( kmBesserAlsPauschale(pospauschale
,pos
,wgkm
,preisgruppe
,disziplin
) ){
1603 //if( (wgkm=Double.parseDouble(vec.get(0).get(7))) > 7 ){
1604 //Kilometer verwenden
1605 ////System.out.println("Kilometer verwenden...");
1606 pos
= SystemPreislisten
.hmHBRegeln
.get(disziplin
).get((preisgruppe
==0 ?
0 : preisgruppe
-1)).get(2);
1607 preis
= RezTools
.getPreisAktFromPos(pos
, Integer
.toString(preisgruppe
), SystemPreislisten
.hmPreise
.get(disziplin
).get((preisgruppe
==0 ?
0 : preisgruppe
-1)));
1608 BigDecimal kms
= BigDecimal
.valueOf(Double
.parseDouble(preis
)).multiply(BigDecimal
.valueOf(wgkm
));
1610 retvec
.set(11,Double
.toString(kms
.doubleValue()));
1611 ////System.out.println("Pos = "+pos);
1612 ////System.out.println("Preis = "+preis);
1614 //Pauschale verwenden
1615 ////System.out.println("Pauschale verwenden....");
1616 pospauschale
= SystemPreislisten
.hmHBRegeln
.get(disziplin
).get((preisgruppe
==0 ?
0 : preisgruppe
-1)).get(3);
1617 preis
= RezTools
.getPreisAktFromPos(pospauschale
, Integer
.toString(preisgruppe
), SystemPreislisten
.hmPreise
.get(disziplin
).get((preisgruppe
==0 ?
0 : preisgruppe
-1)));
1618 //System.out.println("Pos = "+pos);
1619 //System.out.println("Preis = "+preis);
1620 retvec
.set(5, pospauschale
);
1621 retvec
.set(11,preis
);
1624 //System.out.println("Kann Weggebührmodalität nicht ermitteln....");
1628 //System.out.println("Kasse kennt keine Weggebühr....");
1629 retvec
.set(5, "-----");
1630 retvec
.set(11,"0.00");
1634 pos
= SystemPreislisten
.hmHBRegeln
.get(disziplin
).get((preisgruppe
==0 ?
0 : preisgruppe
-1)).get(1);
1635 preis
=RezTools
.getPreisAktFromPos(pos
, Integer
.toString(preisgruppe
), SystemPreislisten
.hmPreise
.get(disziplin
).get((preisgruppe
==0 ?
0 : preisgruppe
-1)));
1637 retvec
.set(10,preis
);
1638 retvec
.set(5, "-----");
1639 retvec
.set(11,"0.00");
1642 retvec
.set(4, "-----");
1643 retvec
.set(10,"0.00");
1644 retvec
.set(5, "-----");
1645 retvec
.set(11,"0.00");
1649 public static boolean kmBesserAlsPauschale(String pospauschal
,String poskm
,Double anzahlkm
,int preisgruppe
,String disziplin
){
1650 String meldung
= "";
1653 String preispauschal
;
1654 meldung
= " Pospauschal = "+pospauschal
+"\n"+
1655 "PosKilometer = "+poskm
+"\n"+
1656 " Anzahl km = "+anzahlkm
+"\n"+
1657 " Preisgruppe = "+preisgruppe
+"\n"+
1658 " Disziplin = "+disziplin
;
1659 preiskm
= RezTools
.getPreisAktFromPos(poskm
, Integer
.toString(preisgruppe
), SystemPreislisten
.hmPreise
.get(disziplin
).get((preisgruppe
==0 ?
0 : preisgruppe
-1)));
1660 BigDecimal kms
= BigDecimal
.valueOf(Double
.parseDouble(preiskm
)).multiply(BigDecimal
.valueOf(anzahlkm
));
1661 preispauschal
= RezTools
.getPreisAktFromPos(pospauschal
, Integer
.toString(preisgruppe
), SystemPreislisten
.hmPreise
.get(disziplin
).get((preisgruppe
==0 ?
0 : preisgruppe
-1)));
1662 BigDecimal pauschal
= BigDecimal
.valueOf(Double
.parseDouble(preispauschal
));
1663 return (kms
.doubleValue() > pauschal
.doubleValue());
1664 }catch(Exception ex
){
1665 ex
.printStackTrace();
1666 JOptionPane
.showMessageDialog(null, "Fehler in der Ermittlung km-Abrechnung besser als Pauschale\n"+meldung
);
1670 public static Object
[] hbNormal(ZuzahlModell zm
, BigDecimal rezwert
,Double rezgeb
,int realhbAnz
,boolean neuerpreis
){
1671 //Object[] retobj = {new BigDecimal(new Double(0.00)),(Double)rezgeb};
1672 //((BigDecimal)retobj[0]).add(BigDecimal.valueOf(new Double(1.00)));
1673 //((BigDecimal) retobj[0]).add(new BigDecimal(rezwert));
1674 Object
[] retobj
= {(BigDecimal
) rezwert
,(Double
)rezgeb
};
1675 //System.out.println("Die tatsächlich HB-Anzahl = "+realhbAnz);
1676 //System.out.println("Der Rezeptwert zu Beginn = "+retobj[0]);
1677 if(zm
.hausbesuch
){ //Hausbesuch
1678 //System.out.println("Hausbesuch ist angesagt");
1679 //String[] praefix = {"1","2","5","3","MA","KG","ER","LO"};
1680 String rezid
= SystemConfig
.hmAdrRDaten
.get("<Rnummer>").substring(0,2);
1682 String zz = SystemConfig.vHBRegeln.get(zm.preisgruppe-1).get(4);
1683 String kmgeld = SystemConfig.vHBRegeln.get(zm.preisgruppe-1).get(2);
1684 String kmpausch = SystemConfig.vHBRegeln.get(zm.preisgruppe-1).get(3);
1685 String hbpos = SystemConfig.vHBRegeln.get(zm.preisgruppe-1).get(0);
1686 String hbmit = SystemConfig.vHBRegeln.get(zm.preisgruppe-1).get(1);
1688 String zz
= SystemPreislisten
.hmHBRegeln
.get(putRezNrGetDisziplin(rezid
)).get(zm
.preisgruppe
-1).get(4);
1689 String kmgeld
= SystemPreislisten
.hmHBRegeln
.get(putRezNrGetDisziplin(rezid
)).get(zm
.preisgruppe
-1).get(2);
1690 String kmpausch
= SystemPreislisten
.hmHBRegeln
.get(putRezNrGetDisziplin(rezid
)).get(zm
.preisgruppe
-1).get(3);
1691 String hbpos
= SystemPreislisten
.hmHBRegeln
.get(putRezNrGetDisziplin(rezid
)).get(zm
.preisgruppe
-1).get(0);
1692 String hbmit
= SystemPreislisten
.hmHBRegeln
.get(putRezNrGetDisziplin(rezid
)).get(zm
.preisgruppe
-1).get(1);
1694 //für jede Disziplin eine anderes praefix
1695 //String ersatz = praefix[Arrays.asList(praefix).indexOf(rezid)-4];
1697 kmgeld = kmgeld.replaceAll("x",ersatz);
1698 kmpausch = kmpausch.replaceAll("x",ersatz);
1699 hbpos = hbpos.replaceAll("x",ersatz);
1700 hbmit = hbmit.replaceAll("x",ersatz);
1703 BigDecimal bdrezgeb
;
1704 BigDecimal bdposwert
;
1706 BigDecimal bdendrezgeb
;
1708 SystemConfig
.hmAdrRDaten
.put("<Rwegkm>",Integer
.toString(zm
.km
));
1709 SystemConfig
.hmAdrRDaten
.put("<Rhbanzahl>",Integer
.toString(zm
.gesamtZahl
) );
1710 DecimalFormat dfx
= new DecimalFormat( "0.00" );
1712 if(zm
.hbheim
){ // und zwar im Heim
1713 //System.out.println("Der HB ist im Heim");
1714 if(zm
.hbvoll
){// Volle Ziffer abrechnen?
1715 //System.out.println("Es kann der volle Hausbesuch abgerechnet werden");
1716 SystemConfig
.hmAdrRDaten
.put("<Rhbpos>",hbpos
);
1717 preis
= PreisUeberPosition(SystemConfig
.hmAdrRDaten
.get("<Rhbpos>"),
1718 zm
.preisgruppe
,SystemConfig
.hmAdrRDaten
.get("<Rnummer>").substring(0,2),neuerpreis
);
1719 //,"<Rhbpos>","<Rwegpos>","<Rhbpreis>","<Rwegpreis>","<Rhbproz>","<Rwegproz>","<Rhbanzahl>"
1720 //,"<Rhbgesamt>","<Rweggesamt>","<Rwegkm>"});
1721 bdpreis
= new BigDecimal(new Double(preis
));
1722 //bdposwert = bdpreis.multiply(BigDecimal.valueOf(new Double(zm.gesamtZahl)));
1723 bdposwert
= bdpreis
.multiply(BigDecimal
.valueOf(new Double(realhbAnz
)));
1724 retobj
[0] = ((BigDecimal
)retobj
[0]).add(BigDecimal
.valueOf(bdposwert
.doubleValue()));
1727 /*******************************/
1728 if(zz
.equals("1")){// Zuzahlungspflichtig
1729 SystemConfig
.hmAdrRDaten
.put("<Rhbpreis>", preis
);
1730 bdrezgeb
= bdpreis
.divide(BigDecimal
.valueOf(new Double(10.000)));
1731 testpr
= bdrezgeb
.setScale(2, BigDecimal
.ROUND_HALF_UP
);
1732 bdendrezgeb
= testpr
.multiply(BigDecimal
.valueOf(new Double(zm
.gesamtZahl
)));
1733 SystemConfig
.hmAdrRDaten
.put("<Rhbproz>", dfx
.format(testpr
.doubleValue()));
1734 SystemConfig
.hmAdrRDaten
.put("<Rhbgesamt>", dfx
.format(bdendrezgeb
.doubleValue()));
1735 retobj
[1] = ((Double
)retobj
[1]) +bdendrezgeb
.doubleValue();
1737 SystemConfig
.hmAdrRDaten
.put("<Rhbanzahl>","----");
1738 SystemConfig
.hmAdrRDaten
.put("<Rhbpos>","----");
1739 SystemConfig
.hmAdrRDaten
.put("<Rhbpreis>", "0,00");
1740 SystemConfig
.hmAdrRDaten
.put("<Rhbproz>", "0,00");
1741 SystemConfig
.hmAdrRDaten
.put("<Rhbgesamt>", "0,00");
1742 SystemConfig
.hmAdrRDaten
.put("<Rweganzahl>","----");
1743 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>","----");
1744 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>", "0,00");
1745 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", "0,00");
1746 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", "0,00");
1748 /*******************************/
1749 if(!kmgeld
.equals("")){// Wenn Kilometer abgerechnet werden können
1750 //System.out.println("Es könnten Kilometer abgerechnet werden");
1751 if( kmBesserAlsPauschale(kmpausch
,
1753 Double
.parseDouble(Integer
.toString(zm
.km
)),
1755 RezTools
.putRezNrGetDisziplin(SystemConfig
.hmAdrRDaten
.get("<Rnummer>"))
1757 //Mit Kilometerabrechnung verdient man mehr
1758 preis
= PreisUeberPosition(kmgeld
,
1759 zm
.preisgruppe
,SystemConfig
.hmAdrRDaten
.get("<Rnummer>").substring(0,2),neuerpreis
);
1760 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>",""+zm
.km
+"km*"+preis
);
1761 /*******************************/
1762 bdpreis
= new BigDecimal(new Double(preis
)).multiply(new BigDecimal(new Double(zm
.km
)));
1763 bdposwert
= bdpreis
.multiply(BigDecimal
.valueOf(new Double(realhbAnz
)));
1764 retobj
[0] = ((BigDecimal
)retobj
[0]).add(BigDecimal
.valueOf(bdposwert
.doubleValue()));
1765 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>", dfx
.format(bdpreis
.doubleValue()));
1766 //System.out.println("Zuzahlungsmodus = "+SystemPreislisten.hmZuzahlModus.get(putRezNrGetDisziplin(rezid)).get(zm.preisgruppe-1));
1767 if(zz
.equals("1")){// Zuzahlungspflichtig
1769 * Hier noch den bayrischen Modus einbauen.
1773 if(SystemPreislisten
.hmZuzahlModus
.get(putRezNrGetDisziplin(rezid
)).get(zm
.preisgruppe
-1) == 1){
1774 bdrezgeb
= bdpreis
.divide(BigDecimal
.valueOf(new Double(10.000)));
1775 testpr
= bdrezgeb
.setScale(2, BigDecimal
.ROUND_HALF_UP
);
1776 bdendrezgeb
= testpr
.multiply(BigDecimal
.valueOf(new Double(zm
.gesamtZahl
)));
1777 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", dfx
.format(testpr
.doubleValue()));
1778 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", dfx
.format(bdendrezgeb
.doubleValue()));
1779 SystemConfig
.hmAdrRDaten
.put("<Rweganzahl>",Integer
.valueOf(zm
.gesamtZahl
).toString() );
1780 retobj
[1] = ((Double
)retobj
[1]) +bdendrezgeb
.doubleValue();
1781 }else{ //bayrische Variante
1782 //bdpreis.divide(BigDecimal.valueOf(new Double(10.000)))
1783 bdrezgeb
= BigDecimal
.valueOf( new Double(preis
) ).divide(BigDecimal
.valueOf(new Double(10.000)));
1784 testpr
= bdrezgeb
.setScale(2, BigDecimal
.ROUND_HALF_UP
);
1785 bdendrezgeb
= testpr
.multiply(BigDecimal
.valueOf(new Double(zm
.gesamtZahl
))).multiply(new BigDecimal(new Double(zm
.km
)));
1786 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", dfx
.format(testpr
.doubleValue())+"(*"+Integer
.toString(zm
.km
)+"km)");
1787 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", dfx
.format(bdendrezgeb
.doubleValue()));
1788 SystemConfig
.hmAdrRDaten
.put("<Rweganzahl>",Integer
.valueOf(zm
.gesamtZahl
).toString() );
1789 retobj
[1] = ((Double
)retobj
[1]) +bdendrezgeb
.doubleValue();
1792 SystemConfig
.hmAdrRDaten
.put("<Rhbanzahl>","----");
1793 SystemConfig
.hmAdrRDaten
.put("<Rhbpos>","----");
1794 SystemConfig
.hmAdrRDaten
.put("<Rhbpreis>", "0,00");
1795 SystemConfig
.hmAdrRDaten
.put("<Rhbproz>", "0,00");
1796 SystemConfig
.hmAdrRDaten
.put("<Rhbgesamt>", "0,00");
1797 SystemConfig
.hmAdrRDaten
.put("<Rweganzahl>","----");
1798 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>","----");
1799 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>", "0,00");
1800 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", "0,00");
1801 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", "0,00");
1803 /*******************************/
1805 //hier zuerst die kilometer ermitteln mal Kilometerpreis = der Endpreis
1806 }else{// Keine Kilometer angegeben also pauschale verwenden
1807 //System.out.println("Es wurden keine Kilometer angegeben also wird nach Ortspauschale abgerechnet");
1808 if(!kmpausch
.equals("")){//Wenn die Kasse keine Pauschale zur Verfügung stellt
1809 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>",kmpausch
);
1810 preis
= PreisUeberPosition(SystemConfig
.hmAdrRDaten
.get("<Rwegpos>"),
1811 zm
.preisgruppe
,SystemConfig
.hmAdrRDaten
.get("<Rnummer>").substring(0,2),neuerpreis
);
1812 /*******************************/
1813 bdpreis
= new BigDecimal(new Double(preis
));
1814 bdposwert
= bdpreis
.multiply(BigDecimal
.valueOf(new Double(realhbAnz
)));
1815 retobj
[0] = ((BigDecimal
)retobj
[0]).add(BigDecimal
.valueOf(bdposwert
.doubleValue()));
1816 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>", dfx
.format(bdpreis
.doubleValue()));
1817 if(zz
.equals("1")){// Zuzahlungspflichtig
1818 bdrezgeb
= bdpreis
.divide(BigDecimal
.valueOf(new Double(10.000)));
1819 testpr
= bdrezgeb
.setScale(2, BigDecimal
.ROUND_HALF_UP
);
1820 bdendrezgeb
= testpr
.multiply(BigDecimal
.valueOf(new Double(zm
.gesamtZahl
)));
1821 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", dfx
.format(testpr
.doubleValue()));
1822 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", dfx
.format(bdendrezgeb
.doubleValue()));
1823 SystemConfig
.hmAdrRDaten
.put("<Rweganzahl>",Integer
.valueOf(zm
.gesamtZahl
).toString() );
1824 retobj
[1] = ((Double
)retobj
[1]) +bdendrezgeb
.doubleValue();
1826 SystemConfig
.hmAdrRDaten
.put("<Rhbanzahl>","----");
1827 SystemConfig
.hmAdrRDaten
.put("<Rhbpos>","----");
1828 SystemConfig
.hmAdrRDaten
.put("<Rhbpreis>", "0,00");
1829 SystemConfig
.hmAdrRDaten
.put("<Rhbproz>", "0,00");
1830 SystemConfig
.hmAdrRDaten
.put("<Rhbgesamt>", "0,00");
1831 SystemConfig
.hmAdrRDaten
.put("<Rweganzahl>","----");
1832 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>","----");
1833 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>", "0,00");
1834 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", "0,00");
1835 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", "0,00");
1837 /*******************************/
1841 JOptionPane
.showMessageDialog(null, "Dieser Kostenträger kennt keine Weg-Pauschale, geben Sie im Patientenstamm die Anzahl Kilometer an" );
1842 SystemConfig
.hmAdrRDaten
.put("<Rweganzahl>","----");
1843 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>","----");
1844 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>", "0,00");
1845 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", "0,00");
1846 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", "0,00");
1850 }else{// es können keine Kilometer abgerechnet werden
1851 //System.out.println("Zuzahlungsmodus = "+SystemPreislisten.hmZuzahlModus.get(putRezNrGetDisziplin(rezid)).get(zm.preisgruppe-1));
1852 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>","----");
1853 preis
= PreisUeberPosition(SystemConfig
.hmAdrRDaten
.get("<Rwegpos>"),
1854 zm
.preisgruppe
,SystemConfig
.hmAdrRDaten
.get("<Rnummer>").substring(0,2),neuerpreis
);
1856 /*******************************/
1857 bdpreis
= new BigDecimal(new Double(preis
));
1858 bdposwert
= bdpreis
.multiply(BigDecimal
.valueOf(new Double(realhbAnz
)));
1859 retobj
[0] = ((BigDecimal
)retobj
[0]).add(BigDecimal
.valueOf(bdposwert
.doubleValue()));
1860 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>", dfx
.format(bdpreis
.doubleValue()));
1861 if(zz
.equals("1")){// Zuzahlungspflichtig
1862 bdrezgeb
= bdpreis
.divide(BigDecimal
.valueOf(new Double(10.000)));
1863 testpr
= bdrezgeb
.setScale(2, BigDecimal
.ROUND_HALF_UP
);
1864 bdendrezgeb
= testpr
.multiply(BigDecimal
.valueOf(new Double(zm
.gesamtZahl
)));
1865 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", dfx
.format(testpr
.doubleValue()));
1866 SystemConfig
.hmAdrRDaten
.put("<Rweganzahl>",Integer
.valueOf(zm
.gesamtZahl
).toString() );
1867 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", dfx
.format(bdendrezgeb
.doubleValue()));
1868 retobj
[1] = ((Double
)retobj
[1]) +bdendrezgeb
.doubleValue();
1870 SystemConfig
.hmAdrRDaten
.put("<Rhbanzahl>","----");
1871 SystemConfig
.hmAdrRDaten
.put("<Rhbpos>","----");
1872 SystemConfig
.hmAdrRDaten
.put("<Rhbpreis>", "0,00");
1873 SystemConfig
.hmAdrRDaten
.put("<Rhbproz>", "0,00");
1874 SystemConfig
.hmAdrRDaten
.put("<Rhbgesamt>", "0,00");
1875 SystemConfig
.hmAdrRDaten
.put("<Rweganzahl>","----");
1876 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>","----");
1877 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>", "0,00");
1878 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", "0,00");
1879 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", "0,00");
1883 SystemConfig
.hmAdrRDaten
.put("<Rweganzahl>","----");
1884 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>","----");
1885 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>", "0,00");
1886 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", "0,00");
1887 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", "0,00");
1892 }else{//nur Mit-Hausbesuch
1893 SystemConfig
.hmAdrRDaten
.put("<Rhbpos>",hbmit
);
1894 preis
= PreisUeberPosition(SystemConfig
.hmAdrRDaten
.get("<Rhbpos>"),
1895 zm
.preisgruppe
,SystemConfig
.hmAdrRDaten
.get("<Rnummer>").substring(0,2),neuerpreis
);
1896 /*******************************/
1898 bdpreis
= new BigDecimal(new Double(preis
));
1899 bdposwert
= bdpreis
.multiply(BigDecimal
.valueOf(new Double(realhbAnz
)));
1900 retobj
[0] = ((BigDecimal
)retobj
[0]).add(BigDecimal
.valueOf(bdposwert
.doubleValue()));
1901 if(zz
.equals("1")){// Zuzahlungspflichtig
1902 SystemConfig
.hmAdrRDaten
.put("<Rhbpreis>", preis
);
1903 bdrezgeb
= bdpreis
.divide(BigDecimal
.valueOf(new Double(10.000)));
1904 testpr
= bdrezgeb
.setScale(2, BigDecimal
.ROUND_HALF_UP
);
1905 bdendrezgeb
= testpr
.multiply(BigDecimal
.valueOf(new Double(zm
.gesamtZahl
)));
1906 SystemConfig
.hmAdrRDaten
.put("<Rhbproz>", dfx
.format(testpr
.doubleValue()));
1907 SystemConfig
.hmAdrRDaten
.put("<Rhbgesamt>", dfx
.format(bdendrezgeb
.doubleValue()));
1908 //SystemConfig.hmAdrRDaten.put("<Rweganzahl>",Integer.valueOf(zm.gesamtZahl).toString() );
1909 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>","----" );
1910 SystemConfig
.hmAdrRDaten
.put("<Rwpreis>","0,00" );
1911 SystemConfig
.hmAdrRDaten
.put("<Rweganzahl>","----" );
1912 retobj
[1] = ((Double
)retobj
[1]) +bdendrezgeb
.doubleValue();
1914 SystemConfig
.hmAdrRDaten
.put("<Rhbanzahl>","----");
1915 SystemConfig
.hmAdrRDaten
.put("<Rhbpos>","----");
1916 SystemConfig
.hmAdrRDaten
.put("<Rhbpreis>", "0,00");
1917 SystemConfig
.hmAdrRDaten
.put("<Rhbproz>", "0,00");
1918 SystemConfig
.hmAdrRDaten
.put("<Rhbgesamt>", "0,00");
1919 SystemConfig
.hmAdrRDaten
.put("<Rweganzahl>","----");
1920 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>","----");
1921 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>", "0,00");
1922 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", "0,00");
1923 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", "0,00");
1926 SystemConfig
.hmAdrRDaten
.put("<Rhbanzahl>","----");
1927 SystemConfig
.hmAdrRDaten
.put("<Rhbpos>","----");
1928 SystemConfig
.hmAdrRDaten
.put("<Rhbpreis>", "0,00");
1929 SystemConfig
.hmAdrRDaten
.put("<Rhbproz>", "0,00");
1930 SystemConfig
.hmAdrRDaten
.put("<Rhbgesamt>", "0,00");
1931 SystemConfig
.hmAdrRDaten
.put("<Rweganzahl>","----");
1932 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>","----");
1933 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>", "0,00");
1934 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", "0,00");
1935 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", "0,00");
1937 /*******************************/
1939 }else{//nicht im Heim
1940 //System.out.println("Der Hausbesuch ist nicht in einem Heim");
1941 SystemConfig
.hmAdrRDaten
.put("<Rhbpos>",hbpos
);
1942 preis
= PreisUeberPosition(SystemConfig
.hmAdrRDaten
.get("<Rhbpos>"),
1943 zm
.preisgruppe
,SystemConfig
.hmAdrRDaten
.get("<Rnummer>").substring(0,2),neuerpreis
);
1944 /*******************************/
1945 bdpreis
= new BigDecimal(new Double(preis
));
1946 bdposwert
= bdpreis
.multiply(BigDecimal
.valueOf(new Double(realhbAnz
)));
1947 retobj
[0] = ((BigDecimal
)retobj
[0]).add(BigDecimal
.valueOf(bdposwert
.doubleValue()));
1948 SystemConfig
.hmAdrRDaten
.put("<Rhbpreis>", preis
);
1950 bdrezgeb
= bdpreis
.divide(BigDecimal
.valueOf(new Double(10.000)));
1951 testpr
= bdrezgeb
.setScale(2, BigDecimal
.ROUND_HALF_UP
);
1952 bdendrezgeb
= testpr
.multiply(BigDecimal
.valueOf(new Double(zm
.gesamtZahl
)));
1953 SystemConfig
.hmAdrRDaten
.put("<Rhbproz>", dfx
.format(testpr
.doubleValue()));
1954 SystemConfig
.hmAdrRDaten
.put("<Rhbgesamt>", dfx
.format(bdendrezgeb
.doubleValue()));
1955 retobj
[1] = ((Double
)retobj
[1]) +bdendrezgeb
.doubleValue();
1956 /*******************************/
1959 if(!kmgeld
.equals("")){// Wenn Kilometer abgerechnet werden k�nnen
1960 //System.out.println("Es könnten Kilometer abgerechnet werden");
1961 if( kmBesserAlsPauschale(kmpausch
,kmgeld
,Double
.parseDouble(Integer
.toString(zm
.km
)),zm
.preisgruppe
,RezTools
.putRezNrGetDisziplin(SystemConfig
.hmAdrRDaten
.get("<Rnummer>"))) ){
1962 //Kilometerabrechnung besser als Pauschale
1963 preis
= PreisUeberPosition(kmgeld
,
1964 zm
.preisgruppe
,SystemConfig
.hmAdrRDaten
.get("<Rnummer>").substring(0,2),neuerpreis
);
1965 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>",""+zm
.km
+"km*"+preis
);
1966 /*******************************/
1968 bdpreis
= new BigDecimal(new Double(preis
)).multiply(new BigDecimal(new Double(zm
.km
)));
1969 bdposwert
= bdpreis
.multiply(BigDecimal
.valueOf(new Double(realhbAnz
)));
1970 retobj
[0] = ((BigDecimal
)retobj
[0]).add(BigDecimal
.valueOf(bdposwert
.doubleValue()));
1971 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>", dfx
.format(bdpreis
.doubleValue()));
1972 if(SystemPreislisten
.hmZuzahlModus
.get(putRezNrGetDisziplin(rezid
)).get(zm
.preisgruppe
-1) == 1){
1973 bdrezgeb
= bdpreis
.divide(BigDecimal
.valueOf(new Double(10.000)));
1974 testpr
= bdrezgeb
.setScale(2, BigDecimal
.ROUND_HALF_UP
);
1975 bdendrezgeb
= testpr
.multiply(BigDecimal
.valueOf(new Double(zm
.gesamtZahl
)));
1976 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", dfx
.format(testpr
.doubleValue()));
1977 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", dfx
.format(bdendrezgeb
.doubleValue()));
1978 SystemConfig
.hmAdrRDaten
.put("<Rweganzahl>",Integer
.valueOf(zm
.gesamtZahl
).toString() );
1979 retobj
[1] = ((Double
)retobj
[1]) +bdendrezgeb
.doubleValue();
1981 //bdpreis.divide(BigDecimal.valueOf(new Double(10.000)))
1982 bdrezgeb
= BigDecimal
.valueOf( new Double(preis
) ).divide(BigDecimal
.valueOf(new Double(10.000)));
1983 testpr
= bdrezgeb
.setScale(2, BigDecimal
.ROUND_HALF_UP
);
1984 bdendrezgeb
= testpr
.multiply(BigDecimal
.valueOf(new Double(zm
.gesamtZahl
))).multiply(new BigDecimal(new Double(zm
.km
)));
1985 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", dfx
.format(testpr
.doubleValue())+"(*"+Integer
.toString(zm
.km
)+"km)");
1986 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", dfx
.format(bdendrezgeb
.doubleValue()));
1987 SystemConfig
.hmAdrRDaten
.put("<Rweganzahl>",Integer
.valueOf(zm
.gesamtZahl
).toString() );
1988 retobj
[1] = ((Double
)retobj
[1]) +bdendrezgeb
.doubleValue();
1990 /*******************************/
1995 //System.out.println("Es wurden keine Kilometer angegeben also wird nach Ortspauschale abgerechnet");
1996 if(!kmpausch
.equals("")){//Wenn die Kasse keine Pauschale zur Verfügung stellt
1997 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>",kmpausch
);
1998 preis
= PreisUeberPosition(SystemConfig
.hmAdrRDaten
.get("<Rwegpos>"),
1999 zm
.preisgruppe
,SystemConfig
.hmAdrRDaten
.get("<Rnummer>").substring(0,2),neuerpreis
);
2000 /*******************************/
2001 bdpreis
= new BigDecimal(new Double(preis
));
2002 bdposwert
= bdpreis
.multiply(BigDecimal
.valueOf(new Double(realhbAnz
)));
2003 retobj
[0] = ((BigDecimal
)retobj
[0]).add(BigDecimal
.valueOf(bdposwert
.doubleValue()));
2004 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>", dfx
.format(bdpreis
.doubleValue()));
2006 bdrezgeb
= bdpreis
.divide(BigDecimal
.valueOf(new Double(10.000)));
2007 testpr
= bdrezgeb
.setScale(2, BigDecimal
.ROUND_HALF_UP
);
2008 bdendrezgeb
= testpr
.multiply(BigDecimal
.valueOf(new Double(zm
.gesamtZahl
)));
2009 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", dfx
.format(testpr
.doubleValue()));
2010 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", dfx
.format(bdendrezgeb
.doubleValue()));
2011 SystemConfig
.hmAdrRDaten
.put("<Rweganzahl>",Integer
.valueOf(zm
.gesamtZahl
).toString() );
2012 retobj
[1] = ((Double
)retobj
[1]) +bdendrezgeb
.doubleValue();
2013 /*******************************/
2015 JOptionPane
.showMessageDialog(null, "Dieser Kostenträger kennt keine Weg-Pauschale, geben Sie im Patientenstamm die Anzahl Kilometer an" );
2016 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>","----");
2017 SystemConfig
.hmAdrRDaten
.put("<Rweganzahl>","----");
2018 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>", "0,00");
2019 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", "0,00");
2020 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", "0,00");
2024 }else{// es können keine Kilometer abgerechnet werden
2025 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>","----");
2026 SystemConfig
.hmAdrRDaten
.put("<Rweganzahl>","----");
2027 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>", "0,00");
2028 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", "0,00");
2029 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", "0,00");
2035 SystemConfig
.hmAdrRDaten
.put("<Rhbanzahl>","----");
2036 SystemConfig
.hmAdrRDaten
.put("<Rhbpos>","----");
2037 SystemConfig
.hmAdrRDaten
.put("<Rhbpreis>", "0,00");
2038 SystemConfig
.hmAdrRDaten
.put("<Rhbproz>", "0,00");
2039 SystemConfig
.hmAdrRDaten
.put("<Rhbgesamt>", "0,00");
2040 SystemConfig
.hmAdrRDaten
.put("<Rweganzahl>","----");
2041 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>","----");
2042 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>", "0,00");
2043 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", "0,00");
2044 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", "0,00");
2046 //System.out.println("Der Rezeptwert = "+retobj[0]);
2048 /*****************************************************/
2051 public static void constructVirginHMap(){
2053 SystemConfig
.hmAdrRDaten
.put("<Rid>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(35) );
2054 SystemConfig
.hmAdrRDaten
.put("<Rnummer>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1) );
2055 SystemConfig
.hmAdrRDaten
.put("<Rdatum>",DatFunk
.sDatInDeutsch((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(2)) );
2056 }catch(Exception ex
){
2057 ex
.printStackTrace();
2061 public static void constructFormularHMap(){
2063 DecimalFormat dfx
= new DecimalFormat( "0.00" );
2064 SystemConfig
.hmAdrRDaten
.put("<Rid>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(35) );
2065 SystemConfig
.hmAdrRDaten
.put("<Rnummer>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1) );
2066 SystemConfig
.hmAdrRDaten
.put("<Rdatum>",DatFunk
.sDatInDeutsch((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(2)) );
2067 for(int i
= 3; i
< 7;i
++){
2068 if( ! Reha
.thisClass
.patpanel
.vecaktrez
.get(i
).equals("0") ){
2069 SystemConfig
.hmAdrRDaten
.put("<Rposition"+(i
-2)+">",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(45+i
) );
2070 Double preis
= Double
.parseDouble((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(15+i
));
2072 SystemConfig
.hmAdrRDaten
.put("<Rpreis"+(i
-2)+">", dfx
.format(preis
).replace(".",",") );
2073 SystemConfig
.hmAdrRDaten
.put("<Ranzahl"+(i
-2)+">", (String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(i
) );
2074 BigDecimal gesamt
= BigDecimal
.valueOf(preis
).multiply(BigDecimal
.valueOf(Double
.parseDouble((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(i
) ))) ;
2075 SystemConfig
.hmAdrRDaten
.put("<Rgesamt"+(i
-2)+">", dfx
.format(gesamt
).replace(".",",") );
2078 }catch(Exception ex
){
2079 ex
.printStackTrace();
2083 /***************************************************/
2084 /***************************************************/
2085 /******Funktionen für Abrechnung nach §302**********/
2086 /***************************************************/
2087 public static Object
[] unter18Check(Vector
<Vector
<Object
>> behandlungsfall
,String geburtstag
){
2088 // unter 18 ab Vector x über 18 gesplittet
2089 Object
[] ret
= {Boolean
.valueOf(true),behandlungsfall
.size(),Boolean
.valueOf(false)};
2090 String tag1
= (String
)behandlungsfall
.get(behandlungsfall
.size()-1).get(0);
2091 String tag2
= (String
)behandlungsfall
.get(0).get(0);
2092 if(DatFunk
.Unter18(tag1
, geburtstag
)){
2095 if( (!DatFunk
.Unter18(tag1
, geburtstag
)) && (!DatFunk
.Unter18(tag2
, geburtstag
))){
2103 for(i
= 0; i
< behandlungsfall
.size();i
++){
2104 tag1
= (String
)behandlungsfall
.get(i
).get(0);
2105 if(! DatFunk
.Unter18(tag1
, geburtstag
)){
2114 /***************************************************/
2115 /***************************************************/
2116 public static Object
[] jahresWechselCheck(Vector
<Vector
<Object
>> behandlungsfall
,boolean unter18
){
2117 // Jahreswechsel ab Position vollständig im alten Jahr
2118 //unter18 wird hier nicht mehr ausgewertet, als Parameter aber noch belassen
2119 Object
[] ret
= {Boolean
.valueOf(false), -1 ,Boolean
.valueOf(false)};
2120 if( ((String
)behandlungsfall
.get(0).get(0)).endsWith(SystemConfig
.aktJahr
)){
2123 for(int i
= 0;i
< behandlungsfall
.size();i
++){
2124 if(! ((String
)behandlungsfall
.get(i
).get(0)).endsWith(SystemConfig
.aktJahr
)){
2136 /***************************************************/
2137 public static void loescheRezAusVolleTabelle(final String reznr
){
2138 new SwingWorker
<Void
,Void
>(){
2140 protected Void
doInBackground() throws Exception
{
2141 SqlInfo
.sqlAusfuehren("delete from volle where rez_nr='"+reznr
+"'");
2148 /***************************************************/
2150 public static void fuelleVolleTabelle(final String reznr
,final String rezbehandler
){
2151 new SwingWorker
<Void
,Void
>(){
2153 protected Void
doInBackground() throws Exception
{
2155 if(SqlInfo
.gibtsSchon("select rez_nr from volle where rez_nr ='"+reznr
+"' LIMIT 1")){
2158 Vector
<Vector
<String
>> vec
= SqlInfo
.holeFelder("select pat_intern,rez_datum,id from verordn where rez_nr = '"+reznr
+"' LIMIT 1" );
2159 String cmd
= "insert into volle set rez_nr='"+reznr
+"', "+
2160 "pat_intern='"+vec
.get(0).get(0)+"', behandler='"+rezbehandler
+"', "+
2161 "fertigam='"+DatFunk
.sDatInSQL(DatFunk
.sHeute())+"', "+
2162 "rez_datum='"+vec
.get(0).get(1)+"', rezid='"+vec
.get(0).get(2)+"'";
2163 SqlInfo
.sqlAusfuehren(cmd
);
2164 }catch(Exception ex
){
2165 JOptionPane
.showMessageDialog(null,"Fehler bei der Ausführung 'fuelleVolleTabelle'");
2172 /***********************************************************************************/
2174 public static Object
[] BehandlungenAnalysieren(String swreznum
,
2175 boolean doppeltOk
,boolean xforceDlg
,boolean alletermine
,
2176 Vector
<String
> vecx
,Point pt
,String xkollege
,String datum
){
2178 boolean doppelBeh
= false;
2179 int doppelBehA
= 0, doppelBehB
= 0;
2180 boolean dlgZeigen
= false; // unterdrückt die Anzeige des TeminBestätigenAuswahlFensters
2181 boolean jetztVoll
= false;
2182 boolean anzahlRezeptGleich
= true;
2183 boolean nochOffenGleich
= true;
2184 Vector
<BestaetigungsDaten
> hMPos
= new Vector
<BestaetigungsDaten
>();
2185 hMPos
.add(new BestaetigungsDaten(false, "./.", 0, 0,false,false));
2186 hMPos
.add(new BestaetigungsDaten(false, "./.", 0, 0,false,false));
2187 hMPos
.add(new BestaetigungsDaten(false, "./.", 0, 0,false,false));
2188 hMPos
.add(new BestaetigungsDaten(false, "./.", 0, 0,false,false));
2189 Vector
<String
> vec
= null;
2190 String copyright
= "\u00AE" ;
2191 StringBuffer termbuf
= new StringBuffer();
2192 int preisgruppe
= -1;
2194 boolean erstedoppel
= true;
2195 boolean debug
= false;
2196 String disziplin
= "";
2197 boolean hmrtest
= false;
2199 Object
[] retObj
= {null,null,null};
2202 // die anzahlen 1-4 werden jetzt zusammenhängend ab index 11 abgerufen
2204 vec
= SqlInfo
.holeSatz("verordn", "termine,pos1,pos2,pos3,pos4,hausbes,unter18,jahrfrei,pat_intern,preisgruppe,zzregel,anzahl1,anzahl2,anzahl3,anzahl4,preisgruppe", "rez_nr='"+swreznum
+"'", Arrays
.asList(new String
[] {}));
2208 preisgruppe
= Integer
.parseInt(vec
.get(9));
2209 disziplin
= RezTools
.putRezNrGetDisziplin(swreznum
);
2210 hmrtest
= (SystemPreislisten
.hmHMRAbrechnung
.get(disziplin
).get(preisgruppe
-1) == 1);
2211 if (vec
.size() > 0){
2212 termbuf
= new StringBuffer();
2214 termbuf
.append((String
) vec
.get(0));
2217 Vector
<ArrayList
<?
>> termine
= RezTools
.holePosUndAnzahlAusTerminen(swreznum
);
2218 //System.out.println(termine);
2219 if(termine
.size()==0){return null;}
2220 //Arrays innerhalb dem Vector termine
2221 //termine.get(0) = Positionen (String)
2222 //termine.get(1) = Anzahlen (Integer)
2223 //termine.get(2) = Vorrangiges Heilmittel (Boolean)
2224 //termine.get(3) = als Standalone ergänzendes Heilmittel erlaubt (Boolean)
2225 //termine.get(4) = Object[] {doppelbehandlung(Boolean),erstepos(Integer),letztepos(Integer)}
2228 if(vec
.get(1+i
).toString().trim().equals("") ){
2229 hMPos
.get(i
).hMPosNr
= "./.";
2230 hMPos
.get(i
).vOMenge
= 0;
2231 hMPos
.get(i
).anzBBT
= 0;
2233 hMPos
.get(i
).hMPosNr
= String
.valueOf(vec
.get(1+i
));
2234 hMPos
.get(i
).vOMenge
= Integer
.parseInt( (String
) vec
.get(i
+11) );
2235 hMPos
.get(i
).vorrangig
= (Boolean
)((ArrayList
<?
>)((Vector
<?
>)termine
).get(2)).get(i
);
2236 hMPos
.get(i
).invOBelegt
= true;
2237 hMPos
.get(i
).anzBBT
= Integer
.valueOf( (Integer
)((ArrayList
<?
>)((Vector
<?
>)termine
).get(1)).get(i
));
2239 hMPos
.get(i
).gehtNochEiner();
2241 //Jetzt alle Objekte die unbelegt sind löschen
2243 if(!hMPos
.get(i
).invOBelegt
){hMPos
.remove(i
);}
2246 //Die Variable j erhält jetzt den Wert der Anzahl der verbliebenen Objekte
2249 //Nur wenn nach HMR-geprüft werden muß
2251 //1. erst Prüfen ob das Rezept bereits voll ist
2253 if(!hMPos
.get(i
).einerOk
&& hMPos
.get(i
).vorrangig
){
2254 //ein vorrangiges Heilmittel ist voll
2255 //testen ob es sich um eine Doppelposition dreht
2257 Object
[] testobj
= (Object
[])((ArrayList
<?
>)((Vector
<?
>)termine
).get(4)).get(i
);
2258 //System.out.println(testobj[0]+"-"+testobj[1]+"-"+testobj[2]);
2260 if(((Object
[])((ArrayList
<?
>)((Vector
<?
>)termine
).get(4)).get(i
))[0]==Boolean
.valueOf(true)){
2261 //testen ob es die 1-te Pos der Doppelbehandlung ist
2262 if(((Integer
)((Object
[])((ArrayList
<?
>)((Vector
<?
>)termine
).get(4)).get(i
))[1]) <
2263 ((Integer
)((Object
[])((ArrayList
<?
>)((Vector
<?
>)termine
).get(4)).get(i
))[2]) ){
2264 //Es ist die 1-te Position die voll ist also Ende-Gelände
2265 retObj
[0] = String
.valueOf(termbuf
.toString());
2266 retObj
[1] = Integer
.valueOf(RezTools
.REZEPT_IST_BEREITS_VOLL
);
2267 //if(debug){System.out.println("erste Position = voll + Doppelbehandlung");}
2268 //if(debug){System.out.println(hMPos.get(i).hMPosNr+"-"+hMPos.get(i).vOMenge+"-"+hMPos.get(i).anzBBT);}
2272 //nein keine Doppelposition also Ende-Gelände
2273 retObj
[0] = String
.valueOf(termbuf
.toString());
2274 retObj
[1] = Integer
.valueOf(RezTools
.REZEPT_IST_BEREITS_VOLL
);
2275 //if(debug){System.out.println("erste Position = voll und keine Doppelbehandlung");}
2276 //if(debug){System.out.println(hMPos.get(i).hMPosNr+"-"+hMPos.get(i).vOMenge+"-"+hMPos.get(i).anzBBT);}
2279 }else if(!hMPos
.get(i
).einerOk
&& (!hMPos
.get(i
).vorrangig
) && j
==1){
2280 //Falls eines der wenigen ergänzenden Heilmittel solo verordnet wurde
2281 //z.B. Ultraschall oder Elektrotherapie
2282 retObj
[0] = String
.valueOf(termbuf
.toString());
2283 retObj
[1] = Integer
.valueOf(RezTools
.REZEPT_IST_BEREITS_VOLL
);
2284 //if(debug){System.out.println("es geht kein zusätzlicher");}
2285 //if(debug){System.out.println(hMPos.get(i).hMPosNr+"-"+hMPos.get(i).vOMenge+"-"+hMPos.get(i).anzBBT);}
2287 }else if( (!hMPos
.get(i
).vorrangig
) && (j
==1) &&
2288 (Boolean
)((ArrayList
<?
>)((Vector
<?
>)termine
).get(2)).get(i
)){
2289 //Ein ergänzendes Heilmittel wurde separat verordent das nicht zulässig ist
2290 //könnte man auswerten, dann verbaut man sich aber die Möglichkeit
2291 //bei PrivatPat. abzurechnen was geht....
2292 //if(debug){System.out.println("unerlaubtes Ergänzendes Heilmittel solo verordnet");}
2293 //if(debug){System.out.println(hMPos.get(i).hMPosNr+"-"+hMPos.get(i).vOMenge+"-"+hMPos.get(i).anzBBT);}
2295 //if(debug){System.out.println("Position kann bestätigt werden");}
2296 //if(debug){System.out.println(hMPos.get(i).hMPosNr+"-"+hMPos.get(i).vOMenge+"-"+hMPos.get(i).anzBBT);}
2298 //Ende nur wenn Tarifgruppe HMR-Gruppe ist
2301 //2. dann prüfen welche Behandlungsformen noch einen vertragen können
2303 int ianzahl
= hMPos
.get(0).vOMenge
;
2304 int ioffen
= hMPos
.get(0).vORestMenge
;
2306 hMPos
.get(i
).danachVoll();
2307 //wenn eine Behandlung noch frei ist //(ausgeschaltet)und die Position keine Doppelposition ist
2308 if(hMPos
.get(i
).einerOk
/*&& ((Object[])((ArrayList<?>)((Vector<?>)termine).get(4)).get(i))[0]==Boolean.valueOf(false)*/){
2311 if(ianzahl
!= hMPos
.get(i
).vOMenge
){anzahlRezeptGleich
=false;}
2312 if(ioffen
!= hMPos
.get(i
).vORestMenge
){nochOffenGleich
=false;}
2314 //Keine Postition mehr frei
2316 retObj
[0] = String
.valueOf(termbuf
.toString());
2317 retObj
[1] = Integer
.valueOf(RezTools
.REZEPT_IST_BEREITS_VOLL
);
2318 //if(debug){System.out.println("Rezept war bereits voll");}
2321 //Nur Wenn mehrere Behandlungen im Rezept vermerkt
2323 //Wenn mehrere noch offen sind aber ungleiche noch Offen
2324 if( (count
> 1) && (!(/*anzahlRezeptGleich &&*/ nochOffenGleich
)) ){
2328 //3. Dann Dialog zeigen
2329 // TerminBestätigenAuswahlFenster anzeigen oder überspringen
2330 // Evtl. noch Einbauen ob bei unterschiedlichen Anzahlen (System-Initialisierung) immer geöffnet wird.
2331 if (xforceDlg
|| (dlgZeigen
&& (Boolean
)SystemConfig
.hmTerminBestaetigen
.get("dlgzeigen") ) ){
2333 TerminBestaetigenAuswahlFenster termBestAusw
= new TerminBestaetigenAuswahlFenster(Reha
.thisFrame
,null,(Vector
<BestaetigungsDaten
>)hMPos
,swreznum
,Integer
.parseInt((String
)vec
.get(15)));
2334 termBestAusw
.pack();
2336 termBestAusw
.setLocationRelativeTo(null);
2338 termBestAusw
.setLocation(pt
);
2341 termBestAusw
.setzeFocus();
2342 termBestAusw
.setModal(true);
2343 termBestAusw
.setVisible(true);
2344 if(RezTools
.DIALOG_WERT
==RezTools
.DIALOG_ABBRUCH
){
2345 retObj
[0] = String
.valueOf(termbuf
.toString());
2346 retObj
[1] = Integer
.valueOf(RezTools
.REZEPT_ABBRUCH
);
2349 for (i
=0; i
<j
; i
++){
2350 if(hMPos
.get(i
).best
){
2351 hMPos
.get(i
).anzBBT
+= 1;
2352 //gleichzeitig prüfen ob voll
2353 if(hMPos
.get(i
).jetztVoll() && hMPos
.get(i
).vorrangig
){
2355 }else if(hMPos
.get(i
).jetztVoll() && (!hMPos
.get(i
).vorrangig
) && j
==1){
2363 * Der Nutzer wünscht kein Auswahlfenster:
2364 * bestätige alle noch offenen Heilmittel
2367 for (i
=0; i
<j
; i
++){
2368 hMPos
.get(i
).best
= Boolean
.valueOf(hMPos
.get(i
).einerOk
);
2369 if(hMPos
.get(i
).einerOk
){
2370 hMPos
.get(i
).anzBBT
+= 1;
2371 hMPos
.get(i
).best
= true;
2372 if(hMPos
.get(i
).jetztVoll() && hMPos
.get(i
).vorrangig
){
2374 }else if(hMPos
.get(i
).jetztVoll() && (!hMPos
.get(i
).vorrangig
) && j
==1){
2380 String
[] params
= {null,null,null,null};
2383 if(hMPos
.get(i
).best
){params
[i
]=vec
.get(i
+1);count
++;}
2385 if(count
==0){jetztVoll
=true;}
2386 termbuf
.append(TermineErfassen
.macheNeuTermin2(
2387 (params
[0] != null ? params
[0] : ""),
2388 (params
[1] != null ? params
[1] : ""),
2389 (params
[2] != null ? params
[2] : ""),
2390 (params
[3] != null ? params
[3] : ""),
2393 retObj
[0] = String
.valueOf(termbuf
.toString());
2394 retObj
[1] = (jetztVoll ? Integer
.valueOf(RezTools
.REZEPT_IST_JETZ_VOLL
) : Integer
.valueOf(RezTools
.REZEPT_HAT_LUFT
));
2396 //if(debug){System.out.println("am ende angekommen");}
2399 //System.out.println("*****************IN ELSE***************************");
2402 }catch(Exception ex
){
2403 ex
.printStackTrace();
2410 private static int welcheIstMaxInt(int i1
,int i2
){
2411 if(i1
> i2
){return 1;}
2412 if(i1
==i2
){return 0;}
2416 /************************************/
2419 /***************************************************/
2420 /***************************************************/
2424 public int gesamtZahl
;
2425 public boolean allefrei
;
2426 public boolean allezuzahl
;
2427 public boolean anfangfrei
;
2430 public int preisgruppe
;
2431 public boolean hausbesuch
;
2436 public ZuzahlModell(){