Kontoauszug verbuchen: DB-Rollback nicht zusätzlich als Fehler melden
Bei einer negativen Kreditorenbuchung (Lieferantengutschrift)
wird nun nicht mehr
"do_transaction() failed - Died at SL/Controller/BankTransaction.pm line 733."
gemeldet, sondern der Fehler an der (nicht)verbuchten Rechnung angezeigt:
"Gesendete Zahlungen können nur mit Einkaufsrechnungen und Verkaufsgutschriften verbucht werden."
Moritz Bunkus [Fri, 10 Feb 2017 14:26:51 +0000 (15:26 +0100)]
Tests: Template-Objekt in Form für Test-Cache-Verzeichnis anlegen
Dient dafür, Dateizugriffsprobleme wegen Berechtigungen zu vermeiden:
»users/templates-cache« wird normalerweise vom Webserveruser erzeugt und
beschrieben, die darin liegenden Dateien haben mode 0600. Tests werden
hingegen als normale User ausgeführt und haben damit nicht mal
Leserechte auf die Dateien in »users/templates-cache«.
Das Template-Objekt wird direkt in $::form abgelegt, wodurch dann auch
reguläre Routinen wie SL::Presenter::Base->render ins richtige
Verzeichnis schreiben.
Damit müssen auch keine Render-Tests mehr übersprungen werden, falls
keine Schreibrechte auf das Haupt-Cache-Verzeichnis
»users/templates-cache« besteht.
Moritz Bunkus [Fri, 10 Feb 2017 14:05:21 +0000 (15:05 +0100)]
Auth-DB-Upgrades alle nach SL::DBUpgrade2::Auth verschieben
Das verhindert eine Warnung wegen Umdefinition der Funktion
»SL::DBUpgrade2::clients::run« während der Tests, weil es das Script
»clients.pl« sowohl für die Auth-DB als auch für die Haupt-DB gibt.
Moritz Bunkus [Fri, 10 Feb 2017 14:02:34 +0000 (15:02 +0100)]
Auth-DB-Spalten-Infos nur lesen, wenn DB-Verbindung vorhanden
»reset« wird während des Request-Shutdowns ausgeführt. Falls aber noch
gar keine Auth-DB existiert (neue Installation z.B.), so wird versucht,
eine Verbindung dahin aufzubauen, was zu einer Fehlermeldung führt —
selbst, wenn man gerade versucht, besagte Auth-DB anzulegen.
Moritz Bunkus [Fri, 10 Feb 2017 13:25:38 +0000 (14:25 +0100)]
Test with_transaction.t: deutsche und englische Fehlermeldungen erkennen
DB-Cluster sind bei uns in Deutschland normalerweise mit englischer oder
mit deutscher Locale angelegt. Daher sollte ein Test mit beiden
Sprachvarianten genügen.
Moritz Bunkus [Fri, 10 Feb 2017 12:26:07 +0000 (13:26 +0100)]
Tests: Datenbank-Meldungen immer in English zurückgeben
Die Sprache, in der z.B. Fehlermeldungen von der Datenbank geliefert
werden, wird beim Erstellen des PostgreSQL-Clusters festgelegt. Dies ist
bei vielen Standardinstallationen Deutsch, da meinst nur
»--locale=de_DE.UTF-8« gesagt wird, und damit auch LC_MESSAGES gesetzt
wird.
Für Tests ist das ungünstig, weil sich diese darauf verlassen können
müssen, dass die Fehlermeldungen immer in einer bestimmten Sprache
sind. Unsere Tests vergleichen Fehlermeldungen mit den erwarteten
Mustern, und diese sind in Englisch.
Daher die Nachrichten-Locale Datenbankverbindungen von sowohl Auth- als
auch Hauptdatenbank am Anfang der Tests auf Englisch setzen.
Moritz Bunkus [Fri, 10 Feb 2017 12:13:52 +0000 (13:13 +0100)]
Template-Syntax-Test: eigenes Compile-Cache-Verzeichnis für Tests
CACHE_SIZE=0 sollte eigentlich dafür sorgen, dass das Template-Modul die
compilierten Templates nicht cachet. Das funktioniert aber wohl
nicht.
Daher ein eigenes Cache-Verzeichnis dafür definieren, um
Dateizugriffsprobleme wegen Berechtigungen zu vermeiden:
»users/templates-cache« wird normalerweise vom Webserveruser erzeugt und
beschrieben, die darin liegenden Dateien haben mode 0600. Tests werden
hingegen als normale User ausgeführt und haben damit nicht mal
Leserechte auf die Dateien in »users/templates-cache«.
G. Richardson [Fri, 20 Jan 2017 10:08:06 +0000 (11:08 +0100)]
console - login explizit in myconfig setzen, für Testdatenbank
Wenn man sich für die Testdatenbank einen Mandanten anlegt um sich an
der Oberfläche die generierten Testdaten anzuschauen, und die
Datenerstellung dort auch per console vorbereitet:
Moritz Bunkus [Mon, 6 Feb 2017 08:12:55 +0000 (09:12 +0100)]
Mailer: nur Adress-Anteil als Absender im SMTP-Dialog verwenden & nicht encodieren
Der SMTP-Dialog nutzt beim MAIL FROM nur den Adress-Anteil einer
E-Mail-Adresse:
MAIL FROM:<user@the.doma.in>
Daher sollte auch nur dieser Anteil übergeben werden, auch wenn in
$self->{from} potenziell eine komplette Adresse steht.
Da dieser Adress-Anteil ausschließlich aus ASCII-Zeichen besteht, muss
er dann auch nicht encodiert werden. Das macht die Strings im Log
leserlicher, und vermutlich sind MIME-Q-/-B-Encodings auch im
SMTP-Standard eigentlich nicht erlaubt (siehe RFC 5321).
Diese Änderung fügt einen Syntax-Fehler ein:
syntax error at /home/bernd/kivi/SL/Controller/DownloadZip.pm line 67, near ")) "
/home/bernd/kivi/SL/Controller/DownloadZip.pm had compilation errors.
Moritz Bunkus [Wed, 1 Feb 2017 11:51:32 +0000 (12:51 +0100)]
SimpleSystemSetting: Controller für die ganzen trivialen CRUD-Masken im System-Menü
Die Masken und Controller für sehr viele der Einstellungen im
System-Menü folgenden Schema F: es sind simple CRUD-Controller.
Sinnvoller wäre es, diesen ganzen Code in einem einzigen CRUD-Controller
zu vereinheitlichen und die Unterschiede nur anhand eines übergebenen
Typen-Parameters auszudrücken. Genau hierfür ist der
SimpleSystemSetting-Controller gedacht, und er macht mit Unterstützung
für Preisgruppen den Anfang. Andere Typen folgen.
G. Richardson [Wed, 1 Feb 2017 08:22:22 +0000 (09:22 +0100)]
SL::Dev::Part - create_assembly und create_assortment überarbeitet
create_assembly wie create_assortment erweitert, so daß man direkt beim
Erstellen die Erzeugnisbestandteile als Assembly-Objekte im param
assembly_items übergeben kann.
Refactoring, kein clonen wenn mehrere Bestandteile automatisch erstellt
werden.