TBeProductionDispositionBC
TBeProductionDispositionBC
Die Klasse TBeProductionDispositionBC kapselt alle Funktionen, die zur Anlage von Einträgen in der Produktions-Dispositions-Planung benötigt werden.
Eigenschaften
Eigenschaft | Beschreibung |
---|---|
CbDataModule:O | Datenmodul auf dem der BusinessController arbeitet |
Funktionen
Funktion | Parameter | Beschreibung |
---|---|---|
CbDispoPlanCreate Anlegen eines Planungs-Eintrags | aProdDispoPlanBO:O | Objekt vom Typ TBeProductionDispositionPlanningBO |
aArticleNo:C | Artikelnummer als String | |
CbDispoPlanEdit Bearbeiten eines existierenden Planungs-Eintrags | aProdDispoPlanBO:O | Objekt vom Typ TBeProductionDispositionPlanningBO welches auf den entsprechenden Eintrag positioniert ist |
CbDispoPlanPost Speichern eines sich im Neuanlage-/Bearbeitungsmodus befindlichen Planungs-Eintrags | aProdDispoPlanBO:O | Objekt vom Typ TBeProductionDispositionPlanningBO |
aDiscontinuedLockedOrSampleArticlesAllowed:L | Erlaubnis zum Speichern von Auslauf-/Sperr-/Muster-Artikeln erteilen. | |
aPurchaseArticlesAllowed:L | Erlaubnis zum Speichern von Artikeln die für die Einkaufsabteilung markiert wurden ( Z/Z ) | |
CbDispoPlanCancel Bricht die Neuanlage/Bearbeitung eines Planungs-Eintrags ab. | aProdDispoPlanBO:O | Objekt vom Typ TBeProductionDispositionPlanningBO |
CbDispoPlanDelete Löscht den Planungs-Eintrag der im übergebenen BO positioniert wurde. | aProdDispoPlanBO:O | Objekt vom Typ TBeProductionDispositionPlanningBO |
CbDispoPlanRoundSuggestionQuantToOrderUnits Nach dem Setzen einer Bestellmenge, kann mit dieser Methode auf die gesetzte Bestelleinheit aufgerundet werden. Der Aufruf dieser Methode löst ggf. das Event "bei Rundung Vorschlagsmenge (EK/Prod)" aus. | aProdDispoPlanBO:O | Objekt vom Typ TBeProductionDispositionPlanningBO |
CbDispoPlanToDisposition Überträgt den Planungs-Eintrag in die Disposition. Hierbei wird das BusinessController-Event "bei Übertragung von BO-Daten" ausgelöst. Der Planungs-Eintrag ist anschließend gelöscht. | aProdDispoPlanBO:O | Objekt vom Typ TBeProductionDispositionPlanningBO |
CbDispoPlanToProductionOrder Überträgt den Planungs-Eintrag in die Offenen-Produktionsaufträge. Hierbei wird das BusinessController-Event "beim Übertragen von BO-Daten" ausgelöst. Der Planungs-Eintrag ist anschließend gelöscht. | aProdDispoPlanBO:O | Objekt vom Typ TBeProductionDispositionPlanningBO |
CbAutoPlanDemand Führt die automatische Bedarfsplanung aus | aArtNoFrom:C aArtNoTo:C aProdDepFrom:C aProdDepTo:C aForceEraseOld:L | |
CbDispoCreate Anlegen eines Dispositions-Eintrags | aProdDispoBO:O | Objekt vom Typ TBeProductionDispositionBO |
aArticleNo:C | Artikelnummer als String | |
CbDispoEdit Bearbeiten eines existierenden Dispositions-Eintrags | aProdDispoBO:O | Objekt vom Typ TBeProductionDispositionBO welches auf den entsprechenden Eintrag positioniert ist |
CbDispoPost Speichern eines sich im Neuanlage-/Bearbeitungsmodus befindlichen Dispositions-Eintrags | aProdDispoBO:O | Objekt vom Typ TBeProductionDispositionBO |
aDiscontinuedLockedOrSampleArticlesAllowed:L | Erlaubnis zum Speichern von Auslauf-/Sperr-/Muster-Artikeln erteilen. | |
aAllowInternalMemo:L | Ggf. auftretende Artikel-Warnmeldungen automatisch akzeptieren | |
aPurchaseArticlesAllowed:L | Erlaubnis zum Speichern von Artikeln die für die Einkaufsabteilung markiert wurden ( Z/Z ) | |
aAllowDoubleArticleNoCommissCombination:L | Festlegen ob bei bereits vorhandener Artikelnummer-Kommissionsnummern-Kombination ein Speichern erlaubt ist. | |
aTakeOverArticleData:L | Basisdaten des Artikels neu laden (Erfolgt automatisch beim Aufruf von CbDispoCreate ) | |
CbDispoCancel Bricht die Neuanlage/Bearbeitung eines Dispositions-Eintrags ab. | aProdDispoBO:O | Objekt vom Typ TBeProductionDispositionBO |
CbDispoDelete Löscht den Dispositions-Eintrag der im übergebenen BO positioniert wurde. | aProdDispoBO:O | Objekt vom Typ TBeProductionDispositionBO |
CbDispoRelease Setzt die Freigabe des Dispositions-Eintrags der im übergebenen BO positioniert wurde. | aProdDispoBO:O | Objekt vom Typ TBeProductionDispositionBO |
aRelease:L | Freigabe auf True = freigegeben oder False = nicht freigegeben setzen | |
CbDispoToProductionOrder Überträgt den Dispositions-Eintrag in die Offenen-Produktionsaufträge. Hierbei wird das BusinessController-Event "beim Übertragen von BO-Daten" ausgelöst. Der Dispositions-Eintrag ist anschließend gelöscht. | aProdDispoBO:O | Objekt vom Typ TBeProductionDispositionBO |
Verfügbare Ereignisse
Ereignis | Beschreibung |
---|---|
bei Übertragung von BO-Daten | Dieses Event wird von den beiden Funktionen CbDispoPlanToDisposition und CbDispoPlanToProductionOrder ausgelöst. Im Event erhält man das Quell-BusinessObjekt und das Ziel-BusinessObjekt bevor der neue Datensatz gespeichert wurde und noch vor der Löschung des Quell-Datensatzes. |
Beispiel
//##############################################################################
//##############################################################################
// Beschreibung: Beispiel für die Verwendung des
// TBeProductionDispositionBC zur Anlage von
// Dispositions-Planungs-Einträgen
//##############################################################################
//##############################################################################
|
m_oDM, m_oProdDispoBC, m_oProdDispoPlanBO, m_oProdDispoBO,
m_cArticleNo, m_cArticleNo2, m_nSupplierNo
|
//##############################################################################
//##############################################################################
// Konstanten
//##############################################################################
//##############################################################################
m_cArticleNo := 'AUTOMAT-1', // Baugruppe
m_cArticleNo2 := 'B-4', // Baugruppe
//##############################################################################
//##############################################################################
// Funktionen
//##############################################################################
//##############################################################################
//******************************************************************************
// Diese Funktion führt der Reihe nach folgende Operationen durch:
// 1. Anlegen eines neuen Planungseintrags
// 2. Anpassen des angelegten Eintrags
// 2.1 Kommissionsnummer eintragen
// 2.2 Menge verändern und ggf. auf Bestelleinheit aufrunden lassen
// 2.3 Ändern des Artikels
// 3. Übername des Planungseintrags in die Disposition
// 4. Übername eines Planungseintrags in die Produktion
// @Result: null
//******************************************************************************
function DispositionPlanningExample(oDM)
|
aDiscontinuedLockedOrSampleArticlesAllowed, // Auslauf-/Sperr-/Muster-Artikel erlauben
aPurchaseArticlesAllowed // Artikel die für den Einkauf vorgesehen sind in der Produktion erlauben
|
// 1. Anlegen eines neuen Planungseintrags ----------------------------------
DBStartTrans(oDM.ADSConnection),
startseq
m_oProdDispoBC.CbDispoPlanCreate(m_oProdDispoPlanBO, m_cArticleNo),
// Speichern ohne weitere (direkte) Änderung
aDiscontinuedLockedOrSampleArticlesAllowed := True,
aPurchaseArticlesAllowed := True,
m_oProdDispoBC.CbDispoPlanPost(m_oProdDispoPlanBO,
aDiscontinuedLockedOrSampleArticlesAllowed,
aPurchaseArticlesAllowed),
DBCommit(oDM.ADSConnection),
always
if DBInTrans(oDM.ADSConnection) then
DBRollback(oDM.ADSConnection),
endif,
stopseq,
// 2. Anpassen des angelegten Eintrags --------------------------------------
DBStartTrans(oDM.ADSConnection),
startseq
m_oProdDispoBC.CbDispoPlanEdit(m_oProdDispoPlanBO),
// 2.1 Kommissionsnummer eintragen ---------------------------------------
m_oProdDispoPlanBO.CbCommiss := 'TEST_KOMM',
// 2.2 Menge verändern und ggf. auf Bestelleinheit aufrunden lassen ------
m_oProdDispoPlanBO.CbSuggestionQuantity := 15,
m_oProdDispoBC.CbDispoPlanRoundSuggestionQuantToOrderUnits(m_oProdDispoPlanBO),
// 2.3 Ändern des Artikels -----------------------------------------------
m_oProdDispoPlanBO.CbArticleNo := m_cArticleNo2,
// Speichern
aDiscontinuedLockedOrSampleArticlesAllowed := True,
aPurchaseArticlesAllowed := True,
m_oProdDispoBC.CbDispoPlanPost(m_oProdDispoPlanBO,
aDiscontinuedLockedOrSampleArticlesAllowed,
aPurchaseArticlesAllowed),
DBCommit(oDM.ADSConnection),
always
if DBInTrans(oDM.ADSConnection) then
DBRollback(oDM.ADSConnection),
endif,
stopseq,
// 3. Übername des Planungseintrags in die Disposition ----------------------
// ACHTUNG: Hier darf keine eigene Transaktion gestartet werden
m_oProdDispoBC.CbDispoPlanToDisposition(m_oProdDispoPlanBO),
// 4. Übername eines Planungseintrags in die Produktion ---------------------
// ACHTUNG: Hier darf keine eigene Transaktion gestartet werden
// Anlage eines weiteren Eintrags
DBStartTrans(oDM.ADSConnection),
startseq
m_oProdDispoBC.CbDispoPlanCreate(m_oProdDispoPlanBO, m_cArticleNo),
// Speichern ohne weitere (direkte) Änderung
aDiscontinuedLockedOrSampleArticlesAllowed := True,
aPurchaseArticlesAllowed := True,
m_oProdDispoBC.CbDispoPlanPost(m_oProdDispoPlanBO,
aDiscontinuedLockedOrSampleArticlesAllowed,
aPurchaseArticlesAllowed),
DBCommit(oDM.ADSConnection),
always
if DBInTrans(oDM.ADSConnection) then
DBRollback(oDM.ADSConnection),
endif,
stopseq,
// Übername direkt in die Produktion
m_oProdDispoBC.CbDispoPlanToProductionOrder(m_oProdDispoPlanBO),
end,
//******************************************************************************
function DispositionExample(oDM, oProdDispoBC, oProdDispoBO, cArticleNo)
|
bDiscontinuedLockedOrSampleArticlesAllowed,
bAllowInternalMemo,
bPurchaseArticlesAllowed,
bAllowDoubleArticleNoCommissCombination,
bTakeOverArticleData
|
//***************************************************************************
// Allgemeiner Test
//***************************************************************************
oDM.CbTransaction_Begin(),
startseq
// Anlegen eines neuen Dispositions-Eintrags
oProdDispoBC.CbDispoCreate(oProdDispoBO, cArticleNo),
// Menge setzen
oProdDispoBO.CbQuantity := 1,
oProdDispoBO.CbCommiss := 'MYTESTKOMMISS',
// Speichern des Eintrags
bDiscontinuedLockedOrSampleArticlesAllowed := True, // Gesperrte-/Auslauf-/Muster-Artikel erlauben
bAllowInternalMemo := True, // Ggf. gesetztes internes Memo erlauben
bPurchaseArticlesAllowed := True, // EK-Artikel erlauben
bAllowDoubleArticleNoCommissCombination := True, // Doppelte Dispositionseinträge mit gleicher Artikelnummer und Kommission erlauben
bTakeOverArticleData := False, // Daten des Artikels nochmals neu laden (z.B. Memo, Produktionsabteilung).
// Sollte gesetzt werden wenn zwischen Anlage und Post der Arikel verändert wurde.
oProdDispoBC.CbDispoPost(oProdDispoBO,
bDiscontinuedLockedOrSampleArticlesAllowed,
bAllowInternalMemo,
bPurchaseArticlesAllowed,
bAllowDoubleArticleNoCommissCombination,
bTakeOverArticleData),
oDM.CbTransaction_Commit(),
writeln('Anlage erfolgreich' + CRLF +
'Artikelnummer: ' + oProdDispoBO.CbArticleNo + CRLF +
'Kommissionsnummer: ' + oProdDispoBO.CbCommiss + CRLF +
'Dispositions-ID: ' + ToString(oProdDispoBO.CbID) + CRLF + CRLF),
always
oDM.CbTransaction_TryRollback(),
stopseq,
// Soeben angelegten Datensatz bearbeiten
oDM.CbTransaction_Begin(),
startseq
oProdDispoBC.CbDispoEdit(oProdDispoBO),
// Menge auf 100 Stk. erhöhen und Produktionsabteilung eintragen
oProdDispoBO.CbQuantity := 100,
oProdDispoBO.CbProdDepart := 'WRK',
bTakeOverArticleData := True, // Daten des Artikels neu laden
oProdDispoBC.CbDispoPost(oProdDispoBO, True, True, True, True, bTakeOverArticleData),
oDM.CbTransaction_Commit(),
writeln('Änderung erfolgreich' + CRLF +
'Artikelnummer: ' + oProdDispoBO.CbArticleNo + CRLF +
'Menge: ' + ToString(oProdDispoBO.CbQuantity) + CRLF +
'Produktionsabteilung: ' + oProdDispoBO.CbProdDepart + CRLF + CRLF),
always
oDM.CbTransaction_TryRollback(),
stopseq,
// Soeben angelegten Datensatz wieder löschen
oDM.CbTransaction_Begin(),
startseq
oProdDispoBC.CbDispoDelete(oProdDispoBO),
oDM.CbTransaction_Commit(),
writeln('Löschung erfolgreich' + CRLF + CRLF),
always
oDM.CbTransaction_TryRollback(),
stopseq,
//***************************************************************************
// Test für die Übertragung einer Disposition in die Produktionsaufträge
//***************************************************************************
oDM.CbTransaction_Begin(),
startseq
// Anlegen eines neuen Dispositions-Eintrags
oProdDispoBC.CbDispoCreate(oProdDispoBO, cArticleNo),
// Menge setzen
oProdDispoBO.CbQuantity := 1,
oProdDispoBO.CbCommiss := 'TESTPRODORDER',
// Speichern des Eintrags
oProdDispoBC.CbDispoPost(oProdDispoBO, True, True, True, True, False),
oDM.CbTransaction_Commit(),
always
oDM.CbTransaction_TryRollback(),
stopseq,
// Soeben angelegten Eintrag freigeben. Dies muss außerhalb einer eigenen
// Transaktion geschehen
oProdDispoBC.CbDispoRelease(oProdDispoBO, True),
writeln('Freigabe erfolgreich' + CRLF +
'Freigabestatus: ' + ToString(oProdDispoBO.CbIsReleased) + CRLF + CRLF),
// Uebertragung der Disposition in die Produktionsaufträge muss außerhalb
// einer eigenen Transaktion geschehen
//
// ACHTUNG: Hierbei entsteht beim Ausführen ein echter Produktionsauftrag
// welcher nach dem Test wieder manuell gelöscht werden sollte.
oProdDispoBC.CbDispoToProductionOrder(oProdDispoBo),
writeln('Auslösen eines Produktionseintrags erfolgreich'),
end,
//******************************************************************************
// Erzeugt die benötigten Objekte und weist ihnen das übergebene Datenmodul zu
// @Result: null
//******************************************************************************
function CreateObjects(oDM, oProdDispoBC:R, oProdDispoPlanBO:R, oProdDispoBO:R)
// BusinessController und BusinessObjekte erzeugen
oProdDispoBC := CreateObject('TBeProductionDispositionBC', 'PRODDISPOBC', oDM),
oProdDispoPlanBO := CreateObject('TBeProductionDispositionPlanningBO', 'PRODDISPOPLANBO', oDM),
oProdDispoBO := CreateObject('TBeProductionDispositionBO', 'PRODDISPOBO', oDM),
// Allen Objekten das gleiche Datenmodul zuweisen, damit sämtliche Änderungen
// innerhalb der gleichen Transaktion geschehen
oProdDispoBC.CbDataModule := oDM,
oProdDispoPlanBO.CbDataModule := oDM,
oProdDispoBO.CbDataModule := oDM,
end,
//##############################################################################
//##############################################################################
// Hauptprogramm
//##############################################################################
//##############################################################################
startseq
m_oDM := CreateObject('TBeDBGet'),
startseq
CreateObjects(m_oDM, m_oProdDispoBC, m_oProdDispoPlanBO, m_oProdDispoBO),
DispositionPlanningExample(m_oDM),
DispositionExample(m_oDM, m_oProdDispoBC, m_oProdDispoBO, m_cArticleNo),
always
DestroyObject(m_oDM),
stopseq,
onerror
MessageDlg('Fehler im Programm ' + ProgName() + crlf +
GetErrorText() + crlf + crlf +
DebugArr(GetErrorStack(true)), mtError),
stopseq,
Weitere Verknüpfungen
- TBePurchaseDispositionBO
- TBeProductionMaterialAvailabilityBusinessController
- TBeProductionPartListBO
- TBeProductionOrderBusinessController
- TBeProductionDispositionPlanningBO
- TBePurchaseDispositionPlanningBO
- TBeProductionOrderBO
- TBePurchaseDispositionBC