import at.clockwork.calculation.CalculationData import at.clockwork.calculation.data.* import at.clockwork.calculation.GeneralCalculationData import at.clockwork.time.service.DateTimeService import at.clockwork.calculation.RestartCalculationException import at.clockwork.common.service.* import at.clockwork.common.domain.* import at.clockwork.time.domain.* import at.clockwork.transfer.gwtTransfer.client.* import at.clockwork.utility.CWTimeFormatter import grails.util.Holders class Calc99951Service { static transactional = false def personCategoryNotTransactionalService = Holders.grailsApplication.mainContext.getBean 'personCategoryNotTransactionalService' def personCategoryAdditionalDataNotTransactionalService = Holders.grailsApplication.mainContext.getBean 'personCategoryAdditionalDataNotTransactionalService' def personAdditionalDataNotTransactionalService = Holders.grailsApplication.mainContext.getBean 'personAdditionalDataNotTransactionalService' def absencePlanningNotTransactionalService = Holders.grailsApplication.mainContext.getBean 'absencePlanningNotTransactionalService' def timeTimeTypeNotTransactionalService = Holders.grailsApplication.mainContext.getBean 'timeTimeTypeNotTransactionalService' def run(CalculationData calculationData, GeneralCalculationData generalCalculationData, boolean saving, Map parameters) throws RestartCalculationException { String absenceNumber = _cd.getAbsencePlanningNumber() _yV[101] = _getDV("1") _yV[104] = _getDV("4") _yV[105] = _getDV("5") _yV[106] = _getDV("6") _yV[107] = _getDV("7") _yV[113] = _getDV("13") _yV[114] = _getDV("14") _yV[117] = _getDV("17") _yV[118] = _getDV("18") _yV[119] = _getDV("19") _yV[122] = _getDV("22") _yV[132] = _getDV("32") _yV[133] = _getDV("33") _yV[137] = _getDV("37") _yV[140] = _getDV("40") _yV[141] = _getDV("41") _yV[142] = _getDV("42") if ( _getDV("37") > 0 || absenceNumber == "37" ) { _setDV( [ "13", "14", "15", "16", "17", "18", "19" ], 0 ) _setDV( "6", _getDV( "37" ) ) return } if ( _getDV("32") > 0 || absenceNumber == "32" || _getDV("33") > 0 || absenceNumber == "33" || _getDV("40") > 0 || absenceNumber == "40" || _getDV("41") > 0 || absenceNumber == "41" || _getDV("42") > 0 || absenceNumber == "42" ) { executeScript101( calculationData ) return } if ( _getDV( "7" ) > 0 ) _setDV( "22", 0 ) if ( _getDV( "22" ) > 0 ) executeScript101( calculationData ) return } void executeScript101( CalculationData calculationData ) { _comment( "Person: ${ _cd.person }") _comment( "Datum: ${ _cd.getDate().format("dd.MM.yyyy") }") // TODO: SCRIPT_101 ausfuehren // Berechnung und Dokumentation Date date = _cd.getDate() int anzahlDurchnitt = 90 int minAnzahlDurchnitt = 99945 double minFZ = ( _cd.getAdditionalData( "ZUSN8" ) ?: 0 ) * 60 _comment( "minimumFehlzeit : ${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, minFZ) }") if ( minFZ > 0 && _getDV(22) > 0 ) _setV( "D22", minFZ ) if ( minFZ > 0 && _getDV(32) > 0 ) _setV( "D32", minFZ ) if ( minFZ > 0 && _getDV(33) > 0 ) _setV( "D33", minFZ ) if ( minFZ > 0 && _getDV(37) > 0 ) _setV( "D37", minFZ ) if ( minFZ > 0 && _getDV(40) > 0 ) _setV( "D40", minFZ ) if ( minFZ > 0 && _getDV(41) > 0 ) _setV( "D41", minFZ ) if ( minFZ > 0 && _getDV(42) > 0 ) _setV( "D42", minFZ ) if ( minFZ > 0 ) _setV( "D1", minFZ ) if ( minFZ > 0 ) _setV( "D6", minFZ ) if ( minFZ > 0 ) _setV( [ "D13", "D14", "D15", "D16", "D17", "D18", "D19" ], 0 ) if ( minFZ > 0 ) return List personCategories = _cd.getPersonCategories( "department" ) boolean inklusiveFehlgruende = false double abtlZusN4 = _cd.getAdditionalData( personCategories, "ZUSN4" ) ?: 0 double abtlZusN5 = _cd.getAdditionalData( personCategories, "ZUSN5" ) ?: 0 double zusN5 = _cd.getAdditionalData( "ZUSN5" ) ?: 0 double ftae = _getV( "D7" ) double gruppierung = abtlZusN5 if ( abtlZusN4 == 1 ) inklusiveFehlgruende = true if ( zusN5 != 0 ) gruppierung = zusN5 List gruppierungPersonCategories = personCategoryAdditionalDataNotTransactionalService.getPersonCategories( [ "department" ], false, "ZUSN5", date, gruppierung ) if ( zusN5 != 0 ) { for ( PersonCategory itPersonCategory in gruppierungPersonCategories ) { abtlZusN4 = _cd.getAdditionalData( itPersonCategory, "ZUSN4" ) ?: 0 inklusiveFehlgruende = abtlZusN4 == 1 ? true : false // es interessiert nur der erste Eintrag !? break } } PersonCategory firstPersonCategory if ( personCategories.size() > 0 ) { firstPersonCategory = personCategories.get(0) if (!firstPersonCategory) return _comment( "Abteilung: ${firstPersonCategory.name} ${firstPersonCategory.description}, Berechnungsmethode: ${inklusiveFehlgruende ? "Divisor: inkl. Krank, Arbeitsunfall" : "Divisor: nur Answesende" }" ) } _comment( "Personen der hinterlegten Gruppierung ${(int) gruppierung}:" ) List persons = [] List dummyPersons = [] if ( gruppierungPersonCategories.size() > 0 ) dummyPersons += personCategoryNotTransactionalService.getPersons( gruppierungPersonCategories ) dummyPersons += personAdditionalDataNotTransactionalService.getPersons( "ZUSN5", date, gruppierung ) dummyPersons.unique() for( Person itPerson in dummyPersons ) { if ( itPerson.noTimeActive ) continue if ( _cd.getDateOfSeparation() && _cd.getDateOfSeparation() < date ) continue zusN5 = _cd.getAdditionalData( itPerson, "ZUSN5" ) ?: 0 if ( zusN5 != 0 && zusN5 != gruppierung ) continue persons += itPerson } persons.sort { it.number.padLeft(20, " ") } int divisor = 0 double sum6 = 0 double sum7 = 0 double sum13 = 0 double sum14 = 0 double sum17 = 0 double sum18 = 0 double wert6 = 0 double wert7 = 0 double wert13 = 0 double wert14 = 0 double wert17 = 0 double wert18 = 0 List absencePlannings = absencePlanningNotTransactionalService.getAbsencePlannings( persons, date, date ) Map absencePlanningsMap = GrailsToolsService.transformListToMap( absencePlannings, ["person.id"] ) List timeTimeTypeNumbers = [ "5", "6", "7", "13", "14", "17", "18", "19" ] List timeTimeTypes = timeTimeTypeNotTransactionalService.getTimeTimeTypesByNumbers( timeTimeTypeNumbers ) List timeTimeTypeDatas = timeTimeTypeNotTransactionalService.getTimeTimeTypeData(persons, date, date, timeTimeTypes) Map timeTimeTypeDatasMap = GrailsToolsService.transformListToMap( timeTimeTypeDatas, ["person.id", "date", "timeTimeType.number" ] ) persons.each { Person itPerson -> AbsencePlanning itAbsencePlanning = absencePlanningsMap.get( itPerson.id ) double dv5 = timeTimeTypeDatasMap.get( itPerson.id )?.get(date)?.get( "5" )?.dayValue ?: 0 double dv6 = timeTimeTypeDatasMap.get( itPerson.id )?.get(date)?.get( "6" )?.dayValue ?: 0 double dv7 = timeTimeTypeDatasMap.get( itPerson.id )?.get(date)?.get( "7" )?.dayValue ?: 0 double dv13 = timeTimeTypeDatasMap.get( itPerson.id )?.get(date)?.get( "13" )?.dayValue ?: 0 double dv14 = timeTimeTypeDatasMap.get( itPerson.id )?.get(date)?.get( "14" )?.dayValue ?: 0 double dv17 = timeTimeTypeDatasMap.get( itPerson.id )?.get(date)?.get( "17" )?.dayValue ?: 0 double dv18 = timeTimeTypeDatasMap.get( itPerson.id )?.get(date)?.get( "18" )?.dayValue ?: 0 double dv19 = timeTimeTypeDatasMap.get( itPerson.id )?.get(date)?.get( "19" )?.dayValue ?: 0 boolean hasFree = false boolean isCalculated = false Absence absence if ( itAbsencePlanning?.absencePlanningDetails?.size() > 0 ) absence = itAbsencePlanning.absencePlanningDetails.first().absence if ( !absence && dv5 == 0 ) hasFree = true //println " itPerson=$itPerson, absence=$absence, inklusiveFehlgruende=$inklusiveFehlgruende, dv5=$dv5, isCalculated=$isCalculated" if ( absence && inklusiveFehlgruende && [ "32", "33", "37"].any{ it == absence.number } ) isCalculated = true if ( dv5 > 0 ) isCalculated = true //println " isCalculated=$isCalculated" if ( isCalculated ) divisor++ String outputValues = "" if ( !absence && !hasFree ) { outputValues += ", Grundlohn=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, dv6) }" sum6 += dv6 outputValues += ", AZ am Feiertag=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, dv7) }" sum7 += dv7 outputValues += ", 50%=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, dv13) }" sum13 += dv13 outputValues += ", 50b%=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, dv14) }" sum14 += dv14 outputValues += ", 100%=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, dv17 + dv19 ) }" sum17 += ( dv17 + dv19 ) outputValues += ", 100b%=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, dv18) }" sum18 += dv18 } String output = "" if ( isCalculated ) output = "$divisor".padLeft( 4, " " ) output = output.padRight( 5, " " ) output += "${itPerson.number} ${itPerson.surname} ${itPerson.firstname}" output = output.padRight( 44, " " ) if ( isCalculated && itPerson.id != _cd.person.id ) output += ( " " + outputValues ) output = output.padRight( 110, " " ) if ( absence || hasFree ) output += ", Fehlgrund=${absence?.description_de ?: "frei"}" if ( itPerson.id == _cd.person.id && _getV( "D22" ) > 0 ) output += ", Feiertag" _comment( output ) } _comment( "" ) Absence absence AbsencePlanning absencePlanning = absencePlanningsMap.get( _cd.person.id ) if ( absencePlanning?.absencePlanningDetails?.size() > 0 ) absence = absencePlanning.absencePlanningDetails.first().absence _comment( "Divisor: $divisor" ) _comment( "Summe Grundlohn (6)=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, sum6) }" ) _comment( "Summe Arbeitszeit am Feiertag (7)=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, sum7) }" ) _comment( "Summe 50% (13)=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, sum13) }" ) _comment( "Summe 50b% (14)=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, sum14) }" ) _comment( "Summe 100% (17)=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, sum17 ) }" ) _comment( "Summe 100b% (18)=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, sum18) }" ) _comment( "" ) if (divisor == 0 ) { _comment( "Divisor ist 0 -> dadurch keine Berechnung" ) if ( _getV( "D22" ) > 0 ) _setV( "D6", 8*60 ) return } wert6 = sum6 / divisor wert7 = sum7 / divisor wert13 = sum13 / divisor wert14 = sum14 / divisor wert17 = sum17 / divisor wert18 = sum18 / divisor double dSumWert6 = 0 double dSumWert7 = 0 double dSumWert13 = 0 double dSumWert14 = 0 double dSumWert17 = 0 double dSumWert18 = 0 int dCounter = 0 int tage = 0 _comment( "Basis für die Durchschnittsberechnung der letzten $anzahlDurchnitt Tage" ) Date startDate2 = date-anzahlDurchnitt Date endDate2 = date-1 timeTimeTypeNumbers = [ "1", "5", "6", "7", "13", "14", "17", "18", "19", "47" ] timeTimeTypes = timeTimeTypeNotTransactionalService.getTimeTimeTypesByNumbers( timeTimeTypeNumbers ) timeTimeTypeDatas = timeTimeTypeNotTransactionalService.getTimeTimeTypeData( [_cd.person], startDate2, endDate2, timeTimeTypes) timeTimeTypeDatasMap = GrailsToolsService.transformListToMap( timeTimeTypeDatas, [ "person.id", "date", "timeTimeType.number" ] ) for ( itDate in endDate2 .. startDate2 ) { double dv1 = timeTimeTypeDatasMap.get( _cd.person.id )?.get(itDate)?.get( "1" )?.dayValue ?: 0 double dv5 = timeTimeTypeDatasMap.get( _cd.person.id )?.get(itDate)?.get( "5" )?.dayValue ?: 0 double dv6 = timeTimeTypeDatasMap.get( _cd.person.id )?.get(itDate)?.get( "6" )?.dayValue ?: 0 double dv7 = timeTimeTypeDatasMap.get( _cd.person.id )?.get(itDate)?.get( "7" )?.dayValue ?: 0 double dv13 = timeTimeTypeDatasMap.get( _cd.person.id )?.get(itDate)?.get( "13" )?.dayValue ?: 0 double dv14 = timeTimeTypeDatasMap.get( _cd.person.id )?.get(itDate)?.get( "14" )?.dayValue ?: 0 double dv17 = timeTimeTypeDatasMap.get( _cd.person.id )?.get(itDate)?.get( "17" )?.dayValue ?: 0 double dv18 = timeTimeTypeDatasMap.get( _cd.person.id )?.get(itDate)?.get( "18" )?.dayValue ?: 0 double dv19 = timeTimeTypeDatasMap.get( _cd.person.id )?.get(itDate)?.get( "19" )?.dayValue ?: 0 double dv47 = timeTimeTypeDatasMap.get( _cd.person.id )?.get(itDate)?.get( "47" )?.dayValue ?: 0 if ( dv5 != 0 && dv5 == dv1 ) { _comment( "${ itDate.format("dd.MM.yyyy") }" + "Grundlohn=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, dv6-dv47) }, " + "AZ am Feiertag=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, dv7) }, " + "50%=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, dv13) }, " + "50b%=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, dv14) }, " + "100%=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, dv17 ) }, " + "100b%=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, dv18) }" ) dSumWert6 += (dv6 - dv47) dSumWert7 += dv7 dSumWert13 += dv13 dSumWert14 += dv14 dSumWert17 += dv17 dSumWert18 += dv18 tage++ } dCounter++ } _comment( "" ) double dWert6 = 0 double dWert7 = 0 double dWert13 = 0 double dWert14 = 0 double dWert17 = 0 double dWert18 = 0 if ( tage > 0 ) { dWert6 = dSumWert6 / tage dWert7 = dSumWert7 / tage dWert13 = dSumWert13 / tage dWert14 = dSumWert14 / tage dWert17 = dSumWert17 / tage dWert18 = dSumWert18 / tage } wert6 = _commercialRounded( wert6 ) wert7 = _commercialRounded( wert7 ) wert13 = _commercialRounded( wert13 ) wert14 = _commercialRounded( wert14 ) wert17 = _commercialRounded( wert17 ) wert18 = _commercialRounded( wert18 ) dWert6 = _commercialRounded( dWert6 ) dWert7 = _commercialRounded( dWert7 ) dWert13 = _commercialRounded( dWert13 ) dWert14 = _commercialRounded( dWert14 ) dWert17 = _commercialRounded( dWert17 ) dWert18 = _commercialRounded( dWert18 ) _comment( "Zwischenberechnung der letzten $anzahlDurchnitt Tage (es wurden $tage relevante Tage für die Durchschnittsberechnung gefunden - mindestens $minAnzahlDurchnitt Tage sind notwendig):") _comment( "errechneter Grundlohn (Zeitart 6): ${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, dWert6) }") _comment( "errechnete Arbeitszeit am Feiertag (Zeitart 7): ${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, dWert7) }") _comment( "errechnete 50% (Zeitart 13): ${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, dWert13) }") _comment( "errechnete 50b% (Zeitart 14): ${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, dWert14) }") _comment( "errechnete 100% (Zeitart 17): ${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, dWert17) }") _comment( "errechnete 100b% (Zeitart 18): ${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, dWert18) }") _comment( "" ) _comment( "Zwischenberechnung (Basis Gruppe):") _comment( "errechneter Grundlohn (Zeitart 6): ${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, wert6) }") _comment( "errechnete Arbeitszeit am Feiertag (Zeitart 7): ${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, wert7) }") _comment( "errechnete 50% (Zeitart 13): ${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, wert13) }") _comment( "errechnete 50b% (Zeitart 14): ${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, wert14) }") _comment( "errechnete 100% (Zeitart 17): ${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, wert17) }") _comment( "errechnete 100b% (Zeitart 18): ${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, wert18) }") _comment( "" ) double dSumme = dWert6 + dWert7 + dWert13 + dWert14 + dWert17 + dWert18 double gSumme = wert6 + wert7 + wert13 + wert14 + wert17 + wert18 if ( dSumme < gSumme && tage >= minAnzahlDurchnitt && _getV( "D22" ) == 0 ) { _comment( "Für die Berechnung der Fehlzeit wird der Durchschnitt der letzten $anzahlDurchnitt Tage verwendet! " + "(Gruppe=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, gSumme) }, " + "Durchschnitt=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, dSumme) })" ) wert6 = dWert6 wert7 = dWert7 wert13 = dWert13 wert14 = dWert14 wert17 = dWert17 wert18 = dWert18 wert13 += wert7 wert7 = 0 } else { _comment( "Für die Berechnung der Fehlzeit wird die Gruppenberechnung verwendet! (Gruppe=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, gSumme) }, " + "Durchschnitt=${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, dSumme) })" ) } _comment( "" ) double umbuchung = 0 if ( ftae == 0 && wert6 < 8*60 ) { umbuchung = _min( 480-wert6, wert17 ) wert6 += umbuchung wert17 -= umbuchung } if ( ftae == 0 && wert6 < 8*60 ) { umbuchung = _min( 480-wert6, wert18 ) wert6 += umbuchung wert18 -= umbuchung } if ( ftae == 0 && wert6 < 8*60 ) { umbuchung = _min( 480-wert6, wert13 ) wert6 += umbuchung wert13 -= umbuchung } if ( ftae == 0 && wert6 < 8*60 ) { umbuchung = _min( 480-wert6, wert14 ) wert6 += umbuchung wert14 -= umbuchung } if ( _getV( "D22" ) > 0 ) { wert6 = wert7 wert7 = 0 } if ( _getV( "D22" ) == 0 ) _comment( "finale Berechnung (Grundlohn wird auf 8:00 aufgefüllt):" ) if ( _getV( "D22" ) > 0 ) _comment( "finale Berechnung (nur die Stunden von 'errechnete Arbeitszeit am Feiertag' werden als Grundlohn gerechnet) - jedoch maximal 8:00:" ) if ( ( _getV( "D40" ) > 0 || _getV( "D41" ) > 0 || _getV( "D42" ) > 0 ) && wert6 < 8*60 ) wert6 = 8*60 if ( _getV( "D22" ) > 0 ) wert6 = 8*60 _comment( "errechneter Grundlohn (Zeitart 6): ${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, wert6) }" ) _comment( "errechnete Arbeitszeit am Feiertag (Zeitart 7): ${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, wert7) }" ) _comment( "errechnete 50% (Zeitart 13): ${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, wert13) }" ) _comment( "errechnete 50b% (Zeitart 14): ${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, wert14) }" ) _comment( "errechnete 100% (Zeitart 17): ${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, wert17) }" ) _comment( "errechnete 100b% (Zeitart 18): ${ CWTimeFormatter.getString(TimeFormatEnum.HHMM, wert18) }" ) _setV( "D6", wert6 ) _setV( "D7", wert7 ) _setV( "D13", wert13 + wert14 ) _setV( "D14", 0 ) _setV( "D17", wert17 + wert18 ) _setV( "D18", 0 ) _setV( "D4", 0 ) _setV( "D5", 0 ) _setV( "D1", 0 ) _setV( "D1", 1 ) _setV( "D1", 520 ) _setV( "D1", _getV( "D6" ) + _getV( "D7" ) + _getV( "D13" ) + _getV( "D14" ) + _getV( "D17" ) + _getV( "D18" ) ) } } /* ::2:: IF FUNC ZA_1 DO =_YVAR_101 ; ::3:: IF FUNC ZA_4 DO =_YVAR_104 ; ::4:: IF FUNC ZA_5 DO =_YVAR_105 ; ::5:: IF FUNC ZA_6 DO =_YVAR_106 ; ::6:: IF FUNC ZA_7 DO =_YVAR_107 ; ::7:: IF FUNC ZA_13 DO =_YVAR_113 ; ::8:: IF FUNC ZA_14 DO =_YVAR_114 ; ::9:: IF FUNC ZA_17 DO =_YVAR_117 ; ::10:: IF FUNC ZA_18 DO =_YVAR_118 ; ::11:: IF FUNC ZA_19 DO =_YVAR_119 ; ::12:: IF FUNC ZA_22 DO =_YVAR_122 ; ::13:: IF FUNC ZA_32 DO =_YVAR_132 ; ::14:: IF FUNC ZA_33 DO =_YVAR_133 ; ::15:: IF FUNC ZA_37 DO =_YVAR_137 ; ::16:: IF FUNC ZA_40 DO =_YVAR_140 ; ::17:: IF FUNC ZA_41 DO =_YVAR_141 ; ::18:: IF FUNC ZA_42 DO =_YVAR_142 ; ::21:: IF ZA_32 > ZT_0:00 ODER VAR_EXPLIZITEFEHLZEITPLANUNG = NW_32 FUNC GOTO_GOON DO ; ::22:: IF ZA_33 > ZT_0:00 ODER VAR_EXPLIZITEFEHLZEITPLANUNG = NW_33 FUNC GOTO_GOON DO ; ::23:: IF ZA_37 > ZT_0:00 ODER VAR_EXPLIZITEFEHLZEITPLANUNG = NW_37 FUNC GOTO_ZA37 DO ; ::24:: IF ZA_40 > ZT_0:00 ODER VAR_EXPLIZITEFEHLZEITPLANUNG = NW_40 FUNC GOTO_GOON DO ; ::25:: IF ZA_41 > ZT_0:00 ODER VAR_EXPLIZITEFEHLZEITPLANUNG = NW_41 FUNC GOTO_GOON DO ; ::26:: IF ZA_42 > ZT_0:00 ODER VAR_EXPLIZITEFEHLZEITPLANUNG = NW_42 FUNC GOTO_GOON DO ; ::28:: IF ZA_7 > ZT_0:00 FUNC ZA_22 DO -_ZA_22 +_ZA_1 ; ::30:: IF ZA_7 = ZT_0:00 UND NW_0 > NW_1 FUNC ZA_22 DO -_ZA_22 ; ::31:: IF FUNC ZA_32 + ZA_1 DO ; ::32:: IF ZA_22 > ZT_0:00 FUNC GOTO_GOON DO ; ::34:: IF FUNC RETURN_ DO ; ::GOON:: IF FUNC DO ; ::36:: IF FUNC SCRIPT_101 DO ; ::39:: IF FUNC RETURN_ DO ; ::ZA37:: IF FUNC DO ; ::40:: IF FUNC ZT_0:00 DO =_ZA_13 =_ZA_14 =_ZA_15 =_ZA_16 =_ZA_17 =_ZA_18 =_ZA_19 ; ::41:: IF FUNC ZA_37 DO =_ZA_6 ; ::42:: IF FUNC ZA_32 + ZA_1 DO ; ::43:: IF FUNC RETURN_ DO ; */