TBePurchaseDispositionBC
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
- TBePurchaseDispositionBO
- TBeProductionDispositionPlanningBO
- TBePurchaseDispositionPlanningBO
- TBeProductionDispositionBC