Rechnungsformulare

Beachten Sie zur Gestaltung von Rechnungsformularen zunächst die allgemeinen Hinweise zur xpd-Syntax und zur Formulargestaltung. Darüberhinaus gilt folgendes.

Wenn Formulare in der veralteten, nichtqualifizierte Ersatzausdrücke (mit SATZ) enthalten, werden die Formulare in der Übergangszeit automatisch in die qualifizierte Syntax umgewandelt, bei der Rechnungserstellung/Stornierung durch den Anwender unbemerkbar, im Fenster "Formulare bearbeiten" mit entsprechenden Informationsausschriften.

Label

Vom Programm werden der Reihe nach für jede Rechnung folgende Label aufgerufen. Die untergeordneten kommen zyklisch entsprechend ihrer logischen Reihenfolge mehrfach vor:
  • FORMULAR
  • RECHNUNGSKOPF
  • KOPFTEXT (lt. Druckauswahl + lt. Kunde)
  • BAUSTELLE_START
  • BAUSTELLE_BEG (siehe Hinweis *1)
  • (*2) LIEFERART_BEG, LIEFERART_END (unterscheidet Anlieferung - Selbstabholung)
  • (*2) LIEFERSCHEIN_BEG, LIEFERSCHEIN_END
  • (*2) ARTIKEL_BEG
  • (*2) ARTIKEL_END
  • Hinweis *2: die Ausführung und die Reihenfolge der vorstehenden Label hängt von der gewählten Sortierung ab
  • ARTIKEL_VORUEB - bevor die Druckvariable UEBERTRAG erhöht wird
  • ARTIKEL
  • POSTEXT
  • LSZUS_END - bei Ende einer Bst, aber nur bei "LS zusammenfassen"; für Frachtzuschl.
  • BAUSTELLE_END - nur bei mehr als einer Baustelle je Rechnung
  • PGRRABATT (mehrfach, je Prod-gruppe, für Kunde + für Händler)
  • GESRABATT (für Kunden + für Händler)
  • FUSSTEXT (lt. Kunde + lt. Druckauswahl)
  • ARTUEB (Artikelübersicht - wie unter Optionen eingestellt)
  • ARTBESTAND (Kunden-Artikel-Bestand)
  • RECHNUNGSENDE (sollte i.d.R. mit [FF.] und Blindlabel :ENDE enden; kann seinerseits zum Beispiel die Label "SKONTOAUSGABE" oder "OHNESKONTO" aufrufen)
  • SEITENWECHSEL (sollte i.d.R. [FF.] und "FORMULAR" enthalten und mit "RECHNUNGSKOPF" enden; wird dann aufgerufen, wenn die eingestellte Zeilenzahl erreicht ist)
(*1) Hinweis zu BAUSTELLE_BEG:
dieses Label wird in folgenden Fällen ausgegeben:
  1. bei Beginn einer Rechnung, wenn die Baustellenbezeichnung im Lieferschein nicht gleich der Baustellenbezeichnung in der Baustelle ist und wenn zugleich die Einstellung "WechselBstBezDrucken" (in Extras - Optionen - Rechnungssortierung - Wechsel des Baustellennamens drucken" einstellbar) gesetzt ist.
  2. innerhalb einer Rechnung, wenn die Baustellennummer im Lieferschein von einer zur anderen Position wechselt
  3. innerhalb einer Rechnung, wenn die Baustellenbez. im Lieferschein von einer zur anderen Position wechselt und wenn zugleich die Einstellung "WechselBstBezDrucken" gesetzt ist.
Der einfachste Fall (für Anwender, die auf jeden Fall und immer den Baustellennamen auf der Rechnung haben wollen und einen Baustellenwechsel nur haben wollen, wenn sich die Baustellennummer im LS ändert) ist die Verwendung von BAUSTELLEN.NAME1 usw. und den Haken (siehe 1) ) nicht zu setzen. Dann ist es egal, was in BNAME1 usw. in LSCHEIN steht.

Datenbanktabellen

Die folgenden Datenbanktabellen werden vom Programmcode gelesen. Deren Felder stehen für die Verwendung im Formular zur Verfügung. Da wo die AS-Klausel angegeben ist, ist im Formular dieser Alias-Name zu verwenden.
  • LSCHEIN
  • GESCHAEFTSPARTNER AS KUNDEN
  • GESCHAEFTSPARTNER AS HAENDLER
  • MNDGESCHAEFTSPARTNER
  • BAUSTELLEN
  • PERSONEN
  • ADRESSKOMMUNIKATION AS TEL
  • ADRESSKOMMUNIKATION AS FAX
  • MNDFAHRZEUGE
  • FAHRZEUGE
  • LSCHEIN2
  • ARTIKEL
  • ARTIKEL AS VERPACK
  • MNDGESCHAEFTSPARTNER AS MNDHAENDLER
  • GESCHAEFTSPARTNER AS SPEDITEURE
  • WERKE
  • LAENDER AS LAENDERHAENDHAUS
  • LAENDER AS LAENDERHAENDVERS
  • LAENDER AS LAENDERKUNDEHAUS
  • LAENDER AS LAENDERKUNDEVERS
  • EINHEITEN
  • BANKLEITZAHLEN
  • PLISTEN

Druckvariable

Das Programm belegt folgende Druckvariable. Im Fenster "Formulare bearbeiten - Ersatzausdrücke" sind sie, soweit schon vorgekommen, als reservierte Ausdrücke aufgelistet.
  • BELART (Belegart, Wertevorrat R/V/G/S für Rechnung, Gutschrift aus Vergütung oder negat.Lieferschein, Gutschrift aus Rechnung, Storno)
  • ENTWURF, BARZAHL, EINZUG, SABHOL - mit dem Wertevorrat J/N
  • MAND_ID, MAND_BEZ, MAND_NAME, MAND_ORT - einige davon aus den Lizenzdaten
  • USER_NR, BEN_VORNAME, BEN_NACHNAME, BEN_PLZ, BEN_ORT, BEN_STRASSE, BEN_ABTEILUNG, BEN_STATUS, BEN_POSITION, BEN_TEL, BEN_FAX, BEN_EMAIL, BEN_MOBIL - angemeldeter Benutzer
  • LSCHEINPOS - zählt die Lieferscheine pro Rechnung
  • RECHNR (incl. Präffix und Suffix), WAEHRUNG (fix "EUR")
  • NEGATIVERECHNUNG (bei Gutschrift aus Lieferschein mit Inhalt TRUE, sonst FALSE)
  • PEREMAIL (Inhalt TRUE, wenn sowohl der Geschäftspartner das entsprechende Häkchen hat als auch die Dokumentenart als elektron. Dokument vorgesehen ist, sonst FALSE)
die Variablen der folgenden vier Zeilen sind veraltet, werden derzeit noch belegt, sollen aber nicht mehr verwendet werden:
  • HNUMMER (Kunden-Nr bzw. abw.Debit-Nr des Kunden bzw. des Händlers)
  • HNAME, HFIRMA, HSTRASSE, HPLZ, HORT - bei LS ohne Händler aus Kunden, sonst aus Händler
  • KNAME, KFIRMA, KSTRASSE, KPLZ, KORT - aus Kunden belegt, wenn im LS Händler!=Kunde steht, sonst leer
    vorstehende sind ersetzbar durch: KUNDEN.NAME1/2 oder HAENDLER.NAME1/2, KUNDEN.VERSAND_STRASSE / VERSAND_PLZ / VERSAND_ORT oder HAENDLER....
  • USTID - immer aus Kunden, nie aus Händler
  • HAE_DEBINR - abw. DebitorenNr eines evt. Händlers
  • FIRMEN_USTID, STEUERNR, FIRMENNR, SEPA_GLAEUBIG - diejenige der eigenen Firma, aus Optionen (ehemals Firmen)
  • RAND_LINKS, RAND_OBEN - aus Optionen
  • MEMO (innerhalb Kopf-/Fusstext (sowohl lt. Kunden als auch lt. Druckauswahl) / LS2-Positionstext)
  • EPREIS, ZLPREIS, ERABATT, ZLRABATT, SAERABATT, SAZLRABATT - unterscheiden sich von Tab-Feldern durch Vorzeichenumkehr
  • MENGE - identisch LSCHEIN2.MENGE, außer bei LSZusammenfassen
  • WARENANTEIL = EPREIS minus LSCHEIN2.FRACHT
  • WERLOES und FERLOES - entsprechen den gleichnamigen Datenbankfeldern aus LSCHEIN2, die aber erst beim endgültigen Druck belegt werden und also erst beim Storno verfügbar sind
  • MWSTPROZ, MWSTNETTO - je Position (wegen anderer Rundung)
  • TEXTFRVERGUET (aus Syspar-Einstellung), UEBERTRAG
  • BUDATUM, REDATUM - wie vom Anwender beim Aufruf eingegeben
  • BAUST_PMENGE, BAUST_PEINH, BAUST_BETRAG - kumuliert je Baustelle
  • LIA_MENGE, LIA_PMENGE, LIA_BETRAG - kumuliert je Lieferart (Anlieferung/Selbstabholung)
  • LS_MENGE, LS_PMENGE, LS_BETRAG - kumuliert je Lieferschein
  • ART_MENGE, ART_PMENGE, ART_BETRAG - kumuliert je Artikel
folgende sind nur bei RECHNUNGSENDE sinnvoll belegt:
  • SKPROZ, SKFAEHIG, SKTAT, SKNETTO, SKMWST, SKONTODATUM, SKBETRAG (skontiert zu zahlen = RBETRAG minus SKTAT), SKTAGE, NETTOTAGE, NETTODATUM, RBETRAG
  • BETRAG_NETTO, BETRAG_BRUTTO, BETRAG_MWST, FRACHT, FRACHT_NETTO, WARENWERT
  • ANZMWST - Anzahl unterschiedlicher MWSt-Schlüssel je Rechnung (1 bis 4)
  • MWSTNETTO_i, MWSTPROZ_i, MWSTBETR_i, MWSTENDBETR_i (i von 1 bis 4)
  • PRODMENGE, INWORTEN
  • für Vorkasse: VORK_ZUTREFF, VORK_KOMPLETT (Werte J/N/T), VORK_VERFUEGBAR, VORK_INANSPRUCH, VORK_NOCHZAHLEN
folgende nur im Label GESRABATT/PGRRABATT:
  • PGRBEZ - Produktgruppenbezeichnung bei Produktgruppenrabatt
  • PGR_BAUST - zugehörige Baustelle, wenn der Rabattblock baustellenweise ausgegeben wird; das ist dann der Fall, wenn für mindestens eine vorkommende Produktgruppe die Rabattbedingungen (Prozentsatz, abs.Rabatt, Warenbezug) baustellenabhängig sind; andernfalls ist diese Variable in allen Zeilen Null
  • RABFAEHIG - Bezugsmenge oder Betrag
  • ZWISCHSUMM - vor Abzug des Rabattes
  • RABATT - Rabattbetrag
  • RABATT_PRZ, RABATT_ABS - entsprechenden folgenden:
    - beim Kunden-Ges-Rabatt entspricht dies den Feldern MNDGESCHAEFTSPARTNER.RABATTPROZENT / ...RABATT,
    - beim Händler-Ges-Rabatt den Feldern im Händler-Datensatz,
    - beim Pgr-Rabatt den Feldern ENDRBT_PRZ bzw. ENDRBT_DM aus SKOND
nur in der Artikel-Übersicht: ANZAHL, ARTIKELNR, ARTIKELBEZ, MENGE, EPREIS, ZLPREIS, EINHEIT, IMPARTNR
nur im Artikel-Bestand: ARTIKELNR, ARTIKELBEZ, MENGE
nur bei LS-Zusammenfassen bei BAUSTELLE_END: FRZUSCHL

Bei den vorstehend genannten Boolschen Variablen mit Wertevorrat TRUE/FALSE wird zusätzlich auch der Wert "J" und der Wert "1" als TRUE gewertet.

IF-Bedingungen

  • 1 = Entwurf
  • 2 = Barzahler
  • 4 = Händler liegt vor
  • 8 = Selbstabholer
  • #10 = neg.Rechn-Betrag (als Gutschrift interpretierbar)
  • #20 = erste Zeile liegt vor (bei KOPF-/FUSS-/POSTEXT/ARTBESTAND/ARTUEB)
  • #40 = letzte Zeile liegt vor (bei KOPF-/FUSS-/POSTEXT/ARTBESTAND/ARTUEB)
  • #80 = Text aus Kunden oder Händler (statt lt. Auswahl) liegt vor (bei KOPF-/FUSSTEXT)
  • #100 = Text aus Händler (statt aus Kunden) liegt vor (bei KOPF-/FUSSTEXT)
  • #20 = Rabatt drucken (bei ARTIKEL)
  • #40 = Frachtzuschlag drucken (bei ARTIKEL)
  • #80 = Prozent-Rabatt liegt vor (bei ARTIKEL)
  • #100 = zwei Steuerzeilen vorhanden (bei RECHNUNGSENDE)
  • #200 = drei Steuerzeilen vorhanden (bei RECHNUNGSENDE)
  • #300 = vier Steuerzeilen vorhanden (bei RECHNUNGSENDE)
  • #400 = Bankeinzug (bei RECHNUNGSENDE)
  • #800 = Skonto drucken (bei RECHNUNGSENDE) entspricht der Variablen GUTSCHRIFTKZ im dBASE-Programm; wird vom Programm gesetzt,
    a) wenn es sich um eine (echte) Rechnung (mit positivem Betrag) handelt
    b) wenn sich um eine Gutschrift / ein Storno handelt und zugleich in den Optionen das Kennzeichen "Skonto auf Gutschriften" gesetzt ist; es kann sich um eine Gutschrift wegen negativen Betrages handeln, um eine Gutschrift aus Vergütung oder um eine Gutschrift oder ein Storno aus einer Rechnung
  • #100 = Kundenrabatt (sonst Händlerrabatt) (bei PGRRABATT/GESRABATT)
  • #200 = Prozentrabatt (sonst Rabatt je Menge) (bei PGRRABATT/GESRABATT)
  • #1000 = nach Änderung der steuerschlüsselabhängigen Beträge durch Produktgruppenrabatt (für MWSt-Tabelle in Diagnoseformular)
  • #2000 = nach Änderung der steuerschlüsselabhängigen Beträge durch Gesamt-Rabatt (für MWSt-Tabelle in Diagnoseformular)
  • #4000 = Beträge sind gedreht worden, da Gesamtrechnungsbetrag negativ ist

Kennzeichnung von DUPLIKATEN

Ersatzausdrücke in spitzen Klammern mit beginnendem DUP: sind verwendbar. Diese Ersatzausdrücke werden bei der normalen Substitution der Labels nicht beachtet, sondern erst bei Ende der Rechnung. Auf das DUP: folgt der spezielle Inhalt für das jeweilige Exemplar, im einfachsten Fall ist das ein Ausdruck, der auf jedes Duplikat übernommen wird. Wenn in dem Ausdruck das Zeichen $ vorkommt, so wird es durch die lfd. Nummer des Duplikates ersetzt. Es können mehrere durch das Zeichen | getrennte Ausdrücke verwendet werden, dann gilt der erste Ausdruck für das Original, der nächste für das erste Duplikat, der nächste für das zweite Duplikat und so weiter; der letzte gilt für alle noch folgenden Duplikate. Ein Teilausdruck kann auch leer sein.
Beispiele:
  • <DUP:2 2 map txt "Duplikat $"> - wird auf Original entfernt, auf Duplikaten erfolgt der Eindruck mit laufender Nummer (hat dieselbe Wirkung wie <DUP: | 2 2 map txt "Duplikat $">)
  • 2 2 map txt "<DUP:Original | für Steuerberater | weitere Kopie $">"
Es können mehrere solche Ersatzausdrücke je Rechnung vorhanden sein. Die Duplikate werden nur beim endgültigen Druck erzeugt. Duplikate sind auch bei Frachtgutschriften verwendbar.

Elektronische Rechnung

Um elektronische Rechnungen zu verwenden und per EMail zu versenden, sind folgende Erweiterungen sinnvoll:
  • Die Kennzeichnung des Entwurfsdruck könnte zum Beispiel auf folgende Weise erfolgen:
    [IF.1][IF.PEREMAIL=TRUE] 0 0.4 mrp txt "wird per EMail versendet"
  • Label :MAIL_BETREFF
    Ersatzausdrücke werden wie gewohnt substituiert; xpd-Befehle haben keine Auswirkung; nur die erste Zeile dieses Labels wird als Betreffzeile verwendet, der Rest des Labels wird ignoriert; wenn nicht definiert, dann verwendet das Programm als Standard "Rechnung [RECHNR]"
  • Label :MAIL_INHALT
    analog zu vorstehenden, aber viele Zeilen verwendbar; Leerzeilen am Ende werden ignoriert; Standard ist "In der Anlage erhalten Sie die Rechnung [RECHNR]."