G. Richardson [Thu, 28 Jul 2016 16:14:15 +0000 (18:14 +0200)]
Ware/Erzeugnis/Dienstleistung per parts.part_type unterscheiden
Neuen ENUM-Typ eingeführt, der auf die Werte "part", "service" und
"assembly" beschränkt ist.
Da man enums nicht innerhalb von Transaktionen hinzufügen kann, was der
Default für den kivitendo Upgrade Mechanismus ist, wird hier auch schon
das Sortiment vorbereitet.
Jan Büren [Fri, 18 Nov 2016 14:36:20 +0000 (15:36 +0100)]
optionales Feature für SEPA Überweisungen
Nach der Rechnungsnummer im Verwendungszweck zusätzlich Kunden- oder Lieferantennummer angeben.
Optional konfigurierbar in der Mandatenkonfiguration und übersetzbar für alle verfügbaren Sprachen.
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.