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.