Technische Beschreibung¶
Valuation Settings (Tabelle 5250123)¶
Diese Tabelle ist der zentrale Dreh- und Angelpunkt während des Bewertungsablaufes.
Diese Tabelle wird nur Temporär genutzt und wird während des Startes in der Codeunit Employee Valuation initialisiert und befindet sich dann in den Events zur Datenauslesung bzw. um die Funktionen zu nutzen.
In den Feldern CurrentMonth, CurrentMonthStart, CurrentMonthEnd wird der aktuelle Monat der gerade bewertet wird festgehalten. In den Feldern ValuationMonth, ValuationStart, ValuationEnd wird der komplette Bewertungszeitraum festgehalten, dies können dann durchaus 3 Monate aufgrund von Korrekturen sein. Der PostingType gibt an ob es sich um Echt oder Probebewertungen handelt.
GetMessageObject (Methode)¶
Diese Methode liefert das Messageobjekt, in welches zusätzliche Nachrichten (Fehler / Warnungen) geschrieben werden können. Für die Nutzung dieses Objektes schauen sie sich ein Beispiel für eine eigene Implementation von Hinweisen bzw. Fehlern in der Bewertung an.
procedure GetMessageObject(
var MessagesObject: Codeunit "BSSSP Temporary Messages")
Parameter¶
MessagesObject (Codeunit "BSSSP Temporary Messages") Dieser Parameter gibt das MessageObjekt als Referenz zurück.
GetEmployee (Methode)¶
Diese Methode liefert den aktuellen Mitarbeiter zurück, der bewertet wird.
procedure GetEmployee(
var CurrentEmployee: Record "BSSSP Employee")
Parameter¶
CurrentEmployee (Record "BSSSP Employee") Dieser Parameter gibt den Mitarbeiter als Referenz zurück.
GetEmployeeEntries (Methode)¶
Diese Methode liefert die aktuellen Mitarbeiterposten zurück.
procedure GetEmployeeEntries(
var Result: Record "BSSSP Employee Entry" temporary)
Parameter¶
Result (Record "BSSSP Employee Entry") Dieser Parameter gibt die Posten zurück.
GetAbsenceEntries (Methode)¶
Diese Methode liefert die aktuellen Abwesenheitsposten zurück.
procedure GetAbsenceEntries(
var Result: Record "BSSSP Absence Entry" temporary)
Parameter¶
Result (Record "BSSSP Absence Entry") Dieser Parameter gibt die Posten zurück.
GetServiceTypeEntries (Methode)¶
Diese Methode liefert die aktuellen Leistungsartenposten zurück.
procedure GetServiceTypeEntries(
var Result: Record "BSSSP Service Type Entry" temporary)
Parameter¶
Result (Record "BSSSP Service Type Entry") Dieser Parameter gibt die Posten zurück.
GetWorkTimeEntries (Methode)¶
Diese Methode liefert die aktuellen Arbeitszeitposten zurück.
procedure GetWorkTimeEntries(
var Result: Record "BSSSP Working Time Entry" temporary)
Parameter¶
Result (Record "BSSSP Working Time Entry") Dieser Parameter gibt die Posten zurück.
Bewertungspuffer Methoden
Die folgenden Methoden dienen dazu den Leistungsartenpuffer mit neuen Werten zu versehen, hierbei werden über eine Bewertungspuffertabelle die Werte erzeugt.
Der Ablauf ist hierbei immer derselbe:
- ResetValuationBuffer
- InsertValuationBuffer -> 1 Zeile
- ...
- InsertValuationBuffer -> xte Zeile
- CommitValuationBufferToServiceTypeEntries (Übernahme des Puffer in die Leistungsartenposten)
ResetValuationBuffer (Methode)¶
Diese Methode setzt den Bewertungspuffer zurück.
procedure ResetValuationBuffer()
Parameter¶
Keine
InsertValuationBuffer (Methode)¶
Diese Methode fügt einen Posten in den Puffer ein, aktuell hat die Methode 2 Signaturen:
procedure InsertValuationBuffer(
var ServiceType: Record "BSSSP Service Type";
DetailBuffer: Record "BSSSP ValuationBuffer" temporary): Guid
procedure InsertValuationBuffer(
var ServiceType: Record "BSSSP Service Type";
CurrDate: Date;
CurrDays: Decimal;
CurrQuantity: Decimal;
CurrDescription: Text): Guid
procedure InsertValuationBuffer(
var ServiceType: Record "BSSSP Service Type";
CurrDate: Date;
CurrDays: Decimal;
CurrDescription: Text): Guid
Parameter¶
ServiceType (Record "BSSSP Service Type") Die Leistungsart die verwendet wird, diese gibt z.B. Statistikart / Klassifizierung vor.
DetailBuffer (Record "BSSSP ValuationBuffer" temporary) Gibt den Puffer an der verwendet werden soll um den Posten zu bilden
CurrDate (Date) Das Datum für den Posten.
CurrDays (Decimal) Füllt im Leistungsartenposten das Feld Tage.
CurrQuantity (Decimal) Füllt im Leistungsartenposten das Feld Menge.
CurrDescription (Decimal) Füllt im Leistungsartenposten das Feld Beschreibung.
Rückgabewert¶
Guid Gibt die Systemid des temporären Postens zurück
CommitValuationBufferToServiceTypeEntries (Methode)¶
Diese Methode wandelt den Bewertungspuffer in Posten für den Leistungsartenpuffer um die nach der Bewertung fest geschrieben werden.
procedure CommitValuationBufferToServiceTypeEntries()
Parameter¶
Keine
Employee Valuation (Codeunit 5250200)¶
Diese Codeunit stellt die oberste Ebene der Mitarbeiterbewertung dar. Sie ermittelt alle Bewertungen angefangen vom Aufrolldatum des Mitarbeiters bis hin zum aktuellen Bewertungsmonat des Mandanten.
Valuation (Methode)¶
Diese Methode ist öffentlich zugänglich und startet die Bewertung eines einzelnen Mitarbeiters.
Die Methode hat die folgenden 3 möglichen Ausprägungen und gibt einen Boolean zurück, abhängig davon ob diese erfolgreich ausgeführt werden konnte.
procedure Valuation(
var Employee: Record "BSSSP Mitarbeiter") Successful: Boolean;
procedure Valuation(
var Employee: Record "BSSSP Mitarbeiter";
HideDialog: Boolean) Successful: Boolean;
procedure Valuation(
var Employee: Record "BSSSP Mitarbeiter";
ValuationPostingType: Enum "BSSSP Valuation Posting Type";
HideDialog: Boolean) Successful: Boolean;
Parameter¶
Employee (Record "BSSSP Mitarbeiter")
Gibt den Mitarbeiter der bewertet werden soll an
ValuationPostingType (Enum "BSSSP Valuation Posting Type")
Über diesen Parameter ist es möglich entweder die Probeberechnung (Wert=Trial) oder die Echtberechung (Wert=Real) auszuführen. Der Standardwert ist hier Probe, sofern Dialoge angezeigt werden (Parameter HideDialog = false), kommt eine Nachfrage ob Echt bzw. Probe bewertet werden soll (Siehe Bild ganz oben).
HideDialog (Boolean)
Wenn dieser Paramter auf Ja gesetzt wird, werden alle Dialoge (Fehler & Hinweise) unterdrückt. Standard ist hier False, d.h. Dialoge werden immer angezeigt, wenn der Parameter weggelassen wird.
OnBeforeValuation (Event)¶
Über dieses Event ist es möglich eine komplett eigene Bewertung zu hinterlegen und über den Handled Parameter die Standardbewertung abzuschalten. Über die ValuationSettings kann auf das Messages Objekt zugegriffen werden. Die Empfehlung ist hier aber Hinweise und Fehler in der Codeunit BSSSP Employee Valuation Check über die dort zur Verfügung stehenden Events zu integrieren.
[IntegrationEvent(false, false)]
local procedure OnBeforeValuation(
var ValuationSettings: Record "BSSSP ValuationSettings";
var Handled: Boolean);
OnAfterValuation (Event)¶
Über dieses Event ist es möglich nach der Bewertung Daten zu ändern bzw. Änderungen vorzunehmen. Successful gibt hier an ob alle Monate erfolgreich bewertet werden konnten. Sobald nur 1 Monat nicht bewertet werden konnte, steht diese Wert auf false. Über die ValuationSettings kann auf das Messages Objekt zugegriffen werden und es können die Meldungen abgerufen werden, um ggf. auf bestimmte Meldungen zu reagieren.
[IntegrationEvent(false, false)]
local procedure OnAfterValuation(
var ValuationSettings: Record "BSSSP ValuationSettings";
Successful: Boolean);
MonthValuation (Methode)¶
Diese Methode ist nur intern zugänglich und startet die Bewertung eines einzelnen Mitarbeiters für einen einzelnen Monat. Der Monat der Bewertet wird ist in der CurrentMonth in dem Parameter ValuationSettings. Die Messages beinhalten mögliche Fehler / Warnungen und Informationen. Die Funktion liefert ausserdem über den Parameter Successful zurück, ob die Bewertung des Monats ausgeführt werden konnte.
internal procedure MonthValuation(
var ValuationSettings: Record "BSSSP ValuationSettings") Successful: Boolean;
Parameter¶
ValuationSettings (Record "BSSSP ValuationSettings")
Gibt die Einstellungen zur Bewertung an
OnBeforeMonthValuation (Event)¶
Über dieses Event ist es möglich eine komplett eigene Bewertung zu hinterlegen und über den Handled Parameter die Standardbewertung abzuschalten.
[IntegrationEvent(false, false)]
local procedure OnBeforeMonthValuation(
var ValuationSettings: Record "BSSSP ValuationSettings";
var Handled: Boolean);
OnAfterMonthValuation (Event)¶
Über dieses Event ist es möglich nach der Bewertung Daten zu ändern bzw. Änderungen vorzunehmen. Successful gibt hier an ob der Monat erfolgreich bewertet werden konnte. Über die ValuationSettings kann auf das Messages Objekt zugegriffen werden und es können die Meldungen abgerufen werden, um ggf. auf bestimmte Meldungen zu reagieren bzw. eigene Meldungen zu ergänzen.
[IntegrationEvent(false, false)]
local procedure OnAfterMonthValuation(
var ValuationSettings: Record "BSSSP ValuationSettings";
Successful: Boolean);
Employee Valuation Check (Codeunit 5250201)¶
Diese Codeunit stellt die Prüfungen zur Codeunit Employee Valuation (5250200) zur Verfügung.
Check (Methode)¶
Diese Methode ist öffentlich zugänglich und prüft die Bewertung für einen einzelnen Mitarbeiter. Die entstehenden Meldungen werden in die Variable Messages geschrieben.
procedure Check(
var ValuationSettings: Record "BSSSP ValuationSettings");
Parameter¶
ValuationSettings (Record "BSSSP ValuationSettings")
Gibt die Einstellungen zur Bewertung an
OnBeforeCheck (Event)¶
Über dieses Event ist es möglich eine komplett eigene Prüfroutine zu hinterlegen und über den Handled Parameter die Standardprüfungen abzuschalten.
[IntegrationEvent(false, false)]
local procedure OnBeforeCheck(
var ValuationSettings: Record "BSSSP ValuationSettings";
var Handled: Boolean);
OnAfterCheck (Event)¶
Über dieses Event ist es möglich nach der Standardprüfung die eigenen Prüfungen durchzuführen und die Ergebnisse in die Messages zu schreiben.
[IntegrationEvent(false, false)]
local procedure OnAfterCheck(
var ValuationSettings: Record "BSSSP ValuationSettings");
Beispiel eigene Fehler bzw. Hinweise¶
Beispielimplemtation für eigene Fehler
Nachfolgend eine Beispielimplementation für drei eigene Fehler mittels OnAfterCheck Event. Die Daten werden aus den ValuationSettings per GetRoutinen geholt (Mitarbeiter / Message Objekt)
[EventSubscriber(ObjectType::Codeunit, Codeunit::"BSSSP Employee Valuation Check", 'OnAfterCheck', '', true, false)]
local procedure MyCheckProcedure(var ValuationSettings: Record "BSSSP ValuationSettings")
var
Employee: Record "BSSSP Employee";
Messages: Codeunit "BSSSP Temporary Messages";
RecRefEmployee: RecordRef;
SubsidiaryNotEmptyInfoTxt: Label 'Die Niederlassung sollte gefüllt sein.';
begin
ValuationSettings.GetMessageObject(Messages);
ValuationSettings.GetEmployee(Employee);
with Employee do begin
RecRefEmployee.GetTable(Employee);
//Fehler wenn Abrechnungskreis leer is
Messages.ErrorIfEmpty(RecRefEmployee, FieldNo("Payroll Area Code"));
//Warnung wenn Private Email leer ist
Messages.WarningIfEmpty(RecRefEmployee, FieldNo("Private E-Mail"));
//Infotext wenn Niederlassung nicht gefüllt
if Employee."Subsidiary Code" = '' then
Messages.InformationText(RecRefEmployee, FieldNo("Subsidiary Code"), SubsidiaryNotEmptyInfoTxt)
end;
end;
CheckMonth (Methode)¶
Diese Methode ist öffentlich zugänglich und stellt die Prüfungen für die Bewertung eines einzelnen Monats für einen Mitarbeiter bereit. Im Gegensatz zu Check, welche Prüfungen über den Gesamten Bewertungszeitraum und Mitarbeiter durchführt, bietet diese Codeunit monatsbezogene Prüfungen an.
Wenn z.B. Im Erfassungsregister eine bestimmte Leistungsart geprüft werden soll, kann dies entsprechend bequem im OnAfterCheckMonth Event per Subscriber erledigt werden. Fehler / Warnungen / Informationen kann man in den Messages entsprechend hinterlegen.
procedure CheckMonth(
var ValuationSettings: Record "BSSSP ValuationSettings");
Parameter¶
ValuationSettings (Record "BSSSP ValuationSettings")
Gibt die Einstellungen zur Bewertung an
OnBeforeCheckMonth (Event)¶
Über dieses Event ist es möglich eine komplett eigene Prüfroutine zu hinterlegen und über den Handled Parameter die Standardprüfungen abzuschalten.
[IntegrationEvent(false, false)]
local procedure OnBeforeCheckMonth(
var ValuationSettings: Record "BSSSP ValuationSettings";
var Handled: Boolean);
OnAfterCheckMonth (Event)¶
Über dieses Event ist es möglich nach der Standardprüfung die eigenen Prüfungen durchzuführen und die Ergebnisse in die Messages zu schreiben.
[IntegrationEvent(false, false)]
local procedure OnAfterCheckMonth(
var ValuationSettings: Record "BSSSP ValuationSettings");
ValuationReset (Codeunit 5250204)¶
Diese Codeunit setzt die Posten einer vorherigen Bewertung zurück. Wenn die Buchungsart auf Probe steht, werden nur Probeberechungen zurückgesetzt. Wenn die Buchungsart auf Echt steht, werden sowohl Probeberechungen als auch Echtberechnungen zurückgesetzt.
Reset (Methode)¶
Diese Methode ist öffentlich zugänglich und startet das Zurücksetzen einer Bewertung. Es ist nicht ratsam diese Methode ohne eigene Implementation einer Bewertung aufzurufen.
procedure Reset(var ValuationSettings: Record "BSSSP ValuationSettings");
Parameter¶
ValuationSettings (Record "BSSSP ValuationSettings")
Gibt die Einstellungen an welche Bewertung zurückgesetzt werden.
Wenn die Events OnBeforeReset / OnAfterReset verwendet werden, hier ein Beispiel wie der Mitarbeiter aus den ValuationSettings ermittelt wird.
var
Employee: Record "BSSSP Mitarbeiter";
begin
if ValuationSettings.LinkSystemTable = Database::"BSSSP Mitarbeiter" then begin
Employee.GetBySystemId(ValuationSettings.LinkSystemID);
end;
OnBeforeReset (Event)¶
Über dieses Event ist es möglich eine komplett eigene Zurücksetzung zu hinterlegen und über den Handled Parameter die Standardfunktion abzuschalten.
[IntegrationEvent(false, false)]
local procedure OnBeforeReset(var ValuationSettings: Record "BSSSP ValuationSettings"; var Handled: Boolean);
OnAfterReset (Event)¶
Über dieses Event ist es möglich nach der Standardfunktion eigene Bereinigungen durchzuführen, um ggf. eigene Posten bzw. Werte zurückzusetzen.
[IntegrationEvent(false, false)]
local procedure OnAfterReset(var ValuationSettings: Record "BSSSP ValuationSettings");
Valuation State / Bewertungsstatus (Tabelle)¶
Über diese Tabelle ist zu ermitteln in welchem Bewertungsstatus sich ein Mitarbeiter befindet. Über das Feld State (Status) z.B. Offen, Fehlerhaft, Probe oder Echt. Ebenfalls ist das Aufrolldatum (Unroll Month) aus dieser Tabelle zu entnehmen, dieses gibt an, wie weit zurück für den Mitarbeiter Korrekturen vorgenommen wurden.
CreateValuationStateForEmployee (Methode)¶
Diese Funktion erstellt einen Initialen Bewertungstatus sofern dieser noch nicht vorhanden ist. Wenn ein Mitarbeiter aktiviert wird, wird diese Funktion ausgeführt.
Parameter¶
Employee (Record "BSSSP Mitarbeiter")
Der Mitarbeiter für den der Bewertungsstatus erstellt werden soll.
Valuation State Type (Enum)¶
Gibt die möglichen Ausprägungen des Bewertungsstatus wieder. Wird in der Tabelle Valuation State verwendet.
enum "BSSSP Valuation State Type"
{
Extensible = true;
value(0; Open) { Caption = 'Offen'; }
value(5; Error) { Caption = 'Fehlerhaft'; }
value(10; Trial) { Caption = 'Probe'; }
value(20; Real) { Caption = 'Echt'; }
value(40; Transferred) { Caption = 'Transferiert'; }
}
Valuation Posting Type (Enum)¶
Dieser Enum gibt alle möglichen Ausprägungen der Buchungsarten wieder und findet sich als Eingabegröße für den Bewertungsstart (Probe / Echt) und in den Posten die durch die Bewertung erzeugt werden wieder. Der Wert Korrektur wird derzeit nur in den Mitarbeiterposten verwendet um Stammdatenkorrekturen zu identifizieren.
enum "BSSSP Valuation Posting Type"
{
Extensible = true;
value(1; None) { Caption = 'Keine'; }
value(2; Temp) { Caption = 'Temporär'; }
value(10; Trial) { Caption = 'Probe'; }
value(20; Real) { Caption = 'Echt'; }
value(30; Correction) { Caption = 'Korrektur'; }
}