TBeBDEBusinessController
TBeBDEBusinessController
Die Klasse kapselt alle Funktionalitäten die zur Erfassung von Auftragsbuchungen im Bereich der BDE (PZE/MDE) benötigt werden. Mit Hilfe dieses BusinessControllers, können Auftragsbuchungen erfasst, verändert, gelöscht werden.
Achtung:
Für Anwesenheitsbuchungen muss weiterhin die Funktion BDEBuch() verwendet werden.
Eigenschaften | Beschreibung |
---|---|
CbDataModule:O | Datenmodul vom Typ TBeDBGet, welches vor der ersten Verwendung des Business-Controllers zugewiesen werden muss. |
Funktionen | Beschreibung | |
---|---|---|
CbStartNewPostingParamsObject:O | Diese Funktion liefert ein Objekt vom Typ TBeBDEPostingParams_Start zurück, welches für den Aufruf der Methode CbStartNewPosting benötigt wird. | |
Parameter | Beschreibung | |
aTimeRecordingBO:O | Positioniertes (!) TBeTimeRecordingBO, auf dessen Basis das Parameter-Objekt vorbefüllt wird. | |
CbFinishPostingParamsObject:O | Diese Funktion liefert ein Objekt vom Typ TBeBDEPostingParams_Finish zurück, welches für den Aufruf der Methode CbFinishPosting benötigt wird. | |
Parameter | Beschreibung | |
aTimeRecordingBO:O | Positioniertes (!) TBeTimeRecordingBO, auf dessen Basis das Parameter-Objekt vorbefüllt wird. | |
CbChangePostingValueParamsObject:O | Diese Funktion liefert ein Objekt vom Typ TBeBDEPostingParams_ValueChange zurück, welches für den Aufruf der Methode CbChangePostingValue benötigt wird. | |
Parameter | Beschreibung | |
aTimeRecordingBO:O | Positioniertes (!) TBeTimeRecordingBO, auf dessen Basis das Parameter-Objekt vorbefüllt wird. |
Methoden | Beschreibung / Parameter | |
---|---|---|
CbStartNewPosting | Diese Methode ermöglicht das Starten einer BDE-Buchung (PZE/MDE). Die Buchung bleibt offen bis die Methode CbPostPosting aufgerufen wurde. | |
Parameter | Beschreibung | |
aTimeRecordingBO:O | TBeTimeRecordingBO , das zur Erstellung der Buchung verwendet wird. Nach dem Aufruf bleibt dieses BO auf der neuen Buchung positioniert. | |
aBDEPostingParams_Start:O | Parameter-Objekt vom Typ TBeBDEPostingParams_Start , welches alle Informationen enthält, die zur Buchungs-Erfassung benötigt werden. | |
CbFinishPosting | Diese Methode ermöglicht das abschließen einer offenen BDE-Buchung (PZE/MDE). Die abgeschlossene Buchung bleibt im Bearbeitungsmodus, bis CbPostPosting aufgerufen wurd. | |
Parameter | Beschreibung | |
aTimeRecordingBO:O | TBeTimeRecordingBO , das auf die abzuschließende Buchung positioniert ist. Nach dem Aufruf bleibt dieses BO auf der abgeschlossenen Buchung positioniert. | |
aBDEPostingParams_Finish:O | Parameter-Objekt vom Typ TBeBDEPostingParams_Finish , welches alle Informationen enthält, die zum Abschließen der Buchung benötigt werden. | |
CbChangePostingValue | Diese Methode ermöglicht das bewerten einer abgeschlossenen BDE-Buchung (PZE/MDE). Für den Aufruf dieser Funktion ist es notwendig, dass sich die im übergebenen TBeTimeRecordingBO positionierte Buchung bereits im Bearbeitungs-Modus befinden muss. Nach dem Aufruf bleibt die veränderte Buchung im Bearbeitungs-Modus. | |
Parameter | Beschreibung | |
aTimeRecordingBO:O | TBeTimeRecordingBO , das auf die zu verändernde Buchung positioniert ist. Nach dem Aufruf bleibt dieses BO auf der veränderten Buchung positioniert. | |
aBDEPostingParams_ValueChange:O | Parameter-Objekt vom Typ TBeBDEPostingParams_ValueChange, welches alle Informationen enthält, die zur Veränderung der Buchungsbewertung benötigt werden. | |
CbEditPosting | Mit Hilfe dieser Methode kann eine Buchung die im übergebenen TBeTimeRecordingBO positioniert ist in den Bearbeitungs-Modus versetzt werden. | |
Parameter | Beschreibung | |
aTimeRecordingBO:O | Positioniertes TBeTimeRecordingBO | |
CbPostPosting | Mit Hilfe dieser Methode kann eine sich im Bearbeitungs-Modus befindliche Buchung gespeichert werden. | |
Parameter | Beschreibung | |
aTimeRecordingBO:O | Positioniertes TBeTimeRecordingBO | |
aPostingUseContext:N | Legt fest in welcher Buchungssituation (Live-Buchung, Buchungsveränderung, Nachbuchung) die Buchung gespeichert werden soll. Dies ist notwendig, um die entsprechenden Rechte für Buchungszeiträume usw. korrekt prüfen zu können.
| |
aIgnoreBDERightsSettings:L | Dieser Parameter erlaubt es dem Cb-Programmierer die BDE-Spezifischen Rechte beim Speichern einer Buchung zu ignorieren. | |
CbDeletePosting | Mit Hilfe dieser Methode kann eine BDE-Buchung (PZE/MDE) gelöscht werden. | |
Parameter | Beschreibung | |
aTimeRecordingBO:O | Auf zu löschende Buchung positioniertes TBeTimeRecordingBO | |
aChangeReservedQuantities:L | Dieser Parameter bestimmt, ob die durch eine FA-Buchung erfassten Mengen im Produktionsauftrag wieder Reserviert werden sollen. | |
aIgnoreBDERightsSettings:L | Dieser Parameter erlaubt es dem Cb-Programmierer die BDE-Spezifischen Rechte beim Löschen einer Buchung zu ignorieren. |
Beispiel
//##############################################################################
//##############################################################################
// Beschreibung: Dieses Programm enthält Beispiele wie mit dem
// TBeBDEBusinessController und dem TBeTimeRecordingBO neue
// BDE-Buchungen (PZE/MDE) erstellt, verändert und gelöscht werden
// können.
//##############################################################################
//##############################################################################
| m_cTestProdOrdPos, m_oDM, m_oBDEBC, m_oTimeRecordingBO, m_oDTH |
//##############################################################################
//##############################################################################
// Konstanten
//##############################################################################
//##############################################################################
m_cTestProdOrdPos := '600614 001', // Existierenden Auftrag für den Test der
// Buchungsfunktionen eintragen.
//******************************************************************************
// Beispiel wie eine BDE-Buchung auf einen Fertigungsauftrag gestartet werden
// kann.
//******************************************************************************
function StartNewPosting()
| oPostingParams_Start, dStartTimeStamp:DT |
// Zum Starten einer neuen Buchung, muss ein PostingParamsObject vom BDEBC
// geholt werden.
oPostingParams_Start := m_oBDEBC.CbStartNewPostingParamsObject(m_oTimeRecordingBO),
// Buchungsparameter können jetzt im erzeugten Parameter-Objekt gesetzt
// werden. Nicht benötigte Parameter müssen nicht gesetzt werden, da diese
// mit Defaultwerten vorbelegt sind.
oPostingParams_Start.CbPostingUseContext := pucSubsequentPosting, // Nachbuchung
oPostingParams_Start.CbIgnoreBDERightsSettings := False, // BDE-Rechte nicht ignorieren
oPostingParams_Start.CbResourceType := prtPerson, // Personenbuchung
oPostingParams_Start.CbPostingType := ptProductionTime, // Stückzeitpbuchung
oPostingParams_Start.CbPostingCode := 0,
oPostingParams_Start.CbEmployeeNo := 1,
// oPostingParams_Start.CbResourceID
// oPostingParams_Start.CbPostedByEmployeeNo
oPostingParams_Start.CbProdOrderPosNo := m_cTestProdOrdPos,
// oPostingParams_Start.CbArticleNo //Artikelnummer für Kundenaufträge buchen
// oPostingParams_Start.CbCustomerOrderNo // Auftragsnummer für Kundenaufträge buchen
// oPostingParams_Start.CbActivityType //Tätigkeitstyp für Kundenaufträge buchen
oPostingParams_Start.CbComment := 'Über TBeBDEBusinessController erstellte Stückzeitbuchung',
// Der Startzeitpunkt muss über einen TBeCbDateTime-Wert mit passender
// Prezision gesetzt werden.
// • Personen können nur Minutengenau buchen (precMinutes)
// • Maschinen können Millisekundengenau buchen (precMilSeconds)
dStartTimeStamp := m_oDTH.InitDateTime(precMinutes),
dStartTimeStamp.DateTime := Now() - 1/24, // Jetzt vor einer Stunde
oPostingParams_Start.CbStartTimeStamp := dStartTimeStamp,
// Buchung erzeugen
m_oBDEBC.CbStartNewPosting(m_oTimeRecordingBO, oPostingParams_Start),
end,
//******************************************************************************
// Beispiel wie eine offene BDE-Buchung abgeschlossen werden kann.
//******************************************************************************
function FinishPosting()
| oPostingParams_Finish, dEndTimeStamp:DT |
// Zum abschließen einer neuen Buchung, muss ein PostingParamsObject vom BDEBC
// geholt werden.
oPostingParams_Finish := m_oBDEBC.CbFinishPostingParamsObject(m_oTimeRecordingBO),
// Buchungsparameter können jetzt im erzeugten Parameter-Objekt gesetzt
// werden. Nicht benötigte Parameter müssen nicht gesetzt werden, da diese
// mit Defaultwerten vorbelegt sind.
oPostingParams_Finish.CbPostingUseContext := pucSubsequentPosting, // Nachbuchung
oPostingParams_Finish.CbIgnoreBDERightsSettings := False,
oPostingParams_Finish.CbYieldQuantity := 1, // Produzierte Menge
oPostingParams_Finish.CbScrapQuantity := 0, // Produzierter Ausschuss
oPostingParams_Finish.CbScrapCode := 0, // Code zur identifizierung weshalb der Ausschuss entstanden ist.
oPostingParams_Finish.CbIntegratedTroubleDurationSeconds := 0, // Buchung enthält keine Störzeit
oPostingParams_Finish.CbIntegratedTroubleCode := 0, // Code zur identifizierung des Störungs-Grunds.
oPostingParams_Finish.CbSubtractIntegratedTroubleTime := sitmUseDefault, // Ob eine Störzeit in die Bewertung einfließt, soll durch die Einstellung des genutzten Codes bestimmt werden.
// Erweiterung des vorherigen Buchungs-Kommentars
oPostingParams_Finish.CbComment := oPostingParams_Finish.CbComment + crlf +
'Durch TBeBDEBusinessController abgeschlossene Buchung',
// Der Endzeitpukt muss über einen TBeCbDateTime-Wert mit passender
// Prezision gesetzt werden.
// • Personen können nur Minutengenau buchen (precMinutes)
// • Maschinen können Millisekundengenau buchen (precMilSeconds)
dEndTimeStamp := m_oDTH.InitDateTime(precMinutes),
dEndTimeStamp.DateTime := Now() - (1/24)/2, // Jetzt vor einer halben Stunde
oPostingParams_Finish.CbEndTimeStamp := dEndTimeStamp,
// Buchung abschließen
m_oBDEBC.CbFinishPosting(m_oTimeRecordingBO, oPostingParams_Finish),
end,
//******************************************************************************
// Schließt die sich in Bearbeitung befindliche Buchung ab. Hierbei wird
// auch das Cb-Event ausgelöst.
//******************************************************************************
function PostPosting()
m_oBDEBC.CbPostPosting(m_oTimeRecordingBO, // Zu speichernde Buchung
pucSubsequentPosting, // Rechteprüfung für die Erstellung einer Nachbuchung
False), // Rechteprüfung nicht ignorieren
end,
//******************************************************************************
// Beispiel wie eine Bewertungsänderung für eine Buchung durchgeführt werden
// kann.
//******************************************************************************
function PostingValueChange()
| oPostingParams_ValueChange |
// Für die Bewertungsänderung muss die Buchung bereits im Bearbeitungsmodus
// sein.
if m_oTimeRecordingBO.CbInBrowseMode() then
m_oBDEBC.CbEditPosting(m_oTimeRecordingBO),
endif,
// Zum Verändern einer Buchungsbewertung, muss ein PostingParamsObject vom
// BDEBC geholt werden.
oPostingParams_ValueChange := m_oBDEBC.CbChangePostingValueParamsObject(m_oTimeRecordingBO),
// Buchungsparameter können jetzt im erzeugten Parameter-Objekt gesetzt
// werden. Nicht benötigte Parameter müssen nicht gesetzt werden, da diese
// mit den aktuell in der Buchung gesetzten Werten vorbelegt sind.
oPostingParams_ValueChange.CbCostCorrectionAbsolute := 1.5, // Buchungswert um 1.5 € verringern
oPostingParams_ValueChange.CbCostCorrectionInPercent := 0.9, // Nur 90 % der Buchung sollen in die Kosten einfließen
oPostingParams_ValueChange.CbDurationCorrectionAbsolute := 0, // Keine Zeitkorrektur
oPostingParams_ValueChange.CbDurationCorrectionInPercent := 0, // Keine Zeitkorrektur
// Erweiterung des vorherigen Buchungskommentars
oPostingParams_ValueChange.CbComment := oPostingParams_ValueChange.CbComment + crlf +
'Durch TBeBDEBusinessController veränderte Bewertung',
// Verändern der Buchungsbewertung
m_oBDEBC.CbChangePostingValue(m_oTimeRecordingBO, oPostingParams_ValueChange),
// Speichern der veränderten Buchungsbewertung
m_oBDEBC.CbPostPosting(m_oTimeRecordingBO,
pucPostingChange, // Berechtigungen zum Verändern einer Buchung prüfen
False), // Rechteprüfung nicht ignorieren
end,
//******************************************************************************
// Beispiel wie eine Buchung gelöscht werden kann.
//******************************************************************************
function DeletePosting()
m_oBDEBC.CbDeletePosting(m_oTimeRecordingBO,
True, // Gebuchte Mengen wieder Reservieren
False), // Rechteprüfung nicht ignorieren
end,
//##############################################################################
//##############################################################################
// Hauptprogramm
//##############################################################################
//##############################################################################
startseq
m_oDM := CreateObject('TBeDBGet'),
startseq
// CbDateTimeHelper erzeugen. Dieser wird für das erstellen von
// BeDateTime-Werten benötigt.
m_oDTH := CreateObject('TBeCbDateTimeHelper', 'DTH', m_oDM, m_oDM),
// BusinessController und TimeRecordingBO erzeugen
m_oBDEBC := CreateObject('TBeBDEBusinessController', 'TIMEBC', m_oDM, m_oDM),
m_oTimeRecordingBO := CreateObject('TBeTimeRecordingBO', 'TIMEBO', m_oDM, m_oDM),
// Datenmodul zuweisen
m_oBDEBC.CbDataModule := m_oDM,
m_oTimeRecordingBO.CbDataModule := m_oDM,
// Für jede weitere Aktion ist eine Transaktion notwendig, daher wird diese
// jetzt gestartet.
DBStartTrans(m_oDM.ADSConnection),
startseq
// Eine Buchung starten
StartNewPosting(),
// Eine Buchung abschließen
FinishPosting(),
// Angelegte und abgeschlossene Buchung speichern
PostPosting(),
// Eine Buchung anders bewerten
PostingValueChange(),
// Eine Buchung löschen
DeletePosting(),
// Da es sich um ein Beispielprogramm handelt, wird kein Commit durchgeführt
// DBCommit(m_oDM.ADSConnection),
always
if DBInTrans(m_oDM.ADSConnection) then
DBRollback(m_oDM.ADSConnection),
endif,
stopseq,
always
DestroyObject(m_oDM),
stopseq,
onerror
MessageDlg(GetErrorText() + crlf + crlf + DebugArr(GetErrorStack(true)), mtError),
stopseq,