WIMO WIMO
WIMO Computer AG / Büro Plus NexT
 

BüroPlus LIST&LABEL

Besonderheiten:
1 Allgemeines
2 Problemfälle
2.1 Seitenzahldarstellung
2.2 Herausstellung FETT der Totalrechnungsbetragszeile
2.3 Datumsfälligkeit automatisch ausdrucken
2.4 Darstellung negativer Werte, wenn die Formatierung installiert ist
2.5 KOPIE-Ausdruck
2.6 Muliplikationen mit Variablen und Konstanten
2.7 Steuerung mit Sprachkode
2.8 Modifierung der Formularausdrucke bei Rückstand & Geliefert-Positionen
2.9 Sprachkodeanpassung der Rückmeldungen
2.10 Umschaltung Texte in Textfelder
2.11 Verbundene Objekte
2.12 Modifizierungen der Fusszeile gemäss 2-fach-Darstellung der MWSt
2.13 Zeilen-Gesamtgewicht/Fusszeile: Netto&Brutto-Gewicht
2.14 Verrechnung der Miettage
2.15 Letzte Vorgangs-Nummer auf jetzigen Vorgang
3.0 TIPS für professionelles Arbeiten

1. Allgemeines
1.1 Es wird die Standardumsatzsteuertabelle vorausgesetzt:
Kode 0 MWSt 7.5 %
Kode 1 MWSt 2.3 %

1.2 In der deutschen BüroPlus-Originalversion hat es zur Kennzeichnung deutsche Hochkommas ' für die Markierung eines Textstrings. Zur Vermeidung von Missinterpretationen schlagen wir die Verwendung der englischen Doppel-Quotes " vor. Dies ist auch in diesem Artikel zu Grunde gelegt. Ein Vermischung beider Zeichen in einem Textstring ergibt einen Fehler. Das Einschieben von Leerstellen in den Formeln zwecks der besseren Lesbarkeit ist ohne Auswirkung am Resultat.

1.3 In der F1 - Online-Hilfe des List & Label Formular-Editors gibt es weitere interessante Hinweise für die Formelanwendungen.

2. Problemfälle
Im Nachfolgenden werden einige wichtige Prozeduren und Formeln dargestellt, welche aus der praktischen Arbeit im BüroPlus-Formular-Design ihren Ursprung haben. Selbstverständlich gibt es immer mehrere Wege , die zum Ziel führen und daher sind diese Ausführungen nur als wegweisende Ratschläge zu bewerten. Keinesfalls wird der Anspruch auf Vollständigkeit und Einzigartigkeit erhoben.

2.1 Seitenzahldarstellung
Problem:
Wenn nur eine Seite gedruckt wird, dann keine Seitenzahl angeben. Wenn mehrere Seiten ausgedruckt werden, dann auch auf der ersten Seite die Seitennummer ausdrucken:

Formel im Textfeld auf erster Seite:
If(AW, " " , "Seite "+Str$(Page(),3,0))

Formel im Textfeld auf Folgeseite:
"Seite "+Str$(Page(),3,0)

Zusätzlich auf erster Seite eine Verknüpfung mit der Tabelle herstellen:

Objekte -----> Objektliste:

2.2 Herausstellung FETT der Totalrechnungsbetragszeile

Problem:
In der Fusszeile der Tabelle kann nur die gesamte vertikale Spalte in FETT herausgestellt werden. Daher ist die Herausstellung der Totalrechnungsbetragszeile auf dem direkten Wege nicht möglich.

Lösung:
Die Fusszeile der Tabelle wird ohne Totalrechnungsbetragszeile normal erstellt:

Cond(AW,"Besten Dank für Ihren Auftrag"+ZahlBed+" Faktura Es gelten unsere Allgemeinen WIMO Verkaufs-und Lieferbedingungen.","")

Cond(AW,"WarenwertMWSt 7.5%MWSt 2.3%",'"Zwischensumme')

Cond(AW,""+FStr$(Val(GesWWert),"#,###,##&.##")+" "+AdrWaehr + ""+FStr$(Val(Steuer0),"#,###,##&.##")+" "+ AdrWaehr+
""+FStr$(Val(Steuer1),"#,###,##&.##")+" "+AdrWaehr+
"",""+FStr$(Val(Uebertrag),"#,###,##&.##")+" "+AdrWaehr+" ")

Zwei zusätzliche transparente Textfelder werden exakt über die Position der Totalrechnungsbetragszeile installiert.
1. Feld: Textinhalt: linksbündig
"Cond(AW,"Rechnungstotal" )

2.Feld: Textinhalt: rechtsbündig, damit die Kommastelle konstant ist!
"Cond(AW, FStr$(Val(GesREBet),"#,###,##&.##")+" "+AdrWaehr+" ")

Zusätzlich auf erster und folgenden Seiten je eine Verknüpfung mit der Tabelle herstellen. (Gemäss Pos.2.1).

Diese Zeile kann nun individuell in FETT je nach Bedarf formatiert werden!

Ausschnitt der modifizierten Beispiel-Fusszeile:  
 

Wenn mehr als eine Seite gedruckt wird, dann erscheint der Text mit der Zwischensumme mit dem Zwischenbetrag!  
 

Ein anderes Beispiel einer Tabellen-Fussdarstellung:  
 

2.3 Datumsfälligkeit automatisch ausdrucken

Problem:
Es ist der Zahlungsmoral dienlicher, wenn zusätzlich zu den Zahlungsbedingungen noch das maximale Fälligkeitsdatum ausgedruckt wird:
z.B: Zahlbar 30 Tage netto, fällig bis 15.11.2000

Lösung A: Einfach
In die Fusszeile der Tabelle die Zeile mit der Variablen ZahlBed ersetzen mit:

....+ZahlBed+" , fällig bis "+ Date$ (AddMonths (Date(VorgDatum) ,1), "%3d.%02m.%4y") + ....

Damit werden immer 30 Tage automatisch zum Vorgangsdatum beim Ausdruck hinzugezählt und wie im Beispiel dargestellt.

Lösung B: Universell
Je nach Zahlungszielvorgabe in der Adresse wird das Fälligkeitsdatum errechnet:
10 / 20 / 30 / 60 Tage netto
Wenn "Nach Absprache zahlbar" steht, dann wird dieser Text ausgedruckt.

In die Fusszeile der Tabelle die Zeile mit der Variablen ZahlBed ersetzen mit:

Cond(AW,"Besten Dank für Ihren geschätzten Auftrag."+ZahlBed+ If(((StrPos(ZahlBed,"Absprache"))<0),(" ,fällig bis "+ Date$ (JulianToDate( (DateToJulian ( Date(VorgDatum)) + Val( If( ( ( StrPos (ZahlBed, "10") ) <0), "","10") + If( ( ( StrPos (ZahlBed, "20") ) <0), "","20")+If( ( ( StrPos (ZahlBed, "30") ) <0), "","30") +If( ( ( StrPos (ZahlBed, "60") ) <0), "","60")))) ,"%3d.%02m.%4y") ),"" ) + "Es gelten unsere Allgemeinen WIMO Verkaufs-und Lieferbedingungen.","")
Damit werden immer die entsprechenden Tage automatisch zum Vorgangsdatum beim Ausdruck hinzugezählt und wie im Beispiel dargestellt.

Bei abweichenden Zahlungszielen kann der String einfach entsprechend angepasst werden.

2.4 Darstellung negativer Werte, wenn die Formatierung installiert ist

Problem:
Wenn in der Tabelle eine Wertekolonne formatiert wird, dann müssen die Nullen der Leerzeilen unterdrückt werden und gleichzeitig noch die Minuswerte (z.B. für Rabatt!) angezeigt werden.

Lösung:
Die entsprechende Tabellenkolonne folgend formatieren: z. B. Totalpreis

If (GesVKPr <>"" , Fstr$ ( Val ( GesVKPr ) , " -#,###,##&.## " )) : 2,500,00
oder
If (GesVKPr <>"" , Fstr$ ( Val ( GesVKPr ) , " -# ### ##&.## " )) : 2 500,00


2.5 KOPIE-Ausdruck

Problem:
Ab der 1. Ausdruckkopie wird der Text KOPIE automatisch auf die Kopien gedruckt.

Lösung A: Einfach
In ein Textfeld schreiben: If ( AktDuplikat > "0" , "KOPIE" )

Formatierung: FETT, Arial 18 Pkte

Lösung B: Komplex

Original à an Kunde
Kopie Nr. 1 à für FIBU
Kopie Nr. 2 à für Sachordner

In ein Textfeld schreiben:
If ( AktDuplikat = "0" , "Original","Kopie Nr. "+Str$(Val(AktDuplikat),0,0) )

Formatierung: FETT, Arial 18 Pkte

Lösung C: Komplex
Original à an Kunde
Kopie FIBU à für FIBU
Kopie Ablage à für Sachordner

In ein Textfeld schreiben:
If ( AktDuplikat = "0" , "","Kopie "+ If (AktDuplikat="1","FIBU" ,"Ablage" ))

Formatierung: Normal, Arial 14 Pkte

2.6 Muliplikationen mit Variablen und Konstanten

Problem:
Alle Zahlendarstellungen der Variablen in einer Tabelle sind nur im STRING-MODUS (Str$) ausdruckbar. Zur arithmetischen Bearbeitung muss man aber in den WERTE-MODUS (Val).

Beispiel 1: Variable mit Variable multiplizieren, auf 2 Stellen genau, rechtsbündig mit einem Leerschlag zur sicheren Darstellung der letzten Kommastelle

Str$ ( Val ( Mge ) * Val ( VK0Pr ) ,0,2)+" "
10 * 150.00 = 1500.00

Beispiel 2: Variable mit Konstante multiplizieren, auf 2 Stellen genau, rechtsbündig mit einem Leerschlag zur sicheren Darstellung der letzten Kommastelle

Str$ ( Val ( VK0Pr ) *1.075 ,0,2)+" "
10 * 1.075 = 10.07

Beispiel 3: Variable mit Konstante multiplizieren, ohne Kommastelle. Rechtsbündig mit einem Leerschlag zur sicheren Darstellung der letzten Ziffer

Str$ ( Val ( VK0Pr ) *1.075 ,0,0)+" "
10 * 1.075 = 10

2.7 Steuerung mit Sprachkode

Problem:
Ein Rechnungsformular sollte je nach Sprachkode in Deutsch oder Französisch gedruckt werden.

Basis: Adress-Stammdaten: Textblock1: X Deutsch
  Textblock2: leer
   
  Textblock1: leer
  Textblock2: X Franz

Lösung:
2 Tabellen mit deutschen bzw französischen Texten übereinanderlegen.
Die Darstellungsbedingungen definieren:

Tabelle 1 (d):  
 

Tabelle 2 (f):

 
 

Zulässige Eingabewerte: "Ja" oder "Nein" !

2.8 Modifierung der Formularausdrucke bei Rückstand & Geliefert-Positionen

Ziel: Es sollen keine Preise , MWSt-Kodes etc. in der Zusatzzeile angezeigt werden. Nur der Artikelkurztext soll wiederholt werden.

Lösung:

Funktion: StrPos (Pos, nnnn , " ") in den Spalten benützen!

Wenn der String nnnn nicht identisch ist mit dem Text in der Spalte Pos, dann ist der Ausgangswert immer -1 ! Mit der If-Funktion dann logisch abfragen!

 

If ( ((StrPos (Pos,"Rück") )<0).AND.((StrPos (Pos,"Gelief") )<0),StSz)
If ( ((StrPos (Pos,"Rück") )<0).AND.((StrPos (Pos,"Gelief") )<0),Bez,ArtKuBez)
If ( ((StrPos (Pos,"Rück") )<0).AND.((StrPos (Pos,"Gelief") )<0), If(VKPr<>'', FStr$ (Val (VKPr),'- # ### ##&.##')))
If ( ((StrPos (Pos,"Rück") )<0).AND.((StrPos (Pos,"Gelief") )<0),RabSz,"")
If ( ((StrPos (Pos,"Rück") )<0).AND.((StrPos (Pos,"Gelief") )<0), If(GesVKPr<>'', FStr$ (Val (GesVKPr),'- # ### ##&.##')))


Wenn in den Rückmeldungen keine Texte Rückstand (Rück) oder Geliefert am 11.5.2000 (Gelief) sind, dann drucke nur:
 

- die entsprechende originale Variable ( z.B. StSz), ansonsten NICHTS!
- die Artikellangbezeichnung, ansonsten nur die Artikelkurzbezeichnung
- den formatierten Verkaufspreis (Wenn vorhanden!), ansonsten NICHTS!

Beispiel - Ausdrucke / Ausschnitte

Mit deutscher Adresse: 1.Teilrechnung mit Teillieferung

Endrechnung mit Restlieferung

Mit französischer Adresse:

1.Teilrechnung mit Teillieferung


Endrechnung mit Restlieferung

2.9 Sprachkodeanpassung der Rückmeldungen

Problem:
Eine Tabelle kann in unterschiedlichen Sprachen erstellt werden. Doch die automatischen Rückmeldungen (z.B. Rückstand oder Geliefert ) sind immer in Deutsch ! Daher müssen diese Rückmeldungen separat in die richtige Sprache übersetzt werden. In der Spalte Position muss die Positionsnummer beibehalten werden.

Pos - Texte: Deutsch Geliefert am 11.5.2000 Rückstand
  Französisch livré au 11.5.2000-08-16 reste

Lösung:
Die Formel in der Tabellenspalte Position ist:

If( Val(Pos)>0,Pos, If( Left$(Pos,4) ="Rück","reste") + If( Left$(Pos,4)="Geli",StrSubst$(Pos,"Geliefert am","livré au")) )

Wenn mehr als 2 Sprachen vorhanden sind, kann zusätzlich mit der bedingten Abfrage des Textblocks (Sprachäquivalent) gearbeitet werden:

z. B. : Deutsch Franz Englisch  
Textblock-Nr. 1 2 3 (Haken gesetzt)

Anstatt: "reste" : If(TextBlNr2="Ja","reste")+if(TextBlNr3="Ja","Backlog")

2.10 Umschaltung Texte in Textfelder

Problem: Die festen Vorgangsbezeichnungen können ebenfalls mit der nachfolgenden Formel sprachmässig gesteuert werden (d/f):

StrSubst$( VorgBez ,"Bestellung vom","Commande du livraison")

Wenn mehr als 2 Sprachen vorhanden sind, kann auch hier zusätzlich für den Rückwert " Commande du livraison" mit der bedingten Abfrage des Textblocks (Sprachäquivalent) gearbeitet werden.

2.11 Verbundene Objekte

Problem:
Eine Zusatz-Linie sollte in der Tabelle unabhängig der Tabellen-Länge (Kein fixes Tabellen-Layout!) immer an der gleichen relativen Position sein.

Lösung:
Diese Linie starr mit der Tabelle verbinden, mit den Verknüpfungsattributen "vertikal" am "Ende" .


Beispielausdruck:

2.12 Modifizierungen der Fusszeile gemäss 2-fach-Darstellung der MWSt

1. Zeile: mit Text
Cond(AW,´Warenwert´+If(Val(Steuer1)>0,"MWSt 7.6%","MWSt 7.5%")+´´+If(Val(Steuer2)>0, "MWSt 2.4%","MWSt 2.3%")+´´,'Zwischensumme')

2. Zeile. Mit den Steuervariablen
Cond(AW,''+FStr$(Val(GesWWert),"#,###,##&.##")+' '+AdrWaehr+''+FStr$(Val( If(Val(Steuer1)>0, Steuer1, Steuer3) ),"#,###,##&.##")+' '+AdrWaehr+""+FStr$(Val( If(Val(Steuer2)>0, Steuer2, Steuer4) ),"#,###,##&.##")+' '+AdrWaehr+""+'',''+FStr$(Val(Uebertrag),"#,###,##&.##")+' '+AdrWaehr+'')

2.13 Zeilen-Gesamtgewicht/Fusszeile: Netto&Brutto-Gewicht

Problem:
Auf der Rechnung sollte pro Artikel das Einzelgewicht als auch das Zeilen-Gesmtgewicht angeben werden
Weiterhin sollte in der Fusszeile das Gesamtgewicht der kompletten Lieferung Netto als auch das Gesamtgewicht Brutto aufgeführt werden.
Das Gesamtgewicht Brutto rechnet sich als pro 15 kg "Gesamtgewicht der kompletten Lieferung Netto" ein Gewichtszuschlag von je 1 kg

Lösung:
In der Tabelle 2 x Kolonnen zusätzlich:
Einzelgewicht: Gew
Zeilentotalgewicht: GesGew

Inder Fusszeile in der ersten Kolonne:
Cond(AW, "Gewicht brutto: "+ Str$(Val(SumGesGew) + Int(Val(SumGesGew)/15) ,0,0) +" kg, Gewicht netto :"+SumGesGew+" kg" + 'Besten Dank für Ihren geschätzten AuftragZahlbar '+ZahlBed+" , fällig bis "+ Date$ (AddMonths( Date(VorgDatum),1),"%3d.%02m.%4y") + " Es gelten unsere Allgemeinen Geschäftsbedingungen.",'')

Dies ergibt z.B.:

2.14 Verrechnung der Miettage

DVD-Verleih

Problem:

Berechnung der Miettage:

Ausgabe:

Rückgabedatum:

VorgDatum oder ErstDatum

Datum

String:
"Verrech.Miettage: "+ Str$ ( DateToJulian (Date (Datum)) - DateToJulian (Date (ErstDatum) ) +1 ,0,0 )+" Tage"

Achtung: immer 1 Tag hinzuzählen !

2.15 Letzte Vorgangs-Nummer auf jetzigen Vorgang

AUFTRAG:
Beim Kopieren oder Wandeln eines Vorgangs sollte immer automatisch der ursprüngliche Vorgang noch im Ausdruck ngezeigt werden.

z.B.: Auf der Rechnung sollte die ursprüngliche Lieferschein-Nr. stehen.
Aber nur , wenn auch ein Lieferschein vorgängig erstellt wurde!


Lösung:
In den Text-Kopf der Rechnung ein Textfeld ergänzen mit:
If (LetzVNr2<>"", "Aus Lieferschein : " + LetzVNr2, "")

Die Nummer der Variable der Vorgangsnummer ist über PARAMETER - VORGANG - VORGANGSBEZEICHNUNGEN DEFINIEREN festzustellen.

Hinweis:
Diese Lösung lässt sich auch auf einen GUTSCHRIFT - Vorgang anwenden:
If (LetzVNr3<>"", "Aus Rechnung : " + LetzVNr3, "")

3.0 TIPS für professionelles Arbeiten

 

Immer ein Arbeitsgitter mit 5 mm horizontal und vertikal einrichten


Besonderheiten:
  Immer vom Formular " Rechnung I " ausgehen! Wenn dieses Formular den Kundenwünschen entspricht, dann davon die übrigen Formulare mit KOPIEREN erstellen. Systematisch immer vorgehen. Gleiches Erscheinungsbild für alle Formulare (Corporate Identity wahren).
  Mit BEARBEITEN à und gedrückter Umschalt/Shift-Taste die zu kopierenden Objekte markieren à KOPIEREN Im neuen Formular mit Ctrl + V - Tasten gedrückt die zu kopierenden Objekte mit BEARBEITEN à EINFÜGEN auf 1/10 mm-genau platzieren.
  Anstatt die nötigen Strings mühsam von Hand mit allen Fehlermöglichkeiten in das List & Label - Formular einzutippen, markiert man den gesamten String in diesem Beispiel- Dokument mit der Maus und kopiert ihn mit der Ctrl + C - Tastenkombination in die Windows-Zwischenablage. Mit der Ctrl + V - Tastenkombination kopiert man den String dann aus der Windows-Zwischenablage wieder in das betreffende Textfeld. Achtung: Das Zeilenumbruchzeichen wird dabei nicht mitkopiert! Dies muss anschliessend nachträglich eingegeben werden.
  Wichtig: Gross- und Kleinschreibung der Variablenbezeichnungen unbedingt einhalten, ansonsten gibt es Fehler!

WIMO Computer AG