Bernd Bleßmann [Wed, 2 Dec 2020 17:33:33 +0000 (18:33 +0100)]
Auftrags-Controller: Auftragswahrscheinlichkeit anzeigen: Typo im as_date-Attr.
Moritz Bunkus [Thu, 3 Dec 2020 13:13:09 +0000 (14:13 +0100)]
Merge branch '2020-leistungsdatum'
Moritz Bunkus [Thu, 3 Dec 2020 13:12:33 +0000 (14:12 +0100)]
SL::DB::Invoice->new_from: auch Leistungsdatum (tax_point) übernehmen
Bernd Bleßmann [Thu, 3 Dec 2020 11:21:53 +0000 (12:21 +0100)]
Preisanfrage/Aufträge: dort, wo es ein Liefertermin gibt, diesen f. Steuer nehmen
Bernd Bleßmann [Thu, 3 Dec 2020 11:44:58 +0000 (12:44 +0100)]
Auftrags-Controller: bei Änderung Leistungsdatum/Liefertermin neu berechnen
Bernd Bleßmann [Thu, 3 Dec 2020 11:56:32 +0000 (12:56 +0100)]
Auftrags-Controller: Leistungsdatum bei Workflow berücksichtigen
Moritz Bunkus [Thu, 3 Dec 2020 10:08:08 +0000 (11:08 +0100)]
display_row: ship_$row nicht formatiert ausgeben
Im ganzen Programm wird angenommen, dass `$::form->{ship_$row}`
unformatiert ist, nur an dieser Stelle wird es formatiert
ausgegeben. Das war nicht mal ein Problem, weil es in `update` via
`_update_ship()` komplett neu berechnet wird, ohne auf den aktuellen
Wert in `$::form->{ship_$row}` zurückzugreifen. Trotzdem ist es der
Konsistenz halber wichtig, den Wert auch hier unformatiert auszugeben.
Moritz Bunkus [Thu, 3 Dec 2020 10:05:10 +0000 (11:05 +0100)]
Order-Controller: Umwandlung: Berechnung bereits gelieferter/abgerechneter Mengen gefixt
In $::form steht der Wert für die gelieferte Menge in
`ship_$row`. Dieser Wert wird überall im Programm als unformatiert
angenommen, nur bisher in der Methode nicht, die berechnet, wie viel
von jeder Position bereits abgerechnet/geliefert war. Ergebnis war,
dass ein unformatierter Wert noch mal durch `$::form->parse_amount`
gejagt wurde.
Für einen Wert mit Nachkommaanteil ist das dann problematisch. Wurden
bereits z.B. 123,45 geliefert, so steht in `$::form->{ship_1}` der
Wert `123.45`, einmal durch `parse_amount` ergibt `12345`, was um
einen Faktor 100 zu viel ist.
Moritz Bunkus [Thu, 3 Dec 2020 09:34:04 +0000 (10:34 +0100)]
Order-Controller: Umwandlung: gemeinsamen Code in eigene Funktion ausgelagert
Moritz Bunkus [Wed, 2 Dec 2020 09:07:44 +0000 (10:07 +0100)]
LXDebug dump_sql_result: Spaltenanordnung je nach Inhalt
Spalten, die komplett numerisch sind, werden rechtsbündig angeordnet;
alle anderen linksbündig.
Moritz Bunkus [Tue, 1 Dec 2020 09:56:20 +0000 (10:56 +0100)]
SEPA: In Details: Buttons »Buchen« und »Zahlungsliste« immer anzeigen
Sichtbare Buttons machen viel klarer, welche Funktionalität es an der
Stelle gibt, auch wenn die Buttons deaktiviert sind.
Moritz Bunkus [Tue, 1 Dec 2020 08:49:10 +0000 (09:49 +0100)]
HTTP-Header: Lebenszeit für Session-ID-Cookie setzen gefixt
Der Name des Parameters lautet `-expires`, nicht `-expire`.
Außerdem den Timeout direkt aus `$::auth` lesen, um denselben
Standardwert zu nehmen, falls der Timeout nicht in der Konfiguration
gesetzt ist.
Moritz Bunkus [Mon, 30 Nov 2020 09:48:46 +0000 (10:48 +0100)]
Inventory: Fehlermeldung gefixt
Sven Schöling [Fri, 27 Nov 2020 16:37:34 +0000 (17:37 +0100)]
t/wh/inventory.t: Nach Test richtig aufräumen
Sven Schöling [Fri, 27 Nov 2020 16:25:06 +0000 (17:25 +0100)]
Inventory Helper: Fehlerhaften Aufruf mit croak abbrechen statt mit Excception
Sven Schöling [Fri, 27 Nov 2020 16:15:21 +0000 (17:15 +0100)]
Inventory Helper: Doku Update
Sven Schöling [Fri, 27 Nov 2020 16:14:49 +0000 (17:14 +0100)]
Inventory Helper: Allocation ausgelagert in eigene Datei
Sven Schöling [Fri, 27 Nov 2020 16:13:34 +0000 (17:13 +0100)]
Inventory Helper: Auf Number Helper Änderungen angepasst
Sven Schöling [Fri, 23 Oct 2020 18:05:15 +0000 (20:05 +0200)]
Inventory: mehr tests
Sven Schöling [Fri, 23 Oct 2020 18:03:11 +0000 (20:03 +0200)]
Inventory::Allocation: transfer_object
Sven Schöling [Fri, 23 Oct 2020 16:41:52 +0000 (18:41 +0200)]
Inventory: doku typos
Sven Schöling [Fri, 23 Oct 2020 16:21:46 +0000 (18:21 +0200)]
Inventory: Stückbehandlung und dispotype no_stock entfernt
Sven Schöling [Fri, 23 Oct 2020 11:42:52 +0000 (13:42 +0200)]
Inventory: bestbefore handling
Sven Schöling [Fri, 16 Oct 2020 16:08:20 +0000 (18:08 +0200)]
Inventory: production order und recipe features entfernt
Sven Schöling [Fri, 16 Oct 2020 16:07:34 +0000 (18:07 +0200)]
Inventory: with_objects cleanup
Sven Schöling [Fri, 16 Oct 2020 12:25:54 +0000 (14:25 +0200)]
t/wh/inventory.t: Reservierungen entfernt
Sven Schöling [Fri, 16 Oct 2020 12:19:35 +0000 (14:19 +0200)]
Inventory Helper: Reservierungen entfernt
Sven Schöling [Fri, 16 Oct 2020 12:11:05 +0000 (14:11 +0200)]
Inventory Helper: _qty auf _number umgestellt
Martin Helmling martin.helmling@octosoft.eu [Thu, 19 Mar 2020 16:25:31 +0000 (17:25 +0100)]
Inventory Helper: Bessere Fehlermeldung bei fehlenden Parametern
Alle Fehler im allocate() des Inventory-Helpers werden nun per
SL::X::Inventory::Allocation Fehlermethode erzeugt,
damit es eine einheitliche Prüfung geben kann.
verbessert egw 12413
Martin Helmling martin.helmling@octosoft.eu [Thu, 9 Jan 2020 12:02:02 +0000 (13:02 +0100)]
Inventory-Helper: Constraints erweitert mit "reserve_for"
Nun können auch ausschließlich Reservierungen allokiert werden
zu egw #11765
Martin Helmling martin.helmling@octosoft.eu [Mon, 9 Dec 2019 11:21:53 +0000 (12:21 +0100)]
Inventory-Helper: Nutzung von falschem Parameter
Bei "reserve_for" muss auch der Inhalt des Parameters genutzt werden,
nicht "chargenumber"
Martin Helmling [Tue, 26 Nov 2019 12:49:57 +0000 (13:49 +0100)]
Inventory-Helper: Nur gesetzte Constraints berücksichtigen
Werden als Parameter nicht definierte Constraints übergeben,
werden diese nun übersprungen
Sven Schöling [Wed, 20 Nov 2019 14:48:06 +0000 (15:48 +0100)]
Inventory: allocate bevorzugt jetzt früherere Lagerbewegung
Sven Schöling [Wed, 20 Nov 2019 14:28:56 +0000 (15:28 +0100)]
Inventory: Doku update. Funktionen statt Klassenmthoden
Sven Schöling [Wed, 20 Nov 2019 13:22:45 +0000 (14:22 +0100)]
Inventory: warnings
Sven Schöling [Wed, 20 Nov 2019 13:07:02 +0000 (14:07 +0100)]
Inventory: Parameter oe_id in for_object_id umbenannt und besser dokumentiert
Martin Helmling martin.helmling@octosoft.eu [Wed, 20 Nov 2019 14:46:59 +0000 (15:46 +0100)]
Inventory-Helper: Restmenge auch runden, Stück immer ganzzahlig
Martin Helmling martin.helmling@octosoft.eu [Mon, 18 Nov 2019 16:19:35 +0000 (17:19 +0100)]
Inventory-Helper: falscher Fehlermeldung
Bei der Fehlermeldung wird das falsche Lager angezeigt.
Bisher wurde das Lager mit vorhandener Menge angezeigt, das nicht der Einschränkung entspricht.
Es muss aber entweder kein Lager oder ein Lager angezeigt werden, das den Einschränkungen entspricht
aber zuwenig Menge hat.
zu #11438
Sven Schöling [Tue, 28 Jan 2020 14:23:40 +0000 (15:23 +0100)]
Helper::Inventory: warnings
Martin Helmling martin.helmling@octosoft.eu [Mon, 28 Oct 2019 14:27:38 +0000 (15:27 +0100)]
Inventory Helper: Mehr Info zum Alloc-Fehler
Nun werden an die Exception noch zwei weitere Parameter zur Auswertung übergeben:
- accessor: Bei wem tritt der Fehler auf
- allocations: Parameter die zu diesem Fehler geführt haben
zu #9457 und #10417
Martin Helmling martin.helmling@octosoft.eu [Wed, 23 Oct 2019 14:03:00 +0000 (16:03 +0200)]
Inventory Helper: Dokument für Allocations extra
Sollen beim Produzieren/Abfüllen für die notwendigen Artikel auch
Dokumente angegeben werden, so müssen diese extra in die Allocation
Struktur eingebracht werden.
Automatischer Test angepasst: Inventoryhelper nun mit Parameter oe_id
zu #11216
Martin Helmling martin.helmling@octosoft.eu [Wed, 2 Oct 2019 11:53:10 +0000 (13:53 +0200)]
Inventory-Helper: neuer Parameter "constraints" um die Verfügbarkeit von Lagerbeständen einzuschränken
Eine extra Methode prüft gefundene Einträge auf bestimmte Einschränkungen
nachdem die Sortierung stattgefunden hat
zu #9457
Martin Helmling martin.helmling@octosoft.eu [Wed, 25 Sep 2019 14:57:50 +0000 (16:57 +0200)]
Lagerbuchungen mit Produktionsdokumenten anzeigen
Wie Lieferscheine und Aufträge werden nun auch Produktionsaufträge
angezeigt.
zu #11061
Martin Helmling martin.helmling@octosoft.eu [Mon, 12 Aug 2019 08:18:02 +0000 (10:18 +0200)]
Inventory Helper: Artikel laden und Fehlermeldung korrigiert
Damit beim Fehler der Name des Artikels kommt, muss dieser geladen
werden.
Im Fehlerstring wird zuerst der Fehler , dann der Text ausgegeben
Sven Schöling [Mon, 8 Jul 2019 14:56:03 +0000 (16:56 +0200)]
Inventory Helper: Parametercheck verbessert
Sven Schöling [Mon, 8 Jul 2019 14:44:29 +0000 (16:44 +0200)]
Inventory Helper: Methoden der Allocation Klasse gefixt
Sven Schöling [Fri, 5 Jul 2019 14:08:02 +0000 (16:08 +0200)]
Inventory Helper
Sven Schöling [Fri, 27 Nov 2020 15:21:56 +0000 (16:21 +0100)]
GL: Projektpicker
Moritz Bunkus [Fri, 27 Nov 2020 11:40:42 +0000 (12:40 +0100)]
Presenter::date_tag: Validierung sowohl nach Datum als auch übergebener Validierung
Moritz Bunkus [Fri, 27 Nov 2020 11:10:22 +0000 (12:10 +0100)]
Merge pull request #29 from TeXhackse/marei-reimplement-table
Neuimplementierung und Feature Erweiterung für die Aktualisierten LaTeX Templates
Moritz Bunkus [Fri, 27 Nov 2020 09:44:56 +0000 (10:44 +0100)]
HTTP-Header: Lebenszeit für Session-ID-Cookie setzen
Wenn ein Cookie kein Ablaufdatum gesetzt hat, so soll der Browser das
Cookie beim Beenden löschen. Damit ist es de facto unmöglich, ein
Session-Timeout anzugeben, das groß genug ist, damit man auch am
folgenden Arbeitstag noch eingeloggt ist (z.B. 24 Stunden).
`SL::Auth` berücksichtigt die Session-ID-Gültigkeit natürlich selber
schon, ist also die maßgebliche Instanz bzgl. der Gültigkeit, egal wie
lange der Browser das Cookie nun mitschickt. Aber wenn der Browser das
Cookie gar nicht mehr schickt, weil er zwischendurch geschlossen
wurde, kann `SL::Auth` auch nichts mehr machen.
Moritz Bunkus [Tue, 24 Nov 2020 12:26:22 +0000 (13:26 +0100)]
SL::DB::Object: Methode update_collections für One-To-Many-Relationships
Der große Nachteil einer direkten Zuweisung wie
z.B. `$customer->shiptos($::form->{shiptos} // [])` ist, dass Rose
erst mal alle Objekte der Relationship löscht (auch wenn die neuen
Werte Primärschlüsselattribute enthalten) und anschließend neu
INSERTed, was nicht nur deutlich zu aufwändig ist, sondern auch mal
nicht funktionieren kann, wenn es da noch weitere Objekte mit
Fremdschlüsseln auf die zu aktualisierenden Objekte verweisen.
Daher muss man die Behandlung (neu hinzuzufügende, zu löschende & zu
aktualisierende Objekte) selber vornehmen. Das macht nun diese
Methode.
Die Methode gleicht eine Liste von existierenden Objekten einer
One-To-Many-Relationship (z.B. Kunde zu Lieferadressen) mit einer
neuen Liste von Hashrefs ab, die z.B. aus `$::form` stammen können.
Für alle Einträge aus der neuen Liste, die kein Attribut für den
Primärschlüssel enthalten, werden neue Einträge in der Datenbank
angelegt.
Für alle Einträge aus der neuen Liste mit Primärschlüsselattribut wird
das korrespondierende Objekt mit den Werten aus `$::form`
aktualisiert.
Alle existierenden Objekte in `$self->$attribute`, für die es keinen
korrespondierenden Eintrag in der neuen Liste mehr gibt, werden
gelöscht.
Moritz Bunkus [Tue, 24 Nov 2020 11:10:33 +0000 (12:10 +0100)]
AttrDuration für minutes: _in_hours und _in_hours_as_number
Generierte Helfer-Methoden für Attribute, die normalerweise Minuten
speichern. Die Funktion `attribute_in_hours` rechnet die Minuten in
Stunden um (beim Lesen) und umgekehrt (beim Schreiben).
`attribute_in_hours_as_number` formatiert zusätzlich den Wert in
Stunden zusätzlich in das Zahlenformat der Anwender*in bzw. parst
dieses Format beim Schreiben.
Marei (peiTeX) [Mon, 16 Nov 2020 17:34:38 +0000 (18:34 +0100)]
marei: tl2019 compat
Moritz Bunkus [Mon, 23 Nov 2020 12:55:38 +0000 (13:55 +0100)]
Projekt: überflüssigen Code entfernt
Bernd Bleßmann [Mon, 23 Nov 2020 16:29:42 +0000 (17:29 +0100)]
VK-Rechnungsbericht: Web-Template: vergessenes </tr> eingefügt
Bernd Bleßmann [Mon, 23 Nov 2020 12:06:37 +0000 (13:06 +0100)]
VK-Rechnungsbericht: Lieferscheinnummer und Lieferdatum anzeigen können
Bernd Bleßmann [Fri, 20 Nov 2020 19:32:48 +0000 (20:32 +0100)]
CSV-Import Waren: bestehende Makemodels als Array, nicht als Array-Ref
makdemodels verhält sich als makemodels_sorted: Die von Rose erzeugte Methode
berücksichtig offenbar den Kontext - makemodels_sorted gibt immer ein array-ref
[$part->makemodels_sorted] ergibt [ [] ]
[$part->makemodels] ergibt []
Ergab eine Fehlermeldung:
Invalid makemodels argument: ARRAY(0xXXX) at
../../SL/Controller/CsvImport/Part.pm line xxx.
Sven Schöling [Fri, 20 Nov 2020 16:34:19 +0000 (17:34 +0100)]
CsvImport: dateformat Unterstützung
default ist auf dem dateformat des Benutzers
Sven Schöling [Fri, 20 Nov 2020 15:31:33 +0000 (16:31 +0100)]
IR: Projekt Picker für globalproject_id
Bernd Bleßmann [Fri, 20 Nov 2020 16:02:32 +0000 (17:02 +0100)]
Massenerstellen von RG aus LS: geschlossene LS nicht (erneut) verarbeiten
Geschlossene Lieferscheine werden nicht zum Umwandeln in der Liste angezeigt,
das war auch bisher so. Aber weenn man nach dem Erzeuigen der Rechnungen von
der Folgeseite den Browser-Zurück-Knopf drückt, konnten aus den selben
Lieferscheine durchaus nochmal Rechnungen erzeugt werden. Das wird nun
abgefangen.
Bernd Bleßmann [Fri, 20 Nov 2020 15:45:18 +0000 (16:45 +0100)]
Massenerstellen von Rechnungen aus LS: sumbit direkt von der Aktion machen
Das submit, das die Umwandlung der Rechnungen startet, kann direkt über die
ActionBar angegeben werden. Damit fällt die js-Funktion ganz weg.
Bernd Bleßmann [Fri, 20 Nov 2020 15:43:59 +0000 (16:43 +0100)]
Massenerstellen von Rechnungen aus LS: js: Klasse "loading" setzen raus
Das tut hier nichts, denke ich.
Bernd Bleßmann [Fri, 20 Nov 2020 15:34:16 +0000 (16:34 +0100)]
Massenerstellen von Rechnungen aus LS: Aktion nur einmal ausführen
Dafür den Action-Parameter only_once verwenden.
Damit das aber klappt, muss die Prüfung, ob etwas angehakt ist, auch als check
an die Action gehängt werden. Denn sonst wird der Knopf abgeschaltet, auch wenn
nur die Prüfung fehlschlägt, weil man nix angehakt hat.
Moritz Bunkus [Wed, 18 Nov 2020 10:22:25 +0000 (11:22 +0100)]
ClientJS: Funktion zum Setzen der Cursorposition (z.B. in textareas)
Bernd Bleßmann [Tue, 17 Nov 2020 11:37:01 +0000 (12:37 +0100)]
locales-Lauf 'en'
Moritz Bunkus [Mon, 16 Nov 2020 16:02:38 +0000 (17:02 +0100)]
CSS/JS: Git-Revision von HEAD als GET-Parameter verwenden
Webbrowser cachen CSS & JS sehr aggressiv. Das ist während der
Entwicklung störend, weshalb es bereits seit langem die
Konfigurationsoption `auto_reload_resources` gibt. Ist diese an, so
wird an alle CSS- und JS-URLs ein GET-Parameter `?rand=<Zufallswert>`
angehängt wird, um das Cachen auszuhebeln.
Dieser Commit führt etwas Ähnliches ein, das für den Produktivbetrieb
ohne `auto_reload_resources` gedacht ist. Wenn kivitendo erkennt, dass
es aus git heraus läuft (also ein `.git`-Verzeichnis existiert), so
parset es die Revision von `HEAD` und nimmt das als GET-Parameter
`?rand=<Revision>`. Der Vorteil ist, dass nach Updates einer
Produktivinstallation die Webbrowser der Anwender*innen genau einmal
alle Ressourcen neu laden, weil sich ja die Git-Revisionsnummer
geändert hat. Anschließend können sie die Ressourcen aber wieder
normal cachen, bis das nächste Update kommt.
Es wird hierfür übrigens kein installiertes git-Executable benötigt;
die Infos werden zwecks Performance direkt aus den Dateien gelesen,
anstatt bei jedem Request ein Programm auszuführen.
Zukünftig könnte man ein analoges Verfahren anwenden, wenn es kein
`.git`-Verzeichnis gibt, und dann zumindest die
kivitendo-Versionsnummer verwenden.
Moritz Bunkus [Mon, 16 Nov 2020 14:16:19 +0000 (15:16 +0100)]
L/P.select_tag: Unterstützung für Text-Filter
Gedacht für Selects mit size="123"-Attribut, die also als Liste und
nicht als Combobox gerendert werden.
Es wird direkt oberhalb der Select eine Text-Eingabezeile angezeigt,
die als dynamischer Filter für die Optionen verwendet wird. Bei jeder
Änderung (keyup) werden nur noch diejenigen Einträge in der Select
angezeigt, in deren Text der Suchfilter-Begriff irgendwo
vorkommt (ohne Berücksichtigung von Groß-/Kleinschreibung).
• with_filter=1 schaltet den Filter an
• filter_placeholder=LxERP.t8("Placeholder text") gibt einen
Platzhalter-Text an
Moritz Bunkus [Mon, 16 Nov 2020 16:15:41 +0000 (17:15 +0100)]
L/P.select_tag: Collection, die aus einem leeren Wert besteht, ignorieren
Unter Umständen kann es durch wantarray & Durchschieben in Templates
passieren, dass der $collection-Parameter nicht leer ist (obwohl er
leer sein sollte), und statt dessen ein leerer String ist. Bisher
wurde daraus eine Liste mit einem leeren Eintrag, auch wenn
`with_empty` nicht angegeben war.
Ab sofort solche Einträge einfach als leere Liste werten.
Moritz Bunkus [Fri, 13 Nov 2020 10:31:48 +0000 (11:31 +0100)]
Wiederkehrende Rechnungen: Anrede in E-Mail-Body-Vorbelegung verwenden
Moritz Bunkus [Fri, 13 Nov 2020 09:38:51 +0000 (10:38 +0100)]
Neuer Auftragscontroller: veralteten TODO-Eintrag gelöscht
Moritz Bunkus [Fri, 13 Nov 2020 09:36:05 +0000 (10:36 +0100)]
Neuer Auftragscontroller: Drucker-ID an Template-Auswahlmechanismus durchreichen
Der Auswahlmechanismus kann bei der Suche nach der zu verwendenden
Vorlage das beim Drucker hinterlegte Vorlagenkürzel
berücksichtigen. Dafür muss er aber auch gesagt bekommen, welcher
Drucker ausgewählt wurde.
Jan Büren [Thu, 12 Nov 2020 12:08:37 +0000 (13:08 +0100)]
Doku: Zuviele TeX-Pakete angegeben
Jan Büren [Thu, 12 Nov 2020 12:06:08 +0000 (13:06 +0100)]
Vergessener Doku-Lauf
Jan Büren [Thu, 12 Nov 2020 11:54:01 +0000 (12:54 +0100)]
typo
Jan Büren [Wed, 11 Nov 2020 12:16:16 +0000 (13:16 +0100)]
Revert "Dialogbuchen: automatisches Kopieren des Betrags entfernt"
Aufgrund von vielfachen Kundenwunsch ...
This reverts commit
6755770b9e487756da69b7e0dcc6efb88513170e.
Moritz Bunkus [Tue, 10 Nov 2020 11:29:59 +0000 (12:29 +0100)]
Leistungsdatum: Lieferscheine (nur als Hidden)
Moritz Bunkus [Tue, 10 Nov 2020 11:19:10 +0000 (12:19 +0100)]
Leistungsdatum: Order-Controller
Bernd Bleßmann [Tue, 10 Nov 2020 11:11:36 +0000 (12:11 +0100)]
changelog: Typo
Moritz Bunkus [Tue, 10 Nov 2020 10:38:12 +0000 (11:38 +0100)]
Leistungsdatum: wiederkehrende Rechnungen
Moritz Bunkus [Tue, 10 Nov 2020 10:37:41 +0000 (11:37 +0100)]
Leistungsdatum: DATEV, Debitoren-/Kreditoren-/Dialogbuchungen
Moritz Bunkus [Tue, 10 Nov 2020 10:35:45 +0000 (11:35 +0100)]
Einkauf/Verkauf: Feld »Leistungsdatum« für Steuerberechnung
Moritz Bunkus [Wed, 4 Nov 2020 16:28:35 +0000 (17:28 +0100)]
Wiederkehrende Rechnungen: Druck-/E-Mail-Fehler in Zusammenfassungs-Mail
Moritz Bunkus [Fri, 30 Oct 2020 15:01:34 +0000 (16:01 +0100)]
Pflichtenhefte: Gültigkeitsdatum in Angeboten auch ohne Zahlungsbedingungen setzen
Moritz Bunkus [Wed, 21 Oct 2020 08:25:51 +0000 (10:25 +0200)]
Dialogbuchen: HTML-Code vereinfacht
Moritz Bunkus [Tue, 10 Nov 2020 10:24:24 +0000 (11:24 +0100)]
Wiederkehrende Rechnungen: bei E-Mail-Versand Rechnungsattribute als Variablen
Praxisbeispiel ist, dass man im Betreff der Rechnung die
Rechnungsnummer angeben möchte; das geht nun mit z.B. »Rechnung <%invnumber%>«.
Moritz Bunkus [Tue, 10 Nov 2020 09:52:54 +0000 (10:52 +0100)]
changelog-Update
Moritz Bunkus [Tue, 10 Nov 2020 08:30:10 +0000 (09:30 +0100)]
Neuer Angebots-/Auftragscontroller: Unterstützung für Artikelübersetzungen 3
Die longdescription wird jetzt doch als Hidden im Formular mit
übertragen. Dadurch werden gewisse Randfälle und Diskrepanzen zwischen
Form-Inhalt und Datenbank-Inhalt vermieden. Nur hiermit ist es jetzt
auch möglich, auch den Langtext durch die Funktion »aus Stammdaten
aktualisieren« zurückzusetzen.
Moritz Bunkus [Mon, 9 Nov 2020 15:49:25 +0000 (16:49 +0100)]
Neuer Angebots-/Auftragscontroller: Unterstützung für Artikelübersetzungen 2
Bei Funktion »Artikeldaten aus Stammdaten holen«.
Funktioniert noch nicht für die Langbeschreibung, weil die Funktion
das von der Architektur her bisher gar nicht unterstützt.
Moritz Bunkus [Mon, 9 Nov 2020 15:21:15 +0000 (16:21 +0100)]
Neuer Angebots-/Auftragscontroller: Unterstützung für Artikelübersetzungen 1
Bisher nur beim Hinzfügen von Artikeln.
Moritz Bunkus [Mon, 9 Nov 2020 14:28:35 +0000 (15:28 +0100)]
Neuer Angebots-/Auftragscontroller: Sprach-Drop-Down aus Print-Optionen in Hauptbeleg verschoben
Moritz Bunkus [Mon, 9 Nov 2020 13:06:26 +0000 (14:06 +0100)]
Einkauf/Verkauf: Sprach-Drop-Down aus Print-Optionen in Hauptbeleg verschoben
Noch nicht erledigt ist der neue Angebots-/Auftragscontroller.
Moritz Bunkus [Mon, 9 Nov 2020 12:27:19 +0000 (13:27 +0100)]
Angebote/Aufträge: Abteilungen sortiert anzeigen
Moritz Bunkus [Mon, 9 Nov 2020 11:46:42 +0000 (12:46 +0100)]
Einkaufsrechnungen: Redirect nach Buchen auf Bearbeiten, nicht Erfassen
1. In allen anderen Einkaufs- und Verkaufsmasken landet man nach dem
Speichern/Buchen wieder im gerade gespeicherten/gebuchten Beleg.
2. Wenn in der Mandantenkonfiguration das Feature »direktes Erfassen
von Einkaufsrechnungen« aus ist, so darf man gar nicht direkt die
Erfassen-Funktion aufrufen und bekommt folglich nach dem Redirect
eine Fehlermeldung, dass man keine Rechte auf die Funktion habe.
Moritz Bunkus [Mon, 9 Nov 2020 10:19:10 +0000 (11:19 +0100)]
Employee-Controller: beim Gelöscht-Setzen Verknüpfung in Auth-DB lösen
Beim Anlegen von Benutzer*inen in der Auth-DB werden sie nicht
zwangsweise auch in der Mandanten-DB angelegt, z.B. wenn die in dem
Moment noch nicht existiert. Daher werden bei jedem Login in einem
Mandanten alle Benutzer*innen, die in dem Moment mit dem Mandanten
verknüpft sind, in der Mandanten-DB angelegt (falls noch nicht
existierend) und das »gelöscht«-Flag wieder entfernt.
Beim Löschen von Benutzer*innen aus dem Admin-Bereich heraus ist das
soweit auch OK, denn dann wird in der Auth-DB der Eintrag entfernt und
in der Mandanten-DB das Login auf »gelöscht« gesetzt.
Es gibt aber auch im Mandantenbereich einen Controller zum Bearbeiten
von Benutzer*innen, in dem das »gelöscht«-Flag gesetzt werden
kann. Und hier wurde bisher nur die Mandanten-DB angefasst, nicht aber
die Auth-DB. Wenn also hier ein(e) Benutzer*in auf »gelöscht« gesetzt
wird, so wurde beim nächsten Login in den Mandanten in der Auth-DB
nachgesehen, dort war der Account noch verknüpft, also wurde das
»gelöscht«-Flag wieder entfernt.
Fix ist, dass nun auch in der Auth-DB die Verknüpfung des Accounts mit
dem Mandanten entfernt wird. Der Account wird in der Auth-DB aber
nicht gelöscht, weil er ja auch noch auf andere Mandanten Zugriff
haben könnte.
Fix für #97.
Moritz Bunkus [Mon, 9 Nov 2020 09:59:06 +0000 (10:59 +0100)]
SL::DB::Employee: Warnung vermeiden
Moritz Bunkus [Mon, 9 Nov 2020 09:43:05 +0000 (10:43 +0100)]
Merge branch '2020-helper-number' into master
Moritz Bunkus [Mon, 9 Nov 2020 09:41:55 +0000 (10:41 +0100)]
Number-Helper-Tests: Warnungen vermeiden
$config war unbenutzt und wurde deshalb entfernt. Die Variable stammt
aus dem alten form/round_amount.t-Test, wo sie ebenfalls zwar
deklariert war aber nicht benutzt wurde.
Sven Schöling [Fri, 6 Nov 2020 17:06:00 +0000 (18:06 +0100)]
SL::Helper::Number: API Verbesserungen
- API ist jetzt einheitlich ($amount, [$places], %params)
- Benennung ist einheitlich _[format|parse|round]_[number|total]
- Tests aus t/helper/round.t nach t/helper/number.t verschoben
- Tests für alle neuen Funktionen hinzugefügt
- Doku-Update
- SL::Form angepasst
- EXPORT_ALL tag ":ALL" auf caps umgestellt
Jan Büren [Thu, 5 Nov 2020 07:52:26 +0000 (08:52 +0100)]
Auslagern über Rechnung und Seriennummer besser kombinieren
Falls keine Seriennummer im Beleg dennoch probieren die Ware
auszulagern, sodass der Bearbeiter eine entsprechende Fehlermeldung bekommt.