Skip to main content
Skip table of contents

TBeProductionDispositionBC

TBeProductionDispositionBC

Die Klasse TBeProductionDispositionBC kapselt alle Funktionen, die zur Anlage von Einträgen in der Produktions-Dispositions-Planung benötigt werden.

Eigenschaften

EigenschaftBeschreibung

CbDataModule:O

Datenmodul auf dem der BusinessController arbeitet

Funktionen

FunktionParameterBeschreibung

CbDispoPlanCreate

Anlegen eines Planungs-Eintrags

aProdDispoPlanBO:O

Objekt vom Typ TBeProductionDispositionPlanningBO

aArticleNo:CArtikelnummer 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:LErlaubnis 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:CArtikelnummer 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:LErlaubnis zum Speichern von Auslauf-/Sperr-/Muster-Artikeln erteilen.
aAllowInternalMemo:LGgf. auftretende Artikel-Warnmeldungen automatisch akzeptieren
aPurchaseArticlesAllowed:L

Erlaubnis zum Speichern von Artikeln die für die Einkaufsabteilung markiert wurden ( Z/Z )

aAllowDoubleArticleNoCommissCombination:LFestlegen 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:LFreigabe 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

EreignisBeschreibung

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

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


JavaScript errors detected

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

If this problem persists, please contact our support.