Sven Schöling [Tue, 5 Sep 2017 08:30:21 +0000 (10:30 +0200)]
CKEditor: Fixes für texteditor in popup_dialog
- data field kanonisch auf data('ckeditorInstance') geändert
- jQuery style $.ckeditor hooks auf editor.on('loaded') geändert, der
Adapter unterstützt kein inline
- mehrfachinitialisierung unterbunden
- selectall und focus Funktionalität in zwei Funktionen getrennt
- focus auf die API Methode .focus() umgestellt
FileManagement: Konsistenzprüfung zwischen Backend und Datenbank, hier Backend Filesystem
Das script 'scripts/sync_files_from_backend.pl' prüft, ob die Dateien im Backend noch vorhanden sind.
Dabei wird nach der aktuellsten Version gesucht, ist diese vorhanden ist ok,
ist diese nicht vorhanden werden die Versionen davor gesucht und ggf. die Version in der DB heruntergesetzt.
Ist keine Dateimehr vorhanden wird der Datenbankrecord gelöscht.
Sven Schöling [Thu, 31 Aug 2017 14:39:43 +0000 (16:39 +0200)]
CKEditor: Styleanpassungen für kivi Integration
- <textarea> Rahmen, hover, active Effekte auch für den Inline Editor
- padding in der Toolbar reduziert, so dass das bei normalem Spacing
so groß ist wie das Element dadrüber. Ähnlich dem inline button
Styling.
Sven Schöling [Thu, 31 Aug 2017 14:30:57 +0000 (16:30 +0200)]
CKEditor: config Hack bei inline initialisierung
Aus irgendeinem Grund ignoriert der Inline Modus sämtliche
Dimensionsangaben in der Konfiguration, und zwar dokumentiert. Das sorgt
aber im textarea Modus dafür, dass das erzeugte Editor <div> völlig
falsch dimensioniert ist, und nachträglich angepasst werden muss. Die
CKEDITOR.editor.prototype.resize funktioniert dafür auch nicht.
Nachträglich machen sorgt für optische Unruhe.
Dieser Hack fügt im minified Code in der Datei core/creators/inline.js
im Konstruktor die folgenden Anweisungen ein:
if (config.width)
element.setStyle('width', CKEDITOR.tools.cssLength(config.width));
if (config.height)
element.setStyle('height', CKEDITOR.tools.cssLength(config.height));
Moritz Bunkus [Thu, 31 Aug 2017 11:46:34 +0000 (13:46 +0200)]
AreaInputTag: kleines Icon neben Input zum Umschalten auf Textarea
In Masken, in denen es keinen »Erneuern«-Button gab (neuer
Artikelcontroller), hatten die Benutzer*innen somit auch keine
Möglichkeit, aus dem normalen Input eine Textarea zu machen. Dies hier
ist nun eine manuelle Möglichkeit dafür.
Moritz Bunkus [Thu, 31 Aug 2017 11:05:59 +0000 (13:05 +0200)]
ActionBar: `accesskey` mit Aufruftyp `call` gefixt
Wenn eine Action mit Aufruftyp `call` eine JavaScript-Funktion aufruft
und mit `accesskey = 'enter'` auf Return reagieren soll, so hat der
bisherige Setup-Code den Keyboard-Handler an das komplette
Document-Objekt gebunden. Das funktioniert aber zumindest in Chrome
nicht: der Handler wird nie aufgerufen.
Also an Body binden, und nicht an Document, was zumindest in Chrome
und Firefox gut funktioniert.
Moritz Bunkus [Mon, 28 Aug 2017 11:36:48 +0000 (13:36 +0200)]
Quicksuche: bei Stammdatensuche keine ungültigen anbieten
Betrifft:
• Artikelstammdaten in allen Varianten (Waren, Dienstleistungen,
Erzeugnisse, Sortimente)
• Kunden & Lieferanten
• Ansprechpersonen (hier werden nur diejenigen angeboten, die zu
gültigen Kunden/Lieferanten gehören)
* die %common_params aus SL/Dev/File sind nur für den speziellen Test
filesystem.t, daher in den Test verlagert.
* ebenfalls die get_all, get_all_count entfernt, SL/Dev/ soll nicht nur die
Anzahl der zu tippenden Zeichen in Tests verringern, sondern allgemeine
Funktionen für verschiedene Tests bereitstellen oder sinnvolle Defaults
vorbelegen
Sven Schöling [Tue, 22 Aug 2017 14:23:37 +0000 (16:23 +0200)]
SL::Dev: EXPORT rewrite und create/new split
- SL::Dev module exportieren nicht mehr ungefragt
- SL::Dev::ALL exportiert jetzt den übergebenen tag aus allen Modulen
- Funktionen nicht nicht speichern (Part/CustomerVendor) heißen jetzt
"new_X" anstatt "create_X"
Bernd Bleßmann [Sun, 20 Aug 2017 11:19:54 +0000 (13:19 +0200)]
IS::get_customer: ersten Kunden zurückliefern, wenn keine Id vorgegeben ist.
Durch Umstellung auf den Customer/Vendor-Picker der Belegmasken konnte der
Picker unter bestimmten Umständen initial leer sein. Dadurch wurden dann bei
einem Wechsel von leer auf einen Kunden nicht alle Form-Variablen richtig
gefüllt (z.B. taxzone_id) und z.B. ein Lieferschein konnte nicht gespeichert
werden.
Das jetzige Verhalten gleicht dann dem von IR::get_vendor.
Jan Büren [Thu, 17 Aug 2017 08:38:16 +0000 (10:38 +0200)]
Fixt: Auslagern über Standardlagerplatz ohne Auslagern von Dienstleistungen
Die Prüfung, ob es sich um eine Dienstleistung handelt, wird
über part_type gemacht.
Andernfalls wird die auszulagernde Menge in diesem Fall bei
allen Positionen auf 0 gesetzt.
Zusätzlich die Prüfung auf gesetzte Menge über das Fragezeichen-Feld
entfernt (ist mit ActionBar reingekommen).
Jan Büren [Sat, 12 Aug 2017 14:54:31 +0000 (16:54 +0200)]
Kontoauszug verbuchen -> Buchung erstellen -> Dialogbuchung nur abs()
Ob die Zahlung positiv oder negativ ist, bestimmt die Soll und Haben
in der Maske Dialogbuchung und liegt somit in der Hand des Anwenders,
in welche Vorlage er buchen will.
a) Filter erweitert, um nach Vorlagenname zu suchen
b) Filter korrekt in <form> gepackt, um submit und reset form
wie gewohnt zu unterstützen
c) Buchungsmöglichkeit um gl_transactions (Dialogbuchungsvorlagen)
erweitert, dass heißt in der Auswahlliste der Vorlagen werden
jetzt Dialogbuchungsvorlagen angezeigt, falls ein Buchungskonto
mit dem aktuellem Bankkonto übereinstimmt:
(bank_accounts.chart_id == record_template_items.chart_id)
d) Filter erweitert, um nach Referenz (nur in gl_transactions)
zu suchen
e) gl.pl erweitert, sodass die Metadaten der Vorlage geladen werden
und mit den sinnvollen Vorgaben aus bank_transactions gefüllt werden
Bernd Bleßmann [Fri, 11 Aug 2017 12:14:02 +0000 (14:14 +0200)]
CsvImport: worker kann Csv-Helper auch mit scalar-ref als Datei aufrufen.
Der Csv-Helper kann für die Datendatei auch eine Referenz auf Daten erhalten.
Die Basis-Klasse der Worker des CsvImports unterstützt das jetzt auch. Damit
kann dann z.B. in den Tests $worker->run auch verwendet werden, wenn der Worker
in file eben eine Referenz auf die Csv-Daten enthält.
G. Richardson [Tue, 21 Mar 2017 16:16:59 +0000 (17:16 +0100)]
DATEV-Export nach Erfassungsdatum filtern
Hat man einen DATEV-Export schon für einen bestimmten Zeitraum
exportiert, und muß nachträglich noch ein paar Buchungen in dem Zeitraum
tätigen, kann man diese nachträglichen Buchungen nun gesondert
exportieren, indem man ein Datum nach dem letzten Exportdatum
angibt.
BankTransaction: Überarbeitung von "Kontoauszug verbuchen" , SEPA-Export wieder integriert
Die Punktebewertung findet wieder ausschließlich in "get_agreement_with_bank_transactions" statt,
auch die SEPA-Sammelüberweisung. Diese bekommt dor extra Punkte, da ggf. für bestimmte Rechnungen negative Punkte entstehen.
Auch gibt es dort keine Remote Banknummer etc.
Die Testdatei t/bank/bank_transactions.t wurde um zwei Tests erweitert,
1. ein Test der das Verbuchen ohne SEPA-Export macht,
2. ein Test mit SEPA-Export
Die war noch aus der Zeit vor GetModels, und war nötig damit Paginating
die gleichen Filter hatte wie das Hauptquery. Mittlerweile ist das aber
nicht mehr nötig, weil die GetModels-Architektur die einzelnen Plugins
eh chained.
Beschleunigt einige Queries, wo der Queryplaner in Bedingungen in Joins
die Duplizierung nicht automatisch entfernen kann, und dann in nested
loops nachprüfen muss.
Bernd Bleßmann [Tue, 1 Aug 2017 12:36:04 +0000 (14:36 +0200)]
S:C:H:ReportGenerator: Ergebnis von layout->get als Liste verwenden
Sonst ist der Export (PDF/CSV) von Controllern, die diesen Helper verwenden,
kaputt. Fehlermeldung war:
Can't locate object method "add" via package "1" (perhaps you forgot to load "1"?)
at SL/Controller/Helper/ReportGenerator.pm line 25.
Jan Büren [Tue, 1 Aug 2017 09:25:35 +0000 (11:25 +0200)]
Debitoren/Kreditorenbuchungen. Buchungsnummer als Info ausgeben
Buchungsnummer ist im gesamten Programm eindeutig und
für die Verknüpfung vom Papierbeleg zur Buchung ein sinnvoller
Nummernkreis. Dementsprechend wie bei den Dialogbuchungen diese
an den Bearbeiter zurückmelden.