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,