Skip to main content
Skip table of contents

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

FunktionParameterBeschreibung

CbDispoPlanCreate:L

Funktion zum Anlegen eines neuen Dispositions-Planungs-Eintrags.



aPurchaseDispoPlanBO:O

Objekt vom Typ TBePurchaseDispositionPlanningBO

aArticleNo:CArtikelnummer
aSupplierNo:NLieferantennummer

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:LErlaubnis Auslauf-/Sperr-/Muster-Artikel zu speichern
aAllowInternalMemoInternes-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:LFreigabe erteilen/aufheben
aDiscontinuedLockedOrSampleArticlesAllowed:LErlaubnis 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:LErlaubnis 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:CArtikelnummer
aQuantPurch:NBestellmenge
aSupplierNo:NLieferantennummer

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:LFreigabe 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:NBestellmenge

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:NBestellmenge

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:NBestellnummer. 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:LIgnorieren der Mindest-Bestellmenge
aIgnoreExemptionLimit:LIgnorieren der Mindest-Freigrenze

Methoden

MethodeParameterBeschreibung

CbDispoPlanChangeArticleNo

Methode zum Anpassen des Artikels.



aPurchaseDispoPlanBO:O

Objekt vom Typ TBePurchaseDispositionPlanningBO

aArticleNo:CNeue Artikelnummer
aCalculateOwnSupplier:LGü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:NNeue Lieferantennummer
aUseDefaultArticleSupplier:LStandard 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


EreignisBeschreibung

bei Übertragung von BO-Daten

Dieses Event wird von den beiden Funktionen CbDispoPlanToDisposition und CbDispoToPurchaseOrder 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

CODE
//##############################################################################
//##############################################################################
// 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


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.