Codeblock Onlinehilfe

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(),