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
  • BAUSTELLE_ENDE - bei Ende jeder Baustelle
  • 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)
  • ARTFZTUEB (Artikel-Fahrzeugtyp-Übersicht - analog vorstehendem)
  • INTRASTAT(Artikel-Übersicht - für Intra-Stat-Artikel)
  • 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 (*3)
  • ADRESSKOMMUNIKATION AS TEL (*3)
  • ADRESSKOMMUNIKATION AS FAX (*3)
  • ADRESSKOMMUNIKATION AS EMAIL (*3)
  • ADRESSKOMMUNIKATION AS MOBIL (*3)
  • 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
(*3) Hinweis zu Personen, Tel und Fax: Diese fünfTabellen beziehen sich in der Regel auf den Zuständigen des Kunden. Nur dann, wenn im Kunden kein Zuständiger hinterlegt ist, dann wird der Zuständige der ersten Baustelle der Rechnung verwendet, auch dann, wenn folgende Baustellen derselben Rechnung einen anderen Zuständigen haben. Das gilt auch für Stornos/Gutschriften aus Lieferscheinen. - Sehen Sie dazu auch die Hinweise zu Zuständigen.

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 (wie IF-Bedingung #400), SABHOL - mit dem Wertevorrat J/N
  • MAND_ID, MAND_BEZ, MAND_NAME, MAND_ORT, MAND_PLZ, MAND_STRASSE - 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
  • AUSW_ mit Zusatz des Namens des Auswahlfeldes - Benutzerauswahl; Bedeutung kann man aus den reservierten Ausdrücken erraten; sind bei Storno nicht belegt
  • LSCHEINPOS - zählt die Lieferscheine pro Rechnung
  • RECHNR (incl. Präffix und Suffix), WAEHRUNG (fix "EUR"), DOKUNR (wie RECHNR, aber ohne Prä-/Suffix), DOKUDATUM
  • 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)
  • ZAHLBED, ZAHLBED_BEZ - Nummer und Bezeichnung der zutreffenden Zahlungsbedingung
  • SKPROZ, SKTAGE, NETTOTAGE - Skonto-Prozentsatz, Skontotage, Zahlungsfrist ohne Skonto
  • SKONTODATUM, NETTODATUM = Rechnungsdatum plus Skontotage / plus Nettotage
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
  • MWSTPROZ, MWSTBEZ, MWSTNETTO - je Position (letzteres falsch gerundet gegenüber Rechnungsende)
  • FZTYPBEZ
  • FZ_SPED_NAME1 - desjenigen Spediteurs, der im Fahrzeug des Lieferscheins steht (nicht unbedingt wie Alias-Tabelle "SPEDITEURE")
  • TEXTFRVERGUET (aus Optionen), 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 ist nur bei BAUSTELLE_ENDE sinnvoll belegt:
  • MEHRERE_BST - mit Werten J (wenn es mehrere Baustellen je Rechnung gibt) oder N; wird bei Ende der ersten Baustelle belegt
folgende sind nur bei RECHNUNGSENDE sinnvoll belegt:
  • SKFAEHIG, SKTAT, SKNETTO, SKMWST, SKBETRAG (skontiert zu zahlen = RBETRAG minus SKTAT), RBETRAG
  • BETRAG_NETTO, BETRAG_BRUTTO, BETRAG_MWST, FRACHT, FRACHT_NETTO, WARENWERT
  • ANZMWST - Anzahl unterschiedlicher MWSt-Schlüssel je Rechnung (1 bis 4)
  • MWSTSCHL_i, MWSTBEZ_i, 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, VORK_LEZAHL (Datum der letzten Einzahlung)
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-(Fahrzeugtyp-)Übersicht:
  • ANZAHL, ARTIKELNR, ARTIKELBEZ, MENGE, EPREIS, ZLPREIS, EINHEIT, IMPARTNR, ARTUEB_ANZAHL, ARTFZUEB_ANZAHL
  • LFDNR - in Artikel-Fz-Typ-Übersicht je Artikel laufend ab "1" nummeriert, in Summenzeile je Artikel auf "0" gesetzt; dann beim nächsten Artikel wieder ab "1"
nur im Artikel-Bestand:
  • ARTIKELNR, ARTIKELBEZ, MENGE, ARTBESTAND_ANZAHL
nur bei LS-Zusammenfassen bei BAUSTELLE_END:
  • FRZUSCHL
Für Diagnosezwecke steht weiterhin eine Vielzahl von Variablen zur Verfügung, die mit
  • DIAG_ beginnen. Sie sind für das Diagnoseformular vorgesehen, können aber auch in anderen Formularen verwendet werden. Die Bedeutung der einzelnen Variablen kann man aus dem Diagnoseformular entschlüsseln.
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), wie Variable EINZUG=J
  • #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 - Einzelheiten stehen unter E-Mail-Passagen
  • Label :MAIL_INHALT - Einzelheiten stehen unter E-Mail-Passagen
    für den Namen einer angehängten Datei zum Datenaustausch können Ersatzausdrücke wie beim Export von Rechnungen verwendet werden.

Bamberg