Moritz Bunkus [Thu, 6 Jun 2019 14:20:48 +0000 (16:20 +0200)]
Wiederkehrende Rechnungen: Druckvorlage nach Auftragssprache auswählen
Bisher wurde immer die Standarddruckvorlage genutzt und die im Auftrag
und damit der Rechnung eingestellte Sprache komplett ignoriert.
Weiterhin wird der Dateiname des Anhangs nach der eingestellten
Sprache gesetzt. Das funktioniert nur, wenn die in kivitendo
konfigurierten Sprachen dieselben Sprachkürzel nutzen, wie kivitendos
Übersetzungen selber heißen (also »de« und »en«).
Moritz Bunkus [Thu, 6 Jun 2019 14:07:14 +0000 (16:07 +0200)]
LXDebug: fix level2string für diverse Level, inklusive WARN()
Moritz Bunkus [Thu, 6 Jun 2019 13:54:59 +0000 (15:54 +0200)]
Task-Server: CLI-Option zur Ausführung eines einzelnen Jobs
Führt einen einen bestimmten Job exakt einmal aus, egal, ob der Job
aktiv ist oder was sein nächstes Ausführungsdatum ist. Anschließend
beendet sich der Task-Server wieder.
Das Argument ist die Datenbank-ID aus Tabelle »background_jobs«.
Beispiel:
./scripts/task_server.pl debug --run-job=42
Moritz Bunkus [Thu, 6 Jun 2019 10:29:59 +0000 (12:29 +0200)]
Admin-Controller: Anlegen der Vollzugriffs-Gruppe gefixt
Nach dem Anlegen einer neuen Auth-DB und neuer Session-Tabellen sollte
eigenlich auch eine Gruppe namens »Vollzugriff« angelegt werden, die
Zugriff auf alle Funktionen bekommt — wurde sie aber nicht.
Es gab gleich zwei Probleme mit dem Code:
1. Die Funktion »apply_dbupgrade_scripts« gab nach dem Anlegen der
Session-Tabellen den Wert 1 zurück (im Sinne von »es wurden
DB-Upgrade-Scripte angewandt«). Das hat der aufrufende Code aber
als Gelegenheit genutzt, um den Request zu beenden, bevor der Code
zur Prüfung, ob es schon Gruppen gibt, überhaupt ausgeführt wurde.
Hintergrund ist, dass
»SL::DBUpgrade2->apply_admin_dbupgrade_scripts« selber schon eine
Webseite rendert und die aufrufende Funktion im Controller das dann
nicht auch noch machen wollte.
Doof nur, dass diese Funktion im Controller dann nie wieder
aufgerufen wurde.
2. Der Test, ob es schon eine Gruppe gibt oder nicht, war falsch. Der
Code sollte eigentlich eine beliebige Gruppe auslesen und der
Variablen »$group« zuweisen. Was der Code aber gemacht hat, war eine
Referenz auf ein leeres Array der Variablen zuzuweisen. Der
nachfolgende Check auf »ist $group nicht gesetzt?« hat dann
natürlich nicht gegriffen, denn auch eine leere Array-Referenz ist
im Perl-Sinne wahr.
Moritz Bunkus [Thu, 6 Jun 2019 10:27:14 +0000 (12:27 +0200)]
Admin-Controller: falscher Funktionsname für Auth-Variablen gefixt
Die Umstellung auf Auth-Handler mit Einführung der Möglichkeit, sich
auch über HTTP-Basic-Authentifizierung anzumelden, hat als Änderung
mitgebracht, dass die
Authentfizieriungsvariablen (z.B. »{AUTH}admin_password«) nicht mehr
in $::form verbleiben. Einige Controller benötigen diese aber;
z.B. der Admin-Controller, wenn es noch keine Auth-DB oder keine
Session-Tabellen gibt — denn dann ist die einzige Möglichkeit, das von
der Benutzer*in eingegebene Admin-Passwort über mehrere Requests zu
erhalten, es in der Form mitzuschleifen.
Der Admin-Controller war darauf auch schon vorbereitet — leider hatte
aber die Funktion, die diesen Umstand mitteilt, den falschen Namen und
wurde somit niemals aufgerufen.
Dies ist der zweite Teil des Fixes von #376.
Moritz Bunkus [Thu, 6 Jun 2019 10:23:34 +0000 (12:23 +0200)]
SessionValue: damit klarkommen, dass Auth-DB & Session-Tabellen nicht existieren
Durch die Änderungen letztens, mit der Session-Werte auch bei parallel
laufenden kivitendo-Requests richtig erhalten bleiben, wurde
SessionValue so umgeschrieben, dass es davon ausgeht, dass sowohl die
Auth-DB als auch die Session-Tabellen immer existieren.
Dies ist jedoch während der Erstinstallation nicht der Fall. Diverse
Requests im Admin-Controller müssen ausgeführt werden können, damit
Auth-DB & Session-Tabellen über den Controller angelegt werden können.
Da der Admin-Auth-Handler aber auch mit Sessions funktionieren kann,
fragt er also Session-Werte ab; die wiederum versuchen,
SessionValue-Instanzen zu nutzen.
SessionValue prüft nun bewusst auf Präsenz der Session-Tabellen, bevor
es versucht, aus ihnen zu lesen.
Dies ist Teil des Fixes von #376.
Moritz Bunkus [Wed, 5 Jun 2019 15:02:47 +0000 (17:02 +0200)]
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 das
tun. Andernfalls kann es bei Nicht-ASCII-Zeichen dann dazu kommen,
dass das empfangene Mail-Programm diese in einem anderen Zeichensatz
interpretiert (z.B. ISO-8859-1), obwohl wir immer UTF-8 senden. Ein
Halleluja für Legacy-Standards.
Weiterhin gibt es einen subtilen Bug in Email::MIME. Eigentlich steht
der Dateiname ja bereits im »attributes«-Hash, das an
»Email::MIME->create()« übergeben wird. Hier könnte man den Dateinamen
schon encodiert reinschreiben.
Das funktioniert auch — aber nur manchmal. Intern scheint das Modul
über die Hash-Keys von »attributes« zu iterieren und je nachdem,
welche Keys es schon gesehen hat, das vom Aufrufer vorgenommene
Encoding rückgängig zu machen. Da die Hash-Key-Reihenfolge aber bei
jedem Aufruf von Perl zufällig gewählt wird, passiert es halt
manchmal, dass diese Keys bereits gesehen wurden und Email::MIME das
Encoding rückgängig macht.
Daher muss der »Content-Disposition«-Header unbedingt nach dem
Erzeugen mit »create« gesetzt werden. Dann lässt Email::MIME ihn auch
genau so, wie er sein soll.
Moritz Bunkus [Wed, 5 Jun 2019 12:55:17 +0000 (14:55 +0200)]
Periodische Rechnungen: find_template-Aufruf gefit
find_template gibt je nach Kontext (Skalar vs. Array) unterschiedliche
Dinge zurück. Innerhalb einer Hashzuweisung herrscht Array-Kontext,
und damit kann je nach Reihenfolge, in der die Hash-Parameter von Perl
ausgewertet werden, der gesamte Hashinhalt schrott sein.
Moritz Bunkus [Wed, 5 Jun 2019 11:54:52 +0000 (13:54 +0200)]
Module: weitere Anpassungen für Exception::Lite → Exception::Class
Jan Büren [Tue, 28 May 2019 12:17:02 +0000 (14:17 +0200)]
Druckvorlagen RB Syntax-Fix für notes (VK-Angebot)
Ist aus Versehen mit der letzten Überarbeitung reingekommen.
Jan Büren [Tue, 28 May 2019 09:52:02 +0000 (11:52 +0200)]
Doku: Apache 2.2 Direktiven entfernt
Der Hinweis für ältere Versionen ist ausreichend.
Entsprechend entfernt.
Jan Büren [Tue, 28 May 2019 07:45:48 +0000 (09:45 +0200)]
Doku: ghostscript als Paket für LaTeX ergänzt
Die Mahnungen benötigen dieses Paket
Moritz Bunkus [Mon, 20 May 2019 14:12:29 +0000 (16:12 +0200)]
Session Content: Query zum Einlesen gefixt
Operatorpräzedenz wurde falsch berücksichtigt.
Sven Schöling [Wed, 17 Apr 2019 12:30:30 +0000 (14:30 +0200)]
Session Content: Race condition gehoben
Der ursprüngliche Mechanismus hat einfach nur alle Session Variablen
gespeichert und beim Session restore wieder geladen. Es hat sich aber
gezeigt, dass große Daten in der Session Requests deutlich langsamer
machen, also wurde das Flag auto_restore eingeführt. Session Werte, die
nicht automatisch benötigt werden, sollten dann nur bei Bedarf geladen
werden.
Um zu wissen welche Werte existieren wurden aber zum Start des
Requests einmal alle Werte aus der Sessiontabelle geholt, und am Ende
dieser Stand auch wieder hergestellt.
Unter ajax load kann es aber passieren, dass in der Zeit andere Requests
schon Werte eingepflegt haben die dabei gelöscht werden. Das führt dann
zu zufälligen Sessionabbrüchen oder Requestfehlern.
Jetzt werden am Anfang nur und ausschließlich die Daten geladen die auch
auto_restore sind, die dann auch gleich gelöscht werden. nur die Daten
die modifiziert werden, werden am Ende des Requests zurückgespeichert.
Es wäre toll gewesen dafür ein UPSERT zu nehmen, aber das scheitert
daran, dass das ein DB Upgrade auf auth braucht.
Bernd Bleßmann [Wed, 15 May 2019 13:18:21 +0000 (15:18 +0200)]
OrderController: nach Speichern hiddens der ids wieder setzen, …
… falls die Makse nicht neu geladen wird.
Bernd Bleßmann [Wed, 15 May 2019 13:01:13 +0000 (15:01 +0200)]
OrderController: Kosmetik
Moritz Bunkus [Tue, 14 May 2019 14:03:02 +0000 (16:03 +0200)]
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, mal
IPv6. Dadurch prüft kivitendo manchmal (nämlich genau dann, wenn die
Verbindung über IPv4 reinkommt) die Quell-IP. Wurde die Session aber
initial über IPv6 erzeugt, so schlägt die Quell-IP-Prüfung natürlich
fehl.
Die Quell-IP-Prüfung liefert eh einen mehr als fragwürdigen Gewinn an
Sicherheit. Für IPv6, wo sich die Quell-Adresse aufgrund von Techniken
wie Privacy Extensions mitten in der Session ändern kann, haben wir
die Prüfung ja eh schon nicht mehr.
Jan Büren [Wed, 10 Apr 2019 11:44:52 +0000 (13:44 +0200)]
Doku: Installations-Anmerkungen für Debian/Ubuntu ergänzt
Jan Büren [Wed, 10 Apr 2019 08:56:32 +0000 (10:56 +0200)]
Doku: debian 10 getestet
Jan Büren [Wed, 10 Apr 2019 08:45:39 +0000 (10:45 +0200)]
Doku: fix copy-paste Fehler libyaml-perl
Jan Büren [Wed, 10 Apr 2019 08:31:30 +0000 (10:31 +0200)]
Installation-Doku typo libdatetime-event-perl -> libdatetime-event-cron-perl
Moritz Bunkus [Fri, 5 Apr 2019 09:21:33 +0000 (11:21 +0200)]
Merge branch 'f-bundled-perl-modules'
Moritz Bunkus [Fri, 5 Apr 2019 08:03:06 +0000 (10:03 +0200)]
Module: Dokumentation angepasst
Moritz Bunkus [Fri, 5 Apr 2019 07:57:25 +0000 (09:57 +0200)]
Module: implizite Anforderung auf Set::Crontab entfernt
kivitendo nutzt das Modul nicht direkt, sondern nur
DateTime::Event::Cron. Das nutzt Set::Crontab unter der Haube, weshalb
wir keine direkte Abhängigkeit deklarieren sollten.
Moritz Bunkus [Wed, 3 Apr 2019 15:14:20 +0000 (17:14 +0200)]
SL::DB::Cache nach SL::DB::Helper::Cache verschoben
Da es sich nicht um eine Mapping-Klasse einer Tabelle handelt, sollte
sie nicht direkt innerhalb von SL::DB liegen.
Jan Büren [Wed, 3 Apr 2019 15:00:19 +0000 (17:00 +0200)]
Typo: Schwellenwert statt Schwellwert
Martin Helmling mh@waldpark.octosoft.eu [Mon, 4 Apr 2016 17:10:03 +0000 (19:10 +0200)]
PDF::Table - fehlerhafte Headerbearbeitung ab Seite 2
ab Seite 2 werden die benötigten Weiten der Spalten um die Zahl der Headerzeilen
nach hinten verschoben. Dann kommt es zu fehlenden Zeilenumbrüchen in manchen Zellen
Da Pushen von leerem Array führt zu diesem Fehler, d.h. es wird doppelt gepushed.
Dieser Fehler war schon in der alten PDF::Table
Sven Schöling [Fri, 26 Feb 2016 09:19:28 +0000 (10:19 +0100)]
PDF::Table - einige undefined warnings gefixt
Sven Schöling [Thu, 25 Feb 2016 17:59:45 +0000 (18:59 +0100)]
PDF::Table: Warnungen und "-" Artefakte bei undef entfernt
Sven Schöling [Thu, 25 Feb 2016 17:54:44 +0000 (18:54 +0100)]
PDF::Table: Zusätzliche header richtigrum anzeigen
Sven Schöling [Thu, 25 Feb 2016 17:25:44 +0000 (18:25 +0100)]
PDF::Table: Prop Index korrekt indizieren
Sven Schöling [Thu, 25 Feb 2016 17:03:12 +0000 (18:03 +0100)]
PDF::Table: Proportional skalieren statt adaptiv
Sven Schöling [Thu, 25 Feb 2016 15:38:41 +0000 (16:38 +0100)]
PDF::Table: Rahmen bei umgebrochenen Zeilen in der korrekten Länge zeichnen.
Sven Schöling [Thu, 25 Feb 2016 14:51:05 +0000 (15:51 +0100)]
Endlosschleife im PDF-Tabellenmodul und damit im PDF-Export gefixt
Wenn die Tabelle zu breit wird und dann irgendwann nicht einmal mehr ein
Wort in eine Zeile passt, dann muss das Wort trotzdem gesetzt werden;
andernfalls würde das PDF::Table-Modul in einer Endlosschleife enden.
Fix für Bug 863.
Reimplementiert commit
23223ef4302931a6a141c659bfda7ef6c7546b77
Sven Schöling [Thu, 25 Feb 2016 14:44:34 +0000 (15:44 +0100)]
ReportGenerator: Unterstützung für das Verbinden von Tabellenzellen mit dem "colspan"-Attribut in der PDF-Ausgabe.
Reimplementiert
a18cc3f5dedae1c8b541b10df3b67153518663a6
Sven Schöling [Thu, 25 Feb 2016 13:14:02 +0000 (14:14 +0100)]
ReportGenerator: Unterstützung für mehrzeilige und individuell festgelegte Tabellenköpfe/Spaltenüberschriften implementiert.
Reimplementiert den PDF/Table.pm Teil von
84ba8214f6f1e68de5fa317b8239a7888a4aac03
Sven Schöling [Thu, 25 Feb 2016 10:41:47 +0000 (11:41 +0100)]
Unterstützung für zellenübergreifende Überschriften im PDF-Export des ReportGenerators verbessert.
Reimplementation von
d3897394/
35cd4452.
Moritz Bunkus [Wed, 3 Apr 2019 12:35:39 +0000 (14:35 +0200)]
Module: Update von PDF::Table auf 0.10.1
Moritz Bunkus [Wed, 3 Apr 2019 12:29:38 +0000 (14:29 +0200)]
Module: 'modules/fallback' nicht mehr in @INC aufnehmen
Moritz Bunkus [Wed, 3 Apr 2019 12:22:11 +0000 (14:22 +0200)]
Module: Dokumentations-Update
Moritz Bunkus [Wed, 3 Apr 2019 12:17:13 +0000 (14:17 +0200)]
Module: Exception::Lite durch Exception::Class ersetzt
Jan Büren [Tue, 2 Apr 2019 10:33:09 +0000 (12:33 +0200)]
SelfTest: gldate mit itime vergleichen - sollte übereinstimmen
Jan Büren [Tue, 2 Apr 2019 09:32:13 +0000 (11:32 +0200)]
Dialogbuchung: Mehrfach-Stornos oder Löschen von Stornos verbieten
Bernd Bleßmann [Fri, 29 Mar 2019 15:18:29 +0000 (16:18 +0100)]
OrderItem-Manager: Sortierung: runningnumber gibt es nicht -> position
Moritz Bunkus [Fri, 29 Mar 2019 14:39:56 +0000 (15:39 +0100)]
Module: Update der Dokumentation
Moritz Bunkus [Fri, 29 Mar 2019 14:22:00 +0000 (15:22 +0100)]
Module: Devel::REPL::Plugin::* aus modules/override verschoben
Es handelt sich um explizit für kivitendo geschriebene Module, daher
sind sie im override falsch.
Moritz Bunkus [Fri, 29 Mar 2019 14:18:28 +0000 (15:18 +0100)]
Module: gebundletes YAML durch dünnen Wrapper über YAML::XS & YAML ersetzt
Moritz Bunkus [Fri, 29 Mar 2019 14:07:24 +0000 (15:07 +0100)]
Variable »$query« nicht durch doppelts »my« shadowen
Moritz Bunkus [Fri, 29 Mar 2019 14:06:04 +0000 (15:06 +0100)]
Module: Doku zu nicht mehr gebundleten Modulen entfernen
Moritz Bunkus [Fri, 29 Mar 2019 13:26:53 +0000 (14:26 +0100)]
Module: Rose::DBx::Cache::Anywhere durch eigene Variante ersetzt
Moritz Bunkus [Tue, 26 Mar 2019 16:29:20 +0000 (17:29 +0100)]
Module: Fallback-Version von DateTime::Event::Cron entfernt
Ist in Debian/Ubuntu inzwischen paketiert.
Moritz Bunkus [Tue, 26 Mar 2019 16:28:46 +0000 (17:28 +0100)]
Module: Fallback-Version von Set::Crontab entfernt
Ist in Debian/Ubuntu inzwischen paketiert.
Moritz Bunkus [Tue, 26 Mar 2019 16:26:47 +0000 (17:26 +0100)]
Module: Fallback-Version von Sort::Naturally entfernt
Ist in Debian/Ubuntu inzwischen paketiert.
Moritz Bunkus [Tue, 26 Mar 2019 16:25:00 +0000 (17:25 +0100)]
Module: überflüssige Prüfung auf Test::Harness entfernt
Perl 5.10.1 wird seit kivitendo 3.1.0 vorausgesetzt, und 5.10.1
enthält Test::Harness im Core.
Moritz Bunkus [Tue, 26 Mar 2019 10:07:07 +0000 (11:07 +0100)]
Merge branch 'f-project-search-custom-variables'
Werner Hahn [Tue, 26 Mar 2019 08:54:10 +0000 (09:54 +0100)]
OrderController Sortierung berichtigt. Sort::Naturally hat auch nicht
wie erwartet sortiert
Moritz Bunkus [Mon, 25 Mar 2019 16:08:33 +0000 (17:08 +0100)]
Pflichtenhefte: Exportoption bzgl. benutzerdefinierter Variablen in Suchmaske gefixt
Moritz Bunkus [Mon, 25 Mar 2019 15:42:56 +0000 (16:42 +0100)]
Projekte: benutzerdefinierte Variablen in Suchmaske
Moritz Bunkus [Mon, 25 Mar 2019 14:51:27 +0000 (15:51 +0100)]
locales: nicht mehr benutzte Strings entfernt
Moritz Bunkus [Mon, 25 Mar 2019 14:51:12 +0000 (15:51 +0100)]
Projekte: alte Suchmaske entfernt
Werner Hahn [Mon, 25 Mar 2019 14:46:33 +0000 (15:46 +0100)]
OrderController: reorder mit Sort::Naturally damit nach Preis ordentlich
sortiert wird
Jan Büren [Mon, 25 Mar 2019 12:11:47 +0000 (13:11 +0100)]
Falsches Recht für Kreditorenbeleg überprüft
Moritz Bunkus [Mon, 25 Mar 2019 10:10:08 +0000 (11:10 +0100)]
special_chars: ↔ und ↕ ergänzt
Jan Büren [Sun, 24 Mar 2019 18:58:53 +0000 (19:58 +0100)]
Bankauszug verbuchen: TT Zuweisung ohne $
Ansonsten wird bei der Vorauswahl 'Skonto nach ZB' kein
vorbelegter Betrag angezeigt.
Jan Büren [Sat, 23 Mar 2019 13:28:54 +0000 (14:28 +0100)]
BankTransaction: save_bt keinen bezahlten rechnungen akzeptieren
Moritz Bunkus [Fri, 22 Mar 2019 12:02:52 +0000 (13:02 +0100)]
Telefonnummernsuche: Datenank-ID & Typ zurückgeben
Moritz Bunkus [Fri, 22 Mar 2019 11:56:12 +0000 (12:56 +0100)]
Merge branch 'f-phone-number-lookup'
Moritz Bunkus [Fri, 22 Mar 2019 11:55:56 +0000 (12:55 +0100)]
Dokumentation: HTML & PDF gebaut
Moritz Bunkus [Fri, 22 Mar 2019 11:55:41 +0000 (12:55 +0100)]
Dokumentation: zu programmatischen API-Aufrufen ergänzt
Moritz Bunkus [Fri, 22 Mar 2019 11:52:09 +0000 (12:52 +0100)]
Dokumentation: Struktur gefixt
Jan Büren [Fri, 22 Mar 2019 07:50:13 +0000 (08:50 +0100)]
Bankverbuchungen: freies Skonto auch abziehen. Code-Vereinfachung (not_assigned)
Vergessen, den freien Skonto-Betrag von invoice_amount
abzuziehen. Not-Aus-Schalter in
feeb3fc8352. Jetzt auch
im Controller saubere Fehlermeldung ausgeben.
Jan Büren [Fri, 22 Mar 2019 07:32:28 +0000 (08:32 +0100)]
locales: Etwas exakter beschrieben
Bernd Bleßmann [Wed, 20 Mar 2019 09:43:27 +0000 (10:43 +0100)]
Order-Controller: beim Neuberechnen auf Reihenfolge achten, …
… sonst kam es vor, dass die Zeilensummen durcheinander kamen, da
die Reihenfolge der items von PTC und Order nicht zwingend gleich ist.
Wenn beide sortieren (PTC tat dies schon), dann stimmt's.
Bernd Bleßmann [Sat, 16 Mar 2019 17:15:22 +0000 (18:15 +0100)]
Berichte Kunden/Lieferanten u. Artikel: CVars von Typ Datum als hidden mitnehmen
Damit die Filter beim Export oder beim Sortieren nicht verschwinden.
Behebt #215 (redmine).
Bernd Bleßmann [Fri, 15 Mar 2019 12:53:24 +0000 (13:53 +0100)]
t/db_helper/payment.t: keine Klammern bei subroutine-Definition
sonst gibt es eine Warnung bzgl. Prototypen
Moritz Bunkus [Fri, 15 Mar 2019 13:39:26 +0000 (14:39 +0100)]
API für Telefonnummernrückwärtssuche
Moritz Bunkus [Fri, 15 Mar 2019 11:38:48 +0000 (12:38 +0100)]
Dokumentationsupdate für HTTP Basic Authentication
Moritz Bunkus [Fri, 15 Mar 2019 11:30:30 +0000 (12:30 +0100)]
Authentifizierung: Unterstützung für HTTP Basic Authentication RFC 7617
Jan Büren [Thu, 14 Mar 2019 15:08:23 +0000 (16:08 +0100)]
Bankbewegung: Zuweisungsüberbuchungen per Constraint verbieten
Jan Büren [Thu, 14 Mar 2019 15:02:49 +0000 (16:02 +0100)]
locales freies Skonto
Jan Büren [Thu, 14 Mar 2019 12:37:18 +0000 (13:37 +0100)]
Kontoauszug verbuchen: Zugewiesen abzgl. Skonto berechnen
Oberflächen-Kosmetik, damit der Benutzer klarer sieht,
was am Ende der Bankbewegung auf Skonto und von der Bankbewegung abgezogen wird.
Jan Büren [Thu, 14 Mar 2019 12:23:30 +0000 (13:23 +0100)]
Testfall: closedto für bank_transactions angepasst
Prüfung auf Date 30.12.18 < 30.12.18 ist nicht falsch
Zeitstempel beide auf 0h
Moritz Bunkus [Tue, 12 Mar 2019 12:26:56 +0000 (13:26 +0100)]
Schnellsuche für Verkaufs- & Einkaufslieferscheine
Jan Büren [Tue, 12 Mar 2019 10:20:29 +0000 (11:20 +0100)]
Kontoauszug verbuchen: Neuen Skonto-Typ
Eingabe eines freien Skonto-Betrags in der Maske aktiv.
Ferner Anzeigen des Skonto-Betrags bei with_skonto_pt, damit
der Anwender besser visuell unterstützt wird.
Jan Büren [Mon, 11 Mar 2019 13:33:08 +0000 (14:33 +0100)]
Payment::pay_invoice um Zahlungsbedingung freies Skonto erweitert
POD angepasst. Falls der Zahlungstyp free_skonto und der Parameter
skonto_amount übergeben wird, so wird dieser anstelle von einem
berechneten Skonto-Betrag verbucht. Das Vorzeichen wird entsprechend
nur "durchgereicht" und der Parameter überlager simplerweise den
Wert total_skonto_amount beim Verbuchen der Skonto-AccTrans-Einträge
Jan Büren [Sun, 10 Mar 2019 16:41:05 +0000 (17:41 +0100)]
Redundanten Template-Code in bank_transactions/invoices.html aufgeräumt
Jan Büren [Fri, 8 Mar 2019 11:58:13 +0000 (12:58 +0100)]
Kreditorenbeleg: Kontenbeschreibung für Zahlungskonten anzeigen
Wie bei EK-Rechnung. Zur Sicherheit ein eigenes
Form-Feld generiert, anstatt die select box nur zu disablen.
Jan Büren [Thu, 7 Mar 2019 12:20:01 +0000 (13:20 +0100)]
Payment Kosmetik/Konvention
POD aktualisiert. Pflicht-Parameter am Anfang
der Methode prüfen
Jan Büren [Thu, 7 Mar 2019 11:32:46 +0000 (12:32 +0100)]
Kosmetik, Kommentar verbessert, toter Code entfernt
Jan Büren [Tue, 5 Mar 2019 13:41:05 +0000 (14:41 +0100)]
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 dann
komplett (gl Nebenbuch) rauslöschen
Jan Büren [Tue, 5 Mar 2019 12:40:51 +0000 (13:40 +0100)]
BT(save_single_invoice) valutadate anstelle transdate an pay_invoice
Der Tag der Buchung ist in diesem Fall der Tag der
Wertstellung, entsprechend "richtigeren" wert an pay_invoice
übergeben.
Jan Büren [Tue, 5 Mar 2019 12:36:19 +0000 (13:36 +0100)]
BankTransaction(closed_period) Prüft Valutadatum gegen closedto
Gibt 1 (wahr) zurück falls das Valutadatum der Bankbewegung
innerhalb 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
der Bankbewegung wissen müssen ...
Jan Büren [Sun, 3 Mar 2019 15:47:33 +0000 (16:47 +0100)]
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 zu
testen. Entsprechend min(itime) from bank_transaction_acc_trans als
Schwellenwert für Startpunkt der Prüfung von bank_transactions.transdate
genommen
Jan Büren [Sun, 3 Mar 2019 15:16:36 +0000 (16:16 +0100)]
BankTransaction: want a whole lotta test
neuer Test full_workflow in bank_transactions
1.
Verbucht drei Verkaufsrechnungen nacheinander, davon
eine mit Zahlungsbedingung Skonto nach ZB. Zusätzlich
zu den Nebenbücher werden acc_trans Einträge kontrolliert,
sowie der gesetzte RecordLink.
2.
Da die Bankbewegung komplett aufgeht, wird diese abgeglichen
und die Zustände danach kontrolliert.
3.
Leider war die Verbuchung komplett Murks, weswegen die
Ursprungszustand vor 1. wiederhergestellt (neues Funktion
Kontoauszug-Verbuchung rückgängig machen)
Bonus-Level:
Damit andere Anwendungen / Schnittstellen, DB-Admins nicht
auf die Idee kommen an der Hilfstabelle bank_transaction_acc_trans
zu schrauben, entsprechend einen weiteren SelfTest geschrieben
Jan Büren [Sun, 3 Mar 2019 15:00:41 +0000 (16:00 +0100)]
Reconciliation: Veto, kein invoice_amount nachträglich setzen.
Im Fehlerfall die Summe der Bank gegenüber der Buchungen
an Benutzer (testfall) übergeben.
Jan Büren [Sun, 3 Mar 2019 14:58:32 +0000 (15:58 +0100)]
unlink_bank_transaction optionaler parameter für testfall
Jan Büren [Sat, 2 Mar 2019 09:23:16 +0000 (10:23 +0100)]
BankTransaction Die richtigen (erwarteten) Parameter von amount an pay_invoice
Stellt den vorherigen Zustand im Controller wieder her, der über
Fallunterschiede vom Invoice-Typ Vorzeichen verschoben hat.
Tests laufen damit erstmal durch. Ferner kann und muss es mehr
als 2 acc_trans_ids als Rückgabe von pay_invoice geben
Jan Büren [Sat, 2 Mar 2019 09:16:26 +0000 (10:16 +0100)]
Payment pay_invoice alle acc_trans_ids sammeln
Hintergrund. new_acc_trans wird mehrfach für verschiedene
Fälle verwendet, entsprechend nach jeder Änderung einsammeln
Jan Büren [Sat, 2 Mar 2019 09:15:35 +0000 (10:15 +0100)]
BankTransactionAccTrans für ALL.pm
Jan Büren [Sat, 2 Mar 2019 07:40:50 +0000 (08:40 +0100)]
Manuelle Zahlungen verbieten, falls mit Kontoauszug verknüpft.
Falls die Änderbarkeit von Zahlungen nicht auf niemals steht,
entsprechend Überbuchen / manuelles Ändern verbieten.
Der Fehlertext weißt zusätzlich auf die Funktion im Bankbewegungs-Bericht hin