Ab Version 4.0.3 unterstützt die Bline beim Export von XRechnungen das Format 3.0. Hierzu wurde die Auswahlbox für das Format im Kundenstamm erweitert und die Übergabe entsprechend modifiziert. U.a. wird bei XRechnung 3.0 die Übergabe der Mailadressen von Verkäufer (BT-34) und Käufer (BT-49) als Pflichtangabe gefordert. Hierfür werden in der Bline die Mailadressen aus dem Filialstamm und aus dem Beleg herangezogen.
Seit BLine Version 3.13.3 erscheint beim Umbuchen eines VK- Beleges auf einen anderen Kunden ein neuer Dialog (siehe die dortige Versionsinfo).
Bei gewählter Option “NEIN - Umbuchen und Preise beibehalten” waren bislang nur Positionen vor Veränderung sicher geschützt, bei denen für einen der beteiligten Kunden AdressArtikel-Preise gegeben waren. Ohne AdressArtikel-Beteiligung konnte es trotzdem zu Preis-Rabatt-Änderungen im Beleg kommen, wenn zwischenzeitlich andere Preise/Rabatte für den Artikel im Bereich der Standard-Preislisten- und Rabattdefinitionen eingepflegt wurden. Dies wurde korrigiert.
Im Druckdialog wurde ein Button “Beleg ausgleichen” eingebaut, welcher dazu dient, bei einer Barzahlung den Zahlbetrag und den Skontobetrag automatisch zu befüllen.
Bei einer Beleganlage aus dem CRM (Adress-Stamm) heraus oder auch per GDI-Basic-Funktion BelegADD wurde das Datenfeld UPSKdNr im Belegkopf nicht mit dem Wert aus dem Kundenstammsatz gefüllt. Dies wurde ergänzt.
Bei einem Vorgang wird jetzt der Änderungsbediener und das Änderungsdatum auch geschrieben, wenn man in der Dokuverwaltung bei aktivierter Detailansicht im “Detailkopf” die Notiz verändert. Bisher wurde dies nur bei einer Bearbeitung der Notiz im geöffneten Vorgang gesetzt.
Analog zur Übernahme in den Vorgangsgrid eines Beleges wurde jetzt die Übernahme einer E-Mail per Drag & Drop in den Vorgangsgrid des geöffneten Projektstammes ermöglicht. Dabei wird der E-Mail die Projektnummer und falls vorhanden auch die AdressID des Projektstammes zugeordnet. Eine bereits anderweitig eingelesene E-Mail kann - ebenfalls wie bisher beim Beleg - aber nicht ein zusätzliches Mal per Drag & Drop übernommen werden.
Bei einem EMail-Mahnungsversand per SMTP wurden bei allen Mails eines Batches dieselbe MessageID gesetzt. Dies wurde geändert, da es zu Problemen führen kann, sofern ein Empfänger im Zuge dieses Mailversandes mehr als eine Mail erhält.
Die Feldlänge für die Rabattgruppe war in den betreffenden Datentabellen unterschiedlich groß definiert. Dies wurde nun einheitlich auf 20 Zeichen gesetzt.
Im Menüpunkt “? | Info” gibt es jetzt auf der Kartei “Lizenz” zusätzlich einen Button “Lizenz aktualisieren”. Über diesen Button lässt sich - sofern eine Lizenz-Änderung/-Erweiterung bei GDI vorgenommen wurde - ohne Abfrage des Passwortes die Lizenz aktualisieren (vorausgesetzt das Passwort wurde nicht verändert). D.h. nur ein “echter” Lizenzwechsel, also der Wechsel auf eine andere Programmnummer oder das Einspielen einer temporären Lizenz erfordert den Abruf der Lizenz über den Button “Lizenz wechseln” durch Angabe von Programmnummer und zugehörigem Passwort.
Zur Bline 4.0.2 wurden einige Verbesserungen und Korrekturen bzgl. der neuen Lizenzverwaltung vorgenommen. Diese sind im wesentlichen:
Bei einer Beleganlage aus dem AdrStamm heraus wurde bislang ein bei der betreffenden Belegart hinterlegtes, den Belegkopf betreffendes Nummerkreisbasic (z.B. :Laden.Kunden) nicht ausgeführt, sofern der Bediener eine Standardfiliale <> 0 hatte
In Ergänzung zur bekannten Funktion ExecSQLVariant gibt es jetzt eine Funktion ExecSQLVariantSession, welche aufgrund des zusätzlichen Parameters “Sessionname” Datenzugriffe auf externe Firebird-Datenbanken ermöglicht. Sie ist analog zu ExecSQLVariant aufgebaut, aufgrund der je nach SQL-Statement variablen Parameteranzahl wurde der SessionName-Parameter als erster Parameter eingeführt.
Syntax: Ergebnis := ExecSQLVariantSession(SessionName,SQLText,Parameterliste,Wert1,...,WertN);
Über die Funktion GetSessionList können die fest angelegten als auch temporäre Firebird-Sessions ausgelesen werden, inaktiv gestellte Sessions werden dabei überlesen. Als Rückgabewert erhält man einen String, der für jede Session eine Zeile in der Syntax <Sessionname>=<Databasename> umfasst. Hinweis: Es findet keine Prüfung statt, ob die Sessions einen erfolgreichen Datenbank-Connect ermöglichen. Bei Bedarf kann dies über eine zusätzliche Prüfung mit der Funktion IsFireBirdSessionValid erfolgen.
s := GetSessionList(''); show(s);
Über die neue Funktion SetTempFirebirdSession lassen sich temporäre Sessions für den Zugriff auf Firebird-Datenbanken anlegen. Temporäre Sessions sind (im Gegensatz zu den fest angelegten Sessions) nur in der eigenen Programm-Sitzung und bis zum nächsten Mandantenwechsel (Logout) verfügbar.
Syntax: Res := SetTempFirebirdSession(SessionName, DatabaseName, DBUserName, DBPassword, DBCharSet, SQLDialect, LibraryName); Parameter: Bis auf SQLDialect (Integer) sind alle Parameter vom Typ String Rückgabewert: Boolean
Die Funktionsfähigkeit einer angelegten Session (Rückgabewert true) kann und sollte mit der Funktion IsFirebirdSessionValid überprüft werden.
Die Basic-Funktion WPToChar entfernte unter bestimmten Voraussetzungen die HTML-Tags im übergebenen Text nicht korrekt. Dies trat dann auf, wenn der Text zwischen zwei HTML-Tags eine Länge von 465 Zeichen überschritt.
In der Version 4.0.1.x bestand das Problem, dass ohne Design-Paket-Lizenz generell keine GDI-Basic-Programme ausführbar waren. Dies wurde korrigiert, so dass die allgemein zugänglichen GDI-Basic-Programme wie GDI-Basic in Nummernkreisen oder Mengeneinheiten auch ohne Design-Paket ausgeführt werden können. Betroffenen Kunden wurde bis zum Fix das Design-Paket lizenziert. Mit Erscheinen dieser Korrektur wird diese Lizenzerweiterung bis zum 01.03.2024 wieder zurückgesetzt. Bitte führen Sie zeitnah ein Programmupdate auf die 4.0.2.x durch, die Lizenzanpassung erfolgt automatisch beim Programmstart.
In der BLine 4.0.1 war die für den Fachhandel verfügbare Funktion, die Namenseinträge der Anwender des betreffenden Fachhandelspartners abzurufen, nicht verfügbar. Diese Möglichkeit ist ab der vorliegenden Version wieder gegeben.
In der Vergangenheit erhielt man unter Umständen eine Zugriffsverletzung, wenn man nach der Anmeldung direkt in das Menü der Business-Line geklickt hat. Die Business-Line musste daraufhin über den Task Manager beendet werden. Dieses Problem ist nun behoben.
Bei aktivem Online-Terminplaner kann man über entsprechende Buttons eine Terminbestätigung (oder eine Ablehnung bzw. eine Abwesenheitsnotiz) für einen eingegangenen Terminplaner-Termin per E-Mail versenden. Wurde der Termin verändert erscheint jetzt bei Klick auf einen dieser Buttons eine Abfrage, ob der Termin zuvor gespeichert werden soll oder nicht. Bisher kam an dieser Stelle lediglich eine Hinweis-Meldung und man musste zunächst den Termin speichern und dann die Aktion neu angehen.
Aus den Vorgabe-Menüs wurden die Aufrufe des alten Namenseintrag-Abrufes entfernt. Bei gespeicherten Menüs erfolgt diese Menübereinigung automatisiert bei der Versionsreorganisation. Der neue Lizenzabruf erfolgt nach der Installation der Bline 4.0 im Zuge des ersten Programmstartes bzw. bei Lizenzänderungen unter dem Menü-Punkt “? | Info” auf der Karteikarte “Lizenz”.
Die Bline 4.0 wurde als erstes Programm der GDI-Produktpalette auf ein neues Lizenzsystem inkl. neuer Modulzusammensetzung umgestellt. Dies bringt verschiedene Änderungen mit sich. Diese sind im wesentlichen:
Beim Schließen des Seriennummernassistenten bei aktiver Karteikarte “Neuanlage” wird jetzt eine Eingabe/Änderung im HerstSerNr-Feld automatisch gespeichert. Bisher musste diese zuvor mit Enter bestätigt werden oder über das Speicher-Häkchen in der Navigationsleiste gespeichert werden.
In GDI-Basic wurde die Funktion CompareVersion ergänzt. Mit ihr lassen sich zwei Versionsnummern vergleichen, die jeweils einen wie bei GDI üblichen Aufbau besitzen (vier numerische Stellen durch Punkt getrennt) und “bestimmen”, welche Version die neuere ist. Dabei kann angegeben werden, bis zu welcher der vier Stellen der Vergleich stattfinden soll:
Syntax: Res := CompareVersion(V1,V2,Anz); Parameter: V1,V2 : string (Angabe der zu vergleichenden Version-Nummern) Anz : integer (Anzahl der signifikanten Stellen(Wertebereich 1-4, Default = 4) Rückgabewert: integer 0 : Versionen sind bezgl. der angegebenen Lizenzstellen gleich 1 : V1 ist bezgl. der angegebenen Lizenzstellen GRÖSSER als V2 -1 : V1 ist bezgl. der angegebenen Lizenzstellen KLEINER als V2
Es gibt eine neue GDI-Basic-Funktion “IsFireBirdSessionValid”, mit deren Hilfe man überprüfen kann, ob eine angelegte Firebird-Session einen funktionierenden Datenbank-Connect liefert. Somit lässt sich z.B. bei Datenzugriffen auf andere Firebird-Datenbanken per sTable im Vorfeld überprüfen, ob ein Zugriff überhaupt möglich ist. Die Funktion wurde erforderlich, weil die Übergabe eines über die (veraltete) Funktion CreateIBDataBase erzeugten DBNamens durch die sTable nicht unterstützt wird.
Hier Syntax und Beispiel:
// IsFirebirdSessionValid(SessionName): Integer // SessionName: Der Name der Session. Achtung: Sessions sind Case-sensitive, daher Groß-/Kleinschreibung beachten // Rückgabewert: // 0= Ein Connect über die Session ist möglich // 1= Session ist nicht vorhanden // 2= Session ist vorhanden, aber auf inaktiv gesetzt // 3= Session ist vorhanden, aber der Zugriff auf die DB funktioniert nichtSessionName := 'TESTSESSION'; Res := IsFirebirdSessionValid(SessionName); Show(Res);
Im Zuge des Updates auf die Bline 4.x erhalten bisherige Anwender, welche einen Baustein des neuen Designer-Pakets bereits in ihrer 3.13er Version besitzen die restlichen Bausteine dieses Paketes hinzu. Wer also z.B. bisher das Modul “Automatische Belegerstellung/Scripteditor” (Lizenzstelle 12.1) besaß erhält dadurch den Bildschirmdesigner dazu. Aus “Sicherheitsgründen” wird in der 4.0 das Default-Recht für den Aufruf des Bildschirmdesigners wie folgt geregelt: Die Bediener der Bedienergruppe ADMIN dürfen den Bildschirmdesigner aufrufen, Bediener anderer Gruppen dürfen den Bildschirmdesigner nicht aufrufen. Das per Default vorgegebene Recht kann über das Menü-/Rechtesystem unter “Rechte > System > Maskendesigner” individuell geändert werden.
Wenn man die Maske TFAVorganggrid, die als Unterform in verschiedenen Masken auf der Kartei “Vorgänge” verwendet wird, designt und abgespeichert hat, kam es beim Laden der Maske zu einer Fehlermeldung “Klasse TFrameGDIMailDetails nicht gefunden”. Dies wurde behoben.
In den FastReport-Belegformularen gab es im Code bislang Prüfungen, ob es sich bei der eingesetzten Programmversion um eine Bline 3.x handelt. Falls nicht wurden bestimmte Aktionen nicht ausgeführt oder auch SQL-Abfragen gemäß der alten GDILine 2.x formuliert. Beim Umstieg auf die Bline 4.x sind diese Stellen zu prüfen. In der Regel können diese ersatzlos entfernt werden. Bitte beachten, dass ggfs. die bei dem Datenobjekt TA_Personal hinterlegte SQL anzupassen ist.
War ein Anmelden aufgrund der Meldung “Die maximale Anzahl der Programmbediener wurde überschritten” nicht möglich, ging dabei die evtl. gespeicherte Hauptfenstergröße für den Bediener verloren. In Folge dessen startete das Programm beim nächsten erfolgreichen Login im Vollbildmodus. Dies wurde korrigiert.
Bei der Erzeugung eines vom GDI-Standard abweichenden PDF-Dateinamens beim Belegdruck (per Variable PDFDatei in einem BelegBefore-Nummerkreiseinsprung) erfolgt jetzt auch die automatische Dateinamenserweiterung bei wiederholten Ausdruck (“_1”, “_2”, etc.). Bislang musste diese bei Bedarf per eigener Routine nachgebildet werden.
Beim Beleg-Etikettendruck mit einem Format >=900 wurden bislang Positionen mit dem Druckkennzeichen “M”nicht berücksichtigt. Diese können nun gedruckt werden.
Das Intrastat-Verfahren ist in der Regel auf Lieferungen innerhalb der EU anzuwenden, d.h. wenn der Versender oder der Empfänger in einem anderen EU-Mitgliedsstaat ansässig ist. Dies wird in der Bline aufgrund des hinterlegten ISOA2Land-Eintrages entschieden. Es gibt jedoch EU-Sondergebiete, bei denen nicht das Intrastat-Verfahren, sondern das Zollanmeldeverfahren zum Einsatz kommt. Hierzu gehören z.B. die kanarischen Inseln, bei denen aufgrund deren Zugehörigkeit zu Spanien das ISOA2Land mit “ES” (Spanien) zu schlüsseln ist. Damit solche Belege nicht im Intrastatverfahren gemeldet werden wird ab dieser Version im Intrastat-Assistenten die Besteuerung “Drittland” als Ausschluss-Kriterium herangezogen.
Bei fehlerbehafteten Meldungen wurde u. U. in der Protokollübersicht trotzdem der Wert “1” (= “alles in Ordnung”) in der OK-Spalte angezeigt. Nach Rücksprache mit dem statistischen Bundesamt konnte hier die Auswertung einer weiteren Prüfstufe aktiviert werden. Nur wenn auch diese keine Fehler zurückliefert wird jetzt das “OK” angezeigt.
Über die neue Systemdateneinstellung “Belegdruck > PDF-Format” (im Textmodus lautet diese PDFprinter.PDFFormat=) kann bestimmt werden, ob beim Belegdruck erzeugte PDFs ein PDF/A-Format besitzen. Gültige Werte sind 0 = kein PDF/A (Default), 1 = PDF/A-1a, 2 = PDF/A-1b, 3 = PDF/A-3b. Das PDF/A-Format wurde für die Langzeitarchivierung von Dokumenten entwickelt und regelt z.B. ob Schriften in die PDF eingebettet werden oder nicht. PDFs in Zusammenhang von E-Rechnungen (ZUGFeRD, XRechnung) werden davon unabhängig wie bisher automatisch im PDF/A-3u-Format erzeugt. Im Bereich des TReporter2 kann bei einer PDF-Ausgabe das PDF/A-Format durch Übergabe der Variable “PDFFormat” im Zusatzparameter bestimmt werden.
Bei Besteuerung “3-EG-Auslandst.” konnte bislang ein Kundenstammsatz nur gespeichert werden, wenn im Feld “ISOA2Land” ein EU-Land auswählt war. Diese Restriktion wurde entschäft, um gegegenenfalls spezielle Steuerfälle abbilden zu können. Die bisherige “Stopmeldung” erscheint nun als “Warnmeldung”. Nun kann der Kundendatensatz, sowohl im Kundenstamm, als auch über die Adressstamm-Maske (Kartei “Kunde”) gespeichert werden. Das Programm bricht nicht mehr ab, so wie es in den Vorgängerversionen der Fall war.
Wurde ein Belegsammeldruck (Auswertungen > Belege > Belegdruck) zunächst z.B. zu Testzwecken als Bildschirmvorschau ausgegeben, so wurde bei der anschließenden Ausgabe auf Drucker nur der letzte Beleg ausgedruckt. Man musste die Belegsammeldruckmaske zunächst schließen und dann den Ausdruck auf Drucker vornehmen. Dies ist nun nicht mehr notwendig.
In der GDI-Business-Line wird jetzt das sog. OAuth2-Authentifizierungsverfahren für den E-Mail-Versand über SMTP bei IMAP4 E-Mailkonten unterstützt. Weitergehende Informationen finden Sie in der Online-Hilfe zum Menüpunkt “Einstellungen” bzw. auch hier im Support-Bereich in Minerva. Bitte beachten Sie, dass die Unterstützung des OAuth2-Verfahrens nicht für POP3-Konten gilt und auch zukünftig nicht vorgesehen ist.
Wollte man über ein BeforeBeleg-Nummerkreiseinsprung beim Belegdruck (Infos siehe Minerva) durch Setzen der Variable PDFPfad den Ablageort von Beleg-PDFs ändern, so war man bislang gezwungen gleichzeitig die Variable PDFDatei zu füllen, auch wenn man die Dateinamensvergabe der PDF unverändert bei GDI-Standard belassen wollte. Dies ist nun nicht mehr erforderlich.
Es gibt eine neue GDI-Basic-Funktion “GetUniqueFileName”, mit deren Hilfe man einen eindeutigen, noch nicht vorhandenen Dateinamen ermitteln kann. Dieser kann z.B. für wiederkehrende Datei-Exporte hilfreich sein, wenn bestehende Dateien nicht überschrieben werden sollen.
Die Syntax dieses Befehls lautet
GetUniqueFileName(APfad, AName: String; AModus: Integer): String; APfad: OrdnerName, in dem die Datei mit dem eindeutigen Namen abgelegt werden soll AName: DateiName, an den ggf. zwecks Eindeutigkeit ein Suffix angehängt wird AModus: Art des Suffix Wert Suffix Beispiel ----------------------------------------------------------------------------- 0 Numerisches Hochzählen D:\Temp\Test_1.txt 1 TimeStamp, Trenner "-" D:\Temp\Test_31-10-2023-08-12-56.txt 2 TimeStamp, Trenner "_" D:\Temp\Test_31_10_2023_08_12_56.txt 3 TimeStamp, Trenner "" D:\Temp\Test_31102023081256.txt
Variablen mit dem Wert NULL führten in GDI-Basic zu einem Fehler der Art “Variante des Typs (NULL) konnte nicht in Typ (String) konvertiert werden”, sofern man die Debug-Funktion nutzte oder versuchte, den Variablen-Wert mit der Funktion Clipboard in die Windows-Zwischenablage zu nehmen. Dies wurde korrigiert.
Beim normalen Beleg-Mailversand gibt es die Möglichkeit, das zum Mailversand verwendete Mailkonto über einen Nummernkreis-Einsprung “:BeforeSendMail” festzulegen. Beim Sammel-Mailversand der Belege hatte bisher dieser Einsprung keine Funktion. Dies wurde geändert.
Hat man in der Adresstabelle die Detailansicht aktiv, werden in der oberen Maskenhälfte die Adresstabelle, in der unteren Maskenhälfte der zugehörige Adress-Stamm angezeigt. Bisher wurde dabei die Adress-Stamm-Anzeige nur bei einem Wechsel zu einer anderen Hauptadresse aktualisiert. Diese Sychronisation findet nun auch statt, wenn man oben auf einen Ansprechpartner wechselt und es erfolgt ein “locate” auf den zugehörigen Ansprechpartner-Stammsatz im unteren Maskenbereich.
Aus der Menüdatei für das Standardmenü wurde der Aufruf des alten Personalstammes (TFPersonal) entfernt. Dieser wurde einst aufgenommen, damit Umsteiger von 2.x auf 3.x kontrollieren können, welche Maskenanpassungen sie hatten und welche Felder sie evtl. nach CM_Personal übernehmen müssten. Für Neuanwender war dieser Menüpunkt hinderlich.
Beim der Konstellation “Adesse ist gleichzeitig Kunde und Lieferant” wurden bei der Lieferanten-Umsatz-Anzeige die Kundenumsätze “wiederholt”. Dies wurde korrigiert.
Hat man im Terminkalender einen Ganztages-Termin angelegt, und führte für diesen Termin eine Nachbearbeitung durch, so wurde das Datum des Termin-Endes beim Speichern um einen Tag nach hinten verschoben. Dies wurde behoben.
GDI Versand: Die eigentlich zur Version 3.13.2 vorgenommene Stored Procedure-Änderung zur Behebung eines Performanceproblems in GDI Versand hatte versehentlich nicht ihren Weg in die GDI_Factur.meta gefunden. Dies wurde korrigiert.
Bei der Übernahme einer Bestellvorschlagsliste in eine oder mehrere Bestellungen konnte es - vor allem bei einer größeren Anzahl von Artikeln - zu einer abweichenden Sortierung gegenüber der Sortierung im Bestellvorschlag kommen. Dies wurde behoben.
In der BelegPos-Tabelle wurde das Datenfeld STATWERT (GDI_Float) ergänzt. GDI befüllt dieses Feld standardmäßig nicht, verwendet aber den Inhalt im Bereich der Intrastatmeldung zur Meldung des sog. Statistischen Wertes. Bislang wurde dieser immer dem Rechnungsbetrag (der sich aus LagerPr errechnet) gleichgesetzt. Jetzt ergibt sich der Statistische Wert aus STATWERT (sofern gefüllt), ansonsten wie bisher aus LagerPr. Das Feld kann bei Bedarf in der Belegbearbeitung in den Belegpositionsgrid aufgenommen und z.B. für Warenmeldungen im Bereich der Lohnveredelung genutzt werden.
In der Auswahlmaske für die Vorlagen (im Editor über das Menü “Datei > Neu aus Vorlage” zu erreichen) bzw. Textbausteine (im Editor über das Menü “Einfügen >Textbaustein” zu erreichen) war die Funktion der beiden Zoom-Buttons vertauscht. Dies wurde korrigiert.
XRechnung: Über eine neue Auswahlbox im Kundenstamm (auf Kartei “E-Rechnung”) lässt sich im Falle des Ausgabetyps “XRechnung” die genaue Version des Ausgabeformates einstellen. Bisher wurde hierfür fix “2.0” verwendet und die in XML geschrieben, es sind aber nun auch die Versionen “2.1” bis “2.3” einstellbar. Hintergrund: GDI-seitig kam mit den neueren XRechnungs-Ständen nichts inhaltliches hinzu, was wir nutzen und was es in 2.0 nicht bereits gegeben hätte. Allerdings wurde beobachtet, dass mittlerweile einige Empfängervalidatoren die genaue Versionsangabe formell erwarten.
Die seit geraumer Zeit in den Metadaten bereits mitgelieferte Stored Procedure GDI_TerminBestand zur Ermittlung von Bestandswerten (Menge und Wert) von Artikeln wurde abschließenden Tests unterzogen und nach kleineren Korrekturen (s.u.) jetzt in Minerva veröffentlicht. Perspektivisch soll die bisherige Bestandsänderungsliste durch eine auf Basis der GDI_Terminbestand beruhende Liste ersetzt werden. In Folge dessen werden Bestandsänderungen Geschäftsjahres-übergreifend auswertbar werden.
Stored Procedure GDI_Terminbestand: Bei filialübergreifender Auswertung (Filiale = -2) passten je nach Datenkonstellation die ermittelten Werte nicht. Dies wurde korrigiert.
Stored Procedure GDI_Terminbestand und Ausgabe der Einzelbewegungen: Auch wenn keine Bewegungen in einem untersuchten Zeitraum stattfinden, erfolgt nun bei einer vorhandenen Anfangsinventur eine Datenausgabe (bei dem logischerweise Von- und Bis-Bestand identisch ist)