kivitendo-erp.git
3 years agoKundenstammdaten: beim Anlegen Verkäufer*in setzen wenn kein »edit all«-Recht
Moritz Bunkus [Thu, 17 Dec 2020 10:37:35 +0000 (11:37 +0100)]
Kundenstammdaten: beim Anlegen Verkäufer*in setzen wenn kein »edit all«-Recht

Personen, die nur »edit«-Rechte, nicht aber »edit all«-Rechte haben,
dürfen nur noch eigene Kunden bearbeiten. Daher ist es sinnvoll, dass
beim Neuanlegen das Feld »Verkäufer*in« bereits auf die aktuelle
Person gesetzt ist.

3 years agoKunden-/Lieferantenstammdaten: Berechtigungsmodell gefixt
Moritz Bunkus [Thu, 17 Dec 2020 10:37:25 +0000 (11:37 +0100)]
Kunden-/Lieferantenstammdaten: Berechtigungsmodell gefixt

Neues Modell sieht wie folgt aus:

1. Alle Personen haben Leserechte auf alle Kunden- &
   Lieferantenstammdaten. Das betrifft nicht nur die Stammdatenmasken,
   sondern auch die AJAJ-Autovervollständigung (Kunden-/
   Lieferanten-Picker) oder die Detail-Popup-Fenster in Einkaufs-/
   Verkaufsbelegmasken.

2. Personen mit »edit«-Recht aber ohne »edit all«-Recht dürfen nur die
   eigenen Kundenstammdaten verändern (speichern/löschen), wobei
   »eigen« definiert ist als »aktuelle Person ist Verkäufer*in des
   Kunden«. Neue Kunden dürfen angelegt werden. Bei Lieferanten dürfen
   hingegen alle Stammdaten bearbeitet werden.

3. Personen mit »edit all«-Recht haben Vollzugriff auf alle Kunden- &
   Lieferantenstammdaten.

3 years agoPOD fix: Rose Syntax
Jan Büren [Fri, 1 Jan 2021 09:46:24 +0000 (10:46 +0100)]
POD fix: Rose Syntax

Zeitvergleich braucht { . ilike gibt es nicht in Rose:
like_operator => 'like', # only applicable to Postgres, defaulted to undef, i.e. render_as_table() uses 'ilike' for Postgres by default

3 years agoBericht Angebote/Aufträge: internen Bemerkungen filtern und anzeigen können
Bernd Bleßmann [Mon, 21 Dec 2020 16:42:33 +0000 (17:42 +0100)]
Bericht Angebote/Aufträge: internen Bemerkungen filtern und anzeigen können

3 years agoBericht Angebote/Aufträge: HTML: fehlende Ende-Tags hinzugefügt
Bernd Bleßmann [Mon, 21 Dec 2020 16:41:36 +0000 (17:41 +0100)]
Bericht Angebote/Aufträge: HTML: fehlende Ende-Tags hinzugefügt

3 years agoTestfall für BT: Punkte. Copy & Paste Fehler von a695c behoben
Jan Büren [Fri, 18 Dec 2020 11:24:48 +0000 (12:24 +0100)]
Testfall für BT: Punkte. Copy & Paste Fehler von a695c behoben

3 years agoBT: Punkte. Copy & Paste Fehler von a695c behoben
Jan Büren [Fri, 18 Dec 2020 10:28:26 +0000 (11:28 +0100)]
BT: Punkte. Copy & Paste Fehler von a695c behoben

open_amount mit open_amount vergleichen

3 years agoS:C:H:ReportGenerator: Spalteninformationen einzeln zuweisen.
Bernd Bleßmann [Thu, 17 Dec 2020 21:50:59 +0000 (22:50 +0100)]
S:C:H:ReportGenerator: Spalteninformationen einzeln zuweisen.

Hintergrund: Das "fat-comma (=>)" interpretiert seine rechte Seite im
Listenkontext, was dazu führen kann, dass der Hash, der aufgebaut werden
soll, durcheinander gerät, wenn z.B. $def->{sub} eine Liste zurückliefert
oder gar nichts ($def->{sub} = sub { return }).

Interessant im Zusammenhang:
https://stackoverflow.com/questions/3435122/whats-the-difference-between-return-and-return-undef-in-perl

3 years agoBuchungsjournal: auch globale Projektnummer im Bericht mit anzeigen
Bernd Bleßmann [Wed, 16 Dec 2020 16:56:49 +0000 (17:56 +0100)]
Buchungsjournal: auch globale Projektnummer im Bericht mit anzeigen

3 years agoBuchungsjournal: Abteilung im Bericht anzeigen können
Bernd Bleßmann [Wed, 16 Dec 2020 15:42:02 +0000 (16:42 +0100)]
Buchungsjournal: Abteilung im Bericht anzeigen können

3 years agoBuchungsjournal: Zwischensumme in Suchmaske an den Schluss gesetzt
Bernd Bleßmann [Wed, 16 Dec 2020 11:07:43 +0000 (12:07 +0100)]
Buchungsjournal: Zwischensumme in Suchmaske an den Schluss gesetzt

3 years agoBuchungsjournal: Spalte f. Bilanz im Bericht direkt hinter Umsatzsteuer
Bernd Bleßmann [Wed, 16 Dec 2020 11:36:35 +0000 (12:36 +0100)]
Buchungsjournal: Spalte f. Bilanz im Bericht direkt hinter Umsatzsteuer

Dann sind die Zahlen zusammen

3 years agoSL::GL: POD: keine leere section; <gt> escapen
Bernd Bleßmann [Wed, 16 Dec 2020 11:18:51 +0000 (12:18 +0100)]
SL::GL: POD: keine leere section; <gt> escapen

3 years agochangelog f. Menü- und Rechte-Anpassung "Produktivität"
Bernd Bleßmann [Mon, 14 Dec 2020 17:00:29 +0000 (18:00 +0100)]
changelog f. Menü- und Rechte-Anpassung "Produktivität"

3 years agoBerechtigungen für Produktiovität als eigene Kategorie …
Bernd Bleßmann [Mon, 14 Dec 2020 16:45:22 +0000 (17:45 +0100)]
Berechtigungen für Produktiovität als eigene Kategorie …

und die bisherigen Produktivitäts-Rechte und E-Mail-Journal-Rechte
darunter anzeigen.

3 years agoMenü Produktivität: Zugriffsrechte nicht am Haupteintrag fest machen …
Bernd Bleßmann [Mon, 14 Dec 2020 16:28:32 +0000 (17:28 +0100)]
Menü Produktivität: Zugriffsrechte nicht am Haupteintrag fest machen …

und eigene Zugriffssregel für E-Mail-Journal.

So kann z.B. das Recht, E-Mail-Journal ansehen, getrennt von der
Produktivität gesetzt werden.

Ein Hauptmenüpunkt wird nicht angezeigt, wenn keiner seiner Kinder
(z.B. wg. fehlender Rechte) angezeigt wird - wenn also keines der Rechte
vorhanden ist, so wird, wie vorher auch, der Haupteintrag auch nicht
gezeigt.

3 years agoLocales-Läufe
Bernd Bleßmann [Mon, 14 Dec 2020 15:10:00 +0000 (16:10 +0100)]
Locales-Läufe

3 years agoS:D:Helper:TransNumberGenerator: Warnung vermeiden.
Bernd Bleßmann [Mon, 14 Dec 2020 11:01:09 +0000 (12:01 +0100)]
S:D:Helper:TransNumberGenerator: Warnung vermeiden.

Getriggert durch Tests (./t/wh/inventory.t). Tritt aber nur auf, wenn
der Nummerkreis noch leer ist.

3 years agoDialogbuchungen um Boolean imported erweitert.
Jan Büren [Mon, 28 Sep 2020 15:24:57 +0000 (17:24 +0200)]
Dialogbuchungen um Boolean imported erweitert.

Buchungen mit diesem Boolean können beim DATEV-Export
gefiltert werden. Anwendungsfall sind bspw. in DATEV
erstellte Lohnbuchungen, die dann in kivi importiert werden

3 years agoGLTransaction:: add_chart_booking um get_active_taxkey erweitert
Jan Büren [Mon, 14 Dec 2020 08:31:32 +0000 (09:31 +0100)]
GLTransaction:: add_chart_booking um get_active_taxkey erweitert

Der Aufruf von add_chart_booking muss sich nicht mehr
darum kümmern welcher Steuerschlüssel gesetzt sein muss, wenn
er einfach nur den vorkonfigurierten Steuerschlüssel setzen will.
Dementsprechend ist param{tax_id} kein Pflichtparameter mehr.
POD ergänzt und mit Testfällen abgesichert (19% / 16% Fall).

3 years agoArtikelstammdaten: in Übersetzungen Zeilenumbrüche verwenden können
Moritz Bunkus [Fri, 11 Dec 2020 10:07:47 +0000 (11:07 +0100)]
Artikelstammdaten: in Übersetzungen Zeilenumbrüche verwenden können

Das Eingabefeld für die Beschreibung im Basisdaten-Tab erlaubt die
Eingabe von Zeilenumbrüchen. Daher muss das auch für die übersetzen
Beschreibungen gehen.

3 years agoMerge branch 'f-factur-x-und-xrechnung'
Moritz Bunkus [Thu, 10 Dec 2020 14:58:08 +0000 (15:58 +0100)]
Merge branch 'f-factur-x-und-xrechnung'

3 years agoInventur: Part-Picker such auch nach Lieferantenartikelnummer
Bernd Bleßmann [Wed, 9 Dec 2020 13:26:11 +0000 (14:26 +0100)]
Inventur: Part-Picker such auch nach Lieferantenartikelnummer

3 years agoKontoauszug verbuchen: Verkaufsgutschriften nicht negativ bewerten
Jan Büren [Wed, 9 Dec 2020 11:17:13 +0000 (12:17 +0100)]
Kontoauszug verbuchen: Verkaufsgutschriften nicht negativ bewerten

Punkte für wrong_sign höher gesetzt und beide Gutschriftentypen
jetzt sauber abgegrenzt (credit_note und negative_ap_transaction)

3 years agoBankTransaction: Treffer für Kreditorengutschriften erhöhen
Jan Büren [Wed, 9 Dec 2020 10:42:06 +0000 (11:42 +0100)]
BankTransaction: Treffer für Kreditorengutschriften erhöhen

negativ_ap_transaction sollte keine Strafpunkte mehr fürs
Vorzeichen erhalten. TODO: Verkaufs-Gutschriften prüfen

3 years agoKontoauszug verbuchen: Vorschlagsliste verbessern
Jan Büren [Wed, 9 Dec 2020 10:35:59 +0000 (11:35 +0100)]
Kontoauszug verbuchen: Vorschlagsliste verbessern

- Kommentar stimmt nicht mit dem Code überein.
- Die Prüfung verhindert das Banktransaktionen mit einer Summe größer der
  Rechnungssumme als Vorschlag zugewiesen werden. Das war wichtig,
  weil der Payment-Helper zu Beginn immer die komplette Bankbewegung auf
  einen Beleg gebucht hat. Das ist mittlerweile besser gelöst.

3 years agoDialogbuchung: js-Validator einbinden. Damit werden die Datumsfelder validiert
Bernd Bleßmann [Thu, 3 Dec 2020 17:06:35 +0000 (18:06 +0100)]
Dialogbuchung: js-Validator einbinden. Damit werden die Datumsfelder validiert

… und auch formatiert.

3 years agochangelog für Leistungsdatum
Bernd Bleßmann [Thu, 3 Dec 2020 17:02:55 +0000 (18:02 +0100)]
changelog für Leistungsdatum

3 years agoS/D/Order: new_from_multi: Leistungsdatum nur übernehmen, wenn überall gleich.
Bernd Bleßmann [Thu, 3 Dec 2020 16:55:42 +0000 (17:55 +0100)]
S/D/Order: new_from_multi: Leistungsdatum nur übernehmen, wenn überall gleich.

Für den Workflow, aus der Auftrags-Liste mehrere Aufträge zu einem
zusammenzufasssen.

3 years agoKreditorenbuchungen: Automatisches Setzen von Fälligkeitsdatum
Sven Schöling [Thu, 3 Dec 2020 16:00:15 +0000 (17:00 +0100)]
Kreditorenbuchungen: Automatisches Setzen von Fälligkeitsdatum

3 years agoTest: Skonto in Kreditorenbuchungen
Sven Schöling [Thu, 3 Dec 2020 15:59:43 +0000 (16:59 +0100)]
Test: Skonto in Kreditorenbuchungen

3 years agoKreditorenbuchungen: Zahlungsbedingungen in Belegvorlagen
Sven Schöling [Thu, 3 Dec 2020 15:44:22 +0000 (16:44 +0100)]
Kreditorenbuchungen: Zahlungsbedingungen in Belegvorlagen

3 years agoKreditorenbuchungen: Zahlungsbedingungen laden/speichern
Sven Schöling [Thu, 3 Dec 2020 15:41:51 +0000 (16:41 +0100)]
Kreditorenbuchungen: Zahlungsbedingungen laden/speichern

3 years agoKreditorenbuchungen: Bemerkungenblock an Rechnungen angepasst
Sven Schöling [Wed, 2 Dec 2020 15:46:51 +0000 (16:46 +0100)]
Kreditorenbuchungen: Bemerkungenblock an Rechnungen angepasst

3 years agomailmap update
Sven Schöling [Wed, 2 Dec 2020 15:36:20 +0000 (16:36 +0100)]
mailmap update

3 years agoAuftrags-Controller: Auftragswahrscheinlichkeit anzeigen: Typo im as_date-Attr.
Bernd Bleßmann [Wed, 2 Dec 2020 17:33:33 +0000 (18:33 +0100)]
Auftrags-Controller: Auftragswahrscheinlichkeit anzeigen: Typo im as_date-Attr.

3 years agoMerge branch '2020-leistungsdatum'
Moritz Bunkus [Thu, 3 Dec 2020 13:13:09 +0000 (14:13 +0100)]
Merge branch '2020-leistungsdatum'

3 years agoSL::DB::Invoice->new_from: auch Leistungsdatum (tax_point) übernehmen
Moritz Bunkus [Thu, 3 Dec 2020 13:12:33 +0000 (14:12 +0100)]
SL::DB::Invoice->new_from: auch Leistungsdatum (tax_point) übernehmen

3 years agoPreisanfrage/Aufträge: dort, wo es ein Liefertermin gibt, diesen f. Steuer nehmen
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

3 years agoAuftrags-Controller: bei Änderung Leistungsdatum/Liefertermin neu berechnen
Bernd Bleßmann [Thu, 3 Dec 2020 11:44:58 +0000 (12:44 +0100)]
Auftrags-Controller: bei Änderung Leistungsdatum/Liefertermin neu berechnen

3 years agoAuftrags-Controller: Leistungsdatum bei Workflow berücksichtigen
Bernd Bleßmann [Thu, 3 Dec 2020 11:56:32 +0000 (12:56 +0100)]
Auftrags-Controller: Leistungsdatum bei Workflow berücksichtigen

3 years agodisplay_row: ship_$row nicht formatiert ausgeben
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.

3 years agoOrder-Controller: Umwandlung: Berechnung bereits gelieferter/abgerechneter Mengen...
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.

3 years agoOrder-Controller: Umwandlung: gemeinsamen Code in eigene Funktion ausgelagert
Moritz Bunkus [Thu, 3 Dec 2020 09:34:04 +0000 (10:34 +0100)]
Order-Controller: Umwandlung: gemeinsamen Code in eigene Funktion ausgelagert

3 years agoLXDebug dump_sql_result: Spaltenanordnung je nach Inhalt
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.

3 years agoSEPA: In Details: Buttons »Buchen« und »Zahlungsliste« immer anzeigen
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.

3 years agoHTTP-Header: Lebenszeit für Session-ID-Cookie setzen gefixt
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.

3 years agoInventory: Fehlermeldung gefixt
Moritz Bunkus [Mon, 30 Nov 2020 09:48:46 +0000 (10:48 +0100)]
Inventory: Fehlermeldung gefixt

3 years agot/wh/inventory.t: Nach Test richtig aufräumen
Sven Schöling [Fri, 27 Nov 2020 16:37:34 +0000 (17:37 +0100)]
t/wh/inventory.t: Nach Test richtig aufräumen

3 years agoInventory Helper: Fehlerhaften Aufruf mit croak abbrechen statt mit Excception
Sven Schöling [Fri, 27 Nov 2020 16:25:06 +0000 (17:25 +0100)]
Inventory Helper: Fehlerhaften Aufruf mit croak abbrechen statt mit Excception

3 years agoInventory Helper: Doku Update
Sven Schöling [Fri, 27 Nov 2020 16:15:21 +0000 (17:15 +0100)]
Inventory Helper: Doku Update

3 years agoInventory Helper: Allocation ausgelagert in eigene Datei
Sven Schöling [Fri, 27 Nov 2020 16:14:49 +0000 (17:14 +0100)]
Inventory Helper: Allocation ausgelagert in eigene Datei

3 years agoInventory Helper: Auf Number Helper Änderungen angepasst
Sven Schöling [Fri, 27 Nov 2020 16:13:34 +0000 (17:13 +0100)]
Inventory Helper: Auf Number Helper Änderungen angepasst

3 years agoInventory: mehr tests
Sven Schöling [Fri, 23 Oct 2020 18:05:15 +0000 (20:05 +0200)]
Inventory: mehr tests

3 years agoInventory::Allocation: transfer_object
Sven Schöling [Fri, 23 Oct 2020 18:03:11 +0000 (20:03 +0200)]
Inventory::Allocation: transfer_object

3 years agoInventory: doku typos
Sven Schöling [Fri, 23 Oct 2020 16:41:52 +0000 (18:41 +0200)]
Inventory: doku typos

3 years agoInventory: Stückbehandlung und dispotype no_stock entfernt
Sven Schöling [Fri, 23 Oct 2020 16:21:46 +0000 (18:21 +0200)]
Inventory: Stückbehandlung und dispotype no_stock entfernt

3 years agoInventory: bestbefore handling
Sven Schöling [Fri, 23 Oct 2020 11:42:52 +0000 (13:42 +0200)]
Inventory: bestbefore handling

3 years agoInventory: production order und recipe features entfernt
Sven Schöling [Fri, 16 Oct 2020 16:08:20 +0000 (18:08 +0200)]
Inventory: production order und recipe features entfernt

3 years agoInventory: with_objects cleanup
Sven Schöling [Fri, 16 Oct 2020 16:07:34 +0000 (18:07 +0200)]
Inventory: with_objects cleanup

3 years agot/wh/inventory.t: Reservierungen entfernt
Sven Schöling [Fri, 16 Oct 2020 12:25:54 +0000 (14:25 +0200)]
t/wh/inventory.t: Reservierungen entfernt

3 years agoInventory Helper: Reservierungen entfernt
Sven Schöling [Fri, 16 Oct 2020 12:19:35 +0000 (14:19 +0200)]
Inventory Helper: Reservierungen entfernt

3 years agoInventory Helper: _qty auf _number umgestellt
Sven Schöling [Fri, 16 Oct 2020 12:11:05 +0000 (14:11 +0200)]
Inventory Helper: _qty auf _number umgestellt

3 years agoInventory Helper: Bessere Fehlermeldung bei fehlenden Parametern
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

3 years agoInventory-Helper: Constraints erweitert mit "reserve_for"
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

3 years agoInventory-Helper: Nutzung von falschem Parameter
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"

3 years agoInventory-Helper: Nur gesetzte Constraints berücksichtigen
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

3 years agoInventory: allocate bevorzugt jetzt früherere Lagerbewegung
Sven Schöling [Wed, 20 Nov 2019 14:48:06 +0000 (15:48 +0100)]
Inventory: allocate bevorzugt jetzt früherere Lagerbewegung

3 years agoInventory: Doku update. Funktionen statt Klassenmthoden
Sven Schöling [Wed, 20 Nov 2019 14:28:56 +0000 (15:28 +0100)]
Inventory: Doku update. Funktionen statt Klassenmthoden

3 years agoInventory: warnings
Sven Schöling [Wed, 20 Nov 2019 13:22:45 +0000 (14:22 +0100)]
Inventory: warnings

3 years agoInventory: Parameter oe_id in for_object_id umbenannt und besser dokumentiert
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

3 years agoInventory-Helper: Restmenge auch runden, Stück immer ganzzahlig
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

3 years agoInventory-Helper: falscher Fehlermeldung
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

3 years agoHelper::Inventory: warnings
Sven Schöling [Tue, 28 Jan 2020 14:23:40 +0000 (15:23 +0100)]
Helper::Inventory: warnings

3 years agoInventory Helper: Mehr Info zum Alloc-Fehler
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

3 years agoInventory Helper: Dokument für Allocations extra
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

3 years agoInventory-Helper: neuer Parameter "constraints" um die Verfügbarkeit von Lagerbeständ...
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

3 years agoLagerbuchungen mit Produktionsdokumenten anzeigen
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

3 years agoInventory Helper: Artikel laden und Fehlermeldung korrigiert
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

3 years agoInventory Helper: Parametercheck verbessert
Sven Schöling [Mon, 8 Jul 2019 14:56:03 +0000 (16:56 +0200)]
Inventory Helper: Parametercheck verbessert

3 years agoInventory Helper: Methoden der Allocation Klasse gefixt
Sven Schöling [Mon, 8 Jul 2019 14:44:29 +0000 (16:44 +0200)]
Inventory Helper: Methoden der Allocation Klasse gefixt

3 years agoInventory Helper
Sven Schöling [Fri, 5 Jul 2019 14:08:02 +0000 (16:08 +0200)]
Inventory Helper

3 years agoGL: Projektpicker
Sven Schöling [Fri, 27 Nov 2020 15:21:56 +0000 (16:21 +0100)]
GL: Projektpicker

3 years agoPresenter::date_tag: Validierung sowohl nach Datum als auch übergebener Validierung
Moritz Bunkus [Fri, 27 Nov 2020 11:40:42 +0000 (12:40 +0100)]
Presenter::date_tag: Validierung sowohl nach Datum als auch übergebener Validierung

3 years agoMerge pull request #29 from TeXhackse/marei-reimplement-table
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

3 years agoHTTP-Header: Lebenszeit für Session-ID-Cookie setzen
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.

3 years agoFactur-X/ZUGFeRD: Unterstütztung für Profil »XRechnung 2.0.0«
Moritz Bunkus [Thu, 26 Nov 2020 14:44:00 +0000 (15:44 +0100)]
Factur-X/ZUGFeRD: Unterstütztung für Profil »XRechnung 2.0.0«

3 years agoFactur-X/ZUGFeRD-Import: Falsche Nutzung von t8() für Fehlermeldung korrigiert
Moritz Bunkus [Thu, 26 Nov 2020 14:38:33 +0000 (15:38 +0100)]
Factur-X/ZUGFeRD-Import: Falsche Nutzung von t8() für Fehlermeldung korrigiert

3 years agoFactur-X/ZUGFeRD: in »Factur-X/ZUGFeRD« umbenannt
Moritz Bunkus [Thu, 26 Nov 2020 13:04:32 +0000 (14:04 +0100)]
Factur-X/ZUGFeRD: in »Factur-X/ZUGFeRD« umbenannt

Mit ZUGFeRD-Standard Version 2.1.1 ist der offizielle Name des
EU-Standards schlicht Factur-X. ZUGFeRD ist nur noch der tolerierte
alte Name.

In der Oberfläche ist nun überall von »Factur-X/ZUGFeRD« die Rede.

Im Quellcode heißen die Module hingegen weiterhin `SL::…::ZUGFeRD`,
weil die Umstellung ansonsten zu groß und irgendwo auch nicht so nötig
ist.

Es ändern sich auch die ganzen Namen in den Metadaten des PDFs und der
XML-Datei:

• Namensraum in der für Factur-X/ZUGFeRD relevanten XML-Elemente in
  den XMP-Metadaten im PDF
• Name des Dateianhangs der Rechnungs-XML im PDF (»factur-x.xml«)
• Standard-Identifier in der Rechnungs-XML

3 years agoFactur-X/ZUGFeRD: neues Feld »Unsere Leitweg-ID beim Kunden« in Kundenstammdaten
Moritz Bunkus [Thu, 26 Nov 2020 10:52:01 +0000 (11:52 +0100)]
Factur-X/ZUGFeRD: neues Feld »Unsere Leitweg-ID beim Kunden« in Kundenstammdaten

Wird für XRechnungs-Profil von ZUGFeRD benötigt.

3 years agoFactur-X/ZUGFeRD: UStID-Nr des Kunden nur ausgeben, wenn tatsächlich angegeben
Moritz Bunkus [Thu, 26 Nov 2020 10:04:09 +0000 (11:04 +0100)]
Factur-X/ZUGFeRD: UStID-Nr des Kunden nur ausgeben, wenn tatsächlich angegeben

3 years agoFactur-X/ZUGFeRD: Verkäufernamen aus Employee-Objekt nehmen
Moritz Bunkus [Thu, 26 Nov 2020 10:03:15 +0000 (11:03 +0100)]
Factur-X/ZUGFeRD: Verkäufernamen aus Employee-Objekt nehmen

Wichtig für Personen, die inzwischen aus der Auth-Datenbank gelöscht
wurden. Für die existiert der Employee-Eintrag weiterhin, und von dort
kann man den Namen beziehen.

3 years agoSL::DB::Object: Methode update_collections für One-To-Many-Relationships
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.

3 years agoAttrDuration für minutes: _in_hours und _in_hours_as_number
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.

3 years agomarei: tl2019 compat
Marei (peiTeX) [Mon, 16 Nov 2020 17:34:38 +0000 (18:34 +0100)]
marei: tl2019 compat

3 years agoProjekt: überflüssigen Code entfernt
Moritz Bunkus [Mon, 23 Nov 2020 12:55:38 +0000 (13:55 +0100)]
Projekt: überflüssigen Code entfernt

3 years agoVK-Rechnungsbericht: Web-Template: vergessenes </tr> eingefügt
Bernd Bleßmann [Mon, 23 Nov 2020 16:29:42 +0000 (17:29 +0100)]
VK-Rechnungsbericht: Web-Template: vergessenes </tr> eingefügt

3 years agoVK-Rechnungsbericht: Lieferscheinnummer und Lieferdatum anzeigen können
Bernd Bleßmann [Mon, 23 Nov 2020 12:06:37 +0000 (13:06 +0100)]
VK-Rechnungsbericht: Lieferscheinnummer und Lieferdatum anzeigen können

3 years agoCSV-Import Waren: bestehende Makemodels als Array, nicht als Array-Ref
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.

3 years agoCsvImport: dateformat Unterstützung
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