Jan Büren [Thu, 15 Mar 2018 20:40:10 +0000 (21:40 +0100)]
DATEV/CSV check_encoding, sollte wirklich das encoding checken
Entsprechend vier Testfälle für die Routine gesetzt und
Hintergründe in #348 dokumentiert.
Bernd Bleßmann [Mon, 12 Mar 2018 16:03:01 +0000 (17:03 +0100)]
Auftrags-Controller: Anzeige mit Infos über den Kunden-/Lieferantentyp
Bernd Bleßmann [Mon, 12 Mar 2018 14:37:47 +0000 (15:37 +0100)]
Auftrags-Controller: Belegnummer in Titlezeile anzeigen
Bernd Bleßmann [Mon, 12 Mar 2018 14:36:11 +0000 (15:36 +0100)]
SL::DB::Order: keinen Fehler werfen, wenn Typ noch nicht zu ermitteln.
Das ist der Fall, wenn noch kein Lieferant oder Kunde gesetzt ist.
Bernd Bleßmann [Fri, 2 Mar 2018 11:03:01 +0000 (12:03 +0100)]
Inventur: Journal nach Artikel filtern können: Doppeltes "tr" korrigiert
Bernd Bleßmann [Fri, 2 Mar 2018 10:55:11 +0000 (11:55 +0100)]
Inventur: Journal nach Artikel filtern können
Jan Büren [Thu, 1 Mar 2018 11:09:00 +0000 (12:09 +0100)]
SelfTests/Transactions.pm erweitert
Da beim Löschen von Zahlungen mittlerweile auch kaskadieren die
reconciliation_links gelöscht werden, können verwaiste abgeglichen
Bankbewegungen entstehen.
Entsprechend Testfall ergänzt.
Sven Schöling [Fri, 23 Feb 2018 14:32:36 +0000 (15:32 +0100)]
Validator: time - striktere Prüfung und tests
Bernd Bleßmann [Fri, 23 Feb 2018 14:29:43 +0000 (15:29 +0100)]
Typo in Übersetzungen
Bernd Bleßmann [Fri, 23 Feb 2018 14:28:47 +0000 (15:28 +0100)]
Auftrags-Controller: Workflow Angebot->Auftrag nur, wenn gespeichert
G. Richardson [Fri, 23 Feb 2018 13:07:40 +0000 (14:07 +0100)]
Typos in POD
Sven Schöling [Fri, 23 Feb 2018 12:38:51 +0000 (13:38 +0100)]
Validator: time
Bernd Bleßmann [Thu, 22 Feb 2018 15:15:59 +0000 (16:15 +0100)]
Auftrags-Controller: Mini-Refactoring: js-save-Funktionen zusammengefasst
Bernd Bleßmann [Thu, 22 Feb 2018 15:11:25 +0000 (16:11 +0100)]
Auftrags-Controller: Save as new
Sven Schöling [Thu, 15 Feb 2018 10:26:15 +0000 (11:26 +0100)]
Controller::Base::url_for: nur noch fragment erlauben
Mit mosu darüber gesprochen, und folgende Argumente kamen:
* Es ist unschön dass quasi magische Elemente wie controller, action und
jetzt hash und fragment in einer flachen Argumentliste übergeben
werden. Das ist aber historisch gewachsen und wird jetzt nicht
geändert. Ziel sollte es aber sein, dass potentielle Kollisionen
selten passieren.
* fragemnt ist die offizielle Bezeichnung für den #... Anteil einer URI.
Blöderweise nennt Javascript das document.location.hash, und so ist
das im Gedächtnis geblieben. Da aber hash eh schon in Perl und
Programmieren extrem überladen ist mit Bedeutungen ist fragment hier
der etwas weniger miese Begriff.
Sven Schöling [Thu, 15 Feb 2018 10:00:34 +0000 (11:00 +0100)]
TopQuickSearch::Contact: fragment statt hash für for_url
Sven Schöling [Wed, 14 Feb 2018 15:13:03 +0000 (16:13 +0100)]
InstallationCheck: String::Shellcode nicht zur compilezeit laden
Sven Schöling [Wed, 14 Feb 2018 13:02:48 +0000 (14:02 +0100)]
TopQuickSearch::Contacts: direkt auf den Ansprechpartner tab springen
Sven Schöling [Wed, 14 Feb 2018 13:02:16 +0000 (14:02 +0100)]
Controller::Base: url_for unterstützt jetzt URI fragments.
Sven Schöling [Tue, 19 Jul 2016 12:03:50 +0000 (14:03 +0200)]
js: tab-widget cookie ignorieren wenn url hash vorhanden
Unter bestimmten umständen funktioniert das direkte Springen auf einen
Tab sonst nicht.
Sven Schöling [Tue, 13 Feb 2018 13:11:17 +0000 (14:11 +0100)]
Part/Customer/Vendor: Bei click auf ein autocomplete item sofort committen
Betrifft nur die beiden schon auf commit umgestellten Picker. Historisch
benutzen die Picker ein zweistufiges Modell: Nach Texteingabe wird bei
der ersten aktion (sei es tab oder enter) erstmal vervollständigt, aber
nicht committed. Erst wenn dadurch die Maske in einen definierten
zustand gerät wird beim zweiten tab committed.
Es gibt aber diverse Szenarien wo die Absicht des Benutzers eindeutig
ist. Dabei kann dann der zweite Schritt übersprungen werden. Bisher war
das vor allem Texteingabe die eindeutig gematcht hat und dann mit Enter
abgeschlossen wurde. Der Klick auf ein Element im Drop-Down ist aber
definitiv auch ein solcher Fall.
Sven Schöling [Tue, 13 Feb 2018 13:03:45 +0000 (14:03 +0100)]
HTML Menü: Javascript ausgelagert in eigene Datei
Sven Schöling [Tue, 13 Feb 2018 13:01:20 +0000 (14:01 +0100)]
Menü: CSS-Klasse an offene Menüeinträge setzen
Damit ist es möglich, in Stylesheets zwischen offenen und
geschlossenen Menüs zu unterscheiden.
Sven Schöling [Tue, 13 Feb 2018 12:45:00 +0000 (13:45 +0100)]
ustva: verwaiste Funktion entfernt
Sven Schöling [Tue, 13 Feb 2018 12:44:39 +0000 (13:44 +0100)]
Form: verwaiste Funktionen entfernt
Bernd Bleßmann [Wed, 7 Feb 2018 12:30:25 +0000 (13:30 +0100)]
Auftrags-Controller: Workflow von Angebot nach Auftrag (Ein- und Verkauf).
Bernd Bleßmann [Wed, 7 Feb 2018 12:29:18 +0000 (13:29 +0100)]
SL::DB::Order->new_from implementiert.
Im Moment nur von Angeboten zu Aufträgen (Ein- und Verkauf).
Bernd Bleßmann [Fri, 2 Feb 2018 13:32:15 +0000 (14:32 +0100)]
Auftrags-Controller: Speichern nicht accesskey "enter"
Bernd Bleßmann [Wed, 31 Jan 2018 14:38:51 +0000 (15:38 +0100)]
Auftrags-Controller: Angebote/Anfragen: Übersetzungen
Bernd Bleßmann [Wed, 31 Jan 2018 14:09:49 +0000 (15:09 +0100)]
Auftrags-Controller: auch für Angebote/Anfragen
Moritz Bunkus [Wed, 7 Feb 2018 09:48:29 +0000 (10:48 +0100)]
Zahlungsbedingungen bei Kundenwechsel aus Stammdaten holen
`IS::get_customer` kann die Entscheidung, ob die Zahlungsbedingungen
überschrieben werden sollen oder nicht, gar nicht treffen, weil es
nicht genug Informationen hat. Nur der Aufrufer hat die, und daher
muss `IS::get_customer` den Wert immer aus den Kundestammndaten
übernehmen.
Bernd Bleßmann [Wed, 7 Feb 2018 09:56:14 +0000 (10:56 +0100)]
Auftrags-Controller: Telmplate: '$' vor T8-Filter
Jan Büren [Wed, 7 Feb 2018 09:19:08 +0000 (10:19 +0100)]
Hinweis in UPGRADE: Fallback-Module entfernt.
Jan Büren [Wed, 7 Feb 2018 07:58:26 +0000 (08:58 +0100)]
Behebt: #343 Kontoauszug verbuchen Skontoautomatik bei Verkaufsrechnungen defekt
Werner Hahn [Tue, 6 Feb 2018 12:00:38 +0000 (13:00 +0100)]
p.link_tag anstatt p.link in bank_transactions Templates
Sven Schöling [Tue, 6 Feb 2018 10:45:17 +0000 (11:45 +0100)]
DATEV: Testanpassungen
Sven Schöling [Tue, 6 Feb 2018 10:10:34 +0000 (11:10 +0100)]
modules/fallback: Module entfernt.
In modules/fallback sollten nur module stehen die:
a) für installationcheck gebraucht werden oder
b) nicht per apt installierbar sind
Das gilt für die folgenden Module schon lange nicht mehr:
* DateTime::Set
* Email::Address
* List::MoreUtils
* List::UtilsBy
* PBKDF2::Tiny
* Regexp::IPv6
* Set::Infinite
* String::ShellQuote
* parent
Dabei waren DateTime::Set und Set::Infinite als Anhängigkeiten von
DateTime::Event::Cron reingekommen, das gibt es aber zusammen mit
Set::Crontab immernoch nicht in apt, also ist das weiter im fallback.
List::MoreUtils und List::UtilsBy sind meine ich für Debian 5
reingekommen, die Pakete sind aber seit Ewigkeiten in apt verfügbar.
parent ist seit 5.10.1 ein coremodul.
Die anderen wurden anscheinend einfach so reingeworfen, und hätten da
nie drin sein sollen.
Sven Schöling [Mon, 5 Feb 2018 13:28:05 +0000 (14:28 +0100)]
scripts/dbupgrade2_tool.pl: Datenbankverbindungen mit SL::DB->client
Sven Schöling [Mon, 5 Feb 2018 13:24:25 +0000 (14:24 +0100)]
AM::_get_warehouse: schnelleres Query
Das alte war extrem langsam für Installationen mit vielen Lagerplätzen
G. Richardson [Fri, 2 Feb 2018 13:39:14 +0000 (14:39 +0100)]
Typo in POD
Moritz Bunkus [Wed, 31 Jan 2018 13:55:36 +0000 (14:55 +0100)]
Aufträge speichern: Warnung bzgl. existierender wiederkehrender Rechnungen gefixt
Behebt #341.
Bernd Bleßmann [Wed, 31 Jan 2018 13:10:25 +0000 (14:10 +0100)]
Datepicker bei vorauss. Auftragsdatum: kein 'BL' mehr
Das war evtl. da, um den Datepicker bottom-left anzuzeigen, aber so geht das
nicht.
Sven Schöling [Tue, 30 Jan 2018 09:59:40 +0000 (10:59 +0100)]
PriceSource: unknown Flag um "fast" korrekt durchzureichen
Sven Schöling [Tue, 30 Jan 2018 09:59:07 +0000 (10:59 +0100)]
PriceSource: fast Flag für zukünftige Performanceoptimierungen
Sven Schöling [Mon, 29 Jan 2018 16:54:11 +0000 (17:54 +0100)]
CsvImport: Makemodels bei bestehenden Waren stabil sortieren
Sven Schöling [Mon, 29 Jan 2018 16:53:42 +0000 (17:53 +0100)]
Part: makemodels_sorted accessor
Sven Schöling [Mon, 29 Jan 2018 16:52:57 +0000 (17:52 +0100)]
Makemodel Manager mit _sort_spec
Moritz Bunkus [Mon, 29 Jan 2018 16:02:32 +0000 (17:02 +0100)]
jsTree: keine globalen Key-Handler installieren
Sollen wohl für Keyboard-Navigation im Baum sorgen — obwohl es dafür
extra ein jsTree-Plugin gibt. Leider kollidiert der Handler für Space
mit der Art, wie das inline_resize-Plugin des ckEditors seine Handler
registriert. Effekt war, dass die Leertaste dann nicht mehr beim
ckEditor ankam.
Behebt #306.
Bernd Bleßmann [Mon, 29 Jan 2018 12:23:57 +0000 (13:23 +0100)]
Auftrags-Controller: Konfiguration wiederkehrender Rechnungen.
Bernd Bleßmann [Mon, 29 Jan 2018 12:22:46 +0000 (13:22 +0100)]
Wiederkehrende Rechnungen: Template als Popup-Dialog verwenden können.
Dazu wird die Variable popup_dialog ausgewertet und es können
js-Rückkehrfunktionen für Abbruch und Übernehmen übergeben werden.
Bernd Bleßmann [Mon, 29 Jan 2018 15:17:49 +0000 (16:17 +0100)]
Wiederkehrende Rechnungen: Template: eindeutige DOM-Ids
printer_id / copies werden so auch in den print_options benannt. Wenn dieses
Template als Vorlage für ein Popup-Dialog verwendet wird, kann es sonst zu
gleichen DOM-Ids kommen.
Bernd Bleßmann [Mon, 29 Jan 2018 15:11:15 +0000 (16:11 +0100)]
Wiederkehrende Rechnungen: Templatevariablen in Hash oder Objekt übergeben
Damit lässt sich das Template auch mit einem PeriodicInvoiceConfig-Objekt
aufrufen und kann so von anderen Controllern verwendet werden.
Bernd Bleßmann [Wed, 24 Jan 2018 10:59:38 +0000 (11:59 +0100)]
Auftrags-Controller: E-Mail-Dialog aus common verwenden.
Bernd Bleßmann [Mon, 22 Jan 2018 15:22:19 +0000 (16:22 +0100)]
E-Mail-Dialog: Template: js-Funktion zum Verschicken der Mail mitgeben können
Bernd Bleßmann [Wed, 24 Jan 2018 10:58:43 +0000 (11:58 +0100)]
Auftrags-Controller: Beim Drucken Sprache richtig berücksichtigen.
Bernd Bleßmann [Fri, 12 Jan 2018 16:16:47 +0000 (17:16 +0100)]
Auftrags-Controller: Workflow Lieferschein: gelieferte Positionen filtern
Dieser commit enthält einen Hack, der nochmal diskutiert und geändert werden
sollte.
Bernd Bleßmann [Mon, 11 Dec 2017 15:05:11 +0000 (16:05 +0100)]
Auftrags-Controller: Fehler bei Anzeige von EK und Marge in 2. Zeile behoben
Wenn das Order-Objekt noch nicht gespeichert ist, kann darauf nicht über
$item->order zugegriffen werden. Darum muss an die 2. Zeile eine weitere
Variable durchgereicht werden, um zu bestimmen, ob wir im Verkauf sind und
EK und Margen angezeigt werden sollen.
Bernd Bleßmann [Fri, 8 Dec 2017 15:04:07 +0000 (16:04 +0100)]
Auftrags-Controller: Workflow -> Rechnung (Speichern und Rechnung erfassen)
Bernd Bleßmann [Fri, 8 Dec 2017 14:41:24 +0000 (15:41 +0100)]
Auftrags-Controller: Verkäufer bei Kundenwechsel ändern
Bernd Bleßmann [Fri, 8 Dec 2017 13:50:34 +0000 (14:50 +0100)]
Auftrags-Controller: Sortimente mit Mehrfachauswahl hinzufügen können.
Behebt #220 (redmine).
Sven Schöling [Thu, 25 Jan 2018 10:56:56 +0000 (11:56 +0100)]
Presenter::Tag::link - umbenannt in link_tag
um Namenskonflikte mit dem link builtin zu vermeiden
Sven Schöling [Wed, 24 Jan 2018 15:16:31 +0000 (16:16 +0100)]
Controller::LoginScreen: AuthHandler::handle ohne Argumente aufrufen
Abgesehen davon, dass die Parameter nicht mehr benutzt werden, behebt
das einen ganz ekeligen Bug: "panic: attempt to copy freed scalar"
Das Problem ist, dass der AuthHandler selber das Einloggen übernimmt und
dafür %::myconfig neu beschreibt. Wenn währenddessen aber ein Alias von
einem %::myconfig Value auf dem Stack liegt, wird der sofort freigegeben
weil der Stack nicht refcounted ist.
Normalerweise fällt das nicht weiter auf, und die Daten werden im
final pass aufgeräumt. Aber mit backtrace_on_error wird bei einem Fehler
sofort ein Carp::confess aufgerufen, und das nimmt für den Stacktrace
den Stack auseinander und stolpert dabei über den bereits freigegeben Wert.
Sven Schöling [Thu, 18 Jan 2018 14:03:37 +0000 (15:03 +0100)]
PriceSource: Objekte cachen.
Im Moment werden die einzelnen Worker im normalen Workflow mehrfach
angelegt, einmal für die verfügbaren, und dann noch einmal für den
besten und zum wiederherstellen der existierenden.
Für größere Belege wird das merklich, und bei komplexen
Implementationen, die auf die Datenbank zugreifen müssen, sogar mehrere
Sekunden.
Diese Patch ist der erste in einer Reihe, die es erlauben optional
Preisquellen
1. nicht unnötig zu erstellen
2. in sich cachen zu lassen
3. vorberechnen zu lassen und damit horizontal zu cachen
3. die Berechnungen in einen Ajax Call zu verzögern
Moritz Bunkus [Wed, 24 Jan 2018 12:40:23 +0000 (13:40 +0100)]
Presenter: Kosmetik: Anordnung
Moritz Bunkus [Wed, 24 Jan 2018 12:39:23 +0000 (13:39 +0100)]
Presenter: Klasse für SL::DB::PurchaseInvoice ist SL::Presenter::Invoice
Sichtbarer Effekt: in der Liste der verknüpften Belege wurde die
Rechnungsnummer und damit der Link zur Einkaufsrechnung nicht
angezeigt.
Moritz Bunkus [Tue, 23 Jan 2018 14:55:06 +0000 (15:55 +0100)]
LaTeX-Druck: Newlines nicht entfernen
Moritz Bunkus [Fri, 19 Jan 2018 10:21:44 +0000 (11:21 +0100)]
LaTeX-Druck: Unicode-Control-Zeichen und nicht druckbare Zeichen entfernen
Filtert z.B. das »bidirectional left-to-right«-Kontroll-Zeichen raus,
an dem sich LaTeX verschluckt.
Sven Schöling [Thu, 18 Jan 2018 13:01:26 +0000 (14:01 +0100)]
DATEV/CSV: Buchungstext exportieren
Durch einen Typo wurde da statt dem Slot "buchungstext" der Slot
"buhcungsbes" exportiert, der natürlich leer war.
Sven Schöling [Mon, 15 Jan 2018 16:51:01 +0000 (17:51 +0100)]
PriceSource: Doku Update
Sven Schöling [Thu, 9 Jun 2016 11:38:29 +0000 (13:38 +0200)]
Preisquelle Stammdaten: lastcost hat jetzt niedrige Priorität
Damit überstimmt der nicht mehr listprice sofern der vorhanden ist
Jan Büren [Tue, 16 Jan 2018 08:23:54 +0000 (09:23 +0100)]
DATEV: Festschreibung vergessener Commit zu
2ac999504a
Jan Büren [Mon, 15 Jan 2018 10:23:17 +0000 (11:23 +0100)]
fixt #337
Vergessene Presenter-Umstellung für Controller/Part.pm
Bernd Bleßmann [Fri, 12 Jan 2018 13:32:33 +0000 (14:32 +0100)]
Type in Übersetzung
Martin Helmling martin.helmling@octosoft.eu [Wed, 10 Jan 2018 15:55:14 +0000 (16:55 +0100)]
SEPA-Sammelanweisung (is_batch_transaction): BUGFIX Loop richtig beenden
Wurde eine Sammelanweisung gefunden, ist die Suche für die betroffenen Banktransaktion beendet.
Fälschlicherweise wurde nur die innere Schleife beendet, es muss aber die äußere Schleife beendet werden.
Sven Schöling [Tue, 9 Jan 2018 10:50:28 +0000 (11:50 +0100)]
tests: update zu "PartPicker kann auch nach EAN suchen"
Jan Büren [Tue, 9 Jan 2018 08:44:06 +0000 (09:44 +0100)]
DATEV: Buchungen festschreiben als Benutzer-Option
Hintergrund: Aktuell setzt kivitendo keinen Wert, was bei der
DATEV zu einer Warnung und anschließender Festschreibung im Stapel führt.
Die Option ist jetzt an der Oberfläche konfigurierbar und erhält gültige Werte
Jan Büren [Tue, 9 Jan 2018 08:31:06 +0000 (09:31 +0100)]
DATEV: Export-Periode Dezember ist häufig im Vorjahreszeitraum
Sven Schöling [Mon, 8 Jan 2018 17:23:51 +0000 (18:23 +0100)]
Presenter/RequirementSpec: typo
Sven Schöling [Mon, 8 Jan 2018 15:26:15 +0000 (16:26 +0100)]
Part: Javascripte nicht ins HTML schreiben sondern nach reinit_widgets
Sven Schöling [Mon, 8 Jan 2018 15:25:32 +0000 (16:25 +0100)]
Part: makemodels und customerprices automatisch stripen
Sven Schöling [Mon, 8 Jan 2018 15:24:18 +0000 (16:24 +0100)]
Part: partpicker enterverhalten direkt im picker setzen
Nachträglich drandongeln gibt Probleme
Sven Schöling [Mon, 8 Jan 2018 15:22:13 +0000 (16:22 +0100)]
Part: Speichern nicht accesskey enter
Sven Schöling [Fri, 5 Jan 2018 14:10:30 +0000 (15:10 +0100)]
is_wrong_ptype gibt es hier nicht
Sven Schöling [Fri, 5 Jan 2018 14:09:55 +0000 (15:09 +0100)]
PartCustomerPrices: Preisbehandlung nicht hart kodieren
Martin Helmling martin.helmling@octosoft.eu [Mon, 9 Jan 2017 10:55:21 +0000 (11:55 +0100)]
Kunden-Spezifische Artikeleigenschaften
neue Tabelle "PartCustomerPrices" mit SL/DB Dateien
in Artikelstammdaten eingebaut,
in Preisquellen analog zu den Lieferantenpreisen nun Kundenpreise eingebaut
(Unklar ist was bei Kundenpreisen der beste Preis ist !)
Analog zu Lieferanten "make" und "model" aus kundenspezifischen Daten
"customer" und "custnumber" zum Drucken pro Artikel anbieten
Bernd Bleßmann [Mon, 8 Jan 2018 16:02:01 +0000 (17:02 +0100)]
Inventur: Upgrade-Skript: Abhängigkeit von Release
Bernd Bleßmann [Fri, 5 Jan 2018 13:23:04 +0000 (14:23 +0100)]
Inventur: changelog
Bernd Bleßmann [Wed, 20 Dec 2017 13:25:18 +0000 (14:25 +0100)]
Inventur: Übersetzungen
Bernd Bleßmann [Mon, 27 Nov 2017 17:13:47 +0000 (18:13 +0100)]
Inventur: Eingabemaske und Journal im Inventory-Controller
Bernd Bleßmann [Wed, 20 Dec 2017 14:16:24 +0000 (15:16 +0100)]
Inventur: Inventurzählungen mit Lagerbewegungen im Backend SL::WH speichern können
Bernd Bleßmann [Wed, 29 Nov 2017 12:16:56 +0000 (13:16 +0100)]
Inventur: Mandantenkonfig: Voreinstellungen für Lager, Lagerplatz und Stichtag
Bernd Bleßmann [Wed, 29 Nov 2017 12:15:50 +0000 (13:15 +0100)]
Inventur: Voreinstellungen für Lager, Lagerplatz und Stichtag (DB und Rose)
Bernd Bleßmann [Mon, 4 Dec 2017 09:42:37 +0000 (10:42 +0100)]
Inventur: neue Tabelle für gezählte Artikel. DB-Upgrade und Rose
Bernd Bleßmann [Mon, 27 Nov 2017 17:08:52 +0000 (18:08 +0100)]
Inventur: Manager-Klasse für Inventory (f. sorting/paginating)
Bernd Bleßmann [Mon, 27 Nov 2017 12:14:43 +0000 (13:14 +0100)]
Inventur: neuer Transfer-Typ für Inventur ('stocktaking') (DB-Upgrade)
Bernd Bleßmann [Wed, 20 Dec 2017 14:11:53 +0000 (15:11 +0100)]
Lager: Mini-Stock: Einheiten und EAN (wenn vorhanden) mit ausgeben
Bernd Bleßmann [Wed, 8 Nov 2017 15:00:40 +0000 (16:00 +0100)]
PartPicker kann auch nach EAN suchen
Werner Hahn [Wed, 3 Jan 2018 16:19:09 +0000 (17:19 +0100)]
Formatierung und unnötiges Arrayelement entfernt
Werner Hahn [Wed, 3 Jan 2018 11:56:32 +0000 (12:56 +0100)]
Artikelliste bei Schnellsuche, wenn mehrere Treffer vorgeschlagen sind
und keiner ausgewählt ist
fix #282
Sven Schöling [Tue, 2 Jan 2018 12:22:03 +0000 (13:22 +0100)]
Presenter::CustomerVendor: interface normalisiert
es gibt jetzt zusätzlich:
- customer_picker
- vendor_picker
die auf den jeweiligen typ gecrurried sind