Payment Helper - POD repariert
Mahnungen erzeugen - nach Abteilung filtern und anzeigen
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
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.
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.
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.
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
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...
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,...
memory_usage_is_too_high von Dispatcher nach System::Process verschoben
(cherry picked from commit c0e3364a21b2da1c61564ddb8d9afa5ab6489f9c)
Bugfix: Brieffunktion prüft im Einkauf auf Verkaufsbriefrechte
Ternärer Operator für Fallunterscheidung(is_sales or is_not_very_much_sales)
Auftrags-Controller: item-ids nach Speichern richtig setzen
Vergessen, den idx in jedem Fall weiterzuzählen. Dadurch konnte es passieren,das Positionen aus dem Auftrag gelöscht und evtl. Langtexte und Werte der2. Zeile falsch zugeordnet wurden.
Nachtrag zu:...
Benutzereinstellungen für Höhe des Scrollbereichs f. Positionen …
… im neuen Auftrags-Controller
Auftrags-Controller: Einstellungen/Höhe des Scrollbereichs berücksichtigen …
… für den Positionsbereich
UserPreferences-Helper f. Scrollbar-Einstellungen in Belegen
Hier kann die Höhe des scrollbaren Postitionsbereichs im neuenAuftrags-Controller abgelegt werden.
Kontoauszug verbuchen, bei DB Verwendungszweck übernehmen
Dialogbuchungen aus Kontoauszugs-Import erstellen,der Verwendungszweck wird in die Beschreibung übernommen
PartPicker: auch nach ungültigen oder allen Artikeln suchen können.
Dazu kann ein Parameter "status" (active/obsolete/all) übergeben werden.Ohne diesen Parameter ist das Verhalten wie zuvor (nur gültige).
Wiederkehrende Rechnungen: Druckvorlage nach Auftragssprache auswählen
Bisher wurde immer die Standarddruckvorlage genutzt und die im Auftragund damit der Rechnung eingestellte Sprache komplett ignoriert.
Weiterhin wird der Dateiname des Anhangs nach der eingestellten...
LXDebug: fix level2string für diverse Level, inklusive WARN
Admin-Controller: Anlegen der Vollzugriffs-Gruppe gefixt
Nach dem Anlegen einer neuen Auth-DB und neuer Session-Tabellen sollteeigenlich auch eine Gruppe namens »Vollzugriff« angelegt werden, dieZugriff auf alle Funktionen bekommt — wurde sie aber nicht....
Admin-Controller: falscher Funktionsname für Auth-Variablen gefixt
Die Umstellung auf Auth-Handler mit Einführung der Möglichkeit, sichauch über HTTP-Basic-Authentifizierung anzumelden, hat als Änderungmitgebracht, dass dieAuthentfizieriungsvariablen (z.B. »{AUTH}admin_password«) nicht mehr...
SessionValue: damit klarkommen, dass Auth-DB & Session-Tabellen nicht existieren
Durch die Änderungen letztens, mit der Session-Werte auch bei parallellaufenden kivitendo-Requests richtig erhalten bleiben, wurdeSessionValue so umgeschrieben, dass es davon ausgeht, dass sowohl die...
Mailer: Encoding der Namen von Dateianhängen gefixt
Email::MIME encodiert den Dateinamen, der im »Content-Disposition«-Header enthalten ist, nicht selber. Daher muss der Aufrufer dastun. Andernfalls kann es bei Nicht-ASCII-Zeichen dann dazu kommen,dass das empfangene Mail-Programm diese in einem anderen Zeichensatz...
Periodische Rechnungen: find_template-Aufruf gefit
find_template gibt je nach Kontext (Skalar vs. Array) unterschiedlicheDinge zurück. Innerhalb einer Hashzuweisung herrscht Array-Kontext,und damit kann je nach Reihenfolge, in der die Hash-Parameter von Perl...
Module: weitere Anpassungen für Exception::Lite → Exception::Class
Session Content: Query zum Einlesen gefixt
Operatorpräzedenz wurde falsch berücksichtigt.
Session Content: Race condition gehoben
Der ursprüngliche Mechanismus hat einfach nur alle Session Variablengespeichert und beim Session restore wieder geladen. Es hat sich abergezeigt, dass große Daten in der Session Requests deutlich langsamermachen, also wurde das Flag auto_restore eingeführt. Session Werte, die...
OrderController: nach Speichern hiddens der ids wieder setzen, …
… falls die Makse nicht neu geladen wird.
OrderController: Kosmetik
Sessions: keine Prüfung der Quell-IP-Adresse
Wenn ein Hostname sowohl A- (IPv4) als auch AAAA-Records (IPv6)aufweist, nutzen manche Reverse Proxies wie nginx mal IPv4, malIPv6. Dadurch prüft kivitendo manchmal (nämlich genau dann, wenn dieVerbindung über IPv4 reinkommt) die Quell-IP. Wurde die Session aber...
Merge branch 'f-bundled-perl-modules'
Module: implizite Anforderung auf Set::Crontab entfernt
kivitendo nutzt das Modul nicht direkt, sondern nurDateTime::Event::Cron. Das nutzt Set::Crontab unter der Haube, weshalbwir keine direkte Abhängigkeit deklarieren sollten.
SL::DB::Cache nach SL::DB::Helper::Cache verschoben
Da es sich nicht um eine Mapping-Klasse einer Tabelle handelt, solltesie nicht direkt innerhalb von SL::DB liegen.
Module: Exception::Lite durch Exception::Class ersetzt
SelfTest: gldate mit itime vergleichen - sollte übereinstimmen
OrderItem-Manager: Sortierung: runningnumber gibt es nicht -> position
Module: gebundletes YAML durch dünnen Wrapper über YAML::XS & YAML ersetzt
Variable »$query« nicht durch doppelts »my« shadowen
Module: Rose::DBx::Cache::Anywhere durch eigene Variante ersetzt
Module: überflüssige Prüfung auf Test::Harness entfernt
Perl 5.10.1 wird seit kivitendo 3.1.0 vorausgesetzt, und 5.10.1enthält Test::Harness im Core.
Merge branch 'f-project-search-custom-variables'
OrderController Sortierung berichtigt. Sort::Naturally hat auch nichtwie erwartet sortiert
Pflichtenhefte: Exportoption bzgl. benutzerdefinierter Variablen in Suchmaske gefixt
Projekte: benutzerdefinierte Variablen in Suchmaske
Projekte: alte Suchmaske entfernt
OrderController: reorder mit Sort::Naturally damit nach Preis ordentlichsortiert wird
BankTransaction: save_bt keinen bezahlten rechnungen akzeptieren
Telefonnummernsuche: Datenank-ID & Typ zurückgeben
Merge branch 'f-phone-number-lookup'
Bankverbuchungen: freies Skonto auch abziehen. Code-Vereinfachung (not_assigned)
Vergessen, den freien Skonto-Betrag von invoice_amountabzuziehen. Not-Aus-Schalter in feeb3fc8352. Jetzt auchim Controller saubere Fehlermeldung ausgeben.
Order-Controller: beim Neuberechnen auf Reihenfolge achten, …
… sonst kam es vor, dass die Zeilensummen durcheinander kamen, dadie Reihenfolge der items von PTC und Order nicht zwingend gleich ist.Wenn beide sortieren (PTC tat dies schon), dann stimmt's.
API für Telefonnummernrückwärtssuche
Authentifizierung: Unterstützung für HTTP Basic Authentication RFC 7617
Schnellsuche für Verkaufs- & Einkaufslieferscheine
Kontoauszug verbuchen: Neuen Skonto-Typ
Eingabe eines freien Skonto-Betrags in der Maske aktiv.Ferner Anzeigen des Skonto-Betrags bei with_skonto_pt, damitder Anwender besser visuell unterstützt wird.
Payment::pay_invoice um Zahlungsbedingung freies Skonto erweitert
POD angepasst. Falls der Zahlungstyp free_skonto und der Parameterskonto_amount übergeben wird, so wird dieser anstelle von einemberechneten Skonto-Betrag verbucht. Das Vorzeichen wird entsprechend...
Redundanten Template-Code in bank_transactions/invoices.html aufgeräumt
Payment Kosmetik/Konvention
POD aktualisiert. Pflicht-Parameter am Anfangder Methode prüfen
Kosmetik, Kommentar verbessert, toter Code entfernt
Kontoauszug verbuchen rückgängig machen. Closedto und GL
Falls eine Buchung in einer geschlossenen Periode ist,erst gar nicht die Möglichkeit zum Anwählen geben.Ferner GLTransaction auch erlauben, allerdings diese dannkomplett (gl Nebenbuch) rauslöschen
BT valutadate anstelle transdate an pay_invoice
Der Tag der Buchung ist in diesem Fall der Tag derWertstellung, entsprechend "richtigeren" wert an pay_invoiceübergeben.
BankTransaction(closed_period) Prüft Valutadatum gegen closedto
Gibt 1 (wahr) zurück falls das Valutadatum der Bankbewegunginnerhalb einer geschloßenen Periode ist. Andernfalls 0.
POD, Test und 2 Stellen im Controller geändert.Offen: Payment-Helper, der sollte allerdings nichts über den Zustand...
SelfTest Transaction zum commit von gerade: weniger false positives
Bei Buchungen, bei denen nicht ein RecordLink existiert (GL),gelöscht, ist es nicht mehr möglich sauber auf verwaiste Einträge zutesten. Entsprechend min(itime) from bank_transaction_acc_trans als...
BankTransaction: want a whole lotta test
neuer Test full_workflow in bank_transactions1.Verbucht drei Verkaufsrechnungen nacheinander, davoneine mit Zahlungsbedingung Skonto nach ZB. Zusätzlichzu den Nebenbücher werden acc_trans Einträge kontrolliert,...