Andreas Rudin [Tue, 3 Dec 2019 22:06:43 +0000 (23:06 +0100)]
parse_amount ersetzt durch kivi.parse_amount, " statt ' bei Zahlenformat
1) Unnoetig doppelte Funktion gelöscht
2) [% MYCONFIG.numberformat %] darf nicht in einfache Hochkommas gesetzt
werden, da dies beim Zahlenformat 1'000.00 zu Fehlern führt.
Bernd Bleßmann [Mon, 2 Dec 2019 15:35:39 +0000 (16:35 +0100)]
Massenerstellen von Rechnungen aus LS: Filtern nach Kundentyp
Bernd Bleßmann [Mon, 2 Dec 2019 15:15:35 +0000 (16:15 +0100)]
Massenerstellen von Rechnungen aus LS: filter-Template: vergessenes <tr>
Jan Büren [Wed, 27 Nov 2019 11:44:27 +0000 (12:44 +0100)]
Reconciliation: Veto, kein invoice_amount nachträglich setzen.
auch nicht für Vorschläge
Jan Büren [Wed, 27 Nov 2019 11:41:12 +0000 (12:41 +0100)]
partnumber gibt es warehouse template nicht mehr (part picker)
Bernd Bleßmann [Tue, 26 Nov 2019 13:18:44 +0000 (14:18 +0100)]
"Sortimente erfassen" nicht anzeigen, wenn dieses exp. Feature ausgeschaltet ist
… zu "Mandantenkonfiguration: experimentelle Features einzeln an-/abschaltbar
machen"
Bernd Bleßmann [Tue, 26 Nov 2019 09:18:26 +0000 (10:18 +0100)]
WebDav: Fehler beim Kopieren anzeigen / Verzeichnis zurück wechseln (2)
Der erste commit
108753a78b203dbe0ccbe6438cc16c8df33c04d3 hat das Drucken
ohne Fehler beim Ins-Webdav-Kopieren kaputt gemacht. Probleme waren:
- ein return vergessen
- chdir zurück auch ohne Fehler
Diese commit fixt das.
Bezieht sich auch auf #96 (redmine)
Refs #96
Moritz Bunkus [Tue, 12 Nov 2019 13:09:52 +0000 (14:09 +0100)]
Auth: fehlerhafte JSON-Requests mit JSON und richtigem HTTP-Response-Code beantworten
Bernd Bleßmann [Fri, 22 Nov 2019 21:41:18 +0000 (22:41 +0100)]
WebDav: Fehler beim Kopieren anzeigen / Verzeichnis zurück wechseln
Wenn in SL::Form->parse_template bei Common::copy_file_to_webdav_folder etwas
schief ging, wurde dort ein "die" oder "Form->error" aufgerufen. Allderdings
wird in parse_template vorher das Arbeitsverzeichnis gewechselt, so dass die
web-templates zum Anzeigen des Fehlers nicht mehr gefunden werden.
Dies ist nur ein schlechter Fix. In #96 (redmine) sind einige bessere Lösungen
erwähnt, die aber etwas mehr Aufwand und vor allem Testen verlangen.
Bezieht sich auch auf #96 (redmine)
Refs #96
Bernd Bleßmann [Fri, 22 Nov 2019 16:12:28 +0000 (17:12 +0100)]
Massendruck: Attachment-/Archiv-Dateiname in Zielsprache
Bernd Bleßmann [Fri, 22 Nov 2019 15:14:23 +0000 (16:14 +0100)]
Massendruck: Kopieren ins Webdav in den Helper verschoben.
Damit erzeugen alle Druckvorgänge hierüber Kopien im Webdav
Bernd Bleßmann [Fri, 22 Nov 2019 13:20:21 +0000 (14:20 +0100)]
Massendruck Lieferscheine/Rechnungen: doc_storage_enabled importieren
Bernd Bleßmann [Fri, 22 Nov 2019 11:24:14 +0000 (12:24 +0100)]
Auftrags-Controller: Prüfung beim Holen der Kunden-/Lieferanten-Art.-Nr, …
… ob Option eingeschaltet ist und ob Kunde/Lieferant schon gewählt
wurde. Sonst gibt es einen Fehler beim Workflow von VK in EK und umgekehrt.
Sven Schöling [Fri, 16 Aug 2019 18:07:16 +0000 (20:07 +0200)]
Bernd Bleßmann [Wed, 20 Nov 2019 13:47:53 +0000 (14:47 +0100)]
S:D:Invoice->new_from: Auftragsdatum aus Auftrag bei Erzeugen aus Lieferschein
Jan Büren [Sun, 17 Nov 2019 12:20:43 +0000 (13:20 +0100)]
Einkaufsrechnung -> Suche. Fälligkeitsdatum als Suchfilter hinzugefügt
Bernd Bleßmann [Sat, 16 Nov 2019 18:01:09 +0000 (19:01 +0100)]
SL::Mailer: Debug-Meldungen rausgeworfen. mail5 führte zu einem Fehler
Die Debug-Meldung mit "mail5" griff auf $attachment->{id} zu, aber
attatchment kann auch ein Scalar sein. Dann ergab sich hier ein Laufzeitfehler,
der zwar durch ein eval abgefangen wurde, aber das Verschicken der Mail
verhinderte. Als E-Mail-Status bekam man dann "no send attempt made".
Wer den Mailer debuggen möchte, möge dann nochmal eigene Statements
einfügen.
Bernd Bleßmann [Thu, 14 Nov 2019 15:02:36 +0000 (16:02 +0100)]
InstallationCheck: Exception::Class: Minimal-Version 1.44
Sonst gibt es nur ungenaue Rose-Fehlermeldungen (nur "generic exception")
und der Test t/db_helper/with_transaction.t läuft nicht durch.
Behebt #407 (redmine).
Jan Büren [Thu, 14 Nov 2019 14:09:38 +0000 (15:09 +0100)]
Changelog und Dokumentation zum Hintergrund-Job: Jahreszahl in Nummernkreisen hochzählen
Jan Büren [Thu, 14 Nov 2019 14:09:01 +0000 (15:09 +0100)]
SetNumberRange: Validitätsprüfung auf Benutzereingabe (data) im Job
Jan Büren [Thu, 31 Oct 2019 13:32:03 +0000 (14:32 +0100)]
SetNumberRange: Background-Job um Jahreszahlen im Nummernkreis zu erhöhen
Nimmt die vierstellige Zahl des nächsten Jahres und multipliziert
diese mit 1 oder einem anderen Faktor. Präfixe und Länge des
Nummernkreis bleibt erhalten. Bspw.:
Letzte Rechnungsnummer:
RE201900009 --> RE202000000
Folgende Werte:
multiplier: 100000
digits_year: 4
multiplier: beliebiger Wert (empfohlen: 1, 10, 100, 1000, default 1)
digits_year: 4 || 2 (Falls keine 2 gesetzt ist, wird 4 verwendet)
2019 || 19
Jan Büren [Tue, 12 Nov 2019 10:01:44 +0000 (11:01 +0100)]
zu #406 nicht zuviele ids (email journal) als ar.ids verwenden
Jan Büren [Tue, 12 Nov 2019 09:23:18 +0000 (10:23 +0100)]
Bugfix #406 Fehlerhafte abzurechnende Werte, falls Gutschriften höher als Auftragswert
Jan Büren [Tue, 12 Nov 2019 08:31:42 +0000 (09:31 +0100)]
Bugfix (teil) #406 abzurechnender Betrag bei Aufträgen manchmal falsch falls Gutschriften
S.a. Kommentar redmine
Bernd Bleßmann [Mon, 4 Nov 2019 10:12:28 +0000 (11:12 +0100)]
CSV-Import Debitorenbuchungen: maximale Betragsabweichung (Einstellungen) parsen
Bernd Bleßmann [Fri, 1 Nov 2019 21:25:01 +0000 (22:25 +0100)]
S:C:Letter: Vergessene Presenter-Umstellung für ein select_tag
Bernd Bleßmann [Tue, 29 Oct 2019 16:24:56 +0000 (17:24 +0100)]
auth master rights: Skript-Abhängigkeiten und Positionen reparieren
Durch falsche Abhängikeiten können bei Updates bestimmte Rechte feste
Positionen größer 1000 zugewiesen bekommen, bevor das Upgrade-Skript zum
Platzschaffen (multiplizieren mit 100) durchlaufen wird.
Diese werden dann auch mit 100 multiplizert und landen ganz am Ende, was nicht
gewollt ist.
Dieser commit behebt sowohl das Problem bei neuen Updates
(v.A. ältere Versionen sind betroffen) und versucht die falschen Positionen
zu korrigieren.
Bernd Bleßmann [Thu, 24 Oct 2019 11:49:12 +0000 (13:49 +0200)]
Typo in de locale
Bernd Bleßmann [Wed, 23 Oct 2019 09:48:53 +0000 (11:48 +0200)]
Form->prepare_for_printing: Einheiten übersetzen
Moritz Bunkus [Mon, 21 Oct 2019 14:23:24 +0000 (16:23 +0200)]
OE.pm: Form-Werte nicht direkt in SQL-Queries schreiben
Bernd Bleßmann [Fri, 18 Oct 2019 12:45:08 +0000 (14:45 +0200)]
Auftrags-Controller: Positions-Update: auch Artikelnummern updaten
Bernd Bleßmann [Fri, 18 Oct 2019 10:58:27 +0000 (12:58 +0200)]
Auftrags-Controller: Spracheinstellungen aus Druck-/E-Mail-Dialog speichern.
Bernd Bleßmann [Fri, 11 Oct 2019 13:08:52 +0000 (15:08 +0200)]
Rechte zum Bearbeiten von Preisen in Belgen getrennt nach VK/EK anwenden
Bernd Bleßmann [Fri, 11 Oct 2019 12:18:31 +0000 (14:18 +0200)]
Recht zum Bearbeiten von Preisen in Belgen nach Ver- und Einkauf trennen
Das Recht "edit_prices" galt bisher sowohl für Verkauf als auch für Einkauf.
Nun wird das getrennt in "sales_esit_prices" und "purchase_edit_prices".
Bernd Bleßmann [Fri, 11 Oct 2019 11:59:54 +0000 (13:59 +0200)]
Recht zum Einsehen von Einkaufsdokumenten aller Mitarbeiter anwenden
Trennung VK/EK in Berichten
Bernd Bleßmann [Fri, 11 Oct 2019 10:17:31 +0000 (12:17 +0200)]
Recht zum Einsehen von Einkaufsdokumenten aller Mitarbeiter (Trennung VK/EK)
Das Recht "sales_all_edit" galt bisher sowohl für Verkauf als auch für Einkauf.
Nun wird das getrennt.
Bernd Bleßmann [Wed, 9 Oct 2019 09:06:19 +0000 (11:06 +0200)]
Auftrags-Controller: PDF-Download per ajax-send_file
Bernd Bleßmann [Tue, 8 Oct 2019 16:55:38 +0000 (18:55 +0200)]
Controller::send_file: rendern bei ajax abschalten können
Damit kann man weitere client_js-Kommandos absetzen.
Sven Schöling [Fri, 12 Apr 2019 16:14:33 +0000 (18:14 +0200)]
Controller::send_file schickt jetzt über client_js wenn ajax
(cherry picked from commit
0f16bc87b4804cf05cefb5ac1514c7f565cfbfbd)
Sven Schöling [Fri, 12 Apr 2019 16:13:39 +0000 (18:13 +0200)]
kivi.js: kivi.save_file und client_js binding
(cherry picked from commit
f68ea953a6a563172f12991d2ca3f9f17ad89dd2)
Bernd Bleßmann [Wed, 9 Oct 2019 08:53:57 +0000 (10:53 +0200)]
Controller::redirect_to: url_for nicht doppelt aufrufen, wenn ajax
Macht zwar nichts, muss aber auch nicht.
G. Richardson [Tue, 8 Oct 2019 19:13:25 +0000 (21:13 +0200)]
CustomerVendor POD korrigiert
G. Richardson [Tue, 8 Oct 2019 13:56:10 +0000 (15:56 +0200)]
t/datev/datev_format_2018.t nutzt Dev create_gl_transaction
G. Richardson [Wed, 9 Oct 2019 08:12:08 +0000 (10:12 +0200)]
Jahresabschluß - GLTransaction->post und Tests
Der YearEnd Controller nutzt nun GLTransaction->post, damit muß man die
acc_trans-Einträge nicht mehr von Hand zusammenbauen, und die Buchungen
passieren automatisch als Transaktion, die Buchungen werden validiert
und es wird ein Historieneintrag erstellt.
G. Richardson [Tue, 8 Oct 2019 13:50:19 +0000 (15:50 +0200)]
GLTransaction - Dialogbuchungen per Rose erstellen
neue Methoden in GLTransaction zum Erstellen von Dialogbuchungen
* post
* validate
* add_chart_booking
An einigen Stellen im Code werden Dialogbuchungen per Hand erstellt,
inkl. Steuern, das soll hiermit vereinheitlicht und vereinfacht
werden.
Acc_trans-Einträge können nun mit wenigen Parametern zu Dialogbuchungen
hinzugefügt werden, die Parameter orientieren sich dabei an den Werten,
wie sie auch an der Oberfläche eingegeben werden (Konto, Soll/Haben,
Steuer). Dabei werden einige der Werte aus der GLTransaction
automatisch übernommen.
Beim Buchen wird eine neue Transaktion gestartet, die Buchung wird
validiert und es wird ein Historieneintrag erstellt.
G. Richardson [Tue, 8 Oct 2019 09:55:53 +0000 (11:55 +0200)]
SL Dev Record - neue Methoden für ar/gl/ap Transaktionen
Neue Methoden, um für Tests schnell Debitorenbuchungen,
Kreditorenbuchungen und Dialogbuchungen zu erstellen
Bernd Bleßmann [Tue, 8 Oct 2019 16:36:40 +0000 (18:36 +0200)]
ActionBar: Javascript: unbenutzte Variable entfernt
Bernd Bleßmann [Tue, 8 Oct 2019 14:28:06 +0000 (16:28 +0200)]
ActionBar: Javascript: jquery-Selektor zu Objekt auflösen
Sonst lassen sich die Funktionen removeTooltip, setTooltip, setDisabled,
setEnabled nicht mit einem Selektor via ClientJs->run
Danke Mosu.
Bernd Bleßmann [Fri, 4 Oct 2019 16:51:05 +0000 (18:51 +0200)]
ReportGenerator: set_options: auch bei csv_export nur Standardwerte beibehalten
Bernd Bleßmann [Fri, 4 Oct 2019 16:47:10 +0000 (18:47 +0200)]
ReportGenerator: set_options: "for" statt "map", da Rückgabewert nicht verwendet
Bernd Bleßmann [Fri, 4 Oct 2019 17:07:29 +0000 (19:07 +0200)]
S:C:YearEndTransactions: Warnung vermeiden: Variablen waren schon deklariert
Bernd Bleßmann [Fri, 4 Oct 2019 17:05:44 +0000 (19:05 +0200)]
S:C:YearEndTransactions: Kosmetik: Tab entfernt
Bernd Bleßmann [Wed, 2 Oct 2019 10:19:24 +0000 (12:19 +0200)]
Auftrags-Controller: Link bei Artikelnummer: Artikelstamm in neuem Tab öffnen
Bernd Bleßmann [Wed, 2 Oct 2019 10:08:34 +0000 (12:08 +0200)]
Auftrags-Controller: self an _row-Template übergeben …
… und nicht einzelne Variablen aus self, die dort abgefragt werden.
Bernd Bleßmann [Wed, 2 Oct 2019 11:39:13 +0000 (13:39 +0200)]
changelog zu "Auftrags-Controller: Positions-Update aus Artikel-Stamm"
Bernd Bleßmann [Tue, 1 Oct 2019 16:15:33 +0000 (18:15 +0200)]
Auftrags-Controller: Benutzereinstellung: Positions-Update aus Artikel-Stamm
Bernd Bleßmann [Mon, 19 Nov 2018 15:38:27 +0000 (16:38 +0100)]
Auftrags-Controller: Positions-Update aus Artikel-Stamm
Bernd Bleßmann [Tue, 1 Oct 2019 13:51:02 +0000 (15:51 +0200)]
locales-Lauf en
Bernd Bleßmann [Tue, 1 Oct 2019 13:50:28 +0000 (15:50 +0200)]
fehlende Übersetzung zum Jahresabschluß
Bernd Bleßmann [Tue, 1 Oct 2019 13:19:05 +0000 (15:19 +0200)]
Vorhandene Steuer speichern: richitge Anzahl von Bind-Variablen angeben
fix zu commit
543d78225ec609e9f67ecb1544e135ca88149234
"Spalte taxnumber aus Tabelle tax entfernt"
G. Richardson [Mon, 30 Sep 2019 10:35:38 +0000 (12:35 +0200)]
Alten YearEndTransactions Test entfernt
G. Richardson [Wed, 25 Sep 2019 16:51:58 +0000 (18:51 +0200)]
Jahresabschluß - YearEndTransactions neu implementiert
Der alte Jahresabschluß hatte eine Reihe von Schwächen, z.B. wurde nicht
zwischen Bestands- und Erfolgskonten unterschieden, und es wurde auch
kein Gewinn- oder Verlustvortrag gemacht. Der Anwender mußte selber
entscheiden, welche Konten abgeschlossen werden sollten.
* Saldenvortragskonto, sowie Gewinn- und Verlustvortragskonto müssen in
der Mandantenkonfiguration unter "Standardkonten" konfiguriert werden
* Es wird nicht mehr für jedes Konto eine Dialogbuchung erstellt,
sondern es werden alle Soll- und Habensalden zusammengefasst, und
diese in Summe gegen das Saldenvortragskonto gebucht
* Der Jahresabschluß lässt sich für einen bestimmten Zeitraum mehrmals
ausführen, falls später Buchungen für den Zeitraum hinzukommen.
G. Richardson [Mon, 30 Sep 2019 08:56:14 +0000 (10:56 +0200)]
AccountingPeriod - Methode an get_balance_starting_date übergeben
Für den Fall, daß man die Methode zur Ermittlung des Startdatums nicht
aus der Mandantenkonfiguration nehmen möchte, sondern diese selber
vorgeben, gibt es nun einen neuen Parameter, um die Methode selber zu
bestimmen. Der Default ist weiterhin der Wert aus der
Mandantenkonfiguration.
G. Richardson [Sun, 29 Sep 2019 07:33:29 +0000 (09:33 +0200)]
balance_startdate_method_options nach AccountingPeriod Helper
verlagert, wird auch für YearEndTransactions benötigt.
Moritz Bunkus [Tue, 24 Sep 2019 09:39:00 +0000 (11:39 +0200)]
CSV-Import-Bericht: beim Löschen nur verwaiste Profile löschen
Unter gewissen Umständen kann es passieren, dass es mehrere
`csv_import_reports` mit derselben `profile_id` gibt. In so einem Fall
darf nur dann versucht werden, die Einträge aus `csv_import_profiles`
zu löschen, wenn der letzte `csv_import_reports`-Eintrag gelöscht
wird, der auf auf dieses Profil verlinkt.
Bernd Bleßmann [Mon, 23 Sep 2019 12:08:39 +0000 (14:08 +0200)]
Bericht VK-Rg/Debitorenbuchungen: nach Abteilungen sortieren können
Bernd Bleßmann [Mon, 23 Sep 2019 12:05:44 +0000 (14:05 +0200)]
Bericht EK-Rg/Kreditorenbuchungen: Abteilungen anzeigen können
Bernd Bleßmann [Mon, 23 Sep 2019 11:53:57 +0000 (13:53 +0200)]
Bericht Angebote/Aufträge: Abteilungen anzeigen können
Bernd Bleßmann [Mon, 23 Sep 2019 11:18:13 +0000 (13:18 +0200)]
template oe search: Kosmetik: Leerzeilen entfernt
Bernd Bleßmann [Mon, 23 Sep 2019 11:14:24 +0000 (13:14 +0200)]
Bericht EK-Rg/Kreditorenbuchungen: Filter nach Abteilung als Option anzeigen
Bernd Bleßmann [Mon, 23 Sep 2019 11:12:16 +0000 (13:12 +0200)]
Bericht EK-Rg/Kreditorenbuchungen: Filter nach Abteilung als hidden mitnehmen
Bernd Bleßmann [Fri, 28 Feb 2014 11:53:23 +0000 (12:53 +0100)]
Preisgruppenpreise als Preisliste bei Kunden anzeigen
Wenn dem Kunden eine Preisgruppe zugeordnet ist, werden die Preise in
den Kundenstammdaten als Preisliste (eigener Tab) angezeigt.
Bernd Bleßmann [Tue, 17 Sep 2019 11:27:12 +0000 (13:27 +0200)]
JS: CustomerVendor: Kosmetik: Tab entfernt
Moritz Bunkus [Tue, 3 Sep 2019 12:25:51 +0000 (14:25 +0200)]
BankTransaction: keine Leerzeichen am Ende vom Verwendungszweck einfügen
Wenn man mehrere Felder einfach mit `join(' ', @felder)` zusammenfügt,
so entstehen nun mal ein Haufen Leerzeichen, auch wenn alle Felder
selber leer sind. Das führt konkret beim Import von Banktransaktionen
dazu, dass das Verwendungszweck-Feld, das aus den Feldern
`purpose` (ohne Suffix) und `purpose1` bis `purpose13` gebildet wird,
sehr viele Leerzeichen am Ende oder in der Mitte hat, wenn die
Felder (größtenteils) nicht benutzt werden.
Löscht auch bei bestehenden Positionen in der Datenbank Leerzeichen am
Ende. Leerzeichen am Anfang oder in der Mitte werden hingegen nicht
angefasst.
Moritz Bunkus [Tue, 3 Sep 2019 11:52:04 +0000 (13:52 +0200)]
BankTransaction: Vorschlagslistencode aus action_list eigene Funktion verlagert
Moritz Bunkus [Tue, 3 Sep 2019 11:35:27 +0000 (13:35 +0200)]
BankTransaction: Sortierungscode vereinfacht
Bernd Bleßmann [Mon, 2 Sep 2019 15:59:49 +0000 (17:59 +0200)]
Belege: E-Mail-Dialog: Sprache für Anhang-Übersetzung setzen
Moritz Bunkus [Mon, 2 Sep 2019 10:24:42 +0000 (12:24 +0200)]
Rose: MetaSetups bzgl. Fließkommazahlen erneuert
Moritz Bunkus [Mon, 2 Sep 2019 10:11:04 +0000 (12:11 +0200)]
bank_transaction_acc_trans: überflüssige Spalte »id« entfernt
Primärschlüssel sind zwei andere Spalten, und die Präsenz dieser
Nicht-Primärschlüssel-Spalte zusammen mit Typ »serial« macht Probleme,
weil Rose kein Default für solche Spalten kennt.
Bernd Bleßmann [Fri, 30 Aug 2019 14:28:18 +0000 (16:28 +0200)]
Kundenartikelnummern in Vorlagen verwenden können
Einsortierung in das template array wie Lieferantenartikelnummern als
customer_make und customer_model.
Standard-Druckvorlagen Angebot/Auftrag/Lieferschein/Rechnung für Verkauf
exemplarisch angepasst.
Moritz Bunkus [Fri, 30 Aug 2019 13:01:26 +0000 (15:01 +0200)]
WH: Warnungen wegen nicht initialisierten Werten vermeiden
Durch Tests getriggert, konkret: durch t/wh/transfer.t
Moritz Bunkus [Fri, 30 Aug 2019 13:01:10 +0000 (15:01 +0200)]
SL::DB::Unit: Warnungen wegen nicht initialisierten Werten vermeiden
Durch Tests getriggert, konkret: durch t/wh/transfer.t
Moritz Bunkus [Fri, 30 Aug 2019 13:00:03 +0000 (15:00 +0200)]
AttrSorted-Helfer: Warnungen wegen nicht initialisierten Werten vermeiden
Durch Tests getriggert, konkret: durch t/controllers/csvimport/parts.t
Moritz Bunkus [Fri, 30 Aug 2019 12:56:50 +0000 (14:56 +0200)]
SL::Auth: Warnungen wegen nicht initialisierten Werten vermeiden
Durch Tests getriggert, konkret: durch t/controllers/base/render.t
Moritz Bunkus [Fri, 30 Aug 2019 12:53:43 +0000 (14:53 +0200)]
DB-Upgrades für Hintergrundjobs von Perl auf SQL umgestellt
Rose-Models dürfen in DB-Upgrade-Scripten nicht verwendet werden, weil
die Perl-Strukturdaten (MetaSetup) in dem Moment schon auf dem neuen
Stand, die Datenbankstrukturen aber auf dem alten Stand sind. Daher
schlagen bei Unterschieden (z.B. eine Spalte soll später noch angelegt
werden, sie existiert aber im neuen MetaSetup schon) halt sämliche
Operationen fehl.
Bernd Bleßmann [Fri, 30 Aug 2019 09:01:13 +0000 (11:01 +0200)]
Lagerstandsbericht: Listenpreis als Basis f. Bestandswert auswählbar
Bernd Bleßmann [Fri, 30 Aug 2019 08:34:08 +0000 (10:34 +0200)]
Lagerstandsbericht: Listenpreis anzeigbar machen
Bernd Bleßmann [Fri, 30 Aug 2019 08:19:56 +0000 (10:19 +0200)]
Kosmetik: doppeltes Leerzeichen weg
Moritz Bunkus [Mon, 26 Aug 2019 09:36:36 +0000 (11:36 +0200)]
SelfTest: Geschwindigkeitssteigerung durch »NOT EXISTS« anstelle von »NOT IN«
Nicht ganz frische PostgreSQL-Versionen (mindestens bis 9.6 inklusive)
optimieren »NOT IN«-mit-Subquery nicht automatisch und müssen daher
für jede Zeile des äußeren Selects einen linearen Scan auf die
Subquery-Tabelle machen.
Deutlich effektiver ist das in diesem Fall äquivalente »NOT
EXISTS«-mit-Subquery.
Beispiel: Namen aller Kunden, für die noch keine Rechnung geschrieben
wurde. Falsch mit »NOT IN«:
SELECT name
FROM customer
WHERE id NOT IN (
SELECT customer_id
FROM ar
);
Besser und semantisch äquivalent:
SELECT name
FROM customer
WHERE NOT EXISTS (
SELECT customer_id
FROM ar
WHERE customer_id = customer.id
);
Geschwindigkeitssteigerung ist auch ein Euphemismus. Vor der Änderung
war der Selftest bei der LINET-Produktivdatenbank nicht in der Lage,
seine Tests innerhalb von drei Tagen auszuführen. Nach der Änderung
dauert der Selftest weniger als eine Minute.
Neure PostgreSQL-Versionen (z.B. v11) erkennen dieses Pattern
automatisch.
Moritz Bunkus [Fri, 23 Aug 2019 09:27:09 +0000 (11:27 +0200)]
Rose-Models anhand des tatsächlichen Schemas aktualisiert
Moritz Bunkus [Mon, 29 Apr 2019 14:06:58 +0000 (16:06 +0200)]
Doku: Update nach Auth-Erweiterung auf multiple Module
Moritz Bunkus [Mon, 29 Apr 2019 13:54:30 +0000 (15:54 +0200)]
Auth: Unterstützung für multiple Authentifizierungsbackends
Über den Parameter "module" kann man nun multiple Backends angeben,
die nacheinander versucht werden, bis ein Erfolg gemeldet wird oder
die Liste durchlaufen wurde.
Zusätzlich kann man LDAP-Module mehrfach angeben. Damit
unterschiedliche Konfigurationen für jede Modulinstanz benutzt werden
können, wurde die Syntax erweitert: für "LDAP:Config-Abschnitts-Name"
wird "[authentication/Config-Abschnitts-Name]" benutzt. Zwecks
Rückwärtskompatibilität sucht "LDAP" ohne Angabe eines Namens nach dem
bisher auch verwendeten Abschnitt "[authentication/ldap]".
Nützlich ist das Ganze z.B., um einen LDAP-Fallback-Server angeben zu
können, der benutzt wird, wenn der Hauptserver nicht erreichbar sein
sollte.
Moritz Bunkus [Mon, 29 Apr 2019 13:32:22 +0000 (15:32 +0200)]
Auth: mini_error gefixt
$::auth->mini_error wird potenziell zu einem Zeitpunkt aufgerufen, an
dem es die Instanzen von $::form und $::request noch nicht gibt. Da
hier wirklich nur die Bare-Bones-Ausgabe der Fehlermeldung benötigt
wird, machen wir für den Fall manuell ein CGI-Objekt auf.
Moritz Bunkus [Mon, 29 Apr 2019 13:11:43 +0000 (15:11 +0200)]
LDAP-Auth: Konfiguration über Konstruktur übergeben
Ist eine Vorarbeit dafür, das LDAP-Modul mit unterschiedlichen
Konfigurationen benutzen zu können.
Moritz Bunkus [Mon, 29 Apr 2019 13:02:23 +0000 (15:02 +0200)]
LDAP-Auth: enter_sub/leave_sub entfernt
Moritz Bunkus [Fri, 23 Aug 2019 09:17:39 +0000 (11:17 +0200)]
Task-Server auf unterschiedlichen Maschinen laufen lassen können
Jede Task-Server-Instanz und jeder Hintergrundjob haben nun ein neues
Attribute »node_id«. Darüber kann gesteuert werden, dass bestimmte
Jobs nur von einer bestimmten Instanz ausgeführt werden.
Die »node_id« eines neu angelegten Jobs ist standardmäßig leer. Das
bedeutet, dass ein Job von einer beliebigen Task-Server-Instanz
ausgeführt werden kann.
Die »node_id« eines Task-Servers ist standardmäßig der Hostname (siehe
ausgabe von »perl -MSys::Hostname -le 'print hostname()'«), kann aber
in der Konfigurationsdatei überschrieben werden (»[task_server]« →
»node_id«).
Zusätzlich gibt es den Konfigurationsparameter »[task_server]« →
»only_run_tasks_for_this_node«. Ist dieser Parameter gesetzt, so führt
der Task-Server nur diejenigen Jobs aus, deren »node_id«-Feld mit der
»node_id« der Task-Server-Instanz übereinstimmt. Andernfalls werden
auch diejenigen Jobs ausgeführt, deren »node_id«-Feld leer ist.
Achtung: es findet momentan keinerlei Locking statt. Das bedeutet,
dass es für jede Datenbank nur eine Task-Server-Instanz geben darf,
bei der »only_run_tasks_for_this_node« nicht gesetzt ist. Für
Load-Balancing eignet sich das also bisher noch nicht.
G. Richardson [Fri, 16 Aug 2019 11:46:20 +0000 (13:46 +0200)]
Typos in de locale
Bernd Bleßmann [Thu, 15 Aug 2019 10:39:05 +0000 (12:39 +0200)]
Workflow Lieferantenauftrag->Kreditorenbuchung: mini Performance-Optimierung
Später benötigte Relationen direkt mit laden.
Dank an Geoffrey.
Bernd Bleßmann [Thu, 15 Aug 2019 10:35:02 +0000 (12:35 +0200)]
Workflow Lieferantenauftrag->Kreditorenbuchung: Zahlungsbedingungen aus Auftrag
Um das Fälligkeitsdatum zu ermitteln, die Zahlungsbedingungen aus dem Auftrag
nehmen, nicht die aus den Lieferantenstammdaten.
Bernd Bleßmann [Fri, 2 Aug 2019 16:00:21 +0000 (18:00 +0200)]
Neuer Workflow Lieferantenauftrag->Kreditorenbuchung
Für jedes Aufwandskonto der Positionen im Lieferantenauftrag wird eine
Zeile in der Kreditorenbuchung erstellt. Gebucht wird standardmäßig
auf des entsprechende Aufwandskonto. In der Mandantenkonfiguration
kann unter Standardkonten ein Konto ausgewählt werden, auf das dann
alle Zeilen gebucht werden.
Die Steuern werden übernommen, sofern diese für das ausgewählte
Aufwandskonto gültig sind. Ansonsten wird die Default-Steuer für das
Aufwandskonto gesetzt.
Der Quellauftrag wird geschlossen, wenn der Betrag aller
Kreditorenbuchungen, die aus Workflows aus dem Quellauftrag entstanden
sind, gleich dem Betrag des Quellauftrags ist.