Zum Inhalt

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'; }
}