Event "nach dem Belegdruck"
Event "nach dem Belegdruck"
Dieser Event wird nach dem erfolgreichen Druck eines Beleges aufgerufen und lässt sich auf bestimmte Ereignisgruppen festlegen:
Alle
Auftragsbestätigung
Lieferschein
Rechnung
Mahnung
Angebot
Bestellung
Paketaufkleber
Versandpapiere
Kommissionierschein
Preisanfrage
Fertigungs-Auftrag
Abrufeinteilung
Bestellmahnung
Versandanzeige
Proformarechnung- Vermiet-Lieferschein
Rückgabe Vermietung
Miet-Zwischenrechnung
Service-Anforderung
Hinweis
: Bei Sammelbelegen im Verkauf entspricht der Parameter nKeyNo:P4 die der Kunden-Nummer. Ansonsten entspricht dieser Parameter in Einzelbelegen im Verkauf der Auftragsnummer.
Beispiel
//------------------------------------------------------------------------------
// Nach Lieferschein-Druck wird die Rechnung freigegeben!
//------------------------------------------------------------------------------
| nEvtNo:P1, nDocArchType:P2, nDocNo:P3, nKeyNo:P4:=7770, nPersNo:P5,
nDocSubType:P6, oDab050, oDab055|
// Beleg ist komplett verarbeitet und befindet sich bereits im Archiv
// Beispiel für Belegdruck Lieferschein
// prüfen, ob alle Positionen komplett
//==============================================
function CheckPosKomplett()
result := true,
DBScope({oDab050:anummer},{oDab050:anummer+"999"},oDab055),
DBFilter("abs(bmenge)>0.and.abs(bmenge)-abs(fmenge)>0",oDab055),
DBGoTop(oDab055),
while !EoF(oDab055) do
if oDab055:bmenge<>oDab055:lmenge then
result := false, // min. einen Datensatz gefunden, der nicht komplett ist
break,
endif,
DBSkip(1,oDab055),
end,
end,
// Status des Feldes FAKTFREI (Fakturafreigabe) prüfen
//==============================================
function CheckFreigabe()
result := true,
if oDab050:faktfrei = "N" then
result := false,
//messagedlg("Auftrag " + oDab050:anummer + ": Freigabe nicht erlaubt - Freigabe im Auftrag gesperrt!",0,4),
exit,
endif,
if odab050:faktfrei = "A" then
result := false,
//messagedlg("Auftrag " + oDab050:anummer + ": Freigabe nicht erlaubt - Nur Abschlagsrechnungen möglich!",0,4),
exit,
endif,
if oDab050:faktfrei = "V" then
if .not. CheckPosKomplett() then
result := false,
//messagedlg("Auftrag " + oDab050:anummer + ": Freigabe nur für kompletten Auftrag erlaubt!",0,4),
exit,
endif,
endif,
end,
function main()
oDab050 := MyGetTable(GL_oDM,waDAB050,),
oDab055 := MyGetTable(GL_oDM,waDAB055,),
oDab050.indexname := "DAB051",
oDab055.indexname := "DAB056",
startseq,
if !DBSeek({Str(nKeyNo,6)},oDab050) then
SetError("Auftrag wurde nicht gefunden!"),
endif,
if CheckFreigabe() then
SuspendEx(oDab050,true),
if not oDab050:fakt then
MyEdit(oDab050),
oDab050:fakt := true,
MyPost(oDab050),
endif,
endif,
onerror,
//messagedlg("Auftrag " + oDab050:anummer + ": Freigabe nicht möglich - Auftrag wahrscheinlich gesperrt!",0,4),
Meld("Fehler im Event 'nach Lfs-Druck' " + GetErrorText()),
Meld("Auftrag wurde für Faktura NICHT freigegeben! Bitte manuell freigeben!"),
stopseq,
SuspendEx(oDab050,false,true),
end,
main(),