Martin Helmling martin.helmling@octosoft.eu [Thu, 6 Apr 2017 14:05:05 +0000 (16:05 +0200)]
Bei Aufträgen die mit "Save as new" erzeugt werden muss die gelieferte Menge auf 0 gesetzt werden
Beim neu Laden des Auftrags wird ship_{pos} zwar überprüft, jedoch erst beim erneuten Speichern zu 0
oder richtigen Wert gesetzt.
Martin Helmling martin.helmling@octosoft.eu [Thu, 6 Apr 2017 07:22:11 +0000 (09:22 +0200)]
BankTransaction: "Kontoauszug verbuchen" überarbeitet für ap_transaction und credit_note
sowie Test erweitert
Rolf Fluehmann [Wed, 5 Apr 2017 11:01:41 +0000 (13:01 +0200)]
Anpassung Erfolgsrechnung
Sven Schöling [Mon, 3 Apr 2017 09:28:23 +0000 (11:28 +0200)]
CsvImport: Warnungen: Uninitialisierte Variablen
Sven Schöling [Mon, 3 Apr 2017 09:27:55 +0000 (11:27 +0200)]
DATEV: Warnungen: Uninitialisierte Variablen
Martin Helmling martin.helmling@octosoft.eu [Mon, 3 Apr 2017 05:48:07 +0000 (07:48 +0200)]
Bankimport: Nicht alle Vorschläge beim ersten "Verbuchen" sichtbar
Beim Einbau der Berücksichtigung des SEPA Exports sind die gefundenen Regeln für jede Banktransaktion
vorher zurückzusetzen.
Martin Helmling martin.helmling@octosoft.eu [Mon, 3 Apr 2017 05:26:33 +0000 (07:26 +0200)]
Lagerbuchungen: Fehler bei Sortieren nach Chargennummer
Can't use an undefined value as an ARRAY reference at SL/WH.pm line 445.
Es fehlte die Sortiervorschrift für "chargenumber"
G. Richardson [Tue, 28 Mar 2017 15:49:57 +0000 (17:49 +0200)]
Typo in Kommentar
G. Richardson [Wed, 15 Mar 2017 16:33:11 +0000 (17:33 +0100)]
SL::Dev::Record - Doku Beispiel für viele Aufträge
G. Richardson [Fri, 3 Mar 2017 14:45:09 +0000 (15:45 +0100)]
Doku zu DATEV.pm csv_export_for_tax_accountant
G. Richardson [Fri, 3 Mar 2017 14:44:42 +0000 (15:44 +0100)]
DATEV csv_export_for_tax_accountant nutzt generate_datev_data
G. Richardson [Fri, 3 Mar 2017 13:35:31 +0000 (14:35 +0100)]
DATEV.pm Einrückung
G. Richardson [Sun, 12 Feb 2017 18:12:11 +0000 (19:12 +0100)]
DATEV Daten Test
G. Richardson [Sun, 12 Feb 2017 12:51:17 +0000 (13:51 +0100)]
DATEV Export - nach Abteilung filtern
G. Richardson [Sun, 12 Feb 2017 12:31:06 +0000 (13:31 +0100)]
SL/GoBD.pm nutzt generate_datev_data statt _get_transactions
G. Richardson [Sun, 12 Feb 2017 12:30:42 +0000 (13:30 +0100)]
DATEV-Checks beim Buchen nutzen nun generate_datev_data
G. Richardson [Sun, 12 Feb 2017 12:16:25 +0000 (13:16 +0100)]
SL/DATEV.pm für KNE-Export überarbeitet / Zwischendaten eingeführt
_get_transactions war bisher eine interne Funktion von SL::DATEV, die vor dem
DATEV-Export aufgerufen wurde, und die Daten aus der Datenbank ausgelesen und
transformiert hat. In diesem Schritt wurde auch auf DATEV-Fehler geprüft, daher
war diese Funktion prinzipiell schon ausreichend für die DATEV-Checks beim
Buchen, und es muß nicht noch extra eine Datei-Export gestartet werden.
Im ersten Schritt wurde diese Funktion also umbenannt nach generate_datev_data.
Beim Erstellen des KNE-Formats aus den Daten wurde bisher direkt beim
Bearbeiten der Daten die KNE-Datei durch viele add_blocks aufgebaut. Jetzt
werden erst in einem Zwischenschritt alle Daten in einem "neutralen" Array von
Hashes gesammelt, so daß sie von dort in einem Rutsch nach KNE oder z.B. nach
CSV exportiert werden können.
Die so generierten Daten (generate_datev_lines) eignen sich auch gut für Tests.
In diversen Kundenerweiterungen werden auch gerne die zu exportierenden Daten
nochmal modifiziert, z.B. Ersetzen des Sammelkontos durch ein Personenkonto,
dies geschieht am Besten auch bei den neutralen Daten.
Weiterhin gab es beim KNE-Export noch Reste von Code, der die Buchungsdaten auf
mehrere Exportdateien "ED0001, ED0002, ..." verteilen konnte. Aktuell hat das
aber nicht funktioniert, und es wird immer alles nach ED0001 geschrieben, von
daher wurde hier auch Code entfernt. Das Postversendeformat (KNE) von DATEV
wird allerdings sowieso bald eingestellt werden (ab 2018).
G. Richardson [Sun, 12 Feb 2017 12:05:58 +0000 (13:05 +0100)]
DATEV Export - Vorbereitung für CSV Export
G. Richardson [Fri, 10 Feb 2017 12:09:06 +0000 (13:09 +0100)]
DATEV KNE Export Refactoring
Anstatt die Werte aus der DB direkt zu transformieren und per add_block
direkt die KNE-Datei zu bauen werden jetzt alle Daten in einem Array aus
Hashrefs gesammelt und unformatiert zwischengespeichert.
Aus diesem Zwischenstand wird dann erst in einem Rutsch die KNE-Datei
generiert. An dieser Stelle könnte man aber auch direkt die Daten als
CSV abgreifen.
Bernd Bleßmann [Tue, 28 Mar 2017 11:26:16 +0000 (13:26 +0200)]
CsvImport: Mehrdeutigkeit nur prüfen, wenn entsprechende Daten angegeben sind.
Fehler kam im commit
"CsvImport: bei nicht eindeutigen Kunden/Lieferanten Fehler melden."
rein.
Bernd Bleßmann [Tue, 28 Mar 2017 11:25:39 +0000 (13:25 +0200)]
CsvImport: customernumber/vendornumber statt number
Fehler kam im commit
"CsvImport: bei nicht eindeutigen Kunden/Lieferanten Fehler melden."
rein.
Moritz Bunkus [Fri, 24 Mar 2017 15:05:25 +0000 (16:05 +0100)]
ActionBar: Verwendung bei »System« → »Vorlagen« → *
Moritz Bunkus [Fri, 24 Mar 2017 15:04:02 +0000 (16:04 +0100)]
»System« → »Vorlagen« → »Stilvorlage« entfernt
Die Funktion funktioniert seit der Aufteilung der Stylesheets in
mehrere Unterdateien schlicht nicht mehr. Da sich bisher niemand
beschwert hat, wird die Funktion wohl auch nicht benötigt.
Moritz Bunkus [Fri, 24 Mar 2017 14:18:56 +0000 (15:18 +0100)]
ActionBar: Verwendung bei »System« → »Historiensuchmaschine«
Jan Büren [Fri, 24 Mar 2017 14:20:30 +0000 (15:20 +0100)]
Kreditoren/Debitoren-Buchung zuletzt bebuchtes Konto laden
Wenn nur ein Konto ohne Wert vorhanden ist, gehen wir davon aus,
dass der Anwender einen anderen Kunden/Lieferanten buchen möchten und
hier das zuletzt bebuchte Konto als Default möchte
Moritz Bunkus [Fri, 24 Mar 2017 14:08:27 +0000 (15:08 +0100)]
ActionBar: Verwendung bei »System« → »Benutzer«
Moritz Bunkus [Fri, 24 Mar 2017 13:50:46 +0000 (14:50 +0100)]
ActionBar: Verwendung bei »System« → »Bücherkontrolle«
Moritz Bunkus [Fri, 24 Mar 2017 13:47:45 +0000 (14:47 +0100)]
ActionBar: Verwendung bei »System« → »Korrekturen im Hauptbuch«
Moritz Bunkus [Fri, 24 Mar 2017 13:43:53 +0000 (14:43 +0100)]
ActionBar: Verwendung bei »System« → »Lager«
Bernd Bleßmann [Thu, 23 Mar 2017 23:47:11 +0000 (00:47 +0100)]
CsvImport Mulitplex: Template: kein loop.count ausserhalb einer Schleife
Bernd Bleßmann [Thu, 23 Mar 2017 22:37:59 +0000 (23:37 +0100)]
CsvImport Aufträge: Rabatt richtig für Datenbank aufbereiten.
In der DB steht der Rabatt als Hundertstel.
Bernd Bleßmann [Thu, 23 Mar 2017 22:09:08 +0000 (23:09 +0100)]
CsvImport Aufträge: bei nicht eindeutigen Artikeln Fehler melden.
Bernd Bleßmann [Thu, 23 Mar 2017 15:43:03 +0000 (16:43 +0100)]
CsvImport Aufträge: Artikel auch nach EAN suchen
Bernd Bleßmann [Tue, 21 Mar 2017 09:09:01 +0000 (10:09 +0100)]
CsvImport: bei nicht eindeutigen Kunden/Lieferanten Fehler melden.
Bernd Bleßmann [Sun, 19 Mar 2017 16:46:17 +0000 (17:46 +0100)]
CsvImport: Kunden/Lieferanten auch nach GLN suchen können.
Für die Imports, die die Angabe eines Kunden oder Lieferanten brauchen und
check_vc verwenden (Aufträge, Ansprchpersonen, Lieferanschriften,
Debitorenbuchungen), kann neben Id, Nummer oder Name auch die GLN verwendet
werden.
Bernd Bleßmann [Sun, 19 Mar 2017 16:50:18 +0000 (17:50 +0100)]
Typo in Übersetzung behoben.
Bernd Bleßmann [Thu, 23 Mar 2017 21:29:05 +0000 (22:29 +0100)]
CsvImport Multiplex/Aufträge: CVars bei Fehlern nicht behandeln
Jan Büren [Thu, 23 Mar 2017 13:54:19 +0000 (14:54 +0100)]
Verbuchte Zahlungen auch in neuen Fällen von Bankbewegegungen berücksichtigen
Ergänzend zu
af131a46:
Banktransaction: Kontoauszug verbuchen: Sonderfall für "credit_notes"
Jan Büren [Thu, 23 Mar 2017 13:51:42 +0000 (14:51 +0100)]
bank_transactions.t richtige Anzahl von Tests
Jan Büren [Thu, 23 Mar 2017 13:43:39 +0000 (14:43 +0100)]
Testfall test_ap_transaction auch ausführen
Seit Anbeginn des Testfalls vorhanden. Jetzt auch ausgeführt.
Jan Büren [Thu, 23 Mar 2017 13:41:25 +0000 (14:41 +0100)]
Testfall Verbuchen Kontoauszug zu Kreditorenbeleg ergänzt
Sehr viele Tests für ar, nur einen speziellen für ap.
Jan Büren [Thu, 23 Mar 2017 13:37:07 +0000 (14:37 +0100)]
Test: Lieferantengutschrift verbuchen, auch die Gegenseite Banktransaktion prüfen
Die Zahlung wurde korrekt gebucht, allerdings erwartet kivitendo jetzt auch
Änderungen in der bank_transactions invoice_amount, in anderen Testfällen
(test1) wird diese auch überprüft.
Moritz Bunkus [Thu, 23 Mar 2017 12:39:54 +0000 (13:39 +0100)]
überflüssiges SQL-Upgrade-Script »parts_add_chart_foreign_keys.sql« entfernt
Im dem Script werden drei Fremdschlüssel für Spalten angelegt, die im
nachfolgenden Script »parts_remove_unneeded_fields.sql« gleich gedroppt
werden. Damit ist das Script überflüssig und sogar schädlich, falls
jemand noch Datenbankinhalt hat, bei dem die Spalten IDs enthalten, zu
denen es in den Zieltabellen keine Zeilen mehr gibt.
Sven Schöling [Thu, 23 Mar 2017 11:59:41 +0000 (12:59 +0100)]
SL::X::DBError Serialisierung sollte auch die msg ausgeben
Moritz Bunkus [Thu, 23 Mar 2017 10:16:49 +0000 (11:16 +0100)]
Ver-/Einkauf/Finanzbuchhaltung: automatisches Update nach Kunden-/Lieferantenwechsel
Bernd Bleßmann [Wed, 22 Mar 2017 17:04:05 +0000 (18:04 +0100)]
CsvImport Multiplex/Aufträge: Auch nicht angegebene CVars im Objekt speichern.
Moritz Bunkus [Tue, 21 Mar 2017 14:47:38 +0000 (15:47 +0100)]
ActionBar: Verwendung bei »System« → »Benutzerdefinierte Variablen«
Moritz Bunkus [Tue, 21 Mar 2017 14:37:01 +0000 (15:37 +0100)]
ActionBar: Verwendung bei »System« → »Lieferbedingungen«
Moritz Bunkus [Tue, 21 Mar 2017 14:32:21 +0000 (15:32 +0100)]
ActionBar: Verwendung bei »System« → »Zahlungsbedingungen«
Moritz Bunkus [Tue, 21 Mar 2017 14:20:11 +0000 (15:20 +0100)]
ActionBar: Verwendung bei »System« → »Sprachen und Übersetzungen« → »SEPA-Überweisungen«
Moritz Bunkus [Tue, 21 Mar 2017 14:18:46 +0000 (15:18 +0100)]
ActionBar: Verwendung bei »System« → »Sprachen und Übersetzungen« → »Anreden«
Moritz Bunkus [Tue, 21 Mar 2017 13:57:36 +0000 (14:57 +0100)]
ActionBar: Verwendung bei »System« → »Einheiten bearbeiten«
Moritz Bunkus [Tue, 21 Mar 2017 12:29:16 +0000 (13:29 +0100)]
Rechnungssuchen Einkauf/Verkauf: Seitentitel an Menütitel anpassen
Damit wird klarer, dass nicht nur nach Debitorenbuchungen gesucht
wird, sondern auch Verkaufsrechnungen und Gutschriften.
Moritz Bunkus [Tue, 21 Mar 2017 12:21:48 +0000 (13:21 +0100)]
ActionBar: Verwendung bei »Einkauf« → »Berichte« → »Einkaufsrechnungen…«
Moritz Bunkus [Fri, 17 Mar 2017 14:45:19 +0000 (15:45 +0100)]
ActionBar: Unterstützung für »only_if«/»not_if« bei Links
Moritz Bunkus [Fri, 17 Mar 2017 10:53:45 +0000 (11:53 +0100)]
ReportGenerator: Action-Bar-Actions über Hook-Funktion ausgeben lassen können
Damit ist es möglich, dass die Actions vom Report-Generator zwischen
den Actions der Hauptmaske eingefügt werden.
Moritz Bunkus [Tue, 21 Mar 2017 10:25:45 +0000 (11:25 +0100)]
Kontoauszug verbuchen: Zeilen ohne Vorschläge trotzdem anzeigen
Moritz Bunkus [Tue, 21 Mar 2017 10:21:34 +0000 (11:21 +0100)]
LXDebug: clone_for_dump als eigenständige Funktion zur Wiederverwendung
Sven Schöling [Mon, 20 Mar 2017 16:46:35 +0000 (17:46 +0100)]
ActionBar: Und nochmal Korrektur zu html Menü scrolling
Sven Schöling [Mon, 20 Mar 2017 14:43:35 +0000 (15:43 +0100)]
PriceSource: editable Dokumentation
Sven Schöling [Thu, 2 Mar 2017 14:22:33 +0000 (15:22 +0100)]
Preisquellen: Support für editierbare Preisquellen
Sven Schöling [Mon, 20 Mar 2017 13:16:46 +0000 (14:16 +0100)]
ActionBar: top-padding in html menü + actionbar
Sven Schöling [Mon, 20 Mar 2017 12:44:31 +0000 (13:44 +0100)]
ActionBar: Scrolling von ausgeklapptem HTML Menü gefixt
Sven Schöling [Mon, 20 Mar 2017 12:21:03 +0000 (13:21 +0100)]
DO::get_shipped_qty - typo
Moritz Bunkus [Fri, 17 Mar 2017 09:24:02 +0000 (10:24 +0100)]
ActionBar: Standardaktion im Artikelstammdatencontroller auf »Speichern«
Moritz Bunkus [Fri, 17 Mar 2017 08:49:21 +0000 (09:49 +0100)]
ActionBar: Standardaktion im Kundenstammdatencontroller auf »Speichern«
Moritz Bunkus [Fri, 17 Mar 2017 10:41:49 +0000 (11:41 +0100)]
ActionBar: nicht »continue«, sondern »next« für Short-Circuit einer Schleife
Moritz Bunkus [Fri, 17 Mar 2017 10:09:32 +0000 (11:09 +0100)]
Kreditorenbuchungen: Storno von bezahlten Rechnungen verhindern
Das Action-Bar-Setup nutzt den Wert $::form->{totalpaid} als Indikator
dafür, ob bereits Zahlungen verbucht wurden. Ist das der Fall, so darf
die Rechnung nicht storniert werden können.
Daher muss dieser Wert berechnet werden, bevor das Action-Bar-Setup
durchgeführt wird.
Moritz Bunkus [Fri, 17 Mar 2017 08:46:47 +0000 (09:46 +0100)]
ActionBar: Standard-Aktions-Button optisch hervorheben
Der Standardbutton ist derjenige, der bei Druck auf Return/Enter
ausgelöst wird.
Aktuell ist die Hervorhebung über fette Schrift geregelt. Eine andere
Möglichkeit wäre, die Border von 1px auf 2px zu erhöhen, was das
Aussehen analoger zu klassischen GUIs machen würde.
Sven Schöling [Thu, 16 Mar 2017 11:53:40 +0000 (12:53 +0100)]
SL::X: und ohne typo
Sven Schöling [Thu, 16 Mar 2017 10:52:49 +0000 (11:52 +0100)]
Datenbankexceptions: SL::X::DBError korrekt ausgeben
Moritz Bunkus [Thu, 16 Mar 2017 09:55:28 +0000 (10:55 +0100)]
ActionBar: ReportGenerator: get('actionbar') liefert Array von Bars
Bernd Bleßmann [Tue, 14 Mar 2017 21:08:25 +0000 (22:08 +0100)]
ActionBar: Hintergrundjob-Verwaltung: Action heißt destroy, nicht delete.
G. Richardson [Sat, 11 Mar 2017 07:10:45 +0000 (08:10 +0100)]
changelog - Features aus Unstable aktualisiert
G. Richardson [Sat, 11 Mar 2017 07:08:00 +0000 (08:08 +0100)]
Typos in changelog
Jan Büren [Sat, 4 Mar 2017 09:58:46 +0000 (10:58 +0100)]
ustva-report.html geierlein-js kosmetik
Zwei Leerzeichen-Einrückung ist scheinbar das gängigste
für JavaScript Funktionen im kivitendo-Projekt.
Jan Büren [Sat, 4 Mar 2017 09:47:18 +0000 (10:47 +0100)]
ustva html Template: geierlein-pfad Variable korrigiert
Die Prüfung weiter oben ist korrekt, der eigentliche Variablenname
aber dann für das Programm falsch. Scheinbar war dieser bei OD
hartkodiert und das Feature wurde nicht vor dem Commit im Standard
geprüft.
Jan Büren [Sat, 4 Mar 2017 08:31:51 +0000 (09:31 +0100)]
trigram Indizes mit may_fail versehen und UPGRADE entsprechend angepasst
Bernd Bleßmann [Tue, 21 Feb 2017 10:53:37 +0000 (11:53 +0100)]
CsvImportReport: Manager-Methode destroy löscht nicht aus aktiver Sitzung
Vorher wurden alle Reports bis auf den letzten aus der aktiven Sitzung gelöscht.
Da aber mit den Reports auch das Profile gelöscht wird und im Profil der
zufällige Dateiname der temporären Csv-Datei enthalten ist und dieser nach einem
Test-Import für weitere Test-Importe oder den eigentlichen Import benötigt wird,
darf dieser Report nicht gelöscht werden.
Bernd Bleßmann [Mon, 20 Feb 2017 20:09:03 +0000 (21:09 +0100)]
BankImport: Csv-Datei mit zufälligem Dateinamen speichern und im Profil übergeben
siehe auch commit "CsvImport: zufälligen Dateinamen für jeden Import. Ablegen in
temporärem Profil"
Bernd Bleßmann [Mon, 20 Feb 2017 14:57:40 +0000 (15:57 +0100)]
CsvImport: zufälligen Dateinamen für jeden Import. Ablegen in temporärem Profil
Damit können auch mehrere gleiche Imports von einer Session aus gleichzeitig
aufgerufen werden.
Bernd Bleßmann [Mon, 20 Feb 2017 11:19:05 +0000 (12:19 +0100)]
CsvImport: Controller erzeugt temporäres Profil, nicht der Hintergrund-Job.
Bernd Bleßmann [Mon, 20 Feb 2017 11:16:43 +0000 (12:16 +0100)]
CsvImport: temporäres Profil nicht beim Report speichern, …
… denn das passiert schon beim Anlegen des Hintergrund-Jobs.
Bernd Bleßmann [Mon, 20 Feb 2017 20:08:14 +0000 (21:08 +0100)]
BankImport: Refactoring: Profil über init-Methode laden.
Bernd Bleßmann [Fri, 3 Mar 2017 20:42:29 +0000 (21:42 +0100)]
BackgroundJob::CsvImport: unbenutztes Modul SessionFile::Random nicht laden
Bernd Bleßmann [Fri, 17 Feb 2017 16:01:21 +0000 (17:01 +0100)]
CsvImport: doppeltes delete-Statement entfernt
Bernd Bleßmann [Fri, 17 Feb 2017 14:27:56 +0000 (15:27 +0100)]
CsvImport: doppelt angegebene Methode "file" entfernt
Bernd Bleßmann [Fri, 3 Mar 2017 20:51:46 +0000 (21:51 +0100)]
POD: Typo in Autor-Abschnitt verbessert.
Moritz Bunkus [Thu, 2 Mar 2017 12:50:06 +0000 (13:50 +0100)]
ActionBar/Dateimanagement: Verschicken von Dateien via E-Mail wieder implementiert
Moritz Bunkus [Thu, 2 Mar 2017 15:16:39 +0000 (16:16 +0100)]
Kreditorenbuchungen: Zahlungen buchen gefixt
Seit Umstellung auf die Verwendung des Chart-Pickers heißt die
Form-Variable für das Verbindlichkeitskonto »AP_chart_id«, und nicht
mehr »APselected«. Außerdem enthält sie die Datenbank-ID des Kontos,
und nicht die Kontonummer.
Jan Büren [Thu, 2 Mar 2017 15:09:38 +0000 (16:09 +0100)]
WebDAV: Überflüssigen Aufruf webdav_path im Frontend entfernt
WebDAV::get_all_objects ruft in der Methode seit Anbeginn des Moduls
schon ein webdav_path auf, von daher schreddern bevor noch mehr
copy & waste im Programm passiert
Moritz Bunkus [Thu, 2 Mar 2017 15:02:44 +0000 (16:02 +0100)]
SL::Template::*: Form::template direkt nutzen, nicht mehr Form::init_template
Form::init_template wurde bei der Umstellung entfernt, bei der nur
noch die eine Template-Instanz im SL::Presenter genutzt wird, und Form
keine eigene mehr beinhaltet.
Moritz Bunkus [Thu, 2 Mar 2017 14:13:47 +0000 (15:13 +0100)]
Mailer: Zeichensatzattribut bei Anhängen nur bei Text-Anhängen setzen
Ein als Binärdaten zu behandelnder Anhang darf nicht natürlich nicht
umcodiert werden. Normalerweise ignorieren E-Mail-Programme bei
Nicht-Text-Anhängen den Zeichensatz, wenn er gesetzt ist, aber wir
sollten diesbezüglich auch einfach saubere E-Mails senden.
Moritz Bunkus [Thu, 2 Mar 2017 14:11:27 +0000 (15:11 +0100)]
Mailer: Attribut »path« bei »Content-Type« nicht setzen
Darin steht der Pfad auf dem lokalen System und ist damit ein
information leak, z.B. /var/www/kundenname/kivitendo/files/…
Moritz Bunkus [Thu, 2 Mar 2017 13:57:47 +0000 (14:57 +0100)]
LXDebug::dump: Objekte aus Namensraum SL::* ohne »as_debug_info« wie Hash behandeln
Moritz Bunkus [Wed, 1 Mar 2017 16:21:40 +0000 (17:21 +0100)]
LXDebug::dump: nur Form-Instanzen als Hash behandeln, nicht alle Hash-basierten Objekte
Moritz Bunkus [Wed, 1 Mar 2017 15:54:59 +0000 (16:54 +0100)]
LXDebug::dump: Unterstützung für zirkuläre Strukturen
Durch die Umstellung auf vorheriges Reduzieren auf essenzielle
Informationen muss dump() sicherstellen, dass es bei zirkulären
Strukturen nicht in eine Endlosschleife gerät.
Weiterhin müssen alle Rückwärtsreferenzen aufgeweicht
werden (Scalar::Util::weaken), damit sie von der garbage collection
normal aufgeräumt werden.
Moritz Bunkus [Wed, 1 Mar 2017 14:43:48 +0000 (15:43 +0100)]
kivi.File.js: Debugcode wieder entfernt
Moritz Bunkus [Wed, 1 Mar 2017 14:12:02 +0000 (15:12 +0100)]
LXDebug::dump: Interna von Rose-DB- und DateTime-Objekten nicht mehr ausgeben
dump arbeitet nun nicht mehr direkt auf dem zu dumpenden Objekt,
sondern auf Kopien, die je nach Typ auf ihre essenziellen
Informationen zusammengeschrumpft werden. Dafür kann ein Objekt eine
Methode »as_debug_info« bereitstellen, die eine solche Essenz
zurückgibt.
Für SL::DB::Object ist eine Implementation beigelegt, die nur die
Spalten mit ihren stringifizierten Werten zurückgibt, nicht aber mehr
die ganzen Interna wie z.B. Meta-Informationen enthält.
Arrays und Hashes (und Objekte, die auf diesen simplen Typen basieren
und keine eigene »as_debug_info« zurückgeben) werden rekursiv geklont.
Alles andere definierte wird stringifiziert.
Dafür wurde die Funktion LXDebug::dump_object entfernt, die etwas
Ähnliches gemacht hat, aber nur für eine einzelne Rose-DB-Instanz.
Moritz Bunkus [Wed, 1 Mar 2017 13:16:31 +0000 (14:16 +0100)]
Dateimanagement: Fehler beim Umbenennen richtig zurückgeben
Ist man z.B. bei den Artikelstammdaten und versucht, eine Datei
umzubenennen, und ändert den Namen nicht, so sollte eine Fehlermeldung
angezeigt werden. Wurde sie aber nicht, weil Folgendes passierte:
• Im ClientJS-Flash wird Fehlermeldung erzeugt und das ClientJS sofort
gerendert, anschließend mit »return« der innerste Block verlassen
• Der innerste Block ist aber ein »eval { … }«, und nicht die Funktion
selber. Daher geht der Kontrollfluss nach dem »eval« weiter. Dabei
werden mehr Sachen auf das ClientJS raufgepusht und aschließend
erneut gerendert.
Dieses zweite Rendern schreibt dann erneut HTTP-Response-Zeilen sowie
ein vollständiges Array von ClientJS-Aktionen.
Der JavaScript-Code auf der Browser-Seite bekommen somit:
• HTTP-Response-Zeilen #1
• ClientJS-Array #1
• HTTP-Response-Zeilen #2
• ClientJS-Array #2
Damit kann er natürlich nicht umgehen, ignoriert die komplette
Antwort, und die Fehlermeldung wird somit nicht angezeigt.
Der Fix ist, nur das Umbenennen innerhalb des »eval« zu machen, und
den Rückgabewert außerhalb des »eval« zu prüfen. Bei einem anderen
Wert als SL::File::RENAME_OK wird das ClientJS dann nur einmal
gerendert und anschließend die Funktion verlassen.