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
|
Eigenschaft |
Beschreibung |
|---|---|
|
CbDataModule:O |
Datenmodul vom Typ TBeDBGet, welches vor der ersten Verwendung des Business-Controllers zugewiesen werden muss. |
|
Name:C |
|
|
Tag:N |
|
Methoden
|
Methode |
Beschreibung |
|---|---|
|
CbStartNewPostingParamsObject(aTimeRecordingBO:O):O |
Diese Funktion liefert ein Objekt vom Typ TBeBDEPostingParams_Start zurück, welches für den Aufruf der Methode CbStartNewPosting benötigt wird. |
|
CbFinishPostingParamsObject(aTimeRecordingBO:O):O |
Diese Funktion liefert ein Objekt vom Typ TBeBDEPostingParams_Finish zurück, welches für den Aufruf der Methode CbFinishPosting benötigt wird. |
|
CbChangePostingValueParamsObject(aTimeRecordingBO:O):O |
Diese Funktion liefert ein Objekt vom Typ TBeBDEPostingParams_ValueChange zurück, welches für den Aufruf der Methode CbChangePostingValue benötigt wird. |
|
CbStartNewPosting(aTimeRecordingBO:O, aBDEPostingParams_Start:O) |
Diese Methode ermöglicht das Starten einer BDE-Buchung (PZE/MDE). Die Buchung bleibt offen bis die Methode CbPostPosting aufgerufen wurde. |
|
CbStartNewParallelPosting(aTimeRecordingBO:O, aBDEPostingParams_Start:O) |
Diese Methode ermöglicht das Starten parallelen BDE-Buchungen (PZE). Die Buchung bleibt offen bis die Methode CbPostPosting aufgerufen wurde. |
|
CbFinishPosting(aTimeRecordingBO:O, aBDEPostingParams_Finish:O) |
Diese Methode ermöglicht das abschließen einer offenen BDE-Buchung (PZE/MDE). Die abgeschlossene Buchung bleibt im Bearbeitungsmodus, bis CbPostPosting aufgerufen wird. |
|
CbFinishParallelPosting(aTimeRecordingBO:O, aBDEPostingParams_Finish:O):U |
Diese Methode ermöglicht das abschließen aller offenen BDE-Buchung zu einem Mitarbeiter (PZE) unter Berücksichtigung von Parallel-Verteilung für Rüst/Stück-Zeit. Die abgeschlossene Buchung bleibt im Bearbeitungsmodus, bis CbPostPosting aufgerufen wird. Rückgabe: Array mit allen Abgeschlossenen Buchungen zurück. |
|
CbChangePostingValue(aTimeRecordingBO:O, aBDEPostingParams_ValueChange:O) |
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. |
|
CbEditPosting(aTimeRecordingBO:O) |
Mit Hilfe dieser Methode kann eine Buchung die im übergebenen TBeTimeRecordingBO positioniert ist in den Bearbeitungs-Modus versetzt werden. |
|
CbPostPosting(aTimeRecordingBO:O, aPostingUseContext:N, aIgnoreBDERightsSettings:L) |
Mit Hilfe dieser Methode kann eine sich im Bearbeitungs-Modus befindliche Buchung gespeichert werden. |
|
CbDeletePosting(aTimeRecordingBO:O, aChangeReservedQuantities:L, aIgnoreBDERightsSettings:L) |
Mit Hilfe dieser Methode kann eine BDE-Buchung (PZE/MDE) gelöscht werden. |
|
CbChangeEmployeeJobList(aEmployeeNo:N, aFinishedPostings:U) |
Liste an abgeschlossenen Buchungen eines Mitarbeiters in DAB262:JOB_LISTE übernehmen |
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,