TBePurchaseDispositionBC
Die Klasse TBePurchaseDispositionBC kapselt alle Funktionalitäten die zum Anlegen von Einträgen in der Bestell-Dispositions-Planung und Bestell-Disposition benötigt werden.
Eigenschaften
|
Eigenschaft |
Beschreibung |
|---|---|
|
CbDataModule:O |
Datenmodul auf dem der BusinessController arbeitet. |
Funktionen
|
Funktion |
Parameter |
Beschreibung |
|---|---|---|
|
CbDispoPlanCreate:L Funktion zum Anlegen eines neuen Dispositions-Planungs-Eintrags.
|
aPurchaseDispoPlanBO:O |
Objekt vom Typ TBePurchaseDispositionPlanningBO |
|
aArticleNo:C |
Artikelnummer |
|
|
aSupplierNo:N |
Lieferantennummer |
|
|
CbDispoPlanEdit:L Bearbeiten eines existierenden im übergebenen BO positionierten Planungs-Eintrags. |
aPurchaseDispoPlanBO:O |
Objekt vom Typ TBePurchaseDispositionPlanningBO |
|
CbDispoPlanPost:L Speichern eines in Neuanlage-/Bearbeitungsmodus befindlichen Planungs-Eintrags.
|
aPurchaseDispoPlanBO:O |
Objekt vom Typ TBePurchaseDispositionPlanningBO |
|
aDiscontinuedLockedOrSampleArticlesAllowed:L |
Erlaubnis Auslauf-/Sperr-/Muster-Artikel zu speichern |
|
|
aAllowInternalMemo |
Internes-Memo bestätigen/ablehnen |
|
|
CbDispoPlanCancel:L Neuanlage/Bearbeitung eines Planungs-Eintrags abbrechen. |
aPurchaseDispoPlanBO:O |
Objekt vom Typ TBePurchaseDispositionPlanningBO |
|
CbDispoPlanDelete:L Entfernt den im übergebenen BO positionierten Planungs-Eintrag. |
aPurchaseDispoPlanBO:O |
Objekt vom Typ TBePurchaseDispositionPlanningBO |
|
CbDispoPlanRelease:L Positionierten Planungs-Eintrag freigeben oder dessen Freigabe aufheben.
|
aPurchaseDispoPlanBO:O |
Objekt vom Typ TBePurchaseDispositionPlanningBO |
|
aRelease:L |
Freigabe erteilen/aufheben |
|
|
aDiscontinuedLockedOrSampleArticlesAllowed:L |
Erlaubnis Auslauf-/Sperr-/Muster-Artikel freizugeben |
|
|
CbDispoPlanToDisposition:L Überträgt den positionierten Planungs-Eintrag in die Bestell-Disposition. Dies löst das BusinessController-Event "bei Übertragung von BO-Daten" aus. Der Planungs-Eintrag ist anschließend gelöscht. |
aPurchaseDispoPlanBO:O |
Objekt vom Typ TBePurchaseDispositionPlanningBO |
|
aDiscontinuedLockedOrSampleArticlesAllowed:L |
Erlaubnis Auslauf-/Sperr-/Muster-Artikel in die Bestell-Disposition zu übertragen |
|
|
CbDispoCreate:L Funktion zum Anlegen eines neuen Dispositions-Eintrags.
|
aPurchaseDispoBO:O |
Objekt vom Typ TBePurchaseDispositionBO |
|
aArtNo:C |
Artikelnummer |
|
|
aQuantPurch:N |
Bestellmenge |
|
|
aSupplierNo:N |
Lieferantennummer |
|
|
CbDispoEdit:L Bearbeiten eines existierenden im übergebenen BO positionierten Dispositions-Eintrags. |
aPurchaseDispoBO:O |
Objekt vom Typ TBePurchaseDispositionBO |
|
CbDispoDelete:L Entfernt den im übergebenen BO positionierten Dispositions-Eintrag. |
aPurchaseDispoBO:O |
Objekt vom Typ TBePurchaseDispositionBO |
|
CbDispoPost:L Speichern eines in Neuanlage-/Bearbeitungsmodus befindlichen Dispositions-Eintrags. |
aPurchaseDispoBO:O |
Objekt vom Typ TBePurchaseDispositionBO |
|
CbDispoCancel:L Neuanlage/Bearbeitung eines Dispositions-Eintrags abbrechen. |
aPurchaseDispoBO:O |
Objekt vom Typ TBePurchaseDispositionBO |
|
CbDispoRelease:L Positionierten Dispositions-Eintrag freigeben oder dessen Freigabe aufheben. |
aPurchaseDispoBO:O |
Objekt vom Typ TBePurchaseDispositionBO |
|
aRelease:L |
Freigabe erteilen/aufheben |
|
|
CbDispoChangeQuantity:L Änderung der Menge eines existierenden im übergebenen BO positionierten Dispositions-Eintrags. Hierbei werden Staffel-Preise usw. berücksichtigt und ggf. übernommen. |
aPurchaseDispoBO:O |
Objekt vom Typ TBePurchaseDispositionBO |
|
aQuantity:N |
Bestellmenge |
|
|
CbDispoChangeQuantityPurchase:L Änderung der Einkaufs-Menge eines existierenden im übergebenen BO positionierten Dispositions-Eintrags. Hierbei werden Staffel-Preise usw. berücksichtigt und ggf. übernommen. |
aPurchaseDispoBO:O |
Objekt vom Typ TBePurchaseDispositionBO |
|
aQuantity:N |
Bestellmenge |
|
|
CbDispoToPurchaseOrder:N Überträgt den positionierten Dispositions-Eintrag in die Bestell-Rückstände. Dies löst das BusinessController-Event "bei Übertragung von BO-Daten" aus. Der Dispositions-Eintrag ist anschließend gelöscht. Die Funktion liefert Nummer der Ziel-Bestellung zurück.
|
aPurchaseDispoBO:O |
Objekt vom Typ TBePurchaseDispositionBO |
|
aOrderNo:N |
Bestellnummer. Kann mit 0 übergeben werden, um eine neue Bestellung zu erzeugen oder vorbelegt werden, um eine Position an einen existierenden Bestell-Rückstand anzufügen. |
|
|
aIgnoreMinOrderValue:L |
Ignorieren der Mindest-Bestellmenge |
|
|
aIgnoreExemptionLimit:L |
Ignorieren der Mindest-Freigrenze |
Methoden
|
Methode |
Parameter |
Beschreibung |
|---|---|---|
|
CbDispoPlanChangeArticleNo Methode zum Anpassen des Artikels.
|
aPurchaseDispoPlanBO:O |
Objekt vom Typ TBePurchaseDispositionPlanningBO |
|
aArticleNo:C |
Neue Artikelnummer |
|
|
aCalculateOwnSupplier:L |
Günstigsten Artikel-Zulieferer ermitteln |
|
|
CbDispoPlanChangeSupplierNo Methode zum Anpassen des Lieferanten. Bei gültigem nicht gesperrtem Lieferanten werden dessen Preise-/Staffeln Rabatte etc. übernommen. |
aPurchaseDispoPlanBO:O |
Objekt vom Typ TBePurchaseDispositionPlanningBO |
|
aSupplierNo:N |
Neue Lieferantennummer |
|
|
aUseDefaultArticleSupplier:L |
Standard Artikel Lieferant verwenden |
|
|
CbDispoPlanResetOrderSuggestionQuantity Methode zum Anpassen der Bestellmenge. Diese Methode muss ausgeführt werden, nachdem die CbOrderSuggestionQuantity gesetzt wurde. |
aPurchaseDispoPlanBO:O |
Objekt vom Typ TBePurchaseDispositionPlanningBO |
|
aRoundToOrderUnit:L |
Vorschlagsmenge ggf. auf Bestelleinheit aufrunden. Dies löst ggf. das Event " bei Rundung Vorschlagsmenge (EK/Prod) " aus |
Verfügbare Ereignisse
|
Ereignis |
Beschreibung |
|---|---|
|
bei Übertragung von BO-Daten |
Dieses Event wird von den beiden Funktionen CbDispoPlanToDisposition und CbDispoToPurchaseOrder ausgelöst.
|
Beispiel
//##############################################################################
//##############################################################################
// Beschreibung: Beispiel für die Verwendung des
// TBePurchaseDispositionBC zur Anlage von
// Dispositions-Planungs- und Dispositions-Einträgen sowie die
// Übername in die Bestell-Rückstände
//##############################################################################
//##############################################################################
|
m_oDM, m_oPurchDispoBC, m_oPurchDispoPlanBO, m_oPurchDispoBO,
m_cArticleNo, m_cArticleNo2,
m_nSupplierNo_IsArticleSupplier, m_nSupplierNo_NoArticleSupplier
|
//##############################################################################
//##############################################################################
// Konstanten
//##############################################################################
//##############################################################################
m_cArticleNo := 'TASTATUR',
m_cArticleNo2 := 'MAUS',
m_nSupplierNo_IsArticleSupplier := 70000000, // Ist Artikel-Zulieferer
m_nSupplierNo_NoArticleSupplier := 80000000, // Ist kein Artikel-Zulieferer
//##############################################################################
//##############################################################################
// 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 Preis neu berechnen lassen
// 2.3 Ändern des Artikels
// 3. Freigeben des Planungseintrags
// 4. Übername des Planungseintrags in die Disposition
// @Result: null
//******************************************************************************
function DispositionPlanningExample(oDM)
|
bDiscontinuedLockedOrSampelArticlesAllowed, // Auslauf-/Sperr-/Muster-Artikel erlauben
bSuggestionQuantityCalcRequired, // Bestellvorschlagsmenge soll berechnet werden
bRoundToOrderUnit, // Ggf. auf Bestelleinheit aufrunden
bRefreshSupplierPricerates, // Zulieferer-Preise/-Konditionen übernehmen
bAllowInternalMemo, // Internes Memo mit OK akzeptieren
bRelease // Freigabe erteilen/aufheben
|
// 1. Anlegen eines neuen Planungseintrags **********************************
DBStartTrans(oDM.ADSConnection),
startseq
// Erstellen des Planungseintrags
m_oPurchDispoBC.CbDispoPlanCreate(m_oPurchDispoPlanBO,
m_cArticleNo,
m_nSupplierNo_IsArticleSupplier),
// Speichern ohne weitere (direkte) Änderung
bDiscontinuedLockedOrSampelArticlesAllowed := True,
bAllowInternalMemo := True,
m_oPurchDispoBC.CbDispoPlanPost(m_oPurchDispoPlanBO,
bDiscontinuedLockedOrSampelArticlesAllowed,
bAllowInternalMemo),
DBCommit(oDM.ADSConnection),
always
if DBInTrans(oDM.ADSConnection) then
DBRollBack(oDM.ADSConnection),
DBCancelAll(oDM),
endif,
stopseq,
// 2. Anpassen des angelegten Eintrags **************************************
DBStartTrans(oDM.ADSConnection),
startseq
m_oPurchDispoBC.CbDispoPlanEdit(m_oPurchDispoPlanBO),
// 2.1 Kommissionsnummer eintragen ***************************************
m_oPurchDispoPlanBO.CbCommiss := 'TEST_KOMM',
// 2.2 Menge verändern und Preis neu berechnen lassen ********************
bRoundToOrderUnit := False, // Wir möchten nicht automatisch auf die Bestelleinheit aufrunden
bRefreshSupplierPricerates := True, // Die Zuliefererpreise sollen verwendet werden
// Menge auf 15 Stück ändern. Danach muss die Preiskalkulation einmal durchgeführt werden
m_oPurchDispoPlanBO.CbOrderSuggestionQuantity := 21,
m_oPurchDispoBC.CbDispoPlanResetOrderSuggestionQuantity(m_oPurchDispoPlanBO,
bRoundToOrderUnit,
bRefreshSupplierPricerates),
// Speichern der Änderungen
bDiscontinuedLockedOrSampelArticlesAllowed := True,
bAllowInternalMemo := True, // Ggf. vorhandenes internes Memo wird mit OK bestätigt
m_oPurchDispoBC.CbDispoPlanPost(m_oPurchDispoPlanBO,
bDiscontinuedLockedOrSampelArticlesAllowed,
bAllowInternalMemo),
DBCommit(oDM.ADSConnection),
always
if DBInTrans(oDM.ADSConnection) then
DBRollBack(oDM.ADSConnection),
DBCancelAll(oDM),
endif,
stopseq,
// 2.3 Ändern des Artikels **************************************************
DBStartTrans(oDM.ADSConnection),
startseq
m_oPurchDispoBC.CbDispoPlanEdit(m_oPurchDispoPlanBO),
m_oPurchDispoBC.CbDispoPlanChangeArticleNo(m_oPurchDispoPlanBO,
m_cArticleNo2,
True), // Hierbei auch den passenden Zulieferer ermitteln lassen
// Gewünschte Menge anpassen, da diese auf den Defaultwert geändert wurde
m_oPurchDispoPlanBO.CbOrderSuggestionQuantity := 20,
// Wir möchten genau 20 Stück bestellen aber die Preise laden lassen
bRoundToOrderUnit := False,
bRefreshSupplierPricerates := True,
m_oPurchDispoBC.CbDispoPlanResetOrderSuggestionQuantity(m_oPurchDispoPlanBO,
bRoundToOrderUnit,
bRefreshSupplierPricerates),
// Speichern der Änderungen
bDiscontinuedLockedOrSampelArticlesAllowed := True,
bAllowInternalMemo := True, // Ggf. vorhandenes internes Memo wird mit OK bestätigt
m_oPurchDispoBC.CbDispoPlanPost(m_oPurchDispoPlanBO,
bDiscontinuedLockedOrSampelArticlesAllowed,
bAllowInternalMemo),
DBCommit(oDM.ADSConnection),
always
if DBInTrans(oDM.ADSConnection) then
DBRollBack(oDM.ADSConnection),
DBCancelAll(oDM),
endif,
stopseq,
// 3. Freigeben des Planungseintrags ****************************************
// ACHTUNG: Hier darf keine eigene Transaktion gestartet werden
bRelease := True, // Wir möchten freigeben
bDiscontinuedLockedOrSampelArticlesAllowed := True,
m_oPurchDispoBC.CbDispoPlanRelease(m_oPurchDispoPlanBO,
bRelease,
bDiscontinuedLockedOrSampelArticlesAllowed),
// 4. Übername des Planungseintrags in die Disposition **********************
// ACHTUNG: Hier darf keine eigene Transaktion gestartet werden
bDiscontinuedLockedOrSampelArticlesAllowed := True, // Auch Sperr-/Auslauf-/Muster-Artikel übernehmen
m_oPurchDispoBC.CbDispoPlanToDisposition(m_oPurchDispoPlanBO,
bDiscontinuedLockedOrSampelArticlesAllowed),
end,
//******************************************************************************
// Diese Funktion führt der Reihe nach folgende Operationen durch:
// 1. Anlegen eines neuen Dispositionseintrags
// 2. Anpassen des angelegten Eintrags
// 2.1 Kommissionsnummer eintragen
// 2.2 Menge verändern und Preis neu berechnen lassen
// 3. Freigeben des Planungseintrags
// 4. Übername des Planungseintrags in die Bestell-Rückstände
// @Result: null
//******************************************************************************
function DispositionExample(oDM)
| bIgnoreMinOrderValue, bIgnoreExemptionLimit, nNewOrderNo |
// 1. Anlegen eines neuen Dispositionseintrags ------------------------------
DBStartTrans(oDM.ADSConnection),
startseq
m_oPurchDispoBC.CbDispoCreate(m_oPurchDispoBO,
m_cArticleNo,
10,
m_nSupplierNo_IsArticleSupplier),
m_oPurchDispoBC.CbDispoPost(m_oPurchDispoBO),
DBCommit(oDM.ADSConnection),
always
if DBInTrans(oDM.ADSConnection) then
DBRollBack(oDM.ADSConnection),
DBCancelAll(oDM),
endif,
stopseq,
// 2. Anpassen des angelegten Eintrags --------------------------------------
DBStartTrans(oDM.ADSConnection),
startseq
m_oPurchDispoBC.CbDispoEdit(m_oPurchDispoBO),
// 2.1 Kommissionsnummer eintragen ---------------------------------------
m_oPurchDispoBO.CbCommiss := 'TEST_KOMM',
// 2.2 Menge verändern und Preis neu berechnen lassen --------------------
m_oPurchDispoBC.CbDispoChangeQuantity(m_oPurchDispoBO, 20),
m_oPurchDispoBC.CbDispoPost(m_oPurchDispoBO),
DBCommit(oDM.ADSConnection),
always
if DBInTrans(oDM.ADSConnection) then
DBRollBack(oDM.ADSConnection),
DBCancelAll(oDM),
endif,
stopseq,
// 3. Freigeben des Planungseintrags ----------------------------------------
m_oPurchDispoBC.CbDispoRelease(m_oPurchDispoBO, False),
writeln('Freigabe erteilt?', m_oPurchDispoBO.CbIsReleased),
m_oPurchDispoBC.CbDispoRelease(m_oPurchDispoBO, True),
writeln('Freigabe erteilt?', m_oPurchDispoBO.CbIsReleased),
// 4. Übername des Planungseintrags in die Bestell-Rückstände ---------------
// ACHTUNG: Hier darf keine eigene Transaktion gestartet werden
bIgnoreMinOrderValue := True, // Mindest-Bestellmenge ignorieren
bIgnoreExemptionLimit := True, // Unterschreitung der Mindest-Freigrenze ignorieren
// Übernehmen und neue Auftragsnummer merken
nNewOrderNo := m_oPurchDispoBC.CbDispoToPurchaseOrder(m_oPurchDispoBO,
0,
bIgnoreMinOrderValue,
bIgnoreExemptionLimit),
writeln('Auftragsnummer des neuen Bestell-Rückstands', nNewOrderNo),
// 5. Weitere Postition anlegen und an vorgegebenen Bestell-Rückstand anfügen
DBStartTrans(oDM.ADSConnection),
startseq
m_oPurchDispoBC.CbDispoCreate(m_oPurchDispoBO,
m_cArticleNo2,
10,
m_nSupplierNo_IsArticleSupplier),
m_oPurchDispoBO.CbCommiss := 'TST_KOMMADD',
m_oPurchDispoBC.CbDispoPost(m_oPurchDispoBO),
DBCommit(oDM.ADSConnection),
always
if DBInTrans(oDM.ADSConnection) then
DBRollBack(oDM.ADSConnection),
DBCancelAll(oDM),
endif,
stopseq,
// ACHTUNG: Hier darf keine eigene Transaktion gestartet werden
bIgnoreMinOrderValue := True, // Mindest-Bestellmenge ignorieren
bIgnoreExemptionLimit := True, // Unterschreitung der Mindest-Freigrenze ignorieren
// Übernehmen und neue Auftragsnummer merken
m_oPurchDispoBC.CbDispoToPurchaseOrder(m_oPurchDispoBO,
nNewOrderNo,
bIgnoreMinOrderValue,
bIgnoreExemptionLimit),
writeln('Weitere Position an Auftrag: ' + Str(nNewOrderNo) + ' angefügt'),
end,
//******************************************************************************
// Erzeugt die benötigten Objekte und weist ihnen das übergebene Datenmodul zu
// @Result: null
//******************************************************************************
function CreateObjects(oDM)
// BusinessController und BusinessObjekte erzeugen
m_oPurchDispoBC := CreateObject('TBePurchaseDispositionBC', 'PURCHDISPOBC', oDM),
m_oPurchDispoPlanBO := CreateObject('TBePurchaseDispositionPlanningBO', 'PURCHDISPOPLANBO', oDM),
m_oPurchDispoBO := CreateObject('TBePurchaseDispositionBO', 'PURCHDISPOBO', oDM),
// Allen Objekten das gleiche Datenmodul zuweisen, damit sämtliche Änderungen
// innerhalb der gleichen Transaktion geschehen
m_oPurchDispoBC.CbDataModule := oDM,
m_oPurchDispoPlanBO.CbDataModule := oDM,
m_oPurchDispoBO.CbDataModule := oDM,
end,
//##############################################################################
//##############################################################################
// Hauptprogramm
//##############################################################################
//##############################################################################
startseq
m_oDM := CreateObject('TBeDBGet'),
startseq
CreateObjects(m_oDM),
DispositionPlanningExample(m_oDM),
DispositionExample(m_oDM),
always
DestroyObject(m_oDM),
stopseq,
onerror
MessageDlg('Fehler im Programm ' + ProgName() + crlf +
GetErrorText() + crlf + crlf +
DebugArr(GetErrorStack(true)), mtError),
stopseq,
Weitere Verknüpfungen