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,...
Reconciliation: Veto, kein invoice_amount nachträglich setzen.
Im Fehlerfall die Summe der Bank gegenüber der Buchungenan Benutzer (testfall) übergeben.
unlink_bank_transaction optionaler parameter für testfall
BankTransaction Die richtigen (erwarteten) Parameter von amount an pay_invoice
Stellt den vorherigen Zustand im Controller wieder her, der überFallunterschiede vom Invoice-Typ Vorzeichen verschoben hat.Tests laufen damit erstmal durch. Ferner kann und muss es mehr...
Payment pay_invoice alle acc_trans_ids sammeln
Hintergrund. new_acc_trans wird mehrfach für verschiedeneFälle verwendet, entsprechend nach jeder Änderung einsammeln
BankTransactionAccTrans für ALL.pm
BankTransaction: Neue Funktion um Bankverbuchungen wieder rückgängig zu machen
action_unlink_bank_transaction inkl. PODDer Bericht Bankbewegungen erhält im Presenter Anhakboxen (ähnlich wie bei SEPA)
BankTransaction: weniger im Controller rechnen -> ausgelagert in Objekt
s.a. Commit davor. Redundanzen hier direkt vorbeugen.
Dialogbuchungen aus Bankbewegungen teilweise Verbuchungen erlauben
Da vorher nur komplette Bankbewegungen verbucht werden konnten,war es nicht sinnvoll Teilbeträge im Dialog zu buchen.Das Verfahren ist jetzt geändert und übergeben wird der aktuelleRest-Betrag der Bankbewegung
BankTransaction new method not_assigned_amount
returns the current open amount of this bank transaction.Added to POD
BankTransaction: save_single_bank_transaction API-Änderung
S.a. POD und devel-ListeTestfälle angepasst
save_single_bank_transaction: acc_trans_ids von pay_invoice speichern
Payment-Helper pay_invoice um Rückgabewert der acc_trans_ids erweitert
Kosmetik/Perl-Detail Optionen als Hash anstatt array
Neue Helper-Tabelle SL/DB/BankTransactionAccTrans.pm
Hintergrund: Verbuchte Bankbewegungen sind nur übereinen löschbaren RecordLink aktuell zuordenbar.Das macht ein verlässliche Aussage über die Verbuchungender Bankbewegung schwierig. Besser wäre es eine...
SL::DB::Invoice(closed) POD korrigiert s.a. #368
Ggf. die Routine ganz entfernen oder zumindestens fürGutschriften wie in 368 beschrieben patchen
SL::DB::BankTransactions(linked_invoices): Returns an array of record objects
Anstatt nur die Namen der Belege werden jetzt die Beleg-Objektezurückgegeben. Einziger Aufruf der Methode beim ReportGenerator inController::BankTransactions. Die Stelle entsprechend angepasst
PTC: Sortierung von items beachten bei Rechnungen die nachträglich geändert wurden
(cherry picked from commit eacfe1d260a6f9d4c12aa508b2c4d4cc018508c8)
Order: Auftrag mit Items und Ware laden
Die werden überall gebraucht, also gleich mitladen
(cherry picked from commit cb546c6e64e4b3315dcd8b826261939a89baa543)
Order: second row javascript direkt indizieren.
Beschleunigt das Nachladen der zweiten Zeile bei großen Aufträgen (100+Zeilen), weil der client weit weniger DOM selectors auswerten muss.
(cherry picked from commit 87ca139b2162813d71dec8e4e8ecef21588c818d)
Preisregeln: Präzedenzbug bei Mengenregel behoben
Durch eine fehlende Klammerung konnten Mengenregeln zufällig nichtgreifen.
(cherry picked from commit f1cf2062a7df1877e931f5655afe899e0dacb649)
CreatePDF-Helper: UNLINK für temporäre Dateien (wieder) richtig setzen
Berechtigung, Einkaufsrechnungen persönlich zugeordneter Projekte einzusehen
Betrifft sowohl Einkaufsrechnungen als auch Kreditorenbuchungen.
Berechtigung, Verkaufsrechnungen persönlich zugeordneter Projekte einzusehen
Man kann nun Mitarbeiter*innen zu Projekten zuordnen, indem man sie inden Projektstammdaten hinzufügt.
Ist eine Mitarbeiter*in zu einem Projekt zugeordnet, so darf sie alleRechnungen ansehen, die über die Projektnummer der Rechnung (nicht der...
Autovervollständigung Kunden/Lieferanten auch ohne Stammdatenrechte
Ergebnis von SL::DB::Manager::Employee->current cachen
Order-Controller: Workflow -> *-Auftrag vorher Speichern
Ansonsten werden die cvars nicht übernommen.Außerdem ist es konsistenter, da bei allen anderenWorkflow-Aktionen auch immer gespeichert wird (Rechnung oder LS).
generische E-Mail-Adresse für Lieferscheine
Ähnlich wie bei Verkaufsrechnungen gibt es generischeEmpfänger für Lieferscheine beim E-Mail-Versand.Die jetzige Konfiguration (nicht änderbar) entsprichtdem Wert Stammdaten und Ansprechpartner in CC.Ist eine Stammdaten-Mail und ein Ansprechpartner definiert,...
DMS-Dateianhänge beim E-Mail-Versand Vorauswahl konfigurierbar
Rechnungsversand E-Mail-Body
Falls die generische E-Mail-Adresse verwendet wird, sollte auchdie generische Anrede hinterlegt sein, selbst wenn ein Ansprechpartnernoch in CC gesetzt wird.
manueller Rechnungsversand per E-Mail. Vorbelegung mandantenweit konfigurierbar
Verkauf->Rechnungsbericht Filter nach nicht per E-Mail verschickten Belegen
SL::RP: unbenutzte Subroutine entfernt.
DisplayableNamePrefs: Benutzereinstellungen
DisplayableNamePrefs: Mandantenkonfiguration
DisplayableNamePrefs: SL::DB:xxx verwenden DB-Helper
erstmal nur Customer/Vendor/Part
DisplayableNamePrefs: DB-Helper als Mixin