Codeblock Onlinehilfe

TBeAbsenceBusinessController

TBeAbsenceBusinessController

Die Klasse TBeAbsenceBusinessController kapselt Eigenschaften und Funktionen zur Verwaltung von Mitarbeiter Abwesenheiten, Ressourcen Ausfällen und Feiertagen.

Hinweis

  • Für alle Aktionen muss auf dem Daten-Modul eine Transaktion aktiv sein. Der TBeAbsenceBusinessController führt keinen BDE-Monatskonto-Reorg bzw. Feiertags-Reorg durch, dieser muss manuell ausgelöst werden.

Eigenschaften

Eigenschaft

Beschreibung

CbDataModule:O

Daten-Modul, für alle Funktionen und Methoden die Daten verändern / erzeugen muss auf diesem Daten-Modul eine Transaktion gestartet werden

Name:C


Tag:N


Methoden

Methode

Beschreibung

CbCreateNewPersonnelAbsence(aPersNo:N, aAbsenceDate:N, aValues:U):N

Neue Mitarbeiter Abwesenheit anlegen Ist bereits ein Eintrag zu diesem Datum & Mitarbeiter vorhanden, werden die Wert-Felder geleert und mit den neuen Werten überschrieben. Rückgabe ist die Datensatz-ID des erstellten Eintrags.

CbDeletePersonnelAbsence(aPersNo:N, aAbsenceDate:N):L

Mitarbeiter Abwesenheit löschen Rückgabe True, wenn Datensatz gefunden & gelöscht wurde, sonst False

CbCreateNewResourceAbsence(aResID:N, aAbsenceDate:N, aAbsenceHours:N):N

Neuen Ressourcen Ausfall anlegen Rückgabe ist die Datensatz-ID des erstellten Eintrags

CbDeleteResourceAbsence(aResID:N, aAbsenceDate:N):L

Ressourcen Ausfall löschen Rückgabe True, wenn Datensatz gefunden & gelöscht wurde, sonst False

CbCreateNewHoliday(aDate:N, aRate:N):N

Neuen Feiertags Eintrag anlegen Rückgabe ist die Datensatz-ID des erstellten Eintrags

CbDeleteHoliday(aDate:N):L

Feiertags Eintrag löschen Rückgabe True, wenn Datensatz gefunden & gelöscht wurde, sonst False

CbCreateNewShutdownPeriod(aDate:N, aDescription:C):N


CbDeleteShutdownPeriod(aDate:N):L


CbIDByEntryTypeAndDate(aEntryType:N, aID:N, aAbsenceDate:N):N

Eintrag nach Typ & Datum suchen Rückgabe ist die Datensatz-ID des gefundenen Eintrags, sonst -1

CbResetCache_HolidayShutdownPeriod()

Löscht alle gecachten Feiertage- und Betriebsruhe-Einträge.Alle erneuten Zugriffe auf Feiertage oder Betribsruhen, erfolgen dann erst über die Dab272 und werden dann wieder gecacht.

Beispiel

//##############################################################################
//##############################################################################
// Beschreibung: TBeAbsenceBusinessController
//##############################################################################
//##############################################################################

| m_oAbsBC, m_oDM, oDab272, aAbsence |

m_oDM := CreateObject('TBeDbGet'),
startseq
   m_oAbsBC := CreateObject('TBeAbsenceBusinessController'),  // Kontroller
   startseq
      m_oAbsBC.CbDataModule := m_oDM,
      startseq,

         DbStartTrans(m_oDM.AdsConnection),
         startseq
            // Mitarbeiter-Abwesenheits-Eintrag löschen
            m_oAbsBC.CbDeletePersonnelAbsence(1, today()-6),

            // Ausfall-Eintrag einer Ressource löschen
            m_oAbsBC.CbDeleteResourceAbsence(9, today()),

            // Feiertag löschen
            m_oAbsBC.CbDeleteHoliday(CToD('31.12.19')),

            if jn('Löschungen wirklich übernehmen?') then
               DbCommit(m_oDM.AdsConnection),
            else
               DbRollback(m_oDM.AdsConnection),
            endif,
         always
            if DbInTrans(m_oDM.AdsConnection) then
               DbRollback(m_oDM.AdsConnection),
               DbResetDm(m_oDM),
            endif,
         stopseq,

         DbStartTrans(m_oDM.AdsConnection),
         startseq
            // Neuen Mitarbeiter-Abwesenheits-Eintrag anlegen
            aAbsence := {
                         //{ahIllness, 0.25},
                         {ahAdvancedEducation, 0.5},
                         //{ahVocationalSchool, 1},
                         //{ahShortTime, 1.25},
                         //{ahSpecialLeave, 1.5},
                         //{ahIndustrialAccident, 1.75},
                         //{ahBusinessTrip, 2},
                         //{ahMaternityLeave, 1},
                         //{ahParentalLeave, 1},
                         {ahVacation, 0.5}
                         //, {ahCompTime, False}
                         },
            m_oAbsBC.CbCreateNewPersonnelAbsence(1, today()-6, aAbsence),

            // Neuen (5 Stunden) Ausfall-Eintrag einer Ressource anlgen
            m_oAbsBC.CbCreateNewResourceAbsence(9, today(), 5),

            // (Halben) Feiertag anlegen
            m_oAbsBC.CbCreateNewHoliday(CToD('31.12.19'), 50),

            if jn('Änderungen wirklich übernehmen?') then
               DbCommit(m_oDM.AdsConnection),
            else
               DbRollback(m_oDM.AdsConnection),
            endif,
         always
            if DbInTrans(m_oDM.AdsConnection) then
               DbRollback(m_oDM.AdsConnection),
               DbResetDm(m_oDM),
            endif,
         stopseq,

         // Eintag zu einem Datum suchen
         m_oAbsBC.CbIDByEntryTypeAndDate(aetHoliday, 0, CToD('31.12.19')),
         m_oAbsBC.CbIDByEntryTypeAndDate(aetResource, 9, today()),
         m_oAbsBC.CbIDByEntryTypeAndDate(aetPersonnel, 2, today()),
      onerror
         Meld(GetErrorText()),
         raise(),
      stopseq,
   always,
      DestroyObject(m_oAbsBC),
   stopseq,
always
   DestroyObject(m_oDM),
stopseq,