Wenn bei einer Zahlungsbedingung die automatische Berechnung des
Fälligkeitsdatums aus ist, so sollte die Routine zum Berechnen das
aktuell von der Benutzer*in eingegebene Fälligkeitsdatum
berücksichtigen. Damit das funktioniert, muss auch das richtige Feld
aus $::form an »$terms->calc_date« übergeben werden — und das heißt
nun mal »duedate« und nicht »due_due«.
Das Ergebnis war, dass beim Buchen der Rechnung nicht das eingetragene
Fälligkeitsdatum genommen wurde, sondern das Rechnungsdatum, da die
Berechnungsroutine dachte, es wäre kein Fälligkeitsdatum eingegeben.
DB Transaktionen - Array Context funktioniert nicht
Innerhalb des eval{} Blockes ist für wantarray ein neuer Context,
in diesem Falle ist wantarray hier nicht definiert.
Deshalb muss dies per Variable in den eval-Block übergeben werden
Bernd Bleßmann [Mon, 13 Feb 2017 18:25:47 +0000 (19:25 +0100)]
CsvImport: Bearbeiter aus Front-End setzen, wenn nicht angegeben.
Wenn keine employee_id in der CSV-Datei angegeben ist, dann den Benutzer, der
den Import gestartet hat als, Bearbeiter setzen. Dieser wird in den Daten des
Hintergrundjobs gespeichert.
Falls hier nichts hinterlegt ist, dann den Benutzer aus dem Login setzen. Das
ist derjenige Benutzer, unter dem der Task-Server läuft.
Sven Schöling [Mon, 6 Feb 2017 16:45:24 +0000 (17:45 +0100)]
kivi.Part.js: PartPicker von closure auf prototype style umgeschrieben
War notwendig, damit das Objekt sich selbst an andere Objekte weitrgeben
kann. Vorher musste es dafür eine anonyme Closure über die eigenen
Funktionen machen, die extrem schwer verständlich war.
Nachteil dafür jetzt, man kann keine Methoden mehr ohne closure als
callback verwenden und alles ist voll mit this.
Jan Büren [Mon, 13 Feb 2017 08:57:59 +0000 (09:57 +0100)]
WebDAV Pfad-Name im Dialog geändert
Referenz ist ein ungünstiges Freitext-Feld, um WebDAV Pfade
eindeutig anzulegen. Transaktions-, bzw. die Buchungsnummer
im Buchungsjournal ist hier eindeutig.
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«.