Event "vor dem Belegdruck"
Event "vor dem Belegdruck"
Der Event wird direkt vor dem Druck eines Beleges aufgerufen. Er liegt außerhalb der Transaktion, die Haupttabelle ist noch nicht gesperrt.
Bei Rückgabe von .F. wird der jeweilige Beleg nicht gedruckt; jeder andere Wert bleibt unberücksichtigt.
Hinweis
Bei Sammelbelegen im Verkauf entspricht der Parameter nKeyNo:P4 die der Kunden-Nummer. Ansonsten entspricht dieser Parameter in Einzelbelegen im Verkauf der Auftragsnummer.
Parameter:
nDocSubType:P6
Während nDocArchType den Belegtyp bezeichnet, der im Archiv abgelegt wird, liefert
nDocSubType den Formulartyp des Belegs. nDocSubType weicht immer dann von nDocArchType
ab, wenn mehrere Belegvarianten im Archiv zusammengefasst werden.
Beispiel:
nDocArchType | nDocSubType | |
---|---|---|
Rechnung: | DT_RECH | DT_RECH |
Sammelrechnung: | DT_RECH | DT_SARE |
oDataModule:P8
Dieses Objekt ist in TBePrintData dokumentiert.
Bitte nie mit festen Werten für Belegtypen arbeiten, sondern immer die definierten
Codeblock-Konstanten verwenden (nicht alle def. Konst. sind für das Archiv bestimmt):
Codeblock-Konstante | Belegtyp |
---|---|
DT_ANGE | Angebot |
DT_AUFB | Auftragsbestätigung |
DT_PRRE | Proforma-Rechnung |
DT_KOMM | Kommissionierschein |
DT_PACK | Packliste |
DT_LIEF | Lieferschein |
DT_VALI | Vorab-Lieferschein |
DT_SALI | Sammel-Lieferschein |
DT_VMLI | Vermiet-Lieferschein |
DT_VMRU | Vermietungs-Rückgabeschein |
DT_VSPA | Versandpapiere |
DT_FRBR | Frachtbriefe |
DT_PAAK | Paketaufkleber |
DT_VSAZ | Versandanzeige |
DT_RECH | Rechnung |
DT_TLRE | Teilrechnung |
DT_ABRE | Abschlags-Rechnung |
DT_SARE | Sammel-Rechnung |
DT_VMZW | Miet-Zwischenrechnung |
DT_MAHN | Mahnung |
DT_MARE | Mahnung auf Rechnungskopie |
DT_PRAN | Preisanfrage |
DT_BEST | Bestellung |
DT_ABEI | Abruf-Einteilung |
DT_BEMA | Bestell-Mahnung |
DT_FEAU | Fertigungs-Auftrag |
DT_SRFO | WE Formular |
DT_SRET | WE Etikett |
DT_QSFO | QS Formular |
DT_KBET | Kommissionierbox-Etikett |
DT_SRAR | Archivmuster-Etikett |
DT_ARET | Artikel-Etikett |
DT_PRPL | Produktions-Pickliste |
DT_SHNO | Shippment Notes |
DT_AEIS | Ausfuhrerklärung |
DT_ISIV | Intrastat-Versendung |
DT_ISIE | Intrastat-Einfuhr |
DT_BVUS | Barverkauf Umsatzstatistik |
DT_BVJS | Barverkauf Journal / Tages-Summen |
DT_BVBD | Barverkauf Belegdruck |
Beispiel
| nEvtNo:P1, nDocArchType:P2, nDocNo:P3, nKeyNo:P4, nPersNo:P5, nDocSubType:P6,
nRealDocType:P7, oDataModule:P8 |
// Keine Transaktion aktiv
// Rückgabe .F. verhindert den Druck des Belegs
// kein Rechnunsgdruck bei EG-Kunden ohne UID-Nr.
Function Main()
| cLandNr, cUstIdnr |
result := true,
if .not. StrZero(nDocSubType,3) $ "160/190" then // Rechnung,Sammelrechnung
exit,
endif,
// Rechnung
if nDocSubType = 160 then
cLandNr := LookUp(waDAB050, 'DAB052',<code>nPersNo,Str(nKeyNo,6)</code>,"LLANDNR"),
endif,
// Sammelrechnung
if nDocSubType = 190 .or. Empty(cLandNr) then
cLandNr := LookUp(waDAB000, 'DAB001', <code>nPersNo</code>, "LANDNR"),
endif,
// Land = Deutschland
if cLandNr = "004" then
exit,
endif,
// EG ??
if LookUp(waDIA020, 'DIA021',<code>cLandnr</code>,"EG_KZ") <> "J" then
exit,
endif,
// EG ??
if .not. (Empty(Lookup(waDIA020,'DIA021',<code>cLandnr</code>,"EG_AB")) .or.
Lookup(waDIA020, 'DIA021',<code>cLandnr</code>,"EG_AB") <= Date()) then
exit,
endif,
// Ust-IdNr
cUstIdNr := Lookup(waDAB000, '1',<code>nPersNo</code>,"UST_IDNR"),
if "99999" $ cUstIdNr .or. "FRAGEN" $ cUstIdnr .or. Empty(cUstIdnr) .or.
"." $ cUstIdnr .or. "?" $ cUstIdnr then
MessageDlg("Rechnungsdruck für Kunde "+Str(nPersNo) +
" nicht möglich - EG-Kunde ohne gültige Ust-IdNr: "+cUstIdnr,0,4),
result := false,
endif,
end,
main()