Jan Büren [Wed, 3 Feb 2016 11:00:57 +0000 (12:00 +0100)]
special chars: zero-width-space (U+200b) escapen
Ferner Variablen-Ersetzung für registered TM und Copyright-Zeichen verbessert.
Falls man ein Leerzeichen nach dieser Variable hat, wurde diese nicht gedruckt
Jan Büren [Tue, 26 Jan 2016 07:34:29 +0000 (08:34 +0100)]
Beschreibung für Korrekturen im Hauptbuch erweitert
Falls der Selftest fehlende Steuerbuchungen findet, können diese
mit Korrekturen im Hauptbuch bereinigt werden. Der Vollständigkeit halber
hier eine weitere Beschreibung für diese Massnahmen (fehlerhafter Import von
Buchungen) angegeben.
Jan Büren [Tue, 26 Jan 2016 07:24:36 +0000 (08:24 +0100)]
Weitere Selftests
- Kreditoren Haupt und Nebenbuch Netto-Prüfung (ap.netamount == acc_trans.amount)
- Für alle Taxkeys <> 0 muss auch eine Steuerbuchung in acc_trans vorhanden sein
Jan Büren [Fri, 22 Jan 2016 10:11:42 +0000 (11:11 +0100)]
SelfTest -> Transaction. Test verbessert (ar.amount invoice.amount)
Summe laut Verkaufsbericht gleich Summe der Rechnungen (ar).
Der Test schlägt fehl, wenn es Debitorenbuchungen gibt, da hier keine
invoice Einträge gemacht werden. Entsprechend die Abfrage verbessert.
Die Einstellungen in der Benutzerkonfiguration, ob die Details per
default angezeigt werden sollen, wurde nur beim initialen Aufbau der
Einkaufs- und Verkaufsbelegmasken berücksichtigt. Da der Wert aber nicht
in der dafür vorgesehenen Hidden mitgeschliffen wurde, war die
Einstellung ab dem zweiten Maskenaufbau dahin.
Grund ist, dass die Hidden in form_header() ausgegeben wird, bevor in
display_row() die dazugehörige Einstellung aus der Benutzerkonfiguration
geladen wird.
Gegenmittel: In den Einstiegspunkten zum Hinzufügen und Bearbeiten von
Belegen (add() respektive edit()) bereits die Einstellung aus der
Benutzerkonfiguration laden und so der Hidden zur Verfügung stellen.
Aus irgend einem Grund registriert Rose keine neue Relationship, wenn es
bereits eine (mit leicht anderem Namen) als Foreign Key für dieselbe
Spalte gibt.
Moritz Bunkus [Mon, 11 Jan 2016 15:32:34 +0000 (16:32 +0100)]
Revert "JavaScript-Plugin: auch als Filter einsetzen können"
Dies revertet Commit 20d730acdbb52b5b75af783aa010609e25b73024. Grund
ist, dass aus bisher nicht zu analysierenden Gründen in manchen
Situationen der Template-Toolkit-Compiler oder eine andere Komponente
Quark erzeugt und daher das Plugin nicht findet.
Wenn es geht, dann sieht das compilierte Template an der Stelle wie
folgt aus:
------ snip ------
$output .= do {
my $output = '';
my $_tt_filter = $context->filter('js')
|| $context->throw($context->error);
------ snip ------
Wenn es aber nicht geht, dann wie folgt:
------ snip ------
$output .= do {
my $output = '';
my $_tt_filter = $context->filter($stash->get('js'))
|| $context->throw($context->error);
------ snip ------
Im nicht funktionierenden Fall wird das Plugin selber im Stash gesucht,
wo es aber nicht vorhanden ist.
Warum das passiert ist noch rätselhaft und wird mangels Zeit erst einmal
nicht weiter untersucht.
Moritz Bunkus [Mon, 11 Jan 2016 12:34:30 +0000 (13:34 +0100)]
Passwörter: Unterstützung für crypt, MD5 und SHA-1 entfernt
Diese Algorithmen gelten allesamt als unsicher.
Falls die Datenbank jemals in falsche Hände geraten sollte, so würden
zumindest die mit crypt und MD5 gehashten Passwörter schnell zu knacken
sein. Die mit SHA-1 gehashten dürften etwas länger dauern, aber auch sie
sind gefährdet. Daher werden sie in der Datenbank schlicht
entfernt. Admins müssen für solche Accounts neue Passwörter vergeben.
Dies sollte nur Accounts betreffen, deren Passwort sich seit der
Einführung von SHA256S als Mechanismus in kivitendo 2.7.0 Mitte 2011
nicht mehr geändert hat.
Moritz Bunkus [Mon, 11 Jan 2016 10:55:53 +0000 (11:55 +0100)]
Passwörter: Hash-Verfahren PBKDF2 unterstützen und als Standard nutzen
Der aktuelle Stand der Technik sind die SHA-*-Varianten schon lange
nicht mehr. In der Zwischenzeit wurden der PBKDF2-Mechanismus
entwickelt, um schnelles Berechnen zu erschweren. Noch neuer und in
ASICs noch schwerer umsetzbar sind BCrypt und SCrypt, für die es aber
noch keine weit verbreiteten Perl-Module gibt.
Bernd Bleßmann [Thu, 7 Jan 2016 09:50:30 +0000 (10:50 +0100)]
Drucker im Adminbereich ändern - Bug behoben
Im Drucker-Fall enthält $::form die Drucker-id in $::form->{id} und die
client-ID in $::form->{client}->{id}, beim init_client Code für den Fall
muß also erst auf id in $::form->{client}->{id} geprüft werden,
ansonsten wird der Client mit der id des Druckers gesucht und nicht
gefunden.
Moritz Bunkus [Mon, 4 Jan 2016 14:02:55 +0000 (15:02 +0100)]
Task-Server: Alarm-Signal während Ausführung ignorieren, beim Schlafen aufwachen
Über die Oberfläche kann man den Task-Server aufwecken. Doof nur, wenn
der momentan gerade einen Job ausführt, dann wird der Task-Server
nämlich gekillt.
Generell soll SIGALRM so behandelt werden, dass der Server aufgeweckt
ist, wenn er gerade schläft, und ansonsten soll das Signal komplett
ignoriert werden.
Daher wird es jetzt am Anfang jedes Durchlaufs auf IGNORE gesetzt. Auch
im Signal-Handler für das Aufwecken muss das Signal als erstes wieder
ignoriert werden, weil es ansonsten eine Zeitspanne gibt, in der der
Signal-Handler mehrfach aufgerufen werden kann, und dann stirbt der
Task-Server. Forçierbar z.B. mit:
for i in {1..100}; do
kill -ALRM <PID-des-Task-Servers>
done
G. Richardson [Wed, 23 Dec 2015 11:13:00 +0000 (12:13 +0100)]
Beim Editieren von Customer/Vendor Name in title
Den displayable Name immer im Title-Bereich anzeigen, damit man direkt
sieht, um welchen Kunden / Lieferanten es geht, auch wenn man einen der
Tabs auf hat.
G. Richardson [Mon, 21 Dec 2015 15:38:07 +0000 (16:38 +0100)]
Lagerberichte auf shippingdate statt itime umgestellt
Die beiden Lagerberichte Lagerbestand und Lagerbuchungen prüfen auf
itime statt auf shippingdate. Normalerweise sind diese beiden Daten
identisch (bis auf den Zeitanteil von itime), da man bei den meisten
Lagerbewegungen kein vom aktuellen Tag abweichendes Lagerdatum angeben
kann. Beim CSV-Import von Lagerbuchungen, z.B. für die Inventur, kann
man aber sehr wohl ein abweichendes Lagerdatum angeben, dies wurde bei
den beiden Berichten aber bisher nicht berücksichtigt. Daher wurde dies
jetzt umgestellt.
Moritz Bunkus [Thu, 17 Dec 2015 10:56:09 +0000 (11:56 +0100)]
FCGI: Prozess nach Request beenden, falls belegter Speicher größer als konfigurierbares Limit
Perl gibt Speicher nicht wieder ans Betriebssystem zurück. Um zu
erreichen, dass nach einigen sehr speicherintensiven Aktionen der Server
nicht zu swappen anfangen muss, kann der Administrator nun in der
Konfigurationsdatei Limits für den Speicherverbrauch definieren.
Werden diese Limits erreicht, so beendet sich der aktuelle
Prozess. Diese Prüfung wird erst nach vollständiger Abarbeitung eines
Requests durchgeführt. Der FCGI-Manager startet dann bei der nächsten
Anfrage automatisch einen neuen Prozess.
G. Richardson [Tue, 15 Dec 2015 11:35:34 +0000 (12:35 +0100)]
Bei Kunden/Lieferanten Recht customer_vendor_all_edit prüfen 2
Nachschlag zu 826f6eb2b3e , das Wichtigste wurde vergessen.
Beim Öffnen / Verändern / Speichern von Kunden prüfen, ob Verkäufer mit
Bearbeiter übereinstimmt, wenn Benutzer nicht das Recht
customer_vendor_all_edit hat.
Bernd Bleßmann [Mon, 14 Dec 2015 11:27:46 +0000 (12:27 +0100)]
Csv-Import: Report nicht laden, wenn keine Report-Id vorhanden ist.
Eine nicht vorhandene Report-Id führte vorher zu einem Syntax-Fehler im
Template, was wiederum dazu führte, dass der Spinner nicht aufhörte zu spinnen.