1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.fhw.cabaweb.calculation.threads;
19
20 import java.util.ArrayList;
21
22 import org.apache.commons.logging.Log;
23 import org.apache.commons.logging.LogFactory;
24 import org.fhw.cabaweb.calculation.ErstelleDatentabellen;
25 import org.fhw.cabaweb.calculation.common.CommonCalculation;
26 import org.fhw.cabaweb.data.DataInterfaceErgebnissdaten;
27 import org.fhw.cabaweb.data.DataInterfaceVoreinstellungen;
28 import org.fhw.cabaweb.data.constants.Constants;
29 import org.fhw.cabaweb.data.dataobjects.Ergebniss;
30 import org.fhw.cabaweb.data.dataobjects.Lizenzverkauf;
31 import org.fhw.cabaweb.data.dataobjects.ProduktartAbhaengigkeiten;
32 import org.fhw.cabaweb.data.dataobjects.Voreinstellung;
33 import org.fhw.cabaweb.math.Finanzierung;
34 import org.fhw.cabaweb.math.Produktion;
35 import org.fhw.cabaweb.math.Vertrieb;
36
37 /***
38 * Die Klasse berechnet die HauptWerte der Unternehmen.
39 *
40 * @author <a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
41 * @version Version 1.0 12.-25.08.2004
42 */
43 public final class BerechneHauptwerte extends Thread
44 {
45 /*** Commons Logging Instanz */
46 private Log log = LogFactory.getLog("org.fhw.cabaweb.calculation.threads.BerechneHauptwerte");
47 /*** Das LOCK Objekt */
48 private Lock lock;
49 /*** Die Projektnummer */
50 private Integer projektnummer;
51 /*** Die Gruppennummer */
52 private Integer gruppennummer;
53 /*** Das Quartal */
54 private Integer quartal;
55
56
57
58 /***
59 * Standardkonstruktor der nicht zugänglich sein soll
60 */
61 private BerechneHauptwerte()
62 {
63 log.error("!!! DEFAULT CONSTRUCTOR NOT TO BE USED !!!");
64 }
65
66 /***
67 * Standardkonstruktor der das "Lock" Objekt übergeben bekommt
68 *
69 * @param lock Das Lock Objekt
70 */
71 public BerechneHauptwerte(Lock lock)
72 {
73 this.lock = lock;
74 }
75
76 /***
77 * Standardkonstruktor der das "Lock" Objekt übergeben bekommt
78 * Zusätzlich auch noch die nötigen Parameter
79 *
80 * @param lock Das Lock Objekt
81 * @param projektnummer Die Projektnummer
82 * @param gruppennummer Die Gruppennummer
83 * @param quartal Das Quartal
84 */
85 public BerechneHauptwerte(Lock lock, Integer projektnummer, Integer gruppennummer, Integer quartal)
86 {
87 this.lock = lock;
88 this.projektnummer = projektnummer;
89 this.gruppennummer = gruppennummer;
90 this.quartal = quartal;
91 }
92
93
94
95 /***
96 * Methode die beim Start des Threads ausgeführt wird
97 *
98 * Aufruf:
99 *
100 * Object lock = new Object ();
101 * BerechneHauptwerte mt1 = new BerechneHauptwerte(lock, PROJEKTNUMMER, GRUPPENNUMMER, QUARTAL);
102 * mt1.setName ("Name XYZ");
103 * // DEFAULT PRIORITY IS 5, MIN(IDLE) = 1, MAX(REALTIME) = 10
104 * mt1.setPriority(5);
105 * mt1.start();
106 *
107 * while(Thread.activeCount() > 1)
108 * {
109 * synchronized (lock)
110 * {
111 * try
112 * {
113 * lock.wait();
114 * }
115 * catch (Exception e)
116 * {
117 * // Error Handling
118 * }
119 * }
120 * }
121 */
122 public synchronized void run()
123 {
124 if (lock != null && projektnummer != null && gruppennummer != null && quartal != null)
125 {
126 if (log.isDebugEnabled())
127 {
128 log.debug(" THREAD NAME : " + getName());
129 log.debug(" THREAD PRIO : " + getPriority());
130 log.debug(" (S) Start der Verarbeitung \"BerechneHauptwerte\" fuer Gruppe \"" + gruppennummer + "\", Quartal \"" + quartal + "\" THREAD NAME : " + getName());
131 }
132
133 try
134 {
135 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
136 DataInterfaceErgebnissdaten die = new DataInterfaceErgebnissdaten();
137 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
138 DataInterfaceVoreinstellungen div = new DataInterfaceVoreinstellungen();
139
140 Ergebniss wert1 = null;
141 Ergebniss wert2 = null;
142 Voreinstellung voreinstellung1 = null;
143
144
145 ArrayList allgemein = (ArrayList) div.sucheKombination_Gruppierung(projektnummer, Constants.VG_VOREINSTELLUNGENALLGEMEIN_KEY);
146
147 ArrayList aktuellesquartalminus1 = (ArrayList) die.sucheQuartal(projektnummer, gruppennummer, quartal);
148
149 ArrayList aktuellesquartal = (ArrayList) die.sucheQuartal(projektnummer, gruppennummer, new Integer(quartal.intValue() + 1));
150
151
152 ArrayList preisAbsatzTabelle = ErstelleDatentabellen.PreisAbsatzTabelle(projektnummer);
153 ArrayList marktforschungTabelle = ErstelleDatentabellen.MarktforschungTabelle(projektnummer);
154 ArrayList marketingTabelle = ErstelleDatentabellen.MarketingTabelle(projektnummer);
155 ArrayList produktArtAbhaengigkeitenTabelle = ErstelleDatentabellen.ProduktArtAbhaengigkeitenTabelle(projektnummer);
156 ArrayList qualitaetssicherungTabelle = ErstelleDatentabellen.QualitaetssicherungTabelle(projektnummer);
157 ArrayList verwaltungTabelle = ErstelleDatentabellen.VerwaltungTabelle(projektnummer);
158 ArrayList forschungundentwicklungTabelle = ErstelleDatentabellen.ForschungUndEntwicklungTabelle(projektnummer);
159
160
161 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENINFLATIONSRATE_KEY);
162 Double inflationsrate = (Double) wert1.getObjectWert();
163 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_GRUNDDATENINFLATIONSINDEX_KEY);
164 Double inflationsindexVQ = (Double) wert2.getObjectWert();
165 Double inflationsindex = new Double(Vertrieb.lohnerhoehungsIndex(inflationsindexVQ.doubleValue(), inflationsrate.doubleValue()));
166 wert2.setObjectWert(inflationsindex);
167 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
168
169
170 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENLOHNERHOEHUNG_KEY);
171 Double lohnerhoehungsrate = (Double) wert1.getObjectWert();
172 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_GRUNDDATENLOHNERHOEHUNGSINDEX_KEY);
173 Double lohnerhoehungsindexVQ = (Double) wert2.getObjectWert();
174 Double lohnerhoehungssindex = new Double(Vertrieb.lohnerhoehungsIndex(lohnerhoehungsindexVQ.doubleValue(), lohnerhoehungsrate.doubleValue()));
175 wert2.setObjectWert(lohnerhoehungssindex);
176 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
177
178
179
180 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ENTSCHEIDUNGVERKAUFSPREIS_KEY);
181 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENVERKAUFSPREISNOMINAL_KEY);
182 Double verkaufspreisNominell = (Double) wert1.getObjectWert();
183 wert2.setObjectWert(verkaufspreisNominell);
184 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
185
186
187
188 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ENTSCHEIDUNGMARKETING_KEY);
189 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGMARKETINGKOSTEN_KEY);
190 Double marketingkosten = new Double(- ((Integer) wert1.getObjectWert()).doubleValue() * 1000.0);
191 wert2.setObjectWert(marketingkosten);
192 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
193
194
195
196 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ENTSCHEIDUNGMARKTFORSCHUNGSDIENST_KEY);
197 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENMARKTFORSCHUNGSDIENST_KEY);
198 Integer marktforschungsdienst = (Integer) wert1.getObjectWert();
199 wert2.setObjectWert(marktforschungsdienst);
200 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
201
202
203
204 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGMARKTFORSCHUNGSKOSTEN_KEY);
205 Double marktforschungskosten = new Double(-Vertrieb.marktforschungskosten(marktforschungTabelle, marktforschungsdienst.intValue()));
206 wert1.setObjectWert(marktforschungskosten);
207 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
208
209
210
211 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ENTSCHEIDUNGINVESTITIONEN_KEY);
212 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_FINANZIERUNGINVESTITIONEN_KEY);
213 Double investitionskosten = new Double(- ((Integer) wert1.getObjectWert()).doubleValue() * 1000.0);
214 wert2.setObjectWert(investitionskosten);
215 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
216
217
218
219 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ENTSCHEIDUNGROHSTOFFBESTELLUNGEXPRESS_KEY);
220 Double rohstoffbestellungexpress = new Double(((Integer) wert1.getObjectWert()).doubleValue() * 1000.0);
221 voreinstellung1 = CommonCalculation.SucheVoreinstellungFeldname(allgemein, Constants.VF_ALLGEMEINEVOREINSTELLUNGENROHSTOFFBESTELLKOSTENEXPRESS_KEY);
222 Double rohstoffbestellkostenexpress = new Double(((Integer) voreinstellung1.getWertObject()).doubleValue());
223 Double rohstoffbestellkosten = new Double(0.0);
224
225 if (rohstoffbestellungexpress.doubleValue() > 0.0)
226 {
227 rohstoffbestellkosten = new Double(rohstoffbestellkostenexpress.doubleValue());
228 }
229
230 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ENTSCHEIDUNGROHSTOFFBESTELLUNGNORMAL_KEY);
231 Double rohstoffbestellungnormal = new Double(((Integer) wert1.getObjectWert()).doubleValue() * 1000.0);
232 voreinstellung1 = CommonCalculation.SucheVoreinstellungFeldname(allgemein, Constants.VF_ALLGEMEINEVOREINSTELLUNGENROHSTOFFBESTELLKOSTENNORMAL_KEY);
233 Double rohstoffbestellkostennormal = new Double(((Integer) voreinstellung1.getWertObject()).doubleValue());
234
235 if (rohstoffbestellungnormal.doubleValue() > 0.0)
236 {
237 rohstoffbestellkosten = new Double(rohstoffbestellkosten.doubleValue() + rohstoffbestellkostennormal.doubleValue());
238 }
239
240 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGROHSTOFFBESTELLUNGSKOSTEN_KEY);
241 wert2.setObjectWert(new Double(-rohstoffbestellkosten.doubleValue()));
242 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
243
244
245
246 Double rohstoffkostennormalundexpress = new Double(rohstoffbestellungexpress.doubleValue() + rohstoffbestellungnormal.doubleValue());
247 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_FINANZIERUNGROHSTOFFENORMALUNDEXPRESS_KEY);
248 wert1.setObjectWert(new Double(-rohstoffkostennormalundexpress.doubleValue()));
249 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
250
251
252
253 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ENTSCHEIDUNGPRODUKTART_KEY);
254 Integer produzierteProduktart = (Integer) wert1.getObjectWert();
255 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_GRUNDDATENMAXIMALMOEGLICHEPRODUKTARTFOLGEQUARTAL_KEY);
256 Integer maximaleProduktartVQ = (Integer) wert2.getObjectWert();
257 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENPRODUZIERTEPRODUKTART_KEY);
258 if (produzierteProduktart.intValue() > maximaleProduktartVQ.intValue())
259 {
260 wert2.setObjectWert(maximaleProduktartVQ);
261 }
262 else
263 {
264 wert2.setObjectWert(produzierteProduktart);
265 }
266 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
267
268
269
270 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ENTSCHEIDUNGFUNDE_KEY);
271 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGFORSCHUNGSUNDENTWICKLUNGSKOSTEN_KEY);
272 Double fundeKosten = new Double(- ((Integer) wert1.getObjectWert()).doubleValue() * 1000.0);
273 wert2.setObjectWert(fundeKosten);
274 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
275
276
277
278 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_VERMOEGENSRECHNUNGKAPITALERHOEHUNG_KEY);
279 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_FINANZIERUNGKAPITALERHOEHUNG_KEY);
280 Double kapitalerhoehung = (Double) wert1.getObjectWert();
281 wert2.setObjectWert(kapitalerhoehung);
282 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
283
284
285
286 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_VERMOEGENSRECHNUNGKASSE_KEY);
287 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_FINANZIERUNGKASSE_KEY);
288 Double kasse = (Double) wert1.getObjectWert();
289 wert2.setObjectWert(kasse);
290 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
291
292
293
294 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_VERMOEGENSRECHNUNGUNVERZINSLICHEVERBINDLICHKEITEN_KEY);
295 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_FINANZIERUNGUNVERZINSLICHEVERBINDLICHKEITEN_KEY);
296 Double unverzinslicheVerbindlichkeiten = (Double) wert1.getObjectWert();
297 wert2.setObjectWert(unverzinslicheVerbindlichkeiten);
298 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
299
300
301 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ENTSCHEIDUNGQUALITAETSSICHERUNG_KEY);
302 Double qualitaetssicherungReal = new Double(Produktion.qualtaetssicherungReal(((Double) wert1.getObjectWert()).doubleValue(), inflationsindex.doubleValue()));
303 if (log.isDebugEnabled())
304 {
305 log.debug(" Qualitaetssicherung Real : '" + qualitaetssicherungReal.toString() + "'");
306 }
307
308
309 Double fehleranteil = new Double(Produktion.fehleranteil(qualitaetssicherungReal.doubleValue(), qualitaetssicherungTabelle));
310 if (log.isDebugEnabled())
311 {
312 log.debug(" Fehleranteil : '" + fehleranteil.toString() + "'");
313 }
314
315
316 Double ausschussanteil = new Double(Produktion.ausschuss(fehleranteil.doubleValue()));
317 if (log.isDebugEnabled())
318 {
319 log.debug(" Ausschussanteil : '" + ausschussanteil.toString() + "'");
320 }
321
322
323 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ENTSCHEIDUNGPRODUKTIONSMENGE_KEY);
324 Double nominaleProduktionsmenge = new Double(Produktion.produktionsmengeNominal(((Integer) wert1.getObjectWert()).doubleValue() * 1000.0, ausschussanteil.doubleValue()));
325
326
327
328 ProduktartAbhaengigkeiten produzierteStufe = null;
329 for (int i = 0; i < produktArtAbhaengigkeitenTabelle.size(); i++)
330 {
331 produzierteStufe = (ProduktartAbhaengigkeiten) produktArtAbhaengigkeitenTabelle.get(i);
332
333 if (produzierteStufe.getProduktart() == produzierteProduktart.intValue())
334 {
335 break;
336 }
337 else
338 {
339 produzierteStufe = null;
340 }
341
342 }
343
344 if (produzierteStufe == null)
345 {
346 log.error(" Produzierte Stufe nicht gefunden !!! (" + produzierteProduktart + ")");
347 }
348
349 Double rohstoffverbrauchStueck = new Double(produzierteStufe.getRohstoffverbrauch());
350
351
352 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_GRUNDDATENROHSTOFFPREIS_KEY);
353 Double mengeRohstoffeExpress = new Double(0.0);
354 if (rohstoffbestellungexpress.doubleValue() > 0.0)
355 {
356 mengeRohstoffeExpress = new Double(rohstoffbestellungexpress.doubleValue() / Produktion.rohstoffpreis(((Double) wert1.getObjectWert()).doubleValue(), inflationsindex.doubleValue()));
357 }
358
359
360
361 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_GRUNDDATENROHSTOFFLAGERBESTANDQUARTALSENDE_KEY);
362 Double rohstofflagerbestandVQ = (Double) wert1.getObjectWert();
363 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ENTSCHEIDUNGPRODUKTIONSMENGE_KEY);
364 Double guteProduktionsmenge = new Double(0.0);
365 if ((nominaleProduktionsmenge.doubleValue() * rohstoffverbrauchStueck.doubleValue()) <= (rohstofflagerbestandVQ.doubleValue() + mengeRohstoffeExpress.doubleValue()))
366 {
367 guteProduktionsmenge = new Double(((Integer) wert1.getObjectWert()).doubleValue() * 1000.0);
368 }
369 else
370 {
371 guteProduktionsmenge = new Double(((rohstofflagerbestandVQ.doubleValue() + mengeRohstoffeExpress.doubleValue()) / rohstoffverbrauchStueck.doubleValue()) * (1.0 - (ausschussanteil.doubleValue() / 100.0)));
372 }
373
374 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENGUTEPRODUKTIONSMENGE_KEY);
375 wert2.setObjectWert(guteProduktionsmenge);
376 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
377
378
379
380 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENVERKAUFSPREISREAL_KEY);
381 Double verkaufspreisReal = new Double(Vertrieb.realerPreis(verkaufspreisNominell.doubleValue(), inflationsindex.doubleValue()));
382 wert1.setObjectWert(verkaufspreisReal);
383 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
384
385
386 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ENTSCHEIDUNGMARKETING_KEY);
387 Double marketingaufwandNominell = new Double(((Integer) wert1.getObjectWert()).doubleValue() * 1000.0);
388 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENREALERMARKETINGAUFWAND_KEY);
389 Double marketingaufwandReal = new Double(Vertrieb.realesMarketing(marketingaufwandNominell.doubleValue(), inflationsindex.doubleValue()));
390 wert2.setObjectWert(marketingaufwandReal);
391 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
392
393
394
395 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_GRUNDDATENWIRKSAMEMARKETINGKOSTEN_KEY);
396 Double wirksameMarketingkostenVQ = (Double) wert1.getObjectWert();
397 voreinstellung1 = CommonCalculation.SucheVoreinstellungFeldname(allgemein, Constants.VF_ALLGEMEINEVOREINSTELLUNGENNACHHALLEFFEKT_KEY);
398 Double nachhalleffekt = new Double(((Double) voreinstellung1.getWertObject()).doubleValue() / 100.0);
399 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENWIRKSAMEMARKETINGKOSTEN_KEY);
400 Double wirksameMarketingkosten = new Double(Vertrieb.wirksamesMarketing(nachhalleffekt.doubleValue(), marketingaufwandReal.doubleValue(), wirksameMarketingkostenVQ.doubleValue()));
401 wert1.setObjectWert(wirksameMarketingkosten);
402 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
403
404
405
406 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ENTSCHEIDUNGFUNDE_KEY);
407 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENFORSCHUNGUNDENTWICKLUNGREAL_KEY);
408 Double fundeReal = new Double(Finanzierung.realeForschungUndEntwicklung(((Integer) wert1.getObjectWert()).doubleValue() * 1000.0, inflationsindex.doubleValue()));
409 wert2.setObjectWert(fundeReal);
410 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
411
412
413
414 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_GRUNDDATENFORSCHUNGUNDENTWICKLUNGREAL_KEY);
415 Double fundeRealVQ = (Double) wert1.getObjectWert();
416 if (fundeRealVQ == null)
417 {
418 fundeRealVQ = new Double(0.0);
419 }
420 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENFORSCHUNGUNDENTWICKLUNGWIRKSAM_KEY);
421 Double fundeWirksam = new Double(Finanzierung.wirksameForschungUndEntwicklung(nachhalleffekt.doubleValue(), fundeRealVQ.doubleValue(), fundeReal.doubleValue()));
422 wert2.setObjectWert(fundeWirksam);
423 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
424
425
426
427 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENNOMINALEPRODUKTIONSMENGE_KEY);
428 nominaleProduktionsmenge = new Double(Produktion.produktionsmengeNominal(guteProduktionsmenge.doubleValue(), ausschussanteil.doubleValue()));
429 wert1.setObjectWert(nominaleProduktionsmenge);
430 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
431
432
433
434 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENNACHBEARBEITETEPRODUKTIONSMENGE_KEY);
435 Double nachbearbeitbareProduktionsmenge = new Double(Produktion.produktionsmengeNacharbeitbar(nominaleProduktionsmenge.doubleValue(), fehleranteil.doubleValue()));
436 wert1.setObjectWert(nachbearbeitbareProduktionsmenge);
437 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
438
439
440
441 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENFEHLERHAFTEPRODUKTIONSMENGE_KEY);
442 Double fehlerhafteProduktionsmenge = new Double(Produktion.produktionsmengeFehlerhaft(nominaleProduktionsmenge.doubleValue(), fehleranteil.doubleValue()));
443 wert1.setObjectWert(fehlerhafteProduktionsmenge);
444 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
445
446
447 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_ERFOLGSRECHNUNGUMSATZERLOESE_KEY);
448 Double umsatzerloeseVQ = (Double) wert1.getObjectWert();
449 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ALLGEMEINMARKETINGEFFEKT_KEY);
450 Double marketingEffekt = new Double(Vertrieb.marketingEffekt(wirksameMarketingkosten.doubleValue(), umsatzerloeseVQ.doubleValue(), marketingTabelle));
451 wert2.setObjectWert(marketingEffekt);
452 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
453
454
455 Double produktarteffekt = new Double(produzierteStufe.getProduktarteffekt() / 100.0);
456
457
458
459 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_GRUNDDATENVERKAUFSPREISREAL_KEY);
460 Double verkaufspreisRealVQ = (Double) wert1.getObjectWert();
461 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENVERKAUFSPREISWIRKSAM_KEY);
462 Double verkaufspreisWirksam = new Double(Vertrieb.wirksamerPreis(verkaufspreisReal.doubleValue(), verkaufspreisRealVQ.doubleValue(), produktarteffekt.doubleValue(), marketingEffekt.doubleValue()));
463 wert2.setObjectWert(verkaufspreisWirksam);
464 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
465
466 synchronized (lock)
467 {
468 if (log.isDebugEnabled())
469 {
470 log.debug(" Waiting for other Threads to finish. " + getName());
471 }
472
473
474 lock.incrementSemaphore();
475
476 lock.wait(3600000);
477
478 lock.decrementSemaphore();
479
480 if (log.isDebugEnabled())
481 {
482 log.debug(" Other Threads finished. Continuing. " + getName());
483 }
484 }
485
486
487 ArrayList wirksamePreiseTabelle = ErstelleDatentabellen.WirksamerPreisTabelle(projektnummer, new Integer(quartal.intValue() + 1));
488
489
490 Double pafAbsatzWert = new Double(Vertrieb.pafAbsatz(verkaufspreisWirksam.doubleValue(), preisAbsatzTabelle));
491 if (log.isDebugEnabled())
492 {
493 log.debug(" PAF AbsatzS : '" + pafAbsatzWert.toString() + "'");
494 }
495
496
497 Double korrekturfaktor = new Double(Vertrieb.korrekturfaktor(wirksamePreiseTabelle, gruppennummer));
498 if (log.isDebugEnabled())
499 {
500 log.debug(" Korrekturfaktor : '" + korrekturfaktor.toString() + "'");
501 }
502
503
504 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENSAISONINDEX_KEY);
505 Double sainsonindex = new Double(((Double) wert1.getObjectWert()).doubleValue() / 100.0);
506
507
508 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENKONJUNKTURINDEX_KEY);
509 Double konjunkturindex = new Double(((Double) wert1.getObjectWert()).doubleValue() / 100.0);
510
511
512
513 voreinstellung1 = CommonCalculation.SucheVoreinstellungFeldname(allgemein, Constants.VF_ALLGEMEINEVOREINSTELLUNGENABHAENGIGEPREISE_KEY);
514 Integer preisAbhaengigAb = (Integer) voreinstellung1.getWertObject();
515 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENABSETZBAREMENGE_KEY);
516 Double absetzbareMenge = new Double(0.0);
517 if ((quartal.intValue() + 1) >= preisAbhaengigAb.intValue())
518 {
519 absetzbareMenge = new Double(Vertrieb.mengeAbsetzbar(pafAbsatzWert.doubleValue(), konjunkturindex.doubleValue(), sainsonindex.doubleValue(), korrekturfaktor.doubleValue()));
520 }
521 else
522 {
523 absetzbareMenge = new Double(Vertrieb.mengeAbsetzbar(pafAbsatzWert.doubleValue(), konjunkturindex.doubleValue(), sainsonindex.doubleValue(), 1.0));
524 }
525 wert1.setObjectWert(absetzbareMenge);
526 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
527
528
529 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_GRUNDDATENLAGERMENGEFERTIGPRODUKTE_KEY);
530 Double lagerbestandFertigprodukteVQ = (Double) wert1.getObjectWert();
531 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ALLGEMEINFERTIGPRODUKTEGESAMT_KEY);
532 Double fertigprodukteGesamt = new Double(Vertrieb.fertigProdukteGesamt(guteProduktionsmenge.doubleValue(), lagerbestandFertigprodukteVQ.doubleValue()));
533 wert2.setObjectWert(fertigprodukteGesamt);
534 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
535
536
537
538 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENLIEFERDEFIZIT_KEY);
539 Double lieferdefizit = new Double(Vertrieb.defizit(fertigprodukteGesamt.doubleValue(), absetzbareMenge.doubleValue()));
540 wert1.setObjectWert(lieferdefizit);
541 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
542
543 synchronized (lock)
544 {
545 if (log.isDebugEnabled())
546 {
547 log.debug(" Waiting for other Threads to finish. " + getName());
548 }
549
550
551 lock.incrementSemaphore();
552
553 lock.wait(3600000);
554
555 lock.decrementSemaphore();
556
557 if (log.isDebugEnabled())
558 {
559 log.debug(" Other Threads finished. Continuing. " + getName());
560 }
561 }
562
563
564 ArrayList fertigProdukteTabelle = ErstelleDatentabellen.FertigProdukteTabelle(projektnummer, new Integer(quartal.intValue() + 1));
565
566 ArrayList absetzbareMengenTabelle = ErstelleDatentabellen.AbsetzbareMengenTabelle(projektnummer, new Integer(quartal.intValue() + 1));
567
568
569
570
571
572
573 Double defizitAndererUnternehmenWert = new Double(Vertrieb.defizitAndererUnternehmen(fertigProdukteTabelle, absetzbareMengenTabelle, gruppennummer));
574 if (log.isDebugEnabled())
575 {
576 log.debug(" Defizit anderer Unternehmen : '" + defizitAndererUnternehmenWert.toString() + "'");
577 }
578
579
580
581 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENABSETZBAREMENGEWEGENDEFIZIT_KEY);
582 Double wegenDefizitAndererUnternehmen = new Double(0.0);
583 if ((quartal.intValue() + 1) >= preisAbhaengigAb.intValue())
584 {
585 wegenDefizitAndererUnternehmen = defizitAndererUnternehmenWert;
586 }
587 else
588 {
589 wegenDefizitAndererUnternehmen = new Double(0.0);
590 }
591 wert1.setObjectWert(wegenDefizitAndererUnternehmen);
592 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
593
594
595
596 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENABSETZBAREMENGE_KEY);
597 if ((quartal.intValue() + 1) >= preisAbhaengigAb.intValue())
598 {
599 absetzbareMenge = new Double(Vertrieb.mengeAbsetzbarInklusiveZusaetzlichemAbsatzDurchDefizitAndererUnternehmen(pafAbsatzWert.doubleValue(), konjunkturindex.doubleValue(), sainsonindex.doubleValue(), korrekturfaktor.doubleValue(), defizitAndererUnternehmenWert.doubleValue()));
600 }
601 else
602 {
603 absetzbareMenge = new Double(Vertrieb.mengeAbsetzbarInklusiveZusaetzlichemAbsatzDurchDefizitAndererUnternehmen(pafAbsatzWert.doubleValue(), konjunkturindex.doubleValue(), sainsonindex.doubleValue(), 1.0, defizitAndererUnternehmenWert.doubleValue()));
604 }
605 wert1.setObjectWert(absetzbareMenge);
606 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
607
608
609
610 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENMINDERABSATZWEGENHOHEMPREIS_KEY);
611 Double minderAbsatz = new Double(0.0);
612 if ((quartal.intValue() + 1) >= preisAbhaengigAb.intValue())
613 {
614 minderAbsatz = new Double(Vertrieb.minderAbsatz(sainsonindex.doubleValue(), konjunkturindex.doubleValue(), pafAbsatzWert.doubleValue(), korrekturfaktor.doubleValue()));
615 }
616 else
617 {
618 minderAbsatz = new Double(0.0);
619 }
620 wert1.setObjectWert(minderAbsatz);
621 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
622
623
624
625 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENLIEFERDEFIZIT_KEY);
626 lieferdefizit = new Double(Vertrieb.defizit(fertigprodukteGesamt.doubleValue(), absetzbareMenge.doubleValue()));
627 wert1.setObjectWert(lieferdefizit);
628 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
629
630
631
632 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENABGESETZTEMENGE_KEY);
633 Double abgesetzteMenge = new Double(Vertrieb.tatsaechlicherAbsatz(absetzbareMenge.doubleValue(), fertigprodukteGesamt.doubleValue()));
634 wert1.setObjectWert(abgesetzteMenge);
635 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
636
637
638
639 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGUMSATZERLOESE_KEY);
640 Double umsatzerloese = new Double(Vertrieb.umsatz(abgesetzteMenge.doubleValue(), verkaufspreisNominell.doubleValue()));
641 wert1.setObjectWert(umsatzerloese);
642 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
643
644 synchronized (lock)
645 {
646 if (log.isDebugEnabled())
647 {
648 log.debug(" Waiting for other Threads to finish. " + getName());
649 }
650
651
652 lock.incrementSemaphore();
653
654 lock.wait(3600000);
655
656 lock.decrementSemaphore();
657
658 if (log.isDebugEnabled())
659 {
660 log.debug(" Other Threads finished. Continuing. " + getName());
661 }
662 }
663
664
665 ArrayList tatsaechlicherAbsatzTabelle = ErstelleDatentabellen.TatsaechlicherAbsatzTabelle(projektnummer, new Integer(quartal.intValue() + 1));
666
667 ArrayList umsatzTabelle = ErstelleDatentabellen.UmsatzTabelle(projektnummer, new Integer(quartal.intValue() + 1));
668
669 ArrayList lizenzverkaufTabelle = ErstelleDatentabellen.LizenzverkaufTabelle(projektnummer, new Integer(quartal.intValue() + 1));
670
671
672
673 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENMARKTANTEIL_KEY);
674 Double marktanteil = new Double(Vertrieb.marktAnteil(tatsaechlicherAbsatzTabelle, gruppennummer));
675 wert1.setObjectWert(marktanteil);
676 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
677
678
679
680 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENUMSATZANTEIL_KEY);
681 Double umsatzanteil = new Double(Vertrieb.umsatzAnteil(umsatzTabelle, gruppennummer));
682 wert1.setObjectWert(umsatzanteil);
683 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
684
685
686
687 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENLAGERZUGANGFERTIGPRODUKTE_KEY);
688 Double lagerzugangFertigprodukte = new Double(Vertrieb.lagerZugangFertigprodukteStueck(absetzbareMenge.doubleValue(), guteProduktionsmenge.doubleValue()));
689 wert1.setObjectWert(lagerzugangFertigprodukte);
690 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
691
692
693
694 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENLAGERABGANGFERTIGPRODUKTE_KEY);
695 Double lagerabgangFertigprodukte = new Double(Vertrieb.lagerAbgangFertigprodukteStueck(absetzbareMenge.doubleValue(), guteProduktionsmenge.doubleValue(), lagerbestandFertigprodukteVQ.doubleValue()));
696 wert1.setObjectWert(lagerabgangFertigprodukte);
697 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
698
699
700
701 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENLAGERMENGEFERTIGPRODUKTE_KEY);
702 Double lagermengeFertigprodukte = new Double(Vertrieb.lagerBestandFertigprodukteStueck(lagerbestandFertigprodukteVQ.doubleValue(), lagerabgangFertigprodukte.doubleValue(), lagerzugangFertigprodukte.doubleValue()));
703 wert1.setObjectWert(lagermengeFertigprodukte);
704 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
705
706
707 voreinstellung1 = CommonCalculation.SucheVoreinstellungFeldname(allgemein, Constants.VF_ALLGEMEINEVOREINSTELLUNGENNACHARBEITSAUFWAND_KEY);
708 Double nacharbeitsaufwand = new Double(1.0 + (((Double) voreinstellung1.getWertObject()).doubleValue() / 100.0));
709
710 if (log.isDebugEnabled())
711 {
712 log.debug(" Nacharbeitsaufwand : '" + nacharbeitsaufwand.toString() + "'");
713 }
714
715
716 Double fertigungszeitproFertigprodukt = new Double(produzierteStufe.getFertigungszeit());
717 if (log.isDebugEnabled())
718 {
719 log.debug(" Fertigungszeit pro Fertigprodukt : '" + fertigungszeitproFertigprodukt.toString() + "'");
720 }
721
722
723
724 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENFERTIGUNGSZEITPROSTUECK_KEY);
725 Double fertigungszeitStueck = new Double(Produktion.fertigungsZeitGutesStueck(nominaleProduktionsmenge.doubleValue(), nachbearbeitbareProduktionsmenge.doubleValue(), guteProduktionsmenge.doubleValue(), fertigungszeitproFertigprodukt.doubleValue(), nacharbeitsaufwand.doubleValue()));
726 wert1.setObjectWert(fertigungszeitStueck);
727 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
728
729
730 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENFERTIGUNGSZEITGESAMT_KEY);
731 Double fertigungszeitGesamt = new Double(Produktion.fertigungszeitGesamt(nominaleProduktionsmenge.doubleValue(), nachbearbeitbareProduktionsmenge.doubleValue(), fertigungszeitproFertigprodukt.doubleValue(), nacharbeitsaufwand.doubleValue()));
732 wert1.setObjectWert(fertigungszeitGesamt);
733 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
734
735
736
737 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_GRUNDDATENKAPAZITAETSBESTANDFOLGEQUARTAL_KEY);
738 Double kapazitaetsbestandVQ = (Double) wert1.getObjectWert();
739 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENKAPAZITAETSAUSLASTUNG_KEY);
740 Double kapazitaetsauslastung = new Double(Produktion.kapazitaetsauslastung(fertigungszeitGesamt.doubleValue(), kapazitaetsbestandVQ.doubleValue()) * 100.0);
741 wert2.setObjectWert(kapazitaetsauslastung);
742 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
743
744
745 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_GRUNDDATENROHSTOFFPREIS_KEY);
746 Double rohstoffpreisVQ = (Double) wert1.getObjectWert();
747 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENROHSTOFFPREIS_KEY);
748 Double rohstoffpreis = new Double(Produktion.rohstoffpreis(rohstoffpreisVQ.doubleValue(), inflationsindex.doubleValue()));
749 wert2.setObjectWert(rohstoffpreis);
750 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
751
752
753
754 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENROHSTOFFKAUFNORMALUNDEXPRESS_KEY);
755 Double rohstoffkaufNormalExpress = new Double((rohstoffbestellungnormal.doubleValue() + rohstoffbestellungexpress.doubleValue()) / rohstoffpreis.doubleValue());
756 wert1.setObjectWert(rohstoffkaufNormalExpress);
757 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
758
759
760
761 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENROHSTOFFVERBRAUCHQUARTAL_KEY);
762 Double rohstoffverbrauchQuartal = new Double(Produktion.rohstoffverbrauch(nominaleProduktionsmenge.doubleValue(), rohstoffverbrauchStueck.doubleValue()));
763 wert1.setObjectWert(rohstoffverbrauchQuartal);
764 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
765
766
767
768 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_GRUNDDATENROHSTOFFLAGERBESTANDQUARTALSENDE_KEY);
769 Double rohstofflagerbestandQuartalsendeVQ = (Double) wert1.getObjectWert();
770 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENROHSTOFFLAGERBESTANDQUARTALSENDE_KEY);
771 Double rohstofflagerbestandQuartalsende = new Double(Produktion.rohstoffLagerBestand(rohstofflagerbestandVQ.doubleValue(), rohstoffverbrauchQuartal.doubleValue(), rohstoffkaufNormalExpress.doubleValue()));
772 wert2.setObjectWert(rohstofflagerbestandQuartalsende);
773 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
774
775
776
777 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_GRUNDDATENROHSTOFFWERTQUARTALSENDE_KEY);
778 Double rohstoffwertQuartalsendeVQ = (Double) wert1.getObjectWert();
779 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENROHSTOFFWERTQUARTALSENDE_KEY);
780 Double rohstoffwertQuartalsende = new Double(Produktion.rohstoffwert(rohstoffkaufNormalExpress.doubleValue(), rohstofflagerbestandQuartalsendeVQ.doubleValue(), rohstoffverbrauchQuartal.doubleValue(), rohstoffwertQuartalsendeVQ.doubleValue(), rohstoffpreis.doubleValue()));
781 wert2.setObjectWert(rohstoffwertQuartalsende);
782 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
783
784
785
786 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ENTSCHEIDUNGQUALITAETSSICHERUNG_KEY);
787 Double qualitaetssicherungNominal = (Double) wert1.getObjectWert();
788 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGQUALITAETSSICHERUNGSKOSTEN_KEY);
789 Double qualitaetssicherungskosten = new Double(-Produktion.qualitaetssicherungGesamt(nominaleProduktionsmenge.doubleValue(), qualitaetssicherungNominal.doubleValue()));
790 wert2.setObjectWert(qualitaetssicherungskosten);
791 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
792
793
794 Double fertigungszeitOhneUeberstundenUndNacharbeit = new Double(Produktion.fertigungszeitOhneUeberstundenOhneNacharbeit(nominaleProduktionsmenge.doubleValue(), fertigungszeitproFertigprodukt.doubleValue()));
795 if (log.isDebugEnabled())
796 {
797 log.debug(" Fertigungszeit ohne Ueberstunden und ohne Nacharbeit : '" + fertigungszeitOhneUeberstundenUndNacharbeit.toString() + "'");
798 }
799
800
801 Double nacharbeitszeitOhneUeberstunden = new Double(Produktion.nacharbeitsZeitOhneUeberstunden(nachbearbeitbareProduktionsmenge.doubleValue(), fertigungszeitproFertigprodukt.doubleValue(), nacharbeitsaufwand.doubleValue() - 1.0));
802 if (log.isDebugEnabled())
803 {
804 log.debug(" Nacharbeitszeit ohne Ueberstunden : '" + nacharbeitszeitOhneUeberstunden.toString() + "'");
805 }
806
807
808 Double fertigungszeitGesamtFLK = new Double(Produktion.fertigungszeitGesamtFertigungsLohnKosten(nominaleProduktionsmenge.doubleValue(), fertigungszeitproFertigprodukt.doubleValue(), nachbearbeitbareProduktionsmenge.doubleValue()));
809 if (log.isDebugEnabled())
810 {
811 log.debug(" Fertigungszeit Gesamt FLK : '" + fertigungszeitGesamtFLK.toString() + "'");
812 }
813
814
815 voreinstellung1 = CommonCalculation.SucheVoreinstellungFeldname(allgemein, Constants.VF_ALLGEMEINEVOREINSTELLUNGENBASISLOHNKOSTEN_KEY);
816 Double grundlohnkosten = (Double) voreinstellung1.getWertObject();
817 Double lohnkosten = new Double(((Double) voreinstellung1.getWertObject()).doubleValue() * lohnerhoehungssindex.doubleValue());
818
819
820 Double normalkapazitaet = new Double(Produktion.normalkapazitaet(kapazitaetsauslastung.doubleValue(), kapazitaetsbestandVQ.doubleValue()));
821 if (log.isDebugEnabled())
822 {
823 log.debug(" Normalkapazitaet : '" + normalkapazitaet.toString() + "'");
824 }
825
826
827
828 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGFLKOHNEUEBERSTUNDENUNDNACHARBEIT_KEY);
829 Double flkOhneUeberstundenOhneNacharbeit = new Double(-Produktion.fertigungsLohnKostenOhneUeberstundenOhneNacharbeit(fertigungszeitOhneUeberstundenUndNacharbeit.doubleValue(), lohnkosten.doubleValue()));
830 wert1.setObjectWert(flkOhneUeberstundenOhneNacharbeit);
831 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
832
833
834
835 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGUEBERSTUNDENZUSCHLAEGEFLKOHNEUEBERSTUNDENUNDNACHARBEIT_KEY);
836 Double ueberstundenzuschlaegeOhneNacharbeit = new Double(-Produktion.ueberstundenzuschlaegeFertigungsLohnKosten(fertigungszeitOhneUeberstundenUndNacharbeit.doubleValue(), normalkapazitaet.doubleValue(), lohnkosten.doubleValue()));
837 wert1.setObjectWert(ueberstundenzuschlaegeOhneNacharbeit);
838 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
839
840
841
842 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGNACHARBEITSKOSTENOHNEUEBERSTUNDEN_KEY);
843 Double nacharbeitslohnkostenOhneUeberstunden = new Double(-Produktion.nacharbeitslohnkostenOhneUeberstunden(nacharbeitszeitOhneUeberstunden.doubleValue(), lohnkosten.doubleValue()));
844 wert1.setObjectWert(nacharbeitslohnkostenOhneUeberstunden);
845 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
846
847
848
849 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGUEBERSTUNDENZUSCHLAEGENACHARBEITSKOSTENOHNEUEBERSTUNDEN_KEY);
850 Double ueberstundenzuschlaegeNacharbeit = new Double(-Produktion.ueberstundenzuschlagNacharbeit(nacharbeitslohnkostenOhneUeberstunden.doubleValue(), fertigungszeitGesamt.doubleValue(), fertigungszeitOhneUeberstundenUndNacharbeit.doubleValue(), nacharbeitszeitOhneUeberstunden.doubleValue(), normalkapazitaet.doubleValue(), lohnkosten.doubleValue()));
851 wert1.setObjectWert(ueberstundenzuschlaegeNacharbeit);
852 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
853
854
855
856 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGFERTIGUNGSLOHNKOSTEN_KEY);
857 Double fertigungslohnkosten = new Double(flkOhneUeberstundenOhneNacharbeit.doubleValue() + ueberstundenzuschlaegeOhneNacharbeit.doubleValue() + nacharbeitslohnkostenOhneUeberstunden.doubleValue() + ueberstundenzuschlaegeNacharbeit.doubleValue());
858 wert1.setObjectWert(fertigungslohnkosten);
859 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
860
861
862
863 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENQUALITAETSKOSTENNACHARBEITSLOHNKOSTEN_KEY);
864 Double qualitaetskostenDavonNacharbeitskosten = new Double(-Produktion.lohnkosten(nacharbeitslohnkostenOhneUeberstunden.doubleValue(), ueberstundenzuschlaegeNacharbeit.doubleValue()));
865 wert1.setObjectWert(qualitaetskostenDavonNacharbeitskosten);
866 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
867
868
869 Double ausschusskosten = new Double(Produktion.ausschusskosten(nominaleProduktionsmenge.doubleValue(), ausschussanteil.doubleValue() / 100.0, fertigungszeitproFertigprodukt.doubleValue(), grundlohnkosten.doubleValue(), lohnerhoehungssindex.doubleValue(), rohstoffverbrauchStueck.doubleValue(), rohstoffwertQuartalsendeVQ.doubleValue(), kapazitaetsauslastung.doubleValue()));
870 if (log.isDebugEnabled())
871 {
872 log.debug(" Ausschusskosten : '" + ausschusskosten.toString() + "'");
873 }
874
875
876 Double fehlerkosten = new Double(Produktion.fehlerkosten(ausschusskosten.doubleValue(), qualitaetskostenDavonNacharbeitskosten.doubleValue()));
877 if (log.isDebugEnabled())
878 {
879 log.debug(" Fehlerkosten : '" + fehlerkosten.toString() + "'");
880 }
881
882
883
884 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENQUALITAETSKOSTEN_KEY);
885 Double qualitaetskosten = new Double(Produktion.qualitaetskosten(nominaleProduktionsmenge.doubleValue(), inflationsindex.doubleValue(), qualitaetssicherungReal.doubleValue(), fehlerkosten.doubleValue()));
886 wert1.setObjectWert(qualitaetskosten);
887 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
888
889
890 Double kostenProFertigprodukt =
891 new Double(Vertrieb.kostenProFertigprodukt(lohnkosten.doubleValue(), fertigungszeitStueck.doubleValue(), rohstoffverbrauchStueck.doubleValue(), fehleranteil.doubleValue(), rohstofflagerbestandVQ.doubleValue(), rohstoffbestellkostenexpress.doubleValue(), rohstofflagerbestandVQ.doubleValue() + (rohstoffbestellungexpress.doubleValue() / rohstoffpreis.doubleValue())));
892 if (log.isDebugEnabled())
893 {
894 log.debug(" Kosten pro Fertigprodukt : '" + kostenProFertigprodukt.toString() + "'");
895 }
896
897
898 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_VERMOEGENSRECHNUNGLAGERBESTANDFERTIGPRODUKTE_KEY);
899 Double lagerbestandFertigprodukteEURVQ = (Double) wert1.getObjectWert();
900 if (log.isDebugEnabled())
901 {
902 log.debug(" Lagerbestand Fertigprodukte in EUR Vor-Quartal : '" + lagerbestandFertigprodukteEURVQ.toString() + "'");
903 }
904
905
906 Double durchschnittlicherWertFertigprodukteLager = new Double(Vertrieb.durchschnittlicherWertFertigprodukteLager(lagerbestandFertigprodukteVQ.doubleValue(), lagerbestandFertigprodukteEURVQ.doubleValue()));
907 if (log.isDebugEnabled())
908 {
909 log.debug(" Durchschnittlicher Wert Fertigprodukte Lager : '" + durchschnittlicherWertFertigprodukteLager.toString() + "'");
910 }
911
912
913
914 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGLAGERZUGANGFERTIGPRODUKTE_KEY);
915 Double lagerzugangFertigprodukteEUR = new Double(Vertrieb.lagerZugangFertigprodukteEuro(lagerzugangFertigprodukte.doubleValue(), kostenProFertigprodukt.doubleValue()));
916 wert1.setObjectWert(lagerzugangFertigprodukteEUR);
917 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
918
919
920
921 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGLAGERABGANGFERTIGPRODUKTE_KEY);
922 Double lagerabgangFertigprodukteEUR = new Double(-Vertrieb.lagerAbgangFertigprodukteEuro(durchschnittlicherWertFertigprodukteLager.doubleValue(), lagerabgangFertigprodukte.doubleValue()));
923 wert1.setObjectWert(lagerabgangFertigprodukteEUR);
924 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
925
926
927 voreinstellung1 = CommonCalculation.SucheVoreinstellungFeldname(allgemein, Constants.VF_ALLGEMEINEVOREINSTELLUNGENLAGERKOSTENFERTIGPRODUKTE_KEY);
928 Double lagerungskostenFertigprodukte = (Double) voreinstellung1.getWertObject();
929 if (log.isDebugEnabled())
930 {
931 log.debug(" Lagerungskosten Fertigprodukte : '" + lagerungskostenFertigprodukte.toString() + "'");
932 }
933
934
935
936 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGLAGERUNGSKOSTENFERTIGPRODUKTE_KEY);
937 Double lagerungskostenFertigprodukteEUR = new Double(-Vertrieb.lagerKostenFertigprodukte(lagermengeFertigprodukte.doubleValue(), lagerungskostenFertigprodukte.doubleValue()));
938 wert1.setObjectWert(lagerungskostenFertigprodukteEUR);
939 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
940
941
942
943 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_VERMOEGENSRECHNUNGLAGERBESTANDFERTIGPRODUKTE_KEY);
944 Double lagerbestandFertigprodukteEUR = new Double(Vertrieb.lagerBestandFertigprodukteEuro(lagerbestandFertigprodukteEURVQ.doubleValue(), lagerzugangFertigprodukteEUR.doubleValue(), -lagerabgangFertigprodukteEUR.doubleValue()));
945 wert1.setObjectWert(lagerbestandFertigprodukteEUR);
946 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
947
948
949 voreinstellung1 = CommonCalculation.SucheVoreinstellungFeldname(allgemein, Constants.VF_ALLGEMEINEVOREINSTELLUNGENANLAGENPROJEKTIERUNGSKOSTEN_KEY);
950 Double anlagenprojektierung = new Double(((Double) voreinstellung1.getWertObject()).doubleValue() / 100.0);
951 if (log.isDebugEnabled())
952 {
953 log.debug(" Anlagenprojektierung : '" + anlagenprojektierung.toString() + "'");
954 }
955
956
957
958 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGANLAGENPROJEKTIERUNGSKOSTEN_KEY);
959 Double anlagenprojektierungskosten = new Double(-Produktion.anlagenProjektierungsKosten(-investitionskosten.doubleValue(), anlagenprojektierung.doubleValue()));
960 wert1.setObjectWert(anlagenprojektierungskosten);
961 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
962
963
964
965 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGROHSTOFFVERBRAUCHSKOSTEN_KEY);
966 Double rohstoffverbrauchskosten = new Double(-Produktion.rohstoffVerbrauchsKosten(nominaleProduktionsmenge.doubleValue(), rohstoffverbrauchStueck.doubleValue(), rohstoffpreisVQ.doubleValue()));
967 wert1.setObjectWert(rohstoffverbrauchskosten);
968 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
969
970
971
972 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGROHSTOFFBESTELLUNGSKOSTEN_KEY);
973 Double rohstoffbestellungskosten = new Double(-Produktion.rohstoffBestellungskosten(rohstoffbestellkostennormal.doubleValue(), 0.0, inflationsindex.doubleValue()));
974 wert1.setObjectWert(rohstoffbestellungskosten);
975 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
976
977
978 voreinstellung1 = CommonCalculation.SucheVoreinstellungFeldname(allgemein, Constants.VF_ALLGEMEINEVOREINSTELLUNGENROHSTOFFLAGERUNGSKOSTEN_KEY);
979 Double lagerungskostenRohstoffe = (Double) voreinstellung1.getWertObject();
980 if (log.isDebugEnabled())
981 {
982 log.debug(" Lagerungskosten Fertigprodukte : '" + lagerungskostenRohstoffe.toString() + "'");
983 }
984
985
986
987 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGLAGERKOSTENROHSTOFFE_KEY);
988 Double lagerkostenRohstoffe = new Double(-Produktion.rohstoffLagerKosten(rohstofflagerbestandQuartalsende.doubleValue(), lagerungskostenRohstoffe.doubleValue()));
989 wert1.setObjectWert(lagerkostenRohstoffe);
990 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
991
992
993
994 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGBESCHAFFUNG_KEY);
995 Double beschaffung = new Double(lagerkostenRohstoffe.doubleValue() + rohstoffbestellungskosten.doubleValue() + rohstoffverbrauchskosten.doubleValue() + anlagenprojektierungskosten.doubleValue());
996 wert1.setObjectWert(beschaffung);
997 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
998
999
1000
1001 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGVERWALTUNGSKOSTEN_KEY);
1002 Double verwaltungskosten = new Double(-Produktion.verwaltung(kapazitaetsauslastung.doubleValue(), lohnerhoehungssindex.doubleValue(), verwaltungTabelle));
1003 wert1.setObjectWert(verwaltungskosten);
1004 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1005
1006
1007
1008 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ENTSCHEIDUNGBERATUNG_KEY);
1009 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGBERATUNGSKOSTEN_KEY);
1010 Double beratungskosten = new Double(- ((Integer) wert1.getObjectWert()).doubleValue() * 1000.0);
1011 wert2.setObjectWert(beratungskosten);
1012 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
1013
1014
1015 voreinstellung1 = CommonCalculation.SucheVoreinstellungFeldname(allgemein, Constants.VF_ALLGEMEINEVOREINSTELLUNGENWERTBERICHTIGUNGABSCHREIBUNG_KEY);
1016 Double wertberichtigung = new Double(((Double) voreinstellung1.getWertObject()).doubleValue() / 100.0);
1017 if (log.isDebugEnabled())
1018 {
1019 log.debug(" Wertberichtigung : '" + wertberichtigung.toString() + "'");
1020 }
1021
1022
1023
1024 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_VERMOEGENSRECHNUNGANLAGEVERMOEGEN_KEY);
1025 Double anlagevermoegenVQ = (Double) wert1.getObjectWert();
1026 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGABSCHREIBUNGSKOSTEN_KEY);
1027 Double abschreibungskosten = new Double(-Produktion.abschreibungskosten(anlagevermoegenVQ.doubleValue(), wertberichtigung.doubleValue()));
1028 wert2.setObjectWert(abschreibungskosten);
1029 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
1030
1031
1032
1033 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_VERMOEGENSRECHNUNGANLAGEVERMOEGEN_KEY);
1034 Double anlagevermoegen = new Double(Finanzierung.anlageVermoegen(anlagevermoegenVQ.doubleValue(), abschreibungskosten.doubleValue(), -investitionskosten.doubleValue()));
1035 wert1.setObjectWert(anlagevermoegen);
1036 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1037
1038
1039
1040 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_VERMOEGENSRECHNUNGROHSTOFFLAGERBESTAND_KEY);
1041 Double rohstofflagerbestand = new Double(Vertrieb.rohstoffLagerBestandEuro(rohstofflagerbestandQuartalsende.doubleValue(), rohstoffwertQuartalsende.doubleValue()));
1042 wert1.setObjectWert(rohstofflagerbestand);
1043 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1044
1045
1046
1047 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGVERTRIEB_KEY);
1048 Double vertrieb = new Double(umsatzerloese.doubleValue() + marketingkosten.doubleValue() + lagerzugangFertigprodukteEUR.doubleValue() + lagerabgangFertigprodukteEUR.doubleValue() + lagerungskostenFertigprodukteEUR.doubleValue() + marktforschungskosten.doubleValue());
1049 wert1.setObjectWert(vertrieb);
1050 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1051
1052
1053 voreinstellung1 = CommonCalculation.SucheVoreinstellungFeldname(allgemein, Constants.VF_ALLGEMEINEVOREINSTELLUNGENSPEZIFISCHEINVESTITIONSAUSGABEN_KEY);
1054 Double spezfischeInvestitionsausgaben = (Double) voreinstellung1.getWertObject();
1055 if (log.isDebugEnabled())
1056 {
1057 log.debug(" Spezfische Investitionsausgaben : '" + spezfischeInvestitionsausgaben.toString() + "'");
1058 }
1059
1060
1061
1062 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENKAPAZITAETSBESTANDFOLGEQUARTAL_KEY);
1063 Double kapazitaetsbestand = new Double(Produktion.kapazitaetsbestandFolgequartal(kapazitaetsbestandVQ.doubleValue(), -investitionskosten.doubleValue(), abschreibungskosten.doubleValue(), spezfischeInvestitionsausgaben.doubleValue()));
1064 wert1.setObjectWert(kapazitaetsbestand);
1065 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1066
1067
1068
1069 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENMAXIMALMOEGLICHEPRODUKTARTFOLGEQUARTAL_KEY);
1070 Integer maximaleProduktartFolgequartal = new Integer(Finanzierung.produktArt(fundeWirksam.doubleValue(), forschungundentwicklungTabelle, produzierteProduktart.intValue(), maximaleProduktartVQ.intValue()));
1071 wert1.setObjectWert(maximaleProduktartFolgequartal);
1072 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1073
1074
1075 Integer lizenzerwerbProduktart = new Integer(0);
1076 Integer lizenzerwerbUnternehmen = new Integer(0);
1077 Double lizenzerwerbKosten = new Double(0.0);
1078 Integer lizenzverkaufProduktart = new Integer(0);
1079 Integer lizenzverkaufUnternehmen = new Integer(0);
1080 Double lizenzverkaufErloes = new Double(0.0);
1081
1082 for (int i = 0; i < lizenzverkaufTabelle.size(); i++)
1083 {
1084 Lizenzverkauf lizenz = (Lizenzverkauf) lizenzverkaufTabelle.get(i);
1085
1086 if (lizenz != null && lizenz.getGruppennummer().compareTo(gruppennummer) == 0)
1087 {
1088 if (lizenz.getUnternehmenKauf() != 0)
1089 {
1090 for (int j = 0; j < lizenzverkaufTabelle.size(); j++)
1091 {
1092 Lizenzverkauf tempLizenz = (Lizenzverkauf) lizenzverkaufTabelle.get(j);
1093
1094 if (lizenz != null && tempLizenz.getGruppennummer().intValue() == lizenz.getUnternehmenKauf())
1095 {
1096 if (tempLizenz.getUnternehmenVerkauf() == lizenz.getGruppennummer().intValue())
1097 {
1098
1099
1100 lizenzerwerbProduktart = new Integer(tempLizenz.getProduktartVerkauf());
1101
1102
1103 lizenzerwerbUnternehmen = new Integer(lizenz.getUnternehmenKauf());
1104
1105
1106 lizenzerwerbKosten = new Double(lizenz.getKostenKauf());
1107 }
1108
1109 if (lizenzerwerbProduktart.intValue() > maximaleProduktartFolgequartal.intValue())
1110 {
1111
1112
1113 maximaleProduktartFolgequartal = lizenzerwerbProduktart;
1114 }
1115 }
1116 }
1117 }
1118 else
1119 {
1120
1121
1122 lizenzerwerbProduktart = new Integer(0);
1123
1124
1125 lizenzerwerbUnternehmen = new Integer(0);
1126
1127
1128 lizenzerwerbKosten = new Double(0.0);
1129 }
1130
1131 if (lizenz.getUnternehmenVerkauf() != 0)
1132 {
1133 for (int j = 0; j < lizenzverkaufTabelle.size(); j++)
1134 {
1135 Lizenzverkauf tempLizenz = (Lizenzverkauf) lizenzverkaufTabelle.get(j);
1136
1137 if (lizenz != null && tempLizenz.getGruppennummer().intValue() == lizenz.getUnternehmenKauf())
1138 {
1139 if (tempLizenz.getUnternehmenVerkauf() == lizenz.getGruppennummer().intValue())
1140 {
1141
1142
1143 lizenzverkaufProduktart = new Integer(lizenz.getProduktartVerkauf());
1144
1145
1146 lizenzverkaufUnternehmen = new Integer(lizenz.getUnternehmenVerkauf());
1147
1148
1149 lizenzverkaufErloes = new Double(tempLizenz.getKostenKauf());
1150 }
1151 }
1152 }
1153 }
1154 else
1155 {
1156
1157
1158 lizenzverkaufProduktart = new Integer(0);
1159
1160
1161 lizenzverkaufUnternehmen = new Integer(0);
1162
1163
1164 lizenzverkaufErloes = new Double(0.0);
1165 }
1166 }
1167 }
1168
1169 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENLIZENZERWERBPRODUKTART_KEY);
1170 wert1.setObjectWert(lizenzerwerbProduktart);
1171 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1172
1173 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENLIZENZERWERBUNTERNEHMEN_KEY);
1174 wert1.setObjectWert(lizenzerwerbUnternehmen);
1175 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1176
1177 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENLIZENZERWERBSKOSTEN_KEY);
1178 wert1.setObjectWert(lizenzerwerbKosten);
1179 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1180
1181 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENLIZENZVERKAUFPRODUKTART_KEY);
1182 wert1.setObjectWert(lizenzverkaufProduktart);
1183 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1184
1185 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENLIZENZVERKAUFUNTERNEHMEN_KEY);
1186 wert1.setObjectWert(lizenzverkaufUnternehmen);
1187 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1188
1189 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_GRUNDDATENLIZENZVERKAUFSERLOESE_KEY);
1190 wert1.setObjectWert(lizenzverkaufErloes);
1191 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1192
1193
1194
1195 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGLIZENZERWERBSKOSTEN_KEY);
1196 Double lizenzerwerbskosten = new Double(-lizenzerwerbKosten.doubleValue());
1197 wert1.setObjectWert(lizenzerwerbskosten);
1198 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1199
1200
1201
1202 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGLIZENZVERKAUFSERLOESE_KEY);
1203 Double lizenzverkaufserloese = lizenzverkaufErloes;
1204 wert1.setObjectWert(lizenzverkaufserloese);
1205 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1206
1207
1208
1209 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_GRUNDDATENPRODUZIERTEPRODUKTART_KEY);
1210 Integer produzierteProduktartVQ = (Integer) wert1.getObjectWert();
1211 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGAUFARBEITUNGSKOSTEN_KEY);
1212 Double aufarbeitungskosten = new Double(0.0);
1213 int produktartaenderung = (produzierteProduktart.intValue() - produzierteProduktartVQ.intValue());
1214 if (produktartaenderung >= 0)
1215 {
1216 aufarbeitungskosten = new Double(-Produktion.aufarbeitungskosten(lagerbestandFertigprodukteVQ.doubleValue(), produktartaenderung));
1217 }
1218 else
1219 {
1220 aufarbeitungskosten = new Double(-Produktion.aufarbeitungskosten(lagerbestandFertigprodukteVQ.doubleValue(), 0));
1221 }
1222 wert2.setObjectWert(aufarbeitungskosten);
1223 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
1224
1225
1226 voreinstellung1 = CommonCalculation.SucheVoreinstellungFeldname(allgemein, Constants.VF_ALLGEMEINEVOREINSTELLUNGENSCHICHTWECHSELKOSTEN_KEY);
1227 Double schichtwechselkostenBASIS = new Double(((Integer) voreinstellung1.getWertObject()).doubleValue());
1228 if (log.isDebugEnabled())
1229 {
1230 log.debug(" Basiskosten für Schichtwechsel : '" + schichtwechselkostenBASIS.toString() + "'");
1231 }
1232
1233
1234
1235 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_GRUNDDATENKAPAZITAETSAUSLASTUNG_KEY);
1236 Double kapazitaetsauslastungVQ = (Double) wert1.getObjectWert();
1237 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGSCHICHTWECHSELKOSTEN_KEY);
1238 Double schichtwechselkosten = new Double(-Produktion.schichtwechsel(schichtwechselkostenBASIS.doubleValue(), kapazitaetsauslastungVQ.doubleValue(), kapazitaetsauslastung.doubleValue(), lohnerhoehungssindex.doubleValue()));
1239 wert2.setObjectWert(schichtwechselkosten);
1240 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
1241
1242
1243
1244 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGPRODUKTION_KEY);
1245 Double produktion = new Double(fundeKosten.doubleValue() + lizenzerwerbskosten.doubleValue() + lizenzverkaufserloese.doubleValue() + aufarbeitungskosten.doubleValue() + qualitaetssicherungskosten.doubleValue() + fertigungslohnkosten.doubleValue() + schichtwechselkosten.doubleValue() + abschreibungskosten.doubleValue());
1246 wert1.setObjectWert(produktion);
1247 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1248
1249
1250
1251 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_VERMOEGENSRECHNUNGBANKKREDIT_KEY);
1252 Double bankdarlehenVQ = (Double) wert1.getObjectWert();
1253 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_FINANZIERUNGBANKDARLEHEN_KEY);
1254 wert2.setObjectWert(bankdarlehenVQ);
1255 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
1256
1257
1258
1259 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_VERMOEGENSRECHNUNGKONTOKORRENTKREDIT_KEY);
1260 Double kontokorrentkreditVQ = (Double) wert1.getObjectWert();
1261 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_FINANZIERUNGKONTOKORRENTKREDIT_KEY);
1262 wert2.setObjectWert(kontokorrentkreditVQ);
1263 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
1264
1265
1266 voreinstellung1 = CommonCalculation.SucheVoreinstellungFeldname(allgemein, Constants.VF_ALLGEMEINEVOREINSTELLUNGENBANKDARLEHENZINSSATZ_KEY);
1267 Double basiszinssatzBankdarlehen = new Double(((Double) voreinstellung1.getWertObject()).doubleValue() / 100.0);
1268 if (log.isDebugEnabled())
1269 {
1270 log.debug(" Basiszinssatz Bankdarlehen : '" + basiszinssatzBankdarlehen.toString() + "'");
1271 }
1272
1273
1274
1275 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_ERFOLGSRECHNUNGDIVIDENDE_KEY);
1276 Double nettoDividendeVQ = new Double(- ((Double) wert1.getObjectWert()).doubleValue());
1277 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_FINANZIERUNGOPTIMALERKONTOKORRENTKREDIT_KEY);
1278 Double optimalerKontokorrentkredit = new Double(Finanzierung.ueberziehungsKreditOptimal(nettoDividendeVQ.doubleValue(), basiszinssatzBankdarlehen.doubleValue()));
1279 wert2.setObjectWert(optimalerKontokorrentkredit);
1280 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
1281
1282
1283
1284 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_FINANZIERUNGOPTIMALEAENDERUNGKONTOKORRENTKREDIT_KEY);
1285 Double optimaleAenderungKontokorrentkredit = new Double(Finanzierung.ueberziehungsKreditAenderungOptimal(optimalerKontokorrentkredit.doubleValue(), kontokorrentkreditVQ.doubleValue()));
1286 wert1.setObjectWert(optimaleAenderungKontokorrentkredit);
1287 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1288
1289
1290
1291 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_FINANZIERUNGLIQUIDITAETSWIRKSAMERERFOLGOHNEZINSEN_KEY);
1292 Double liquiditaetswirksamerErfolg =
1293 new Double(umsatzerloese.doubleValue() + marketingkosten.doubleValue() + lagerungskostenFertigprodukteEUR.doubleValue() + marktforschungskosten.doubleValue() + (produktion.doubleValue() - abschreibungskosten.doubleValue()) + (beschaffung.doubleValue() - rohstoffverbrauchskosten.doubleValue()) + verwaltungskosten.doubleValue() + beratungskosten.doubleValue());
1294 wert1.setObjectWert(liquiditaetswirksamerErfolg);
1295 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1296
1297
1298
1299 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_VERMOEGENSRECHNUNGKASSE_KEY);
1300 Double kasseVQ = (Double) wert1.getObjectWert();
1301 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartalminus1, Constants.EF_VERMOEGENSRECHNUNGKAPITALERHOEHUNG_KEY);
1302 Double kapitalerhoehungVQ = (Double) wert1.getObjectWert();
1303 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_FINANZIERUNGSALDO_KEY);
1304 Double saldo = new Double(unverzinslicheVerbindlichkeiten.doubleValue() - kasseVQ.doubleValue() - kapitalerhoehungVQ.doubleValue());
1305 wert2.setObjectWert(saldo);
1306 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
1307
1308
1309
1310 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_FINANZIERUNGKAPITALBEDARF_KEY);
1311 Double kapitalbedarf = new Double(saldo.doubleValue() - liquiditaetswirksamerErfolg.doubleValue());
1312 wert1.setObjectWert(kapitalbedarf);
1313 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1314
1315
1316
1317 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_FINANZIERUNGOPTIMALEAENDERUNGBANKDARLEHEN_KEY);
1318 Double optimaleAenderungBankkredit = new Double(Finanzierung.vereinbarterKreditAenderungOptimal(kapitalbedarf.doubleValue(), optimaleAenderungKontokorrentkredit.doubleValue()));
1319 wert1.setObjectWert(optimaleAenderungBankkredit);
1320 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1321
1322
1323 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ENTSCHEIDUNGERHOEHUNGTILGUNG_KEY);
1324 Integer darlehensTilgungOderErhoehung = (Integer) wert1.getObjectWert();
1325
1326
1327 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ENTSCHEIDUNGAENDERUNGBANKDARLEHEN_KEY);
1328 Double aenderungBankdarlehen = new Double(((Integer) wert1.getObjectWert()).doubleValue());
1329
1330 Double kasseN = new Double(0.0);
1331 Double bankdarlehen = new Double(0.0);
1332 Double kontokorrentkredit = new Double(0.0);
1333
1334 switch (darlehensTilgungOderErhoehung.intValue())
1335 {
1336 case 0 :
1337
1338
1339 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_VERMOEGENSRECHNUNGBANKKREDIT_KEY);
1340 bankdarlehen = new Double(Finanzierung.vereinbartKredit(bankdarlehenVQ.doubleValue(), -aenderungBankdarlehen.doubleValue()));
1341 wert1.setObjectWert(bankdarlehen);
1342 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1343
1344
1345
1346 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_VERMOEGENSRECHNUNGKONTOKORRENTKREDIT_KEY);
1347
1348 kontokorrentkredit = new Double(Finanzierung.ueberziehungsKredit(optimaleAenderungKontokorrentkredit.doubleValue(), kontokorrentkreditVQ.doubleValue(), -aenderungBankdarlehen.doubleValue(), optimaleAenderungBankkredit.doubleValue(), bankdarlehenVQ.doubleValue(), 0.0));
1349 wert1.setObjectWert(kontokorrentkredit);
1350 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1351
1352 kasseN = new Double(0.0);
1353 if (kontokorrentkredit.doubleValue() > 0)
1354 {
1355
1356
1357 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_VERMOEGENSRECHNUNGKASSE_KEY);
1358 kasseN = new Double(0.0);
1359 wert1.setObjectWert(kasseN);
1360 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1361 }
1362 else
1363 {
1364
1365
1366 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_VERMOEGENSRECHNUNGKASSE_KEY);
1367 kasseN = new Double(Finanzierung.kasse(kasseVQ.doubleValue(), kapitalerhoehungVQ.doubleValue(), unverzinslicheVerbindlichkeiten.doubleValue(), liquiditaetswirksamerErfolg.doubleValue(), -aenderungBankdarlehen.doubleValue(), kontokorrentkredit.doubleValue() - kontokorrentkreditVQ.doubleValue()));
1368 wert1.setObjectWert(kasseN);
1369 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1370 }
1371 break;
1372 case 1 :
1373
1374
1375 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_VERMOEGENSRECHNUNGBANKKREDIT_KEY);
1376 bankdarlehen = new Double(Finanzierung.vereinbartKredit(bankdarlehenVQ.doubleValue(), aenderungBankdarlehen.doubleValue()));
1377 wert1.setObjectWert(bankdarlehen);
1378 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1379
1380
1381
1382 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_VERMOEGENSRECHNUNGKONTOKORRENTKREDIT_KEY);
1383
1384 kontokorrentkredit = new Double(Finanzierung.ueberziehungsKredit(optimaleAenderungKontokorrentkredit.doubleValue(), kontokorrentkreditVQ.doubleValue(), aenderungBankdarlehen.doubleValue(), optimaleAenderungBankkredit.doubleValue(), bankdarlehenVQ.doubleValue(), 0.0));
1385 wert1.setObjectWert(kontokorrentkredit);
1386 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1387
1388 kasseN = new Double(0.0);
1389 if (kontokorrentkredit.doubleValue() > 0)
1390 {
1391
1392
1393 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_VERMOEGENSRECHNUNGKASSE_KEY);
1394 kasseN = new Double(0.0);
1395 wert1.setObjectWert(kasseN);
1396 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1397 }
1398 else
1399 {
1400
1401
1402 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_VERMOEGENSRECHNUNGKASSE_KEY);
1403 kasseN = new Double(Finanzierung.kasse(kasseVQ.doubleValue(), kapitalerhoehungVQ.doubleValue(), unverzinslicheVerbindlichkeiten.doubleValue(), liquiditaetswirksamerErfolg.doubleValue(), aenderungBankdarlehen.doubleValue(), kontokorrentkredit.doubleValue() - kontokorrentkreditVQ.doubleValue()));
1404 wert1.setObjectWert(kasseN);
1405 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1406 }
1407 break;
1408 }
1409
1410
1411 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ENTSCHEIDUNGZINSEN_KEY);
1412 Double bankdarlehenszinsenEntscheidung = new Double(((Integer) wert1.getObjectWert()).doubleValue());
1413
1414
1415
1416 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGZINSKOSTENBANKDARLEHEN_KEY);
1417 Double zinskostenBankdarlehen = new Double(-Finanzierung.zinskostenBankkredit(bankdarlehen.doubleValue(), basiszinssatzBankdarlehen.doubleValue()));
1418
1419 if (- (zinskostenBankdarlehen.doubleValue()) == bankdarlehenszinsenEntscheidung.doubleValue())
1420 {
1421 if (log.isDebugEnabled())
1422 {
1423 log.debug(" DO NOTHING");
1424 }
1425 }
1426 else if (- (zinskostenBankdarlehen.doubleValue()) < bankdarlehenszinsenEntscheidung.doubleValue())
1427 {
1428 zinskostenBankdarlehen = new Double(-bankdarlehenszinsenEntscheidung.doubleValue());
1429 }
1430 else
1431 {
1432 zinskostenBankdarlehen = new Double(- (zinskostenBankdarlehen.doubleValue() + ((zinskostenBankdarlehen.doubleValue() + bankdarlehenszinsenEntscheidung.doubleValue()) * 2.0)));
1433 }
1434
1435 wert1.setObjectWert(zinskostenBankdarlehen);
1436 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1437
1438
1439 Double kontokorrentkreditZinssatz = new Double(Finanzierung.zinssatzUeberziehungsKredit(-nettoDividendeVQ.doubleValue(), kontokorrentkredit.doubleValue(), basiszinssatzBankdarlehen.doubleValue() * 100.0) / 100.0);
1440 if (log.isDebugEnabled())
1441 {
1442 log.debug(" Zinssatz Kontokorrentkredit : '" + kontokorrentkreditZinssatz.toString() + "'");
1443 }
1444
1445
1446
1447 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGZINSKOSTENKONTOKORRENTKREDIT_KEY);
1448 Double zinskostenKontokorrentkredit = new Double(-Finanzierung.zinskostenUeberziehungskredit(kontokorrentkredit.doubleValue(), kontokorrentkreditZinssatz.doubleValue()));
1449 wert1.setObjectWert(zinskostenKontokorrentkredit);
1450 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1451
1452
1453
1454 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_FINANZIERUNGDURCHSCHNITTLICHERZINSSATZ_KEY);
1455 Double durchschnittlicherZinssatz = new Double(Finanzierung.durchschnittlicherZinssatz(basiszinssatzBankdarlehen.doubleValue(), kontokorrentkreditZinssatz.doubleValue(), kontokorrentkredit.doubleValue(), bankdarlehen.doubleValue()));
1456 wert1.setObjectWert(new Double(durchschnittlicherZinssatz.doubleValue() * 100.0));
1457 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1458
1459
1460
1461 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGOVERHEAD_KEY);
1462 Double overhead = new Double(verwaltungskosten.doubleValue() + beratungskosten.doubleValue() + zinskostenKontokorrentkredit.doubleValue() + zinskostenBankdarlehen.doubleValue());
1463 wert1.setObjectWert(overhead);
1464 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1465
1466
1467
1468 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGERFOLGVORSTEUERN_KEY);
1469 Double erfolgVorSteuern = new Double(vertrieb.doubleValue() + produktion.doubleValue() + beschaffung.doubleValue() + overhead.doubleValue());
1470 wert1.setObjectWert(erfolgVorSteuern);
1471 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1472
1473
1474 voreinstellung1 = CommonCalculation.SucheVoreinstellungFeldname(allgemein, Constants.VF_ALLGEMEINEVOREINSTELLUNGENSTEUERNAUFGEWINN_KEY);
1475 Double gewinnSteuer = new Double(((Double) voreinstellung1.getWertObject()).doubleValue() / 100.0);
1476 if (log.isDebugEnabled())
1477 {
1478 log.debug(" GewinnSteuer : '" + gewinnSteuer.toString() + "'");
1479 }
1480
1481
1482
1483 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGSTEUERN_KEY);
1484 Double steuernErfolgVorSteuern = new Double(0.0);
1485 if (erfolgVorSteuern.doubleValue() > 0)
1486 {
1487 steuernErfolgVorSteuern = new Double(- (erfolgVorSteuern.doubleValue() * gewinnSteuer.doubleValue()));
1488 }
1489 else
1490 {
1491 steuernErfolgVorSteuern = new Double(0.0);
1492 }
1493 wert1.setObjectWert(steuernErfolgVorSteuern);
1494 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1495
1496
1497
1498 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGERFOLGNACHSTEUERN_KEY);
1499 Double erfolgNachSteuern = new Double(erfolgVorSteuern.doubleValue() + steuernErfolgVorSteuern.doubleValue());
1500 wert1.setObjectWert(erfolgNachSteuern);
1501 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1502
1503
1504
1505 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ENTSCHEIDUNGDIVIDENDE_KEY);
1506 Double nettoDividendeENT = new Double(((Integer) wert1.getObjectWert()).doubleValue() * 1000.0);
1507 wert2 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGDIVIDENDE_KEY);
1508 Double nettoDividende = new Double(0.0);
1509 if (nettoDividendeENT.doubleValue() <= erfolgNachSteuern.doubleValue())
1510 {
1511 nettoDividende = new Double(- (nettoDividendeENT.doubleValue()));
1512 }
1513 else if (erfolgNachSteuern.doubleValue() > 0)
1514 {
1515 nettoDividende = new Double(- (erfolgNachSteuern.doubleValue()));
1516 }
1517 else
1518 {
1519 nettoDividende = new Double(0.0);
1520 }
1521 wert2.setObjectWert(nettoDividende);
1522 CommonCalculation.WertEintragen(wert2, gruppennummer, new Integer(quartal.intValue() + 1));
1523
1524
1525
1526 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ERFOLGSRECHNUNGRUECKLAGENZUFUEHRUNG_KEY);
1527 Double ruecklagenzufuehrung = new Double(erfolgNachSteuern.doubleValue() + nettoDividende.doubleValue());
1528 wert1.setObjectWert(ruecklagenzufuehrung);
1529 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1530
1531
1532
1533 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_FINANZIERUNGDIVIDENDE_KEY);
1534 wert1.setObjectWert(nettoDividende);
1535 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1536
1537
1538
1539 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_FINANZIERUNGZUVIELBEZAHLTEZINSEN_KEY);
1540 Double zuvielBezahlteZinsen =
1541 new Double(Finanzierung.zinsenZuviel(nettoDividendeVQ.doubleValue(), basiszinssatzBankdarlehen.doubleValue() * 100.0, kontokorrentkreditVQ.doubleValue(), bankdarlehenVQ.doubleValue(), optimaleAenderungKontokorrentkredit.doubleValue(), optimaleAenderungBankkredit.doubleValue(), - (zinskostenBankdarlehen.doubleValue() + zinskostenKontokorrentkredit.doubleValue())));
1542 if (zuvielBezahlteZinsen.doubleValue() < 0.0)
1543 {
1544 zuvielBezahlteZinsen = new Double(0.0);
1545 }
1546 wert1.setObjectWert(zuvielBezahlteZinsen);
1547 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1548
1549
1550
1551 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_FINANZIERUNGSTEUERN_KEY);
1552 wert1.setObjectWert(steuernErfolgVorSteuern);
1553 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1554
1555
1556
1557 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_VERMOEGENSRECHNUNGKAPITALERHOEHUNG_KEY);
1558 Double kapitalerhoehungVERM = new Double(Finanzierung.kapitalerhoehung(nettoDividende.doubleValue(), nettoDividendeVQ.doubleValue()));
1559 wert1.setObjectWert(kapitalerhoehungVERM);
1560 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1561
1562
1563
1564 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_VERMOEGENSRECHNUNGUNVERZINSLICHEVERBINDLICHKEITEN_KEY);
1565 Double unverzinslicheVerbindlichkeitenVERM = new Double(Finanzierung.unverzinslicheVerbindlichkeiten(rohstoffkaufNormalExpress.doubleValue(), -investitionskosten.doubleValue(), -nettoDividende.doubleValue(), -steuernErfolgVorSteuern.doubleValue(), -zinskostenKontokorrentkredit.doubleValue(), -zinskostenBankdarlehen.doubleValue()));
1566 wert1.setObjectWert(unverzinslicheVerbindlichkeitenVERM);
1567 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1568
1569
1570
1571 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_FINANZIERUNGLIQUIDITAETSWIRKSAMERERFOLG_KEY);
1572 Double liquiditaetswirksamerErfolgFI = new Double(umsatzerloese.doubleValue() + marketingkosten.doubleValue() + lagerungskostenFertigprodukteEUR.doubleValue() + marktforschungskosten.doubleValue() + (produktion.doubleValue() - abschreibungskosten.doubleValue()) + (beschaffung.doubleValue() - rohstoffverbrauchskosten.doubleValue()) + overhead.doubleValue());
1573 wert1.setObjectWert(liquiditaetswirksamerErfolgFI);
1574 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1575
1576
1577
1578 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_FINANZIERUNGLIQUIDITAETSAENDERUNG_KEY);
1579 Double liquiditaetsaenderung = new Double(investitionskosten.doubleValue() + - (rohstoffkaufNormalExpress.doubleValue()) + nettoDividende.doubleValue() + steuernErfolgVorSteuern.doubleValue() + liquiditaetswirksamerErfolgFI.doubleValue());
1580 wert1.setObjectWert(liquiditaetsaenderung);
1581 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1582
1583
1584
1585 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_VERMOEGENSRECHNUNGAKTIVA_KEY);
1586 Double aktiva = new Double(anlagevermoegen.doubleValue() + rohstofflagerbestand.doubleValue() + lagerbestandFertigprodukteEUR.doubleValue() + kasseN.doubleValue() + kapitalerhoehungVERM.doubleValue());
1587 wert1.setObjectWert(aktiva);
1588 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1589
1590
1591
1592 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_VERMOEGENSRECHNUNGEIGENKAPITAL_KEY);
1593 Double eigenkapital = new Double(aktiva.doubleValue() - unverzinslicheVerbindlichkeitenVERM.doubleValue() - kontokorrentkredit.doubleValue() - bankdarlehen.doubleValue());
1594 wert1.setObjectWert(eigenkapital);
1595 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1596
1597
1598
1599 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_VERMOEGENSRECHNUNGPASSIVA_KEY);
1600 Double passiva = new Double(eigenkapital.doubleValue() + unverzinslicheVerbindlichkeitenVERM.doubleValue() + kontokorrentkredit.doubleValue() + bankdarlehen.doubleValue());
1601 wert1.setObjectWert(passiva);
1602 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1603
1604
1605 Double lohnkostenProGutesStueck = new Double(Vertrieb.lohnkostenProGutesStueck(fertigungszeitproFertigprodukt.doubleValue(), lohnkosten.doubleValue(), fehleranteil.doubleValue(), nacharbeitsaufwand.doubleValue()));
1606 if (log.isDebugEnabled())
1607 {
1608 log.debug(" Lohnkosten pro gutes Stueck : '" + lohnkostenProGutesStueck.toString() + "'");
1609 }
1610
1611
1612 Double rohstoffkostenProStueck = new Double(rohstoffverbrauchStueck.doubleValue() * rohstoffwertQuartalsende.doubleValue());
1613 if (log.isDebugEnabled())
1614 {
1615 log.debug(" Rohstoffkosten pro Stueck : '" + rohstoffkostenProStueck.toString() + "'");
1616 }
1617
1618
1619 Double rohstoffkostenProGutesStueck = new Double(Vertrieb.rohstoffKostenProGutesStueck(rohstoffverbrauchStueck.doubleValue(), rohstoffkostenProStueck.doubleValue(), ausschussanteil.doubleValue()));
1620 if (log.isDebugEnabled())
1621 {
1622 log.debug(" Rohstoffkosten pro gutes Stueck : '" + rohstoffkostenProGutesStueck.toString() + "'");
1623 }
1624
1625
1626
1627 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_ENTSCHEIDUNGABSETZBAREMENGE_KEY);
1628 Double absetzbareMengeENT = new Double(((Integer) wert1.getObjectWert()).doubleValue() * 1000.0);
1629 wert1 = CommonCalculation.SucheErgebnissFeldname(aktuellesquartal, Constants.EF_FINANZIERUNGLIQUIDITAETSAENDERUNGBEIGEPLANTEMABSATZ_KEY);
1630 Double liquiditaetsaenderungBeiGeplantemAbsatz =
1631 new Double(Produktion.liquiditaetsaenderungBeiGeplantemAbsatz(erfolgVorSteuern.doubleValue(), liquiditaetsaenderung.doubleValue(), abgesetzteMenge.doubleValue(), absetzbareMengeENT.doubleValue(), verkaufspreisNominell.doubleValue(), lagerungskostenFertigprodukte.doubleValue(), lohnkostenProGutesStueck.doubleValue(), rohstoffkostenProGutesStueck.doubleValue()));
1632 wert1.setObjectWert(liquiditaetsaenderungBeiGeplantemAbsatz);
1633 CommonCalculation.WertEintragen(wert1, gruppennummer, new Integer(quartal.intValue() + 1));
1634 }
1635 catch (Exception e)
1636 {
1637 log.error("THREAD NAME : " + getName());
1638 log.error(e.getMessage(), e);
1639 }
1640
1641 if (log.isDebugEnabled())
1642 {
1643 log.debug(" (F) Verarbeitung \"BerechneHauptwerte\" fuer Gruppe \"" + gruppennummer + "\", Quartal \"" + quartal + "\" abgeschlossen");
1644 }
1645 }
1646 else
1647 {
1648 log.error(" WICHTIGE DATEN FUER DEN THREAD WURDEN NICHT FESTGELEGT. STOPPE VERARBEITUNG !!! ");
1649 }
1650
1651 synchronized (lock)
1652 {
1653 try
1654 {
1655 if (log.isDebugEnabled())
1656 {
1657 log.debug(" (N) Verstaendige andere Threads, ich bin fertig. THREAD NAME : " + getName());
1658 }
1659
1660
1661 lock.incrementSemaphore();
1662
1663 lock.wait(3600000);
1664
1665 lock.decrementSemaphore();
1666
1667 if (log.isDebugEnabled())
1668 {
1669 log.debug(" FINALIZING THREAD. " + getName());
1670 }
1671
1672
1673 lock.decrementFinishSemaphore();
1674 }
1675 catch (Exception e)
1676 {
1677 log.error("THREAD NAME : " + getName());
1678 log.error(e.getMessage(), e);
1679 }
1680 }
1681 }
1682
1683
1684
1685 /***
1686 * GET Methode
1687 *
1688 * @return Gruppennummer
1689 */
1690 public Integer getGruppennummer()
1691 {
1692 return gruppennummer;
1693 }
1694
1695 /***
1696 * GET Methode
1697 *
1698 * @return Projektnummer
1699 */
1700 public Integer getProjektnummer()
1701 {
1702 return projektnummer;
1703 }
1704
1705 /***
1706 * GET Methode
1707 *
1708 * @return Quartal
1709 */
1710 public Integer getQuartal()
1711 {
1712 return quartal;
1713 }
1714
1715 /***
1716 * SET Methode
1717 *
1718 * @param gruppennummer Die Gruppennummer
1719 */
1720 public void setGruppennummer(Integer gruppennummer)
1721 {
1722 this.gruppennummer = gruppennummer;
1723 }
1724
1725 /***
1726 * SET Methode
1727 *
1728 * @param projektnummer Die Projektnummer
1729 */
1730 public void setProjektnummer(Integer projektnummer)
1731 {
1732 this.projektnummer = projektnummer;
1733 }
1734
1735 /***
1736 * SET Methode
1737 *
1738 * @param quartal Das Quartal
1739 */
1740 public void setQuartal(Integer quartal)
1741 {
1742 this.quartal = quartal;
1743 }
1744 }