Moritz Bunkus [Tue, 8 Nov 2016 11:58:44 +0000 (12:58 +0100)]
Startup: Include-Pfade mittels FindBin ermitteln
Neue Perl-Versionen werden das aktuelle Verzeichnis '.' aus dem
Standard-Include-Pfad @INC entfernen. Das bedeutet für uns, dass wir
nicht mehr einfach »use SL::Dispatcher;« und ähnliche Konstrukte machen
können.
Daher stellt dieser Commit all diejenigen Perl-Dateien, die als externe
Einstiegsquelle dienen, auf die Verwendung von FindBin um. Es werden
nicht nur die Verzeichnisse »modules/override« und »modules/fallback«
behandelt, sondern auch das Installationsverzeichins selber mit in @INC
aufgenommen, um für die Entfernung von '.' gewappnet zu sein.
Zusätzlich wurden die meisten Scripte so modifiziert, dass sie nicht
mehr direkt aus dem kivitendo-Installationsverzeichnis heraus aufgerufen
werden müssen sondern aus beliebigen Verzeichnissen heraus aufgerufen
werden können. Sie wechseln schlicht zu allererst das aktuelle
Verzeichnis ins kivitendo-Installationsverzeichnis.
Perl-Module, die nicht direkt Scripte sind und den Pfad zum
Installationsverzeichnis benötigen (also z.B. SL/DBUpgrade2.pm), dürfen
allerdings FindBin nicht benutzen, weil $FindBin::Bin das Verzeichnis
zum aufgerufenen Perl-Script enthält, und das kann mal dispatcher.pl
sein, mal scripts/dbupgrade2.pl. Für diese Module gibt es weiterhin
SL::System::Process->exe_dir, die das kivitendo-Installationsverzeichnis
zuverlässig ermittelt.
Leider ist es nicht möglich, nur SL::System::Process->exe_dir anstelle
von $FindBin::Bin zu nutzen, da zuerst SL::System::Process eingebunden
werden muss, und um das zu tun, muss das Installationsverzeichnis ja
bereits im Include-Pfad vorhanden sein — typical case of catch 22.
Moritz Bunkus [Tue, 8 Nov 2016 12:47:41 +0000 (13:47 +0100)]
systemd Service: Abhängigkeiten gefixt; User ergänzt; ProtectXZY ergänzt
• Requires & After: falscher Abschnitt, gehören nach [Unit]
• User: der Task-Server sollte als der User laufen, unter dem auch der
Webserver läuft.
• ProtectSystem, ProtectHome, PrivateTmp: diverse Sicherheitsmechanismen
von systemd nutzen; siehe »man systemd.exec«
Moritz Bunkus [Tue, 8 Nov 2016 12:36:25 +0000 (13:36 +0100)]
scripts: nicht mehr benötigte/funktionierende Scripte entfernt
• create_tags_file.pl: das alte tags-Format wird eigentlich nicht mehr
verwendet; wenn dann etags oder GNU global.
• spawn_oo.pl: lange veraltet; soffice heißt das Programm schon lange
nicht mehr; funktioniert nicht; unzulänglicher Test, ob Prozess läuft
• templ2t8.pl: Konvertierung vom alten Template-System wird schon lange
nicht mehr benötigt
• pl2tmpl.pl: dito
Moritz Bunkus [Wed, 7 Sep 2016 11:32:35 +0000 (13:32 +0200)]
Pflichtenhefte: Faktor für Verkaufspreis in Abschnitten & »Kostenschätzung« umbenannt
Aktuell haben wir nur einen Verkaufsbasispreis im Pflichtenheft: den
Stundensatz in den Grundeinstellungen. Dies ist allerdings der
Stundensatz, der Kunden gegenüber in Rechnung gestellt wird, und damit
ein Verkaufspreis und kein Kostenfaktor. Die Kosten anhand des
Verkaufspreises abzuschätzen ist aber unsinnig.
Daher ist es sinnvoller, erst mal von »Zeit- und Preisschätzung«
anstelle von »Zeit- und Kostenschätzung«.
Der neu eingeführte Faktor, der an Abschnitten angegeben werden kann,
ist dann ein Multiplikator für die Verkaufspreisschätzung. Er kann
z.B. benutzt werden, um geplante Wochenendarbeiten höher zu bepreisen.
Eine Einführung von echter Kostenschätzungen würde etwas mehr Arbeit
erfordern.
Automatisches Löschen von Flashanzeige unterdrückbar
Bei jedem ClientJS call wird bisher vor Ausführung der Antwortdaten in Javascript
die Info/Warnung/Fehleranzeige gelöscht.
Bei periodischen ClientJS call kann das zu unerwünschten Effekten führen,
z.B. eine Fehlermeldung wird so schnell gelöscht, dass sie nicht erkannt werden kann.
Nun kann optional dies per $self->js->no_flash_clear abgeschaltet werden
Generell werden die SEPA Export-Items aus der Punktebewertung herausgenommn,
dafür wird eine exaktere Prüfung auch mittels des Transaktionstyps ermittelt.
Dadurch werden auch Sammellastschriften/Überweisungen erkannt.
Setzen von Skontotyp, kein Prüfen der Sepaitems mehr in >get_agreement_with_invoice
In einer Rechnung wird beim Erzeugen aus der Vorlage der gezahlte Wert nun
richtig ausgefüllt.
Wie in create_invoice.html negative Werte frisch formatieren (commit 15b2640059)
Sven Schöling [Tue, 10 Nov 2015 10:25:21 +0000 (11:25 +0100)]
GDPDU: lokalisierte Spaltennamen und CSV Header
Ausserdem:
- Vendor (database ID) war falsch lokalisiert
- vendor hat noch customernumber exportiert, exportiert jetzt
vendornumber
- Mehr Dokumentation
Sven Schöling [Fri, 30 Oct 2015 12:38:19 +0000 (13:38 +0100)]
GDPDU: acc_trans_id nciht mehr primary key
Bei großen Splitbuchungen werden die auf mehrere einzelne Teile geteilt,
die dann den gleichen Key haben. Der Key selber macht keinen Sinn als
Key, weil jede Zeile aus 2-3 echten acc_trans Einträgen besteht. Zum
Debuggen trotzdem nützlich.
G. Richardson [Tue, 9 Aug 2016 10:12:36 +0000 (12:12 +0200)]
Neue Maske: Auftragsartikelsuche
um schnell Positionen aus (alten) Verkaufsaufträgen zu finden:
Verkauf -> Berichte -> Auftragsartikelsuche
Dies ist kein druckbarer Bericht, sondern soll helfen, schnell einen
bestimmten Auftrag oder eine Information zu einer bestimmten verkauften
Ware zu finden.
Wurde die Ware per Lieferschein verschickt und ausgelagert wird auch der
Lieferschein und die verschickte Menge angezeigt. Dies klappt aber nur
für Aufträge, wo die Einzelpositionen per RecordLinks verknüpft sind.
G. Richardson [Thu, 29 Sep 2016 05:19:51 +0000 (07:19 +0200)]
Preisgruppen - Umstellung auf Controller, sortkey, obsolete
Neuer CRUD-Controller nur für Preisgruppen.
Die Reihenfolge der Preisgruppen kann nun eingestellt werden, und man
kann Preisgruppen auf ungültig setzen, sofern sie nicht mehr aktiv bei
Kunden in Verwendung sind, so daß sie bei Kunden oder neuen Belegen
nicht mehr ausgewählt werden können.
Verteilen der Rechte für Finanzbuchhaltung auf Dialogbuchung,Kreditoren-/Debitorenrechnungen(2)
Rechte überarbeitet:
- Beim Schnellsuchen zur Auswahl alle Rechte erlauben zum Suchen
- Der Reiter "Buchungen" kann nur von jemandem geöffnet werden, der Rechnungen editieren darf,
deshalb hier von "general_ledger" auf "invoice_edit" umgebaut
- Wer Dialogbuchungen machen macht, darf auch das Buchungsjournal ansehen, am die Buchung zu finden.
- Bei Kreditorenbuchungen fehlte das neue Recht an einigen Stellen.
- Umbenennen des Rechts "Finanzbuchhaltungen" in "Offene Forderungen/Verbindunglichkeiten & Buchungsjournal"
Moritz Bunkus [Thu, 13 Oct 2016 14:45:42 +0000 (16:45 +0200)]
kivitendo-CSS: Inputs konsistent durch Browser gestylt
Damit wird verhindert, dass teilweise das Plattform-UI-Toolkit für das
Styling verantwortlich ist. Das sieht nicht nur inkonsistent aus,
sondern stört richtiggehend, wenn oft zwischen nativ gestylt und vom
Browser via CSS gestylt gewechselt wird (z.B. wenn ein Element Focus
erlangt/verliert).
MT940-Import: Transaktionstype mit in BankTransaction
Eine Erweiterung um z.B. Sammellastschriften zu erkennen
Dazu wurde ein eigenes Importprofil für aqbanking-cli erstellt
und die Tabelle bank_transactions erweitert.
- Das Profil muss nicht mehr pro Benutzer angelegt werden
- CSV-Import wird in das Systemenu zum Import verschoben,
Im Menü "Zahlungsverkehr" wird gleich zum MT940 gesprungen
- Updatescript muss auch funktionieren wenn bereits ein MT940 Profil angelegt ist
- Für Login "default" ist is_default irrelevant
Sven Schöling [Tue, 27 Sep 2016 10:55:07 +0000 (12:55 +0200)]
Auth::ColumnInformation: fetch nur in reset, nicht in init
die Version aus e7a7492e macht Probleme im taskserver.
ausserdem das reset nur dann machen, wenn es auch sinnvoll ist. Bisher
wurde das als silver Bullet aufgerufen, wannimmer sich etwas an der DB
geändert haben könnte, also auch beim anlegen der Auth DB in Tests und
beim initialen Anlegen. Der erste Fall ist jetzt in eine init Funktion
ausgelagert. Im zweiten Fall waren die zu resettenden Werte eh noch
nicht gesetzt, und das reset kann rausfallen.
G. Richardson [Tue, 27 Sep 2016 09:52:02 +0000 (11:52 +0200)]
MassInvoiceCreatePrint - Filter korrekt übergeben
Beim Massendruck wurden die ausgewählten Filter nicht korrekt
berücksichtigt, wenn man z.B. nach allen Lieferscheinen ab einem
bestimmten Datum gefiltert hat, und davon die ersten 10 drucken wollte,
wurde die ersten 10 aus der ungefilterten Liste gedruckt.