AufKopfNeu()
AufKopfNeu() – Neuer Auftragskopf
Die Funktion legt einen neuen Auftragskopf an und lässt ihn im Einfügemodus. Der neue Dab050-Datensatz befindet sich anschließend im Einfügemodus und kann weiter bearbeitet werden.
Parameter | Beschreibung |
---|---|
nKdNr:N | Kunden-Nr. |
cAufTyp:C | Auftrags-Typ |
nAufArt:N | Auftragsart (0-99) |
oDab000:O | Tabellenobjekt DAB000 |
oDab050:O | Tabellenobjekt DAB050 |
oMem050:O | TMemCalcTable-Object (nur aus Kompatibilität); default = nil |
nAuftragsNrAusAbteilung:N | Abteilung, die für die Auftragsnummerkreise benutzt wird |
Rückgabewert
Numerisch - Neue Auftragsnummer, falls Neuanlage erfolgreich
Beispiel
| oDM, oDab000, oDab050, oMem050, nCustomerNo, nOrderNo, cOrderKind, nOrderType |
//******************************************************************************
// Die Funktion legt einen neuen Auftrag an und speichert diesen
// @Result: Integer - ANUMMER des neuen Auftrags
//******************************************************************************
function CreateNewOrder()
Result := -1,
DbStartTrans(oDM.AdsConnection),
startseq
// Auftrag anlegen
Result := AufKopfNeu(nCustomerNo, cOrderKind, nOrderType, oDab000, oDab050,,5),
SetErrorIf(Result = 0, 'Auftrag konnte nicht angelegt werden.'),
// Auftrag speichern
if AufKopfPost(Result, oDab000, oDab050, oMem050) then
DbCommit(oDM.AdsConnection),
else
SetError('Der Auftrag mit der Nummer: ' + Str(Result) + ' konnte nicht gespeichert werden.'),
endif,
onerror
if DbInTrans(oDM.AdsConnection) then
DbRollBack(oDM.AdsConnection),
endif,
MessageDlg('Fehler beim Anlegen des Auftrags.' + CRLF + GetErrorText()),
stopseq,
end,
//******************************************************************************
// Die Funktion editiert einen bestehenden Auftrag und setzt den Termin auf die
// aktuelle Woche. Nach dem Editieren wird der Auftrag gespeichert.
// @Result: boolean - Editieren und Speichern des Auftrags erfolgreich
//******************************************************************************
function EditOrder()
Result := False,
DbStartTrans(oDM.AdsConnection),
startseq
// Auftrag editieren
Result := AufKopfEdit(nOrderNo, oDab000, oDab050, oMem050),
if Result then
// Den Termin auf den nächsten Monat setzten
oDab050:TERMIN := 'KW.' + KW(Date() + 30),
// Auftrag speichern
Result := AufKopfPost(nOrderNo, oDab000, oDab050, oMem050),
if Result then
DbCommit(oDM.AdsConnection),
else
SetError('Der Auftrag mit der Nummer: ' + Str(nOrderNo) + ' konnte nicht gespeichert werden.'),
endif,
else
SetError('Der Auftrag mit der Nummer: ' + Str(nOrderNo) + ' konnte nicht editiert werden.'),
endif,
onerror
if DbInTrans(oDM.AdsConnection) then
DbRollBack(oDM.AdsConnection),
endif,
MessageDlg('Fehler beim Bearbeiten des Auftrags.' + CRLF + GetErrorText()),
stopseq,
end,
// Hauptprogramm ###############################################################
oDM := CreateObject('TBeDbGet', 'OrderDM'),
startseq
oDab000 := DbGetTable(oDM, waDab000),
oDab050 := DbGetTable(oDM, waDab050),
oMem050 := CreateObject('TMemCalcTable', 'Mem050', oDM),
oMem050.Active := True,
startseq
nCustomerNo := 70000000,
cOrderKind := 'N',
nOrderType := 0,
// Auftrag anlegen
nOrderNo := CreateNewOrder(),
if EditOrder() then
MessageDlg('Der Auftrag mit der Nummer: ' + Str(nOrderNo) + ' wurde erfolgreich angelegt und editiert.'),
endif,
onerror
MessageDlg('Fehler beim Bearbeiten des Auftrags.' + CRLF + GetErrorText()),
stopseq,
always
DestroyObject(oDM),
stopseq,