Codeblock Onlinehilfe

TBeCbChangeStateOfConstruction

TBeCbChangeStateOfConstruction

Die Klasse TBeCbChangeStateOfConstruction kapselt Eigenschaften und Funktionen zum Ändern eines Bauzustands. Für die Benutzung der Funktionen müssen zuvor die Properties CbMasterArtNo, CbMasterSerialNo, CbArtNo, CbSerialNo auf die gewünschten Werte gesetzt werden.

Eigenschaften

Eigenschaft

Beschreibung

CbArtNo:C

Artikelnummer des zu ändernden Artikels

CbDataModule:O

Daten-Modul

CbErrorMode:N

Verhalten im Fehlerfall: - errmShowMsg -> Fehlermeldung anzeigen - errmRaise -> Exception auslösen - errmResult -> Boolean-wert als Rückgabe

CbMasterArtNo:C

Artikelnummer, dessen Baugruppe geändert werden soll

CbMasterSerialNo:C

Seriennummer des Artikels, dessen Baugruppe geändert werden soll

CbModifiedDate:N

Datum der Änderung

CbSerialNo:C

Seriennummer des zu ändernden Artikels

CbVoucherNo:C

Belegnummer

Name:C


Tag:N


Methoden

Methode

Beschreibung

CbCanChangeSerialNo(aNewSerialNo:C):L

Mit dieser Funktion lässt sich prüfen, ob die Seriennummer des übergebenen Artikels verändert werden darf.

CbCanDeleteSerialNoArticle():L

Prüft, ob ein Artikel aus dem aktuellen Bauzustand entfernt werden kann.

CbCanUseSerialNoArticleForChangeSoC():L

Prüft, ob Serien-Nr. Artikel für eine Änderung des Bauzustands benutzt / beim Master-Artikel hinzugefügt werden kann. Der Artikel: - darf keine Variante sein - muss ein Serien-Nr. Artikel sein (Serien-Nr. muss existieren) - darf nicht auf Lager sein - darf nicht in einem anderen Artikel verbaut sein - darf nicht im Versand sein

CbCanModifySerialNoArticle():L

Prüfen, ob der Bauzustand eines Artikels verändert werden kann.

CbChangeSerialNo(aNewSerialNo:C):L

Seriennummer eines Artikels austauschen.

CbDeleteSerialNoArticle():L

Serien-Nr. Artikel aus einem Bauzustand löschen.

CbInsertSerialNoArticle():L

Serien-Nr. Artikel zu einem Bauzustand hinzufügen.

Beispiel

| m_oStateObj, m_cMasterArtNR, m_cMasterSerNr, m_cSubArtNr, m_cSubSerNr |

//******************************************************************************
// Gibt alle Propertie-Werte eines ChangeStateOfConstruction-Objectes aus
//******************************************************************************
function WriteCurrentObjectState(oObj)
   writeln('##############'),
   writeln('VoucherNo', oObj.CbVoucherNo),
   writeln('SerialNo', oObj.CbSerialNo),
   writeln('ArtNo', oObj.CbArtNo),
   writeln('MasterSerialNo', oObj.CbMasterSerialNo),
   writeln('MasterArtNo:', oObj.CbMasterArtNo),
   writeln('ErrorMode', oObj.CbErrorMode),
end,

m_oStateObj := CreateObject('TBeCbChangeStateOfConstruction', 'CSOC'),
startseq
   startseq
      // ACHTUNG: Diese Daten müssen, für eine erfolgreiche Ausführung,
      //          für den jeweiligen Datenbestand angepasst werden.
      //          Hierbei ist darauf zu achten, dass dieses Beispiel einige
      //          Änderungen an den gewählten Artikel durchführt. Es ist daher
      //          ratsam einen Testartikel zu verwenden.
      m_cMasterArtNR := 'PC',
      m_cMasterSerNr := '40',
      m_cSubArtNr    := 'PC_CPU',
      m_cSubSerNr    := '1',

      // Hauptartikel setzen
      m_oStateObj.CbMasterArtNo    := m_cMasterArtNR,
      m_oStateObj.CbMasterSerialNo := m_cMasterSerNr,

      // Unterartikel setzen
      m_oStateObj.CbArtNo       := m_cSubArtNr,
      m_oStateObj.CbSerialNo    := m_cSubSerNr,

      writeln('########## Konfiguration der Properties '),
      WriteCurrentObjectState(m_oStateObj),

      writeln(crlf + '########## CbCanChangeSerialNo ' + crlf),
      //************************************************************************
      // CbCanChangeSerialNo und CbErrorMode
      //************************************************************************
      // CbErrorMode -> Fehlermeldung ausgeben
      m_oStateObj.CbErrorMode := errmShowMsg,
      m_oStateObj.CbCanChangeSerialNo(m_cSubSerNr),

      // CbErrorMode -> Exception auslösen
      startseq
         m_oStateObj.CbErrorMode := errmRaise,
         m_oStateObj.CbCanChangeSerialNo(m_cSubSerNr),
      onerror
         writeln('Fehlerausgabe ' + GetErrorText()),
      stopseq,

      // CbErrorMode -> boolean zurückgeben
      m_oStateObj.CbErrorMode := errmResult,
      iif(m_oStateObj.CbCanChangeSerialNo(m_cSubSerNr),
                                          writeln('Änderbar'),
                                          writeln('Nicht änderbar')),
      iif(m_oStateObj.CbCanChangeSerialNo(112),
                                          writeln('Änderbar'),
                                          writeln('Nicht änderbar')),

      //************************************************************************
      // CanModifySerialNoArticle
      //************************************************************************
      writeln(crlf + '########## CanModifySerialNoArticle' + crlf),

      // CbErrorMode -> Fehlermeldung ausgeben
      m_oStateObj.CbMasterArtNo    := m_cMasterArtNR,
      m_oStateObj.CbMasterSerialNo := 999,
      m_oStateObj.CbErrorMode      := errmShowMsg,
      m_oStateObj.CbCanModifySerialNoArticle(),

      // CbErrorMode -> Exception auslösen
      startseq
         m_oStateObj.CbErrorMode := errmRaise,
         m_oStateObj.CbCanModifySerialNoArticle(),
      onerror
         writeln('Fehlerausgabe ' + GetErrorText()),
      stopseq,

      // CbErrorMode -> boolean zurückgeben
      m_oStateObj.CbErrorMode := errmResult,
      iif(m_oStateObj.CbCanModifySerialNoArticle(),
                                                 writeln('Änderbar'),
                                                 writeln('Nicht änderbar')),
      m_oStateObj.CbMasterSerialNo := m_cMasterSerNr,
      iif(m_oStateObj.CbCanModifySerialNoArticle(),
                                                 writeln('Änderbar'),
                                                 writeln('Nicht änderbar')),

      //************************************************************************
      // CbCanDeleteSerialNoArticle
      //************************************************************************
      writeln(crlf + '########## CbCanDeleteSerialNoArticle' + crlf),

      m_oStateObj.CbMasterArtNo    := m_cMasterArtNr,
      m_oStateObj.CbMasterSerialNo := m_cMasterSerNr,
      m_oStateObj.CbArtNo          := m_cSubArtNr,
      m_oStateObj.CbSerialNo       := 999999,

      // CbErrorMode -> Fehlermeldung ausgeben
      m_oStateObj.CbErrorMode := errmShowMsg,
      m_oStateObj.CbCanDeleteSerialNoArticle(),

      // CbErrorMode -> Exception auslösen
      startseq
         m_oStateObj.CbSerialNo  := 999,
         m_oStateObj.CbErrorMode := errmRaise,
         m_oStateObj.CbCanDeleteSerialNoArticle(), // Gibt hier keine exception aus?!
      onerror
         writeln('Fehlerausgabe ' + GetErrorText()),
      stopseq,

      m_oStateObj.CbMasterArtNo    := m_cMasterArtNR,
      m_oStateObj.CbMasterSerialNo := 999999,
      m_oStateObj.CbErrorMode      := errmResult,
      // CbErrorMode -> boolean zurückgeben
      iif(m_oStateObj.CbCanDeleteSerialNoArticle(), writeln('Löschbar'), writeln('Nicht löschbar')),
      m_oStateObj.CbMasterSerialNo := 1,
      iif(m_oStateObj.CbCanDeleteSerialNoArticle(), writeln('Löschbar'), writeln('Nicht löschbar')),

      //************************************************************************
      // CbCanUseSerialNoArticleForChangeSoC
      //************************************************************************
      writeln(crlf + '########## CbCanUseSerialNoArticleForChangeSoC' + crlf),

      m_oStateObj.CbArtNo    := m_cSubArtNr,
      m_oStateObj.CbSerialNo := 999,

      // CbErrorMode -> Fehlermeldung ausgeben
      m_oStateObj.CbErrorMode := errmShowMsg,
      m_oStateObj.CbCanUseSerialNoArticleForChangeSoC(),

      // CbErrorMode -> Exception auslösen
      m_oStateObj.CbErrorMode := errmRaise,
      startseq
         m_oStateObj.CbCanUseSerialNoArticleForChangeSoC(), // Gibt hier keine exception aus?!
      onerror
         writeln('Fehlerausgabe ' + GetErrorText()),
      stopseq,

      // CbErrorMode -> boolean zurückgeben
      m_oStateObj.CbErrorMode := errmResult,
      iif(m_oStateObj.CbCanUseSerialNoArticleForChangeSoC(), writeln('Verwendbar'), writeln('Nicht verwendbar')),
      m_oStateObj.CbSerialNo := m_cSubSerNr,
      iif(m_oStateObj.CbCanUseSerialNoArticleForChangeSoC(), writeln('Verwendbar'), writeln('Nicht verwendbar')),

      //************************************************************************
      // CbChangeSerialNo
      //************************************************************************
      m_oStateObj.CbChangeSerialNo(3),           // Seriennummer von 1 -> 3
      m_oStateObj.CbSerialNo := '3',             // Neu positionieren
      m_oStateObj.CbChangeSerialNo(m_cSubSerNr), // Seriennummer zurück von 3 -> 1

      //************************************************************************
      // CbDeleteSerialNoArticle und CbInsertSerialNoArticle
      //************************************************************************
      m_oStateObj.CbSerialNo  := m_cSubSerNr, // Positionieren
      m_oStateObj.CbErrorMode := errmResult,  // Rückgabe als Boolean
      if m_oStateObj.CbDeleteSerialNoArticle() then // Wenn Löschen OK dann wieder hinzufügen
         writeln(iif(m_oStateObj.CbInsertSerialNoArticle(), 'Gelöscht und wieder hinzugefügt', 'Fehler')),
      else
         writeln('Löschen fehlgeschlagen'),
      endif,
   onerror
      MessageDlg(GetErrorText()),
   stopseq,
always
   DestroyObject(m_oStateObj),
stopseq,