JS: CustomerVendor: Kosmetik: Tab entfernt
BankTransaction: keine Leerzeichen am Ende vom Verwendungszweck einfügen
Wenn man mehrere Felder einfach mit `join(' ', @felder)` zusammenfügt,so entstehen nun mal ein Haufen Leerzeichen, auch wenn alle Felderselber leer sind. Das führt konkret beim Import von Banktransaktionen...
BankTransaction: Vorschlagslistencode aus action_list eigene Funktion verlagert
BankTransaction: Sortierungscode vereinfacht
Belege: E-Mail-Dialog: Sprache für Anhang-Übersetzung setzen
Rose: MetaSetups bzgl. Fließkommazahlen erneuert
bank_transaction_acc_trans: überflüssige Spalte »id« entfernt
Primärschlüssel sind zwei andere Spalten, und die Präsenz dieserNicht-Primärschlüssel-Spalte zusammen mit Typ »serial« macht Probleme,weil Rose kein Default für solche Spalten kennt.
Kundenartikelnummern in Vorlagen verwenden können
Einsortierung in das template array wie Lieferantenartikelnummern alscustomer_make und customer_model.
Standard-Druckvorlagen Angebot/Auftrag/Lieferschein/Rechnung für Verkaufexemplarisch angepasst.
WH: Warnungen wegen nicht initialisierten Werten vermeiden
Durch Tests getriggert, konkret: durch t/wh/transfer.t
SL::DB::Unit: Warnungen wegen nicht initialisierten Werten vermeiden
AttrSorted-Helfer: Warnungen wegen nicht initialisierten Werten vermeiden
Durch Tests getriggert, konkret: durch t/controllers/csvimport/parts.t
SL::Auth: Warnungen wegen nicht initialisierten Werten vermeiden
Durch Tests getriggert, konkret: durch t/controllers/base/render.t
DB-Upgrades für Hintergrundjobs von Perl auf SQL umgestellt
Rose-Models dürfen in DB-Upgrade-Scripten nicht verwendet werden, weildie Perl-Strukturdaten (MetaSetup) in dem Moment schon auf dem neuenStand, die Datenbankstrukturen aber auf dem alten Stand sind. Daher...
Lagerstandsbericht: Listenpreis als Basis f. Bestandswert auswählbar
Lagerstandsbericht: Listenpreis anzeigbar machen
Kosmetik: doppeltes Leerzeichen weg
SelfTest: Geschwindigkeitssteigerung durch »NOT EXISTS« anstelle von »NOT IN«
Nicht ganz frische PostgreSQL-Versionen (mindestens bis 9.6 inklusive)optimieren »NOT IN«-mit-Subquery nicht automatisch und müssen daherfür jede Zeile des äußeren Selects einen linearen Scan auf die...
Rose-Models anhand des tatsächlichen Schemas aktualisiert
Doku: Update nach Auth-Erweiterung auf multiple Module
Auth: Unterstützung für multiple Authentifizierungsbackends
Über den Parameter "module" kann man nun multiple Backends angeben,die nacheinander versucht werden, bis ein Erfolg gemeldet wird oderdie Liste durchlaufen wurde.
Zusätzlich kann man LDAP-Module mehrfach angeben. Damit...
Auth: mini_error gefixt
$::auth->mini_error wird potenziell zu einem Zeitpunkt aufgerufen, andem es die Instanzen von $::form und $::request noch nicht gibt. Dahier wirklich nur die Bare-Bones-Ausgabe der Fehlermeldung benötigtwird, machen wir für den Fall manuell ein CGI-Objekt auf.
LDAP-Auth: Konfiguration über Konstruktur übergeben
Ist eine Vorarbeit dafür, das LDAP-Modul mit unterschiedlichenKonfigurationen benutzen zu können.
LDAP-Auth: enter_sub/leave_sub entfernt
Task-Server auf unterschiedlichen Maschinen laufen lassen können
Jede Task-Server-Instanz und jeder Hintergrundjob haben nun ein neuesAttribute »node_id«. Darüber kann gesteuert werden, dass bestimmteJobs nur von einer bestimmten Instanz ausgeführt werden....
Typos in de locale
Workflow Lieferantenauftrag->Kreditorenbuchung: mini Performance-Optimierung
Später benötigte Relationen direkt mit laden.Dank an Geoffrey.
Workflow Lieferantenauftrag->Kreditorenbuchung: Zahlungsbedingungen aus Auftrag
Um das Fälligkeitsdatum zu ermitteln, die Zahlungsbedingungen aus dem Auftragnehmen, nicht die aus den Lieferantenstammdaten.
Neuer Workflow Lieferantenauftrag->Kreditorenbuchung
Für jedes Aufwandskonto der Positionen im Lieferantenauftrag wird eineZeile in der Kreditorenbuchung erstellt. Gebucht wird standardmäßigauf des entsprechende Aufwandskonto. In der Mandantenkonfiguration...
Auftrags-Controller: mime-type füer odt
Spalte taxnumber aus Tabelle tax entfernt 2
sql Upgrade Datei vergessen
changelog "Herkunft der personenbezogenen Daten" erweitert (ältere Version)
Typo in changelog
Payment Helper - POD repariert
Mahnungen erzeugen - nach Abteilung filtern und anzeigen
Index auf inventory parts_id
um schneller die Bestände eines Artikels in diversen Lagern zu berechnen
Neuer index auf inventory über itime und parts_id
Part Controller - neuer Tab mit Lagerinformationen
SL::DB::Part - get_simple_stock_sql: Mengen pro Bin
und Summen über Lager und Gesamtmenge.
Order Controller POD - Typos
Dev Part - Codeeinrückungen
Bericht Lagerbestand - Artikelnummer vorbelegbar machen
wenn man einen Parameter partname im Link übergibt wh.pl?action=report&partnumber=foobar123
Bericht Lagerbuchungen - Artikelnummer vorbelegbar machen
wenn man einen Parameter partname im Link übergibt &partname=foobar
Umlagern und Entnahme mit Artikel vorbelegen
Wenn man in der URL ein &parts_id=12345 im Link mitliefert.In beiden Berichten gibt es einen Partpicker.
Inventory stock_in - select_default_bin Modus
wird in der Form / URL ein select_default_bin=1 übergeben, wird derStandardlagerplatz des Artikels vorausgewählt (sofern vorhanden).
Ansonsten passiert das Aktualisieren von Lager/Lagerplatz nur, wenn sichder Artikel nach Laden der Seite ändert.
InstanceConfiguration.pm - Typos und Style
Aggregatfunktion comma entfernt und Templates angepasst
"comma" war eine alte benutzerdefinierte Aggregatfunktion, die benutztwurde, um mehrere aggregierte Werte aus einem GROUP BY in einenkommaseparierten String umzuwandeln.
Mittlerweile würde man das einfach mit array_agg und array_to_string machen:...
SL::Dev::Payment - check if bank account exists
PriceRule Manager - selectall_ids -> selectcol_array_query
Helper UserPreferences - selectall_ids -> selectcol_array_query
SL::DBUtils - selectall_array_query -> selectcol_array_query
selectall_array_query durch selectcol_array_query ersetzt.
Intern wird nun die DBI-Funktion selectcol_arrayref verwendet, anstattdies manuell per Schleife zu machen. Der Name selectall_array_query war...
SL::DBUtils - POD zu AutoCommit aktualisiert + Typos
Inventory Controller - Datenbankoptimierungen für mini_journal
Aus Datenbanksicht war das Inventory mini-journal eine Katastrophe.
Die trans_id Abfrage führte zu einem ersten Seq Scan auf der Tabelle inventory. my $query = 'SELECT trans_id FROM inventory GROUP BY trans_id ORDER BY max(itime) DESC LIMIT 10';...
Spalte taxnumber aus Tabelle tax entfernt
tax.taxnumber war ein redundanter Eintrag, und entsprach dem Wert vonchart.accno aus tax.chart_id.
Z.B. in SKR04 hatte Steuerschlüssel 3 (Umsatzsteuer 19%) die taxnumber1776 und die chart_id 775 (chart mit id 775 ist das Konto 1776)....
Refactoring sql-Abfrage für Steuertabelle
statt 2 subselects pro Automatik- und Skontokonto, jeweils ein Join, umdie Kontonummer und Kontenbeschreibung direkt auszulesen.
changelog zu PartPicker sucht nach Kunden- und Lieferanten-Artikel-Nr.
Auftrags-Controller: Kunden- bzw. Lieferanten-Art-Nr. in Pos-Zeile anzeigen.
… sofern in den Benutzereinstellungen auch die Suche danach ausgewählt ist.
Auftrags-Controller: PartPicker filtert nach Kunden- und Lieferanten-Art.-Nr., …
… sofern das in den Benutzereinstellungen ausgewählt ist.
UserPreferences-Helper f. Part-Picker-Such-Einstellungen in Belegen
Hier kann der Benutzer einstellen, ob in Verkauf auch nach Kunden-Artikle-Nr.und im Einkauf nach Lieferanten-Artikel-Nr. gesucht werden soll.
PartPicker nach Kunden- und Lieferanten-Artikel-Nr. suchen und filtern können
Part: Filter-Specs für Kunden- und Lieferanten-Artikel.-Nr.
PartPicker: Mehrfachauswahl: Ursprüngliche Filter für Dialog merken.
Damit klappt das auch hier mit der Suche nach gültigen/ungültigen/allenArtikeln.
Release 3.5.4
Changelog auf Release 3.5.4; Bugfixes ergänzt
locales-Lauf english
Vergessene hidden Abteilung für Ein/Verkauf->Berichte->Lieferscheine
PTC: zur Margenberechnung die Nettozeilensumme nehmen.
So ist der Verhalten in den anderen (alten) Masken. Sonst ergeben sichunterschiedliche Werte in den verschiedenen Masken, wenn"Steuer im Preis inbegriffen" gewählt ist.
Task-Server: Exceptions als Warnung loggen, nicht als Debugmeldung
DB-Upgrade-Skripte: Falsche Abhängigkeit 3.5.2 -> 3.5.4 korrigiert
3.5.3 -> 3.5.4
Release 3.5.4-beta1
Changelog auf Release 3.5.4-beta gesetzt
Dokumentation: Release auf 3.5.4 gesetzt
Datenbank-Upgrade-Skripte für die 3.5.4
generische LS-E-Mail auch in Stammdaten editieren ...
Controller - alten unbenutzten Code entfernt
SL::Dev::Inventory - Typo und Formatierung
descriptin -> description
lange Zeilen in mehrere Zeilen umformatiert
Typo in POD
DBConnect POD Typo
ungenutzte Spalte "ranking" aus Tabelle "payment_terms" entfernt
Überbleibsel aus uraltem Zahlungsbedingungsfeature
action Name in POD aktualisiert
SL::DB _register_db Passwort aus $type herausfiltern
Es wurde nach dem falschen String gefiltert.
EB/SB Buchungen minimale Kindersicherung für Datumswerte
Die Funktion lässt den Nutzer zuviele Freiheiten ;-(Ausreichend wäre es nur ein Datum (vgl. sql-ledger yearend) eingebenzu lassen und das Folgedatum ist dann automatisch der nächste Tag.
Kontoauszug verbuchen rückgängig: Mitarbeiter in history protokollieren
Kontoauszug rückgängig machen: Nur bei aktuellem Beleg arap.paid neu setzen
Hintergrundjobs: einmalige Jobausführung: Daten übergeben können
Entweder, man übergibt `data` als Parameter inURI-Hash-Form (z.B. '&data.var=value'), als normaler YAML-encodierterString, so wie er auch in der Datenbanksteht (z.B. '&data=---%0Avar%3Dvalue'), oder man übergibt...
Mahnungs-Tabelle: Fremdschlüsselverknüpfung auf Rechnungstabelle Part 2
Mahnungs-Tabelle: Fremdschlüsselverknüpfung auf Rechnungstabelle
DateTime: Funktionen zum Parsen von YYYY:MM:DD und YYYY:MM:DDTHH:MM:SS
Hintergrundjobs: Controller-Action zur einmaligen Ausführung eines Jobs
Gedacht für Aufruf von extern, gibt JSON zurück. Beispiel:
curl --silent --user "<username>:<password>" \ 'https://<hostname>/kivitendo/controller.pl?action=BackgroundJob/execute_class&class=CleanAuthSessions'
CVars: bei Gültigkeitswechsel aktuellen Wert nicht speichern
Wenn man in den Artikelstammdaten eine CVar von ungültig auf gültigumschaltet, so ist in dem Moment die CVar-Input im Formular nichtenthalten, sondern nur die Gültigkeits-Checkbox. Wenn dann im Backend...
Einkauf/Verkauf: Bemerkungsfelder gleich groß anzeigen
Einkaufsrechnungen: Projektauswahl gefixt
Einkauf/Verkauf: keine Validierung bei Update-Button
Andernfalls wird z.B. erzwungen, dass die Vorgangsbezeichnungeingegeben ist, bevor der Update-Button betätigt wird. Das betrifftauch den Kundenwechsel, der ein automatisches Update triggert, waswiederum die Validierung triggert....
LaTeX: openin_any weniger restriktiv
Die Einstellung openin_any aus texmf.cnf (oder der Umgebungsvariablegleichen Namens) kontrolliert, aus welchen Pfaden (PDF)LaTeXQuelldateien liest: a = any liest aus beliebigen Verzeichnissen, r =restricted nicht aus Dot-Verzeichnissen und p = paranoid nur aus...
Part-Controller: Kosmetik
Part-Controller: Gültigkeit von CVars richtig speichern
Das behebt den Bug, dass sich CVars in den Warenstammdaten nicht mehrungültig/gültig gesetzt werden konnten.
Revert "CVars: in Artikelstammdaten sind alle CVars gültig"
This reverts commit ab45df2fa087f4b754ef02f238557ab0e28a676b.
CVars in den Warenstammdaten sind nicht immer gültig. Das Problem hier war,dass das Speichern des Gültig-Flags durch einen anderen Bug nicht funktionierte,...
Upgrade-Datei: Hinweis auf: Task-Server berücksichtigt Memory-Limit
Changelog: Task-Server berücksichtig Memory-Limit
Dokumentation: Task-Server: Hinweise auf Memory-Limit und Restart (systemd)
Ausserdem alle "Taskserver" durch "Task-Server" ersetzt.