Beim Buchen von Verkaufsrechnungen muss die Umbuchung der Warenbestandskonten mit Steuerschlüssel 0 ( = keine Steuer) vermerkt werden.
Bei Kreditorenbuchungen die Umsatzsteuer-Steuerschlüssel und bei Debitorenbuchungen die Vorsteuer-Steuerschlüssel nicht anzeigen.
strict deaktivieren, solange upgradescripte nicht strict sind.
Reportgenerator strict
Mehr Perlcode strict gemacht.
Spalte 'ordnumber' darf nicht NULL sein.
DATEV-Schnittstelle: Auslagerung von KNE-Schreibfunktionen in eigenes Modul. Kosmetik. Einrückung. Coderefactoring für bessere Lesbarkeit.
Lagerbestandswert zum Lagerbericht ergänzt.
Bei Kreditorenbuchungsberichten in der Typ-Spalte auch Stornos gesondert ausweisen.
Feld auffüllen in eigene Funktion verlagert.
<pagebreak> auch in der Langbeschreibung auswerten.
Die JavaScript-Funktion heißt jetzt "focus()".
Form einmal durchgecheckt. Einige kaputte Sachen deaktiviert, und das ganze mit strict durchgecheckt.
Bei verschachtelten Schleifen in der inneren Schleife eine andere Schleifenvariable als in der äußeren Schleife benutzen. Bei Perl 5.10 wird ansonsten unter der Bedingung "äußere Schleifenvariable mit my deklariert, innere hingegen ohne my" Speicher korrumpiert, und es trägt zum einfacheren Verständnis bei. Fix für Bug 839.
Einige Variablen der Warenstammdaten auch beim Ausdruck zur Verfügung stellen: ean, make, model.
Beim Buchen von Zahlungseingängen zu Debitorenrechnungen das Feld "bezahlt" bei der Rechnung aktualisieren.
Schalter Lastschrift (Verfahren) für Kunden/Lieferanten
Zugangskontrolle mithilfe des Eintrags "acs" in der Benutzerkonfiguration wird nicht mehr benutzt.
Lokale Variablen auch als lokal deklarieren.
Bei Berechnung des absoluten Rabattes den Rundungsfehler mit einbeziehen.
Beim DATEV-Export das Jahr in der Datei angeben, das durch den ausgewählten Zeitraum gegeben ist, und nicht das aktuelle Jahr.
Notes darf beim Speichern einer Wiedervorlage gerne das bereits bestehende Datenbankhandle benutzen, damit im Fehlerfalle weder die Note noch die Wiedervorlage gespeichert werden.
Konzeptioneller Fehler. Da es mehr als ein Form-Objekt geben kann (in diesem Falle beim Wiederherstellen von $form mittels restore_form()), darf das Standard-Datenbankhandle nicht geschlossen werden, wenn ein Form-Objekt vernichtet wird, sondern erst, wenn das Programm beendet wird.
DATEV-Export nicht beim ersten Fehler abbrechen, sondern eine Liste aller Fehler für den ausgewählten Zeitraum ausgeben und dann erst abbrechen. Das Datenbankhandle nicht schließen, das geschieht automatisch beim Programmende.
Kosmetik; mehr Variablen umbenannt
Kosmetik; Code vereinfacht
Variable $i in $trans umbenannt.
Kosmetik; Variablen lokal deklarieren.
Kosmetik
Eine Option "@ignore: 1" für Datenbankupgradescripte, mit denen das Script von Lx-Office ignoriert wird. Kann benutzt werden, um ein Script temporär zu deaktivieren, z.B. wenn man noch am Entwickeln ist.
Beim Anlegen des allerersten Beleges eines Typs dafür sorgen, dass vendor_id bzw. customer_id auch gesetzt werden. Andernfalls funktionieren Dinge wie Ansprechpartner-Drop-Down-Boxen nicht, oder es erscheinen später SQL-Fehler.
Bei Lieferanschrift-Drop-Down auch die Straße und den Ort anzeigen.
Fix für PostgreSQL 8.3, das eine strengere Typenprüfung als frühere Versionen besitzt. Fix für Bug 854.
COALESCE ist immer 0. Deswegen wurden in der Aufgabenliste jeder Eintrag als Preisanfrage und nicht als Angebot oder Preisanfrage dargestellt. Fix für Bug 844.
form_footer in ic.pl in Template ausgelagert.
Bericht über Lagerbewegungen: Wurde ein Filter nach Chargennummer verwendet, so wurde die Tabellenspalte chargenumber in der falschen Tabelle abgefragt, was zu einem SQL-Fehler geführt hat. Fix für Bug 841.
1. Tabellenaliasnamen in Queries benutzen, weil PostgreSQL ansonsten einen Fehler rauswirft.2. Wenn bei E/Ü-Rechnung ein Projekt ausgewählt ist, dann wurde vorher ein Teil des SQL-Codes nicht im eigentlichen Query untergebracht sondern in eine danach nicht mehr benutzte Variable geschrieben.
JavaScript-Menü: Der Schlüssel 'action' soll nicht als Parameter in den Link aufgenommen werden, nicht der Schlüssel, der durch den Schlüssel 'action' bestimmt wird. Dadurch wurde z.B. kein 'report=...' an die URL angehängt, wenn 'action=report' in der menu.ini stand.
Unterstützung von UTF-8 bei der UStVA-Konfiguration.
Falsche Reihenfolge der SQL-Parameter sorgten für Fehlermeldungen, wenn z.B. nach Betreff gesucht wurde.
Ausgabe einer ordentlichen Fehlermeldung beim Datenbankupgrade, wenn das Verzeichnis users nicht beschreibbar ist.
Bugfix beim Anlegen der Authentifizierungsdatenbank mit UTF-8. Anzeigen von Fehlermeldungen, wenn Lx-Office nicht mit UTF-8 sondern z.B. ISO-8859 konfiguriert ist und Datenbanken auf einem PostgreSQL angelegt werden sollen, das selber UTF-8 verwendet (weil das nicht geht). Forcieren von UTF-8 als Datenbankcharset auf PostgreSQL-Installationen, die mit UTF-8 als Charset angelegt wurden.
Query für die Artikelstammdaten: Falsches Joinen. Wenn die UNION aus invoice/orderitems mit ar/ap/oe gejoint wird, dann muss darauf geachtet werden, dass Zeilen aus invoice nur mit ar/ap und Zeilen aus orderitems nur mit oe gejoint wird. Grund ist, dass ar.id und ap.id den Zähler glid benutzen, während oe.id den Zähler id benutzt. Daraus resultierten Verbindungen mit Zeilen aus orderitems mit Zeilen aus ar/ap, sprich es wurden Rechnungen gefunden, in denen die Artikel gar nicht auftauchten.
Unsinniges doppeltes Durchsuchen von Tabellen.
Sortieren nach Vorgangsbezeichnung ermöglichen. Fix für Bug 749.
Update des DHTML-Tab-Scripts auf Version 2.2.
SQL-Fehler: Im Query die richtigen Tabellen-Aliase benutzen. Fix für Bug 812.
Spalte 'taxincluded' hat den Typ 'boolean' und nicht 'integer'. Fix für Bug 759.
Wir haben nun die erste Beta von Version 2.6.0.
Das Perl-Modul PDF::API2 ist nun feste Voraussetzung.
Das Javascript-Menü durch eine andere Implementation ersetzt, die auch unter dem Internet Explorer 7 funktioniert.
Benutzerdefinierte Variablen für Projekte implementiert.
Kosmetik.
Bei Druckvorschau einer Rechnung den Namen der herunterladbaren Datei nicht auf "is.pdf" belassen, sondern auf "Rechnung_(Druckvorschau).pdf" setzen.
Weitere Unterfunktionen tracen lassen.
Bei $form->parse_template() nur dann die ganzen Variablen employee_* überschreiben, wenn employee_id nicht gesetzt ist. In io.pl die ganzen employee_*-Variablen mit denen des ausgewählten Bearbeiters belegen und nicht mit denen des aktuellen Benutzers.
Die Signatur des Verkäufers ebenfalls als Variable <%salesman_signature%> zur Verfügung stellen.
1. Salesman-Daten wurden nicht in $form eingetragen, weil die User-Klasse nur noch einen Parameter erwartet.2. Kosmetik.
AJAX-Antworten nicht direkt $cgi->header() ausgeben, sondern über eine Funktion, die auch das Charset ausgibt.
JavaScript und Umlaute in UTF-8-Codierung funktioniert nicht mit der JavaScript-Funktion "encode()", deshalb "encodeURIComponent()" benutzen.
TODO-Liste: Preisanfragen und Angebote richtig anzeigen.
Beim Bearbeiten von Konten die Funktion "als neu speichern" hinzugefuegt, um ein Konto mit allen Einstelungen zu klonen
Beim Ausdruck von Angeboten / Anfragen / Aufträgen / Rechnungen wurde der Rabatt ohne Nachkommastellen berechnet und dargestellt.
Beim Ausdruck wurde der Rabattbetrag nicht anständig auf ein Array gepackt, weil IS::customer_details() $form->{discount} mit dem Wert aus der Datenbank befüllt; und deswegen ist $form->{discount} kein Array.
Bei Wandlung von Angeboten/Preisanfragen in Aufträge erst beim Speichern der Aufträge das Angebot/die Preisanfrage schließen.
Beim Umwandeln von Aufträgen in Rechnungen nicht sofort den Auftrag schließen. Beim Buchen von Rechnungen die Aufträge schließen, aus denen die Rechnung erzeugt wurde (auch mit Umweg über Lieferscheine), sofern der Auftrag damit vollständig abgerechnet wurde.
Debugcode
Query nicht doppelt ausführen.
Email-Versand: Adressen beim Quoten nicht umbrechen.
Eingangsrechnungen: Wird das Rechnungsdatum verändert, so wird per AJAX das Fälligkeitsdatum anhand der beim Lieferanten hinterlegten Zahlungsbedingungen berechnet und im Formular ersetzt.
Berichte über Zahlungsein- und ausgänge auf und absteigend sortierbar gemacht.
Die Ausgabe der Zeile "\usepackage{textcomp}" darf nur erfolgen, wenn LaTeX-Vorlagen geparset werden, nicht bei anderen Vorlagen. Da die HTMLTemplate-Klasse von der LaTeXTemplate-Klasse abgeleitet ist, muss hier also in der Basisklasse der tatsächliche Klassentyp überprüft werden.
Buchungsjournal auf- und absteigend sortierbar gemacht.
ReportGenerator: Spaltentitel in der HTML-Ausgabe ausrichtbar gemacht (Attribut "align").
Wiedervorlagenbericht sortierbar gemacht.
Bericht über Mahnungen sortierbar gemacht.
Sortierung in Berichten über Kunden und Lieferanten auch auf- und absteigbar sortierbar gemacht.
Die Sortierung soll standardmäßig aufsteigend erfolgen.
Sortierung in Berichten über Ausgangsrechnungen/Debitorenbuchungen auch auf- und absteigbar sortierbar gemacht.
Sortierung in Berichten über Eingangsrechnungen/Kreditorenbuchungen auch auf- und absteigbar sortierbar gemacht.
Sortierung in Berichten über Lieferscheine auch auf- und absteigbar sortierbar gemacht.
Sortierung in Berichten über Angebote / Aufträge / Presianfragen auch auf- und absteigbar sortierbar gemacht.
Beim Verschicken von Emails müssen die Absender- und Empfängeradressen MIME-Encodiert werden.
Beim Umwandeln von Angeboten/Preisanfragen in Aufträge die IDs in record_links speichern. Beim Umwandeln von Aufträgen und Lieferscheinen in Rechnungen die IDs in record_links speichern.
1. Variable umbenannt, in der die IDs aus OE zwischengespeichert werden, aus denen ein Lieferschein erzeugt wurde.2. Erweiterung von "RecordLinks->create_links()" um einen Modus, um die IDs aus einem String zu erhalten.3. Bug: Bei Umwandlung von Auftrag in Lieferschein Variable "delivered" leeren, weil ansonsten evtl der noch nicht gespeicherte Liferschein bereits als ausgelagert gilt.
Verknüpfungen zwischen Angeboten, Aufträgen, Lieferscheinen, Rechnungen in einer eigenen Tabelle speichern.
Kleiner Syntax-Highlighting-Fix für Emacs.
Beim Speichern bei "Nummernkreise und Standardkonten" auch die Nummern für Lieferscheine im Ein- und Verkauf speichern.
Fixes für die Situation, in der $dbcharset anders ist als das Charset der für den Benutzer ausgewählten Sprache: Die Datei "special_chars" in das $dbcharset konvertiert werden. Beim umgekehrten Auflösen der durch Button-Drücke ausgelösten Aktionen in Funktionsnamen muss von $dbcharset, das vom Browser kommt, in das Charset der vom Benutzer ausgewählten Sprache konvertiert werden, damit die Auflösung funktioniert.
HTML-Templates vor und nicht nach der Verarbeitung durch die Template-Klasse mit iconv in das $db_charset konvertieren. Andernfalls würden Daten, die bereits im $db_charset vorliegen, erneut konvertiert und damit falsch codiert sein.
Lagerbericht: Bei der Auswahl der Keys aus $form, die für die Auswahl der aus den Tabellen auszulesenden Spalten verwantwortlich sind, strenger sein. Der Key muss mit "l_" beginnen. Wird "l_" auch in der Mitte zugelassen, so schlägt dies fehl, wenn per ReportGenerator exportiert wird. Grund ist, dass diese Variablen auch nochmal mit dem Präfix "report_generator_hidden_*" in $form vorhanden sind. Dadurch würden Spalten selektiert, die es in der Datenbank nicht gibt.
Form::format_amount_units() darf auch ohne die Parameter amount und part_unit aufgerufen werden. Kein amount wird einfach als 0 gewertet, und wenn part_unit fehlt, so wird schlicht ein leerer String zurückgegeben. Macht Ausgaben wie den Lagerinhalt inkl. leerer Lagerplätze aus wh.pl einfacher.
Wenn UTF-8 als Datenbankcharset verwendet wird, so muss der ReportGenerator die an PDF::API2 übergebenen Strings als UTF-8 markieren (mit Perls Encode-Modul).
Konstanten aus anderen Packages müssen mit dem Package-Namen beginnen.