Sven Schöling [Tue, 13 Feb 2018 13:11:17 +0000 (14:11 +0100)]
Part/Customer/Vendor: Bei click auf ein autocomplete item sofort committen
Betrifft nur die beiden schon auf commit umgestellten Picker. Historisch
benutzen die Picker ein zweistufiges Modell: Nach Texteingabe wird bei
der ersten aktion (sei es tab oder enter) erstmal vervollständigt, aber
nicht committed. Erst wenn dadurch die Maske in einen definierten
zustand gerät wird beim zweiten tab committed.
Es gibt aber diverse Szenarien wo die Absicht des Benutzers eindeutig
ist. Dabei kann dann der zweite Schritt übersprungen werden. Bisher war
das vor allem Texteingabe die eindeutig gematcht hat und dann mit Enter
abgeschlossen wurde. Der Klick auf ein Element im Drop-Down ist aber
definitiv auch ein solcher Fall.
Moritz Bunkus [Wed, 7 Feb 2018 09:48:29 +0000 (10:48 +0100)]
Zahlungsbedingungen bei Kundenwechsel aus Stammdaten holen
`IS::get_customer` kann die Entscheidung, ob die Zahlungsbedingungen
überschrieben werden sollen oder nicht, gar nicht treffen, weil es
nicht genug Informationen hat. Nur der Aufrufer hat die, und daher
muss `IS::get_customer` den Wert immer aus den Kundestammndaten
übernehmen.
Dabei waren DateTime::Set und Set::Infinite als Anhängigkeiten von
DateTime::Event::Cron reingekommen, das gibt es aber zusammen mit
Set::Crontab immernoch nicht in apt, also ist das weiter im fallback.
List::MoreUtils und List::UtilsBy sind meine ich für Debian 5
reingekommen, die Pakete sind aber seit Ewigkeiten in apt verfügbar.
parent ist seit 5.10.1 ein coremodul.
Die anderen wurden anscheinend einfach so reingeworfen, und hätten da
nie drin sein sollen.
Moritz Bunkus [Mon, 29 Jan 2018 16:02:32 +0000 (17:02 +0100)]
jsTree: keine globalen Key-Handler installieren
Sollen wohl für Keyboard-Navigation im Baum sorgen — obwohl es dafür
extra ein jsTree-Plugin gibt. Leider kollidiert der Handler für Space
mit der Art, wie das inline_resize-Plugin des ckEditors seine Handler
registriert. Effekt war, dass die Leertaste dann nicht mehr beim
ckEditor ankam.
printer_id / copies werden so auch in den print_options benannt. Wenn dieses
Template als Vorlage für ein Popup-Dialog verwendet wird, kann es sonst zu
gleichen DOM-Ids kommen.
Bernd Bleßmann [Mon, 11 Dec 2017 15:05:11 +0000 (16:05 +0100)]
Auftrags-Controller: Fehler bei Anzeige von EK und Marge in 2. Zeile behoben
Wenn das Order-Objekt noch nicht gespeichert ist, kann darauf nicht über
$item->order zugegriffen werden. Darum muss an die 2. Zeile eine weitere
Variable durchgereicht werden, um zu bestimmen, ob wir im Verkauf sind und
EK und Margen angezeigt werden sollen.
Sven Schöling [Wed, 24 Jan 2018 15:16:31 +0000 (16:16 +0100)]
Controller::LoginScreen: AuthHandler::handle ohne Argumente aufrufen
Abgesehen davon, dass die Parameter nicht mehr benutzt werden, behebt
das einen ganz ekeligen Bug: "panic: attempt to copy freed scalar"
Das Problem ist, dass der AuthHandler selber das Einloggen übernimmt und
dafür %::myconfig neu beschreibt. Wenn währenddessen aber ein Alias von
einem %::myconfig Value auf dem Stack liegt, wird der sofort freigegeben
weil der Stack nicht refcounted ist.
Normalerweise fällt das nicht weiter auf, und die Daten werden im
final pass aufgeräumt. Aber mit backtrace_on_error wird bei einem Fehler
sofort ein Carp::confess aufgerufen, und das nimmt für den Stacktrace
den Stack auseinander und stolpert dabei über den bereits freigegeben Wert.
Sven Schöling [Thu, 18 Jan 2018 14:03:37 +0000 (15:03 +0100)]
PriceSource: Objekte cachen.
Im Moment werden die einzelnen Worker im normalen Workflow mehrfach
angelegt, einmal für die verfügbaren, und dann noch einmal für den
besten und zum wiederherstellen der existierenden.
Für größere Belege wird das merklich, und bei komplexen
Implementationen, die auf die Datenbank zugreifen müssen, sogar mehrere
Sekunden.
Diese Patch ist der erste in einer Reihe, die es erlauben optional
Preisquellen
1. nicht unnötig zu erstellen
2. in sich cachen zu lassen
3. vorberechnen zu lassen und damit horizontal zu cachen
3. die Berechnungen in einen Ajax Call zu verzögern
Wurde eine Sammelanweisung gefunden, ist die Suche für die betroffenen Banktransaktion beendet.
Fälschlicherweise wurde nur die innere Schleife beendet, es muss aber die äußere Schleife beendet werden.
Jan Büren [Tue, 9 Jan 2018 08:44:06 +0000 (09:44 +0100)]
DATEV: Buchungen festschreiben als Benutzer-Option
Hintergrund: Aktuell setzt kivitendo keinen Wert, was bei der
DATEV zu einer Warnung und anschließender Festschreibung im Stapel führt.
Die Option ist jetzt an der Oberfläche konfigurierbar und erhält gültige Werte
Sven Schöling [Wed, 27 Dec 2017 10:10:41 +0000 (11:10 +0100)]
Presenter::Tag: singleton tags
Vorher wurden alle tags als singleton (also ohne schließenden Tag)
gerendert, wenn sie keinen content hatten. Das geht aber kaputt bei
textarea, weil ein einfaches <textarea> den kompletten folgenden HTML
Code als Content interpretiert.
Ab jetzt werden nur die Tags ohne Content als singleton gerendert, bei
denen das im Standard erlaubt ist.
Jan Büren [Tue, 2 Jan 2018 11:01:53 +0000 (12:01 +0100)]
Objektmethode date für GLTransaction
In gl gibt es nur gldate. Entsprechend wie bei invnumber
die auf reference in gl verweist date auf gldate gesetzt.
Verbessert das Verhalten wenn es bei Details auflisten in Projekten
verknüpfte Dialogbuchungen gibt.