Jan Büren [Wed, 30 Sep 2015 17:03:59 +0000 (19:03 +0200)]
Webdav::File.pm->store um Parameter file erweitert
Falls man ein pdf nicht im Program als Objekt hat, sondern
eine wirkliche Datei im Dateisystem vorliegen hat,
muss diese nicht erst als Objekt geladen werden, sondern kann simpel mit:
$webdav_file->store(file => $path_to_file);
beim Anlegen eines neuen Webdav-Files (übergeben) kopiert werden.
FlattenToForm: sellprice und qty beim Formatieren nicht runden …
Hintergrund: In den Belegmasken (z.B.) Auftrag kann man Menge oder Verkaufspreis
mit mehr als zwei Nachkommastellen angeben und es wird auch damit gerechnet.
Funktionen, die FlattenToForm verwenden (autom. Druck wiederkehrender
Rechnungen / Massendruck) zeigten dann aber in bestimmten Fällen andere Summen
als die Maske bzw. als in der Datenbank steht.
Jan Büren [Mon, 28 Sep 2015 13:06:34 +0000 (15:06 +0200)]
Changelog, Kosmetik und Warenfilter für Lieferwertbericht
Doku und changelog ergänzt. Sinnvoller formatiert und model
um part erweitert, damit der Filter (Erzeugnis, Dienstleistung und
Ware) wie beim Lieferplan funktioniert.
Jan Büren [Mon, 28 Sep 2015 12:53:33 +0000 (14:53 +0200)]
Lieferwertbericht auf eigenen Controller umgestellt und erweitert
Erweiterungen aus einem Kundenprojekt übernommen. Ferner performanter
gemacht, in Anlehnung an calc_qts aus DeliveryPlan. Zusätzlich
das model einfacher umgesetzt und die Auswertung basiert jetzt auf
der Verknüpfung von orderitems(id) -> delivery_order_items(id) und
nicht mehr über die Näherung über die verknüpften Belege.
Moritz Bunkus [Thu, 24 Sep 2015 12:42:12 +0000 (14:42 +0200)]
SL::Mailer: Inhalt von Attachments direkt übergeben können
Bisher wurde ein Attachmentinhalt immer aus einer Datei gelesen. Liegt der
Inhalt schon in einer Variable vor, so kann diese nun im Attachment-Hash
als Key »content« übergeben werden. Der Dateiname (Key »filename«) wird
dann ignoriert.
Moritz Bunkus [Thu, 24 Sep 2015 08:19:23 +0000 (10:19 +0200)]
Rose-Model-Creation: use parent anstelle von use base nutzen
Momentan benutzt die kivitendo-Codebasis beides zu ähnlich großen
Teilen. Allerdings sagt allein schon die Dokumentation zu base(3perl),
dass eigentlich immer das leichtgewichtigere parent(3perl) zu bevorzugen
ist.
CVar-Helper: Beim Parsen darauf achten, ob unparsed_value ein Objekt enthält.
Um Objekte mit der value-Methode einer CVar vom Typ Customer, Vendor oder Part
zuweisen zu können, muss beim Parsen die Id des Objekts ermittelt werden.
Dieses wird z.B. im Helper (SL::DB::Helper::CustomVariables.pm) verwendet, um
bei neuen cvars eines sub-modules den Wert der Basis-CVar zu setzen, denn die
value-Methode der CVar (hier der Basis-CVar) liefert ein Objekt zurück.
Ohne diesen Patch gab es einen Fehler in der Art:
"No such SL::DB::Part where id = 111286144 at SL/DB/Helper/CustomVariables.pm
line 198"
Jan Büren [Tue, 8 Sep 2015 12:05:44 +0000 (14:05 +0200)]
Doku: POD für Invoice.pm erweitert
- Invoice anstatt Delivery Order bei new_from
- Beispiel-Code für Benutzung von new_from mit parameter attributes
- TODO angelegt, Controller sollten einige Datenfelder mit Hilfe
von Backend-Funktionen prüfen können - in diesem Fall transdate
Jan Büren [Fri, 4 Sep 2015 11:14:10 +0000 (13:14 +0200)]
Massenkonvertierung von Lieferscheinen nach Rechnung ink. Druck
Die Konvertierung als auch das Generieren des PDFs erfolgt als
Background-Job. Entsprechend muss der task_server für den.
Mandanten eingestellt sein.
Details und bekannte offene Punkte im POD der beiden Perl-Module.
Folgecommit: changelog und all
Jan Büren [Fri, 4 Sep 2015 09:31:22 +0000 (11:31 +0200)]
DeliveryOrder um convert_invoice erweitert
Diesselbe Idee wie bei SalesOrder->convert_invoice. Der ursprüngliche
Lieferschein wird geschlossen und das neue Objekt mittels record_links
verknüpft.
Entsprechend Testfall mitgeliefert.
Moritz Bunkus [Wed, 26 Aug 2015 13:57:01 +0000 (15:57 +0200)]
SL::DB::CVar::value: mit übergebenen DateTime-Objekten klarkommen
Ruft mal value als getter auf, so wird ein DateTime-Objekt
zurückgegeben. Als setter aufgerufen, erwartete die Funktion bisher
aber, dass ein String übergeben wird. Somit war es nicht möglich, eine
Datums-CVar mit intuitiv zu clonen:
Moritz Bunkus [Mon, 24 Aug 2015 15:45:35 +0000 (17:45 +0200)]
Pflichtenheftartikel mit Pflichtenheft automatisch löschen
Wenn ein Pflichtenheft gelöscht wird, so müssen seine Bestandteile ( =
Einträge in anderen 1:n-Tabellen) mit gelöscht werden. Hier betraf es
die »Zusätzlichen Artikel«, Tabelle requirement_spec_parts. Die anderen
abhängigen Tabellen nutzen bereits FOREIGN KEY … ON DELETE CASCADE, also
das auch für requirement_spec_parts nutzen.
Ansonsten klappt das Löschen schlicht nicht. Entsprechende
Fehlermeldungen:
2015-08-24 17:27:48.632 9734 [26783] : DBD::Pg::st execute failed:
ERROR: update or delete on table "requirement_specs" violates foreign
key constraint "requirement_spec_parts_requirement_spec_id_fkey" on
table "requirement_spec_parts"
DETAIL: Key (id)=(4) is still referenced from table
"requirement_spec_parts". at
/usr/share/perl5/vendor_perl/Rose/DB/Object.pm line 1576.
Sven Schöling [Mon, 17 Aug 2015 15:10:36 +0000 (17:10 +0200)]
Layout: Javascript Includes gefixt
1. jquery-ui muss im Top vorhanden sein für glquicksearch.js
2. Javacript und CssMenu brauchen das frame_header css nicht einbinden
3. js includes normalisiert ohne "js/" Präfix
Sven Schöling [Mon, 17 Aug 2015 14:05:06 +0000 (16:05 +0200)]
Nach Request alle Datenbankhandle rollbacken
An diversen Stellen wird in Legacycode eine Transaktion manuell
erstellt. Wenn in dieser Transaktion eine Exception geworfen wird,
beendet das den Requst ohne die Handle aufzuräumen in der Annahme, dass
die disconnected werden.
Deshalb nach jedem Request einmal alle Handle rollbacken, ohne sie zu
disconnecten.
G. Richardson [Mon, 17 Aug 2015 09:33:13 +0000 (11:33 +0200)]
Kontoauszug verbuchen - prüfen, ob Bankbuchung und Rechnung schon verlinkt
Eine Bankbuchung darf zwar mehrere Rechnungen begleichen, aber jede
Rechnung nur einmal. Daher wird vor dem verbuchen geprüft, ob es für die
Bankbuchung schon eine Verknüpfung zu der Rechnung gibt.