Jan Büren [Sat, 21 Jan 2017 13:20:18 +0000 (14:20 +0100)]
Wiederkehrende Rechnungen, um neue Periode 'einmalig' erweitert.
Wiederkehrenden Rechnungen die aus einem Auftrag automatisch generiert
werden können jetzt die Periode 'einmalig' (engl. 'one time') mit dem
Zeitwert 0 haben.
Falls diese Periode angewählt wird, wird die Konfiguration des Auftrags
nach Erzeugen der einmaligen Rechnung auf inaktiv gesetzt (s.a.
perldoc SL/DB/PeriodicInvoicesConfigs.pm).
Der Empfänger der Rechnungslauf-Mail bekommt in diesem Fall zusätzlich
die Auftragsnummer, bei welchem die wiederkehrenden Rechnungen deaktiviert
wurden mitgeteilt.
Zusätzlich ist diese Benachrichtigung per Mail erweitert, sodass jetzt
auch eine Liste der versandten Rechnungen per E-Mail mitgeteilt wird.
Moritz Bunkus [Fri, 20 Jan 2017 13:21:06 +0000 (14:21 +0100)]
Kreditorenbuchungen: nur zur Kontenkategorie passende Steuerschlüsselauswahl anbieten
Bernd Bleßmann [Fri, 20 Jan 2017 12:27:50 +0000 (13:27 +0100)]
Historien Suchmaschine: SQL-Injektion verhindern.
Moritz Bunkus [Fri, 20 Jan 2017 11:44:04 +0000 (12:44 +0100)]
ProjectPicker: Taskendrücke auf Shift, Ctrl & Alt ignorieren
Andernfalls wird schon beim Drücken eines der Modifier eine Suche
ausgelöst. Das kann besonders nervig sein, wenn man den Focus vom
Browser wegnimmt:
• Alt+Tab drücken, um zum anderen Fenster zu wechseln
• Schon bei Alt wird eine Suche ausgelöst.
• Durch den Focus-Verlust wird ein Blur-Event ausgelöst.
• Und schon ist der interne Zustand ungültig, und das Element wird rot
dargestellt.
Analoges passiert, wenn man z.B. mit Ctrl+F2 zu einem anderen virtuellen
Desktop wechselt.
Noch schlimmer ist, dass bei Shift+Tab ebenfalls zuerst eine Suche
ausgelöst und anschließend verhindert wird, dass der Focus das Element
verlässt.
Moritz Bunkus [Fri, 20 Jan 2017 11:42:43 +0000 (12:42 +0100)]
ProjectPicker: unbenutzte Variable last_unverified_dummy entfernt
Sie wird nur gesetzt, nie gelesen, und vor allem auch nicht mit »var«
deklariert — wodurch es im Strict-Modus zu JavaScript-Fehlermeldungen
kommt.
Moritz Bunkus [Fri, 20 Jan 2017 11:41:50 +0000 (12:41 +0100)]
ProjectPicker: Strict-Modus & Warnungen von jshint beseitigt
Moritz Bunkus [Fri, 20 Jan 2017 11:40:33 +0000 (12:40 +0100)]
CustomerVendorPicker: Taskendrücke auf Shift, Ctrl & Alt ignorieren
Andernfalls wird schon beim Drücken eines der Modifier eine Suche
ausgelöst. Das kann besonders nervig sein, wenn man den Focus vom
Browser wegnimmt:
• Alt+Tab drücken, um zum anderen Fenster zu wechseln
• Schon bei Alt wird eine Suche ausgelöst.
• Durch den Focus-Verlust wird ein Blur-Event ausgelöst.
• Und schon ist der interne Zustand ungültig, und das Element wird rot
dargestellt.
Analoges passiert, wenn man z.B. mit Ctrl+F2 zu einem anderen virtuellen
Desktop wechselt.
Noch schlimmer ist, dass bei Shift+Tab ebenfalls zuerst eine Suche
ausgelöst und anschließend verhindert wird, dass der Focus das Element
verlässt.
Moritz Bunkus [Fri, 20 Jan 2017 11:37:32 +0000 (12:37 +0100)]
CustomerVendorPicker: unbenutzte Variable last_unverified_dummy entfernt
Sie wird nur gesetzt, nie gelesen, und vor allem auch nicht mit »var«
deklariert — wodurch es im Strict-Modus zu JavaScript-Fehlermeldungen
kommt.
Moritz Bunkus [Fri, 20 Jan 2017 11:36:52 +0000 (12:36 +0100)]
CustomerVendorPicker: Strict-Modus & Warnungen von jshint beseitigt
G. Richardson [Fri, 20 Jan 2017 11:03:59 +0000 (12:03 +0100)]
Verkaufsbericht - Abteilung korrekt behandeln
und Umstellung auf select_tag
Martin Helmling martin.helmling@octosoft.eu [Fri, 20 Jan 2017 08:44:19 +0000 (09:44 +0100)]
Historien Suchmaschine: Stacküberlauf vermeiden
Die Fehlermeldung
'DBD::Pg::st execute failed: ERROR: stack depth limit exceeded' wird durch
Anpassung des queries vermieden
statt:
WHERE (trans_id = 2088 OR trans_id=2090 OR trans_id=2092 ... (10000 fach)
nun:
WHERE (trans_id = 2088 OR trans_id IN (2090,2092,2094, ...
Martin Helmling martin.helmling@octosoft.eu [Fri, 20 Jan 2017 07:45:32 +0000 (08:45 +0100)]
am: fehlendes include für Historiensuche(2)
Undefined subroutine &main::conv_dateq called at bin/mozilla/am.pl line 1246
Martin Helmling martin.helmling@octosoft.eu [Fri, 20 Jan 2017 07:12:38 +0000 (08:12 +0100)]
PDF Helper Erweiterungen: Formatkorrektur nach perltidy
Sven Schöling [Thu, 19 Jan 2017 13:34:02 +0000 (14:34 +0100)]
t/backgorund_job/known_jobs.t
Dieser Test hat noch nie einen Fehler gefunden, aber produzierst ständig
false positives wenn jemand einen neuen Hintergrundjob einfügt und
vergisst den hier einzutragen. Weg damit.
Sven Schöling [Thu, 19 Jan 2017 13:18:57 +0000 (14:18 +0100)]
Revert "focus: scroll to active element"
This reverts commit
fdc625b4d1ba26782ff81ec2d79c1b533f26a9a7.
Das funktioniert so nicht. Grundsätzlich passiert das Scrollen passiert bei Fokus
automatisch. Bei force-reload kann es aber passieren, dass js/common
ausgeführt wird, bevor alle css Dateien geladen sind. Dann ändert sich
nachträglich die Größe der Elemente und das Element wird wieder aus dem
Bildschirm geschoben.
Ausserdem können Browser kein scroll offset, focus scrollt nur exakt
soweit dass das Element auf dem Screen ist, auch wenn das bedeutet, dass
es dann in den letzten 3% des Screen liegt.
Ich habe versucht das zu fixen, aber es wird dadurch nur komplizierter,
nicht besser. Also raus damit.
Martin Helmling martin.helmling@octosoft.eu [Wed, 18 Jan 2017 16:49:31 +0000 (17:49 +0100)]
PDF Helper Erweiterungen: bothsided , out_path
merge_pdfs mit weiterem Parameter "out_path"
Statt den Inhalt als Ergebnis zu bekommen, kann nun auch gleich die exitierende Datei zurückgegeben werden
Es kann nun die Seitenzahl der Dokumente ermittelt werden
und ggf (falls param "bothsided" gesetzt) eine leere Seite dazwischengefügt werden
Martin Helmling martin.helmling@octosoft.eu [Wed, 18 Jan 2017 16:24:58 +0000 (17:24 +0100)]
Paginierung schneller machen:
SQL-Injection raus
G. Richardson [Tue, 17 Jan 2017 07:53:47 +0000 (08:53 +0100)]
Neuer Test t/part/stock.t für Part Methode get_stock
G. Richardson [Tue, 17 Jan 2017 07:41:38 +0000 (08:41 +0100)]
SL::DB::Part - neue Methode get_stock
um den aktuellen Lagerbestand eines Artikels in einem bestimmten
Lagerplatz oder in einem bestimmten Lager zu einem bestimmten Stichtag
in der Standardeinheit auszulesen.
G. Richardson [Mon, 16 Jan 2017 08:06:59 +0000 (09:06 +0100)]
SL::Dev::Inventory - set_stock mit abs_qty, transfer_stock
Man kann Lagerbestände jetzt sowohl positiv als auch negativ ändern,
oder einen gewünschten Bestand vorgeben (abs_qty).
Weiterhin kann man per transfer_stock Lagermengen zwischen Lagerplätzen
umlagern.
G. Richardson [Fri, 13 Jan 2017 16:09:35 +0000 (17:09 +0100)]
SL::Dev::Record - Aufträge und Lieferscheine erstellen
Moritz Bunkus [Wed, 18 Jan 2017 12:50:08 +0000 (13:50 +0100)]
Flash bei ReportGenerator-Verwendung nicht manuell anzeigen
Der ReportGenerator zeigt den Flash inzwischen selber an. Daher muss,
nein sollte, oder sogar darf der Aufrufer den Flash im Top-Info-Text
vorher nicht mehr anzeigen. Andernfalls erscheint er doppelt.
Martin Helmling mh@waldpark.octosoft.eu [Mon, 6 Jul 2015 15:46:22 +0000 (17:46 +0200)]
Paginierung schneller machen für Lager(Paginierung repariert)
Lagerbuchungen und Lagerbestand optimieren
1. Auf Rose umstellen grosser Aufwand.
2. Roseverhalten nachimplementieren:
2.1. Nur einen Query haben, danach kein herausnehmen von Zeilen
2.2. Dann funktioniert Paginierung mit LIMIT und OFFSET (wie Rose)
2.3. Rose macht ein zu Beginn ein COUNT(*) um die Gesamtmenge zu ermitteln,wir merken uns das nach dem ersten Query
Der Mengenfilter kann schlecht in SQL integriert werden wegen Einheitenumrechnung (eventuell später noch eine PSQL Funktion einbauen)
Moritz Bunkus [Wed, 18 Jan 2017 12:00:18 +0000 (13:00 +0100)]
jQuery-resetForm() anstelle von selbst geschriebenem Reset-Code nutzen #4
Moritz Bunkus [Wed, 18 Jan 2017 11:56:27 +0000 (12:56 +0100)]
jQuery-resetForm() anstelle von selbst geschriebenem Reset-Code nutzen #3
Moritz Bunkus [Wed, 18 Jan 2017 11:53:49 +0000 (12:53 +0100)]
jQuery-resetForm() anstelle von selbst geschriebenem Reset-Code nutzen #2
Moritz Bunkus [Wed, 18 Jan 2017 11:42:23 +0000 (12:42 +0100)]
jQuery-resetForm() anstelle von selbst geschriebenem Reset-Code nutzen
Unsere bisherigen Reset-Implementationen haben die Inputs alle auf leer
gesetzt. Die Standard-Reset-Routinen der Browser setzen die Inputs
allerdings auf ihren Zustand zurück, den sie beim Laden hatten, was auch
mehr Sinn ergibt.
Moritz Bunkus [Wed, 18 Jan 2017 09:57:54 +0000 (10:57 +0100)]
Alle Rechnungen: »als bezahlt markieren« auf neue Funktionen in SL::DB::(Purchase)Invoice umgestellt
Moritz Bunkus [Wed, 18 Jan 2017 09:40:08 +0000 (10:40 +0100)]
SL::DB::(Purchase)Invoice: neue Funktion »mark_as_paid«
Sie macht nichts weiter, als »paid« auf »amount« zu setzen.
Moritz Bunkus [Wed, 18 Jan 2017 09:37:32 +0000 (10:37 +0100)]
Form->redirect: übergebene Nachricht mittels »flash_later« anzeigen lassen
Der Funktion $::form->redirect kann eine Nachricht übergeben
werden. Diese wird bisher nur dann angezeigt, wenn es keinen
aufzurufenden Callback gibt. Gibt es einen Callback, verschwindet die
Nachricht bisher im Nirvana.
Mit dieser Änderung wird die Nachricht im Flash gespeichert. Damit
besteht zumindest eine Chance, dass die nachfolgend angezeigte Maske die
Nachricht auch anzeigt, sofern sie den Flash einbindet. Da das
langfristig eh alle Masken machen sollen, ergibt diese Übergabe auch
jetzt schon Sinn.
Moritz Bunkus [Wed, 18 Jan 2017 09:37:15 +0000 (10:37 +0100)]
ReportGenerator: im HTML-Bericht den Flash anzeigen
Moritz Bunkus [Tue, 17 Jan 2017 16:26:29 +0000 (17:26 +0100)]
Hintergrundjob zum Schließen bei geschlossenen Aufträgen verlinkten Projekten
Der Job ist per Default deaktiviert. Wenn eine solche Funktionalität für
eine Installation benötigt wird, so muss der Admin manuell einen
Hintergrundjob dafür anlegen.
Moritz Bunkus [Tue, 17 Jan 2017 12:53:47 +0000 (13:53 +0100)]
Lager: Umstellung auf Verwendung vom Part-Picker
Dadurch wurden mehrere alte Artikel-Auswahl-Routinen und -Vorlagen
überflüssig, die gleich entfernt wurden.
Moritz Bunkus [Tue, 17 Jan 2017 12:44:59 +0000 (13:44 +0100)]
Lager: Einlagernfunktionalität aus wh.pl entfernt
Diese wird inzwischen von SL::Controller::Inventory zur Verfügung
gestellt.
Moritz Bunkus [Tue, 17 Jan 2017 10:16:31 +0000 (11:16 +0100)]
Form->show_generic_error: Parameter action, back_button entfernt
Der Funktion kann man eine spezifische Action mitgeben, damit ein Button
mit der Action anstelle des normalen Zurück-Buttons angezeigt wird. Es
gibt allerdings (schon lange?) keinen einzigen Aufruf mehr, der dieses
Feature »Action übergeben« nutzt.
Daher wird es hiermit entfernt.
Im Umkehrschluss gibt es keine Situation, wo der Zurück-Button nicht
angezeigt werden soll. Daher wird auch dieser Parameter entfernt.
Moritz Bunkus [Mon, 16 Jan 2017 12:22:10 +0000 (13:22 +0100)]
Revert "kivi.call_jquery: Funktion zum Aufrufen beliebiger jQuery-Funktionen"
Dies nimmt Commit
8c93869920ec0bf012a0f59175b39449c90a4d1f zurück. War
kein schönes Design, und die Aufrufer wurden bereits auf andere
Interfaces umgestellt.
Sven Schöling [Mon, 16 Jan 2017 12:21:45 +0000 (13:21 +0100)]
t/part/assembly.t: nicht mit undef vergleichen
Sven Schöling [Mon, 16 Jan 2017 12:17:46 +0000 (13:17 +0100)]
io.pl: disconnect_standard_dbh bei _make_record wieder entfernt
Das war in
49707e3c eingefügt worden mit Hinweis, dass es ein temporärer
Fix ist bis single-dbh abgeschlossen ist. Kann also wieder raus.
Jan Büren [Mon, 16 Jan 2017 11:03:18 +0000 (12:03 +0100)]
SelfTests: check_overpayments verbessert
i)
chart_link muss nicht mehr über JOIN chart c c.link mit der
acc_trans vereint werden
ii)
Der Test hat keine sinnvollen Daten an den Benutzer zurück-
gegeben. Jetzt wird die Kunden- und die Rechnungsnummer gemeldet
iii)
Die Datenmenge nach aktuellem Geschäftsjahr zu filtern ist ent-
sprechend angepasst (aktuelle Zahlungen -> Analyse aller vorhergenden
Daten (trans_id) unabhängig vom Zeitraum).
Jan Büren [Mon, 16 Jan 2017 10:44:45 +0000 (11:44 +0100)]
false positive in SelfTests gefiltert (Periode)
Hintergrund:
Um nur die Daten-Analyse auf das aktuelle Geschäftsjahr (Geschäftsjahr gleich
Kalender-Jahr) zu machen, wird für die meisten Tests mit transdate == current_year
gefiltert.
Problem: Periodenübergreifende Buchungen (Zahlungsein- und -ausgänge) werden
nicht berücksichtigt und schlagen entsprechend Fehlarlam.
Optimierung: Es werden nur die Buchungen des aktuellen Geschäftsjahr angeschaut
und weitere acc_trans Daten ohne Zeitfilter über die trans_id gruppiert.
Martin Helmling martin.helmling@octosoft.eu [Thu, 12 Jan 2017 16:44:11 +0000 (17:44 +0100)]
Menu Icons können nun auch .svg Dateien sein
Vorrangig werden nun svg Dateien aus dem Verzeichnis ./image/icons/svg/*.svg verwendet.
Falls dort kein Icon auffindbar ist wird nach ./image/icons/16x16/*.png gesucht.
Es gibt seit langem ein svg Icon für den GoBD Export.
Das wird nun sichtbar. GGf anpassen.
Das Verzeichnis icon_svg wurde in icons/svg umbenannt.
Moritz Bunkus [Fri, 13 Jan 2017 13:41:53 +0000 (14:41 +0100)]
Merge branch 'f-chart-picker-in-gl'
Moritz Bunkus [Thu, 12 Jan 2017 16:10:13 +0000 (17:10 +0100)]
kivi.PriceRule.js: strict & Warnungen vermeiden
Moritz Bunkus [Fri, 13 Jan 2017 12:53:34 +0000 (13:53 +0100)]
kivi.call_jquery: Funktion zum Aufrufen beliebiger jQuery-Funktionen
An vielen Stellen schicken wir vom Backend aus nur die Namen
aufzurufender JavaScript-Funktionen an den Browser. Der sucht dann die
auszuführende Funktion mittels »kivi.get_function_by_name« aus dem
Namensraum heraus und führt sie anschließend mit »func.apply(…)« aus.
Leider ist es damit nicht so einfach möglich, jQuery-Funktionen
auszuführen, da diese als »this«-Argument ein jQuery-fiziertes Objekt
erwarten. Außerdem geht ein »namespace("jQuery.fn.resetForm")« schlicht
nicht bzw. tut nicht das, was man erwartet.
Daher die Funktion »kivi.call_jquery«. Ihr übergibt man:
1. einen jQuery-Selektor, der das »this«-Argument der aufzurufenden
Funktion repräsentiert,
2. den Namen der aufzurufenden Funktion und
3. optional weitere Argumente.
Würde man z.B. einen Wert in einem Input setzen wollen, so sähe der
Aufruf in der Console so aus:
kivi.call_jquery('#some_input_field', 'val', '42')
Das ist äquivalent zo
$('#some_input_field').val('42')
Interessant wird die Verwendung an Stellen, wo nur Funktionsnamen
übergeben werden dürfen, z.B. bei »call«-Actions bei der ActionBar. Hier
sähe z.B. eine Action zum Zurücksetzen einer Form wie folgt aus:
action => [
t8('Reset'),
call => [ 'kivi.call_jquery', '#form', 'resetForm' ],
],
Beim Anklicken wird dann letztlich das Äquivalent hierzu ausgeführt:
$('#form').resetForm()
Moritz Bunkus [Fri, 13 Jan 2017 13:11:19 +0000 (14:11 +0100)]
kivi.history_back: wie history.back() aber über kivi.get_function_by_name auffindbar
Moritz Bunkus [Fri, 13 Jan 2017 13:08:33 +0000 (14:08 +0100)]
kivi.submit_form_with_action: fügt Hidden-»action« mit Wert zu Form hinzu & submittet
Zuerst werden alle existierenden Inputs namens »action« entfernt, damit
sich die Inputs nicht ins Gehege kommen. Anschließend wird ein neues
Hidden namens »action« mit dem übergebenen Wert erstellt, der Form
hinzugefügt, und die Form wird über $(selector).submit() sumittet.
Moritz Bunkus [Wed, 9 Nov 2016 13:06:58 +0000 (14:06 +0100)]
kivi.SalesPurchase.js: Warnung vermeiden
Moritz Bunkus [Wed, 11 Jan 2017 09:43:34 +0000 (10:43 +0100)]
PrintOptions-Helfer: sub opthash Paket-lokal anstelle von sub-lokal
Wir nutzen Named-Sub-in-Named-Sub nie, daher auch hier
nicht. Ursprünglich war die Funktion in bin/mozilla/io.pl, da ergab es
noch Sinn, um den Funktionsnamensraum nicht zu überladen. Aber nach dem
Verschieben in ein eigenes Paket ist das nicht mehr nötig.
Moritz Bunkus [Fri, 11 Nov 2016 13:00:11 +0000 (14:00 +0100)]
CSS: eine Klasse für versteckte Elemente
Moritz Bunkus [Fri, 13 Jan 2017 10:27:38 +0000 (11:27 +0100)]
Mahnungen: Funktion »Diese Sprache verwenden« gefixt Teil 2
Wenn die Checkbox angehakt ist, so soll die Benutzer*in die Möglichkeit
haben, über die Druckoptionen einen Sprache für alle zu erzeugenden
Mahnungen auszuwählen. Ist die Checkbox aus, so wird die Sprache des
Kunden der jeweiligen Mahnung genommen, und dann muss die Sprachauswahl
deaktiviert werden.
Der erste Commit hat nur die Maske zum Erstellen neuer Mahnungen
abgedeckt. Dieser erledigt die Maske zum Anzeigen vorhandener Mahnungen.
Moritz Bunkus [Fri, 13 Jan 2017 10:09:54 +0000 (11:09 +0100)]
Mahnungen: Funktion »Diese Sprache verwenden« gefixt
Wenn die Checkbox angehakt ist, so soll die Benutzer*in die Möglichkeit
haben, über die Druckoptionen einen Sprache für alle zu erzeugenden
Mahnungen auszuwählen. Ist die Checkbox aus, so wird die Sprache des
Kunden der jeweiligen Mahnung genommen, und dann muss die Sprachauswahl
deaktiviert werden.
G. Richardson [Fri, 13 Jan 2017 09:26:31 +0000 (10:26 +0100)]
Part Controller - als neu speichern repariert
alle Buttons (Speichern, Als neu speichern, Löschen) setzen die action
selber (siehe js/kivi.Part.js) , die form braucht daher kein verstecktes
action für dispatch.
Bernd Bleßmann [Thu, 12 Jan 2017 21:08:38 +0000 (22:08 +0100)]
Mahnungen: Typo in query
Fürhte zwar nicht zu einem Fehler, war aber sicher so nicht gewollt.
Moritz Bunkus [Thu, 12 Jan 2017 15:53:57 +0000 (16:53 +0100)]
locale-Lauf
Moritz Bunkus [Thu, 12 Jan 2017 15:51:23 +0000 (16:51 +0100)]
Artikelsuche: Überschrift in Bericht wieder ergänzt
Es gibt inzwischen nur noch einen Menüpunkt für Artikelsuche, nicht mehr
einen pro Typ. Der Typ wird dann anhand von Checkboxen unterschieden.
Da dabei durchaus nach mehreren Typen gleichzeitig gesucht werden kann,
ergibt eine Unterscheidung der Überschrift nach zu suchendem Typ wenig
Sinn. Ergo wird als Überschrift immer »Artikel« genutzt.
Moritz Bunkus [Thu, 12 Jan 2017 14:42:27 +0000 (15:42 +0100)]
Kreditorenbuchungen auf Verwendung des Chart-Pickers umgestellt
Moritz Bunkus [Wed, 11 Jan 2017 15:11:15 +0000 (16:11 +0100)]
Debitorenbuchungen auf Verwendung des Chart-Pickers umgestellt
Moritz Bunkus [Wed, 11 Jan 2017 12:40:26 +0000 (13:40 +0100)]
Form::create_links: überflüssige Kommentare entfernt
Moritz Bunkus [Fri, 6 Jan 2017 09:23:01 +0000 (10:23 +0100)]
Dialogbuchen auf Verwendung des Chart-Pickers umgestellt
Jan Büren [Thu, 12 Jan 2017 12:39:14 +0000 (13:39 +0100)]
Mahnungen: Metadaten der Mitarbeiter (Bearbeiter/Verkäufer) setzen
Vorher: salesman_name hat den Namen von employee_name bekommen. Weitere
Daten wurden nicht (mehr) gesetzt.
Aktuell: Jetzt werden die Metadaten von employee_ und salesman_ sauber
gesetzt und die Dokumentation ist entsprechend angepasst.
CAVEAT: Bei mehreren Rechnungen die zusammengefasst werden, werden nur beim
ersten Treffer (teilweise LIMIT 1 in SQL-Anweisungen) die entsprechenden
Daten gesetzt (Hinweis in Doku geschrieben).
Jan Büren [Thu, 12 Jan 2017 12:37:43 +0000 (13:37 +0100)]
RB-Druckvorlagen: mehr Mitarbeiter-Metadaten für Mahnungen
Martin Helmling martin.helmling@octosoft.eu [Thu, 12 Jan 2017 11:46:58 +0000 (12:46 +0100)]
Revert "Verkauf/Rechnungen/Massenerstellung: Zahlungsbedigungen werden nicht übernommen"
This reverts commit
90e59318411f63c95a7e803b4383d75ec72427a8.
Moritz Bunkus [Thu, 5 Jan 2017 14:26:06 +0000 (15:26 +0100)]
gl.pl: Kommentar mit falschem Encoding ersetzt
Moritz Bunkus [Thu, 12 Jan 2017 11:00:27 +0000 (12:00 +0100)]
ChartPicker: Lupe wie beim PartPicker stylen
Moritz Bunkus [Thu, 12 Jan 2017 10:43:50 +0000 (11:43 +0100)]
ChartPicker: Taskendrücke auf Shift, Ctrl & Alt ignorieren
Andernfalls wird schon beim Drücken eines der Modifier eine Suche
ausgelöst. Das kann besonders nervig sein, wenn man den Focus vom
Browser wegnimmt:
• Alt+Tab drücken, um zum anderen Fenster zu wechseln
• Schon bei Alt wird eine Suche ausgelöst.
• Durch den Focus-Verlust wird ein Blur-Event ausgelöst.
• Und schon ist der interne Zustand ungültig, und das Element wird rot
dargestellt.
Analoges passiert, wenn man z.B. mit Ctrl+F2 zu einem anderen virtuellen
Desktop wechselt.
Noch schlimmer ist, dass bei Shift+Tab ebenfalls zuerst eine Suche
ausgelöst und anschließend verhindert wird, dass der Focus das Element
verlässt.
Moritz Bunkus [Thu, 12 Jan 2017 10:16:53 +0000 (11:16 +0100)]
ChartPicker: unbenutzte Variable last_unverified_dummy entfernt
Sie wird nur gesetzt, nie gelesen, und vor allem auch nicht mit »var«
deklariert — wodurch es im Strict-Modus zu JavaScript-Fehlermeldungen
kommt.
Moritz Bunkus [Thu, 12 Jan 2017 10:16:25 +0000 (11:16 +0100)]
ChartPicker: Strict-Modus & Warnungen von jshint beseitigt
Moritz Bunkus [Thu, 12 Jan 2017 09:27:37 +0000 (10:27 +0100)]
ChartPicker: Test-Seite um vorausgefüllte Picker ergänzt
Moritz Bunkus [Thu, 12 Jan 2017 09:57:13 +0000 (10:57 +0100)]
PartPicker: Taskendrücke auf Shift, Ctrl & Alt ignorieren
Andernfalls wird schon beim Drücken eines der Modifier eine Suche
ausgelöst. Das kann besonders nervig sein, wenn man den Focus vom
Browser wegnimmt:
• Alt+Tab drücken, um zum anderen Fenster zu wechseln
• Schon bei Alt wird eine Suche ausgelöst.
• Durch den Focus-Verlust wird ein Blur-Event ausgelöst.
• Und schon ist der interne Zustand ungültig, und das Element wird rot
dargestellt.
Analoges passiert, wenn man z.B. mit Ctrl+F2 zu einem anderen virtuellen
Desktop wechselt.
Noch schlimmer ist, dass bei Shift+Tab ebenfalls zuerst eine Suche
ausgelöst und anschließend verhindert wird, dass der Focus das Element
verlässt.
Moritz Bunkus [Thu, 12 Jan 2017 09:30:03 +0000 (10:30 +0100)]
PartPicker: unbenutzte Variable last_unverified_dummy entfernt
Sie wird nur gesetzt, nie gelesen, und vor allem auch nicht mit »var«
deklariert — wodurch es im Strict-Modus zu JavaScript-Fehlermeldungen
kommt.
Moritz Bunkus [Thu, 12 Jan 2017 09:27:22 +0000 (10:27 +0100)]
PartPicker: Strict-Modus & Warnungen von jshint beseitigt
Martin Helmling martin.helmling@octosoft.eu [Thu, 12 Jan 2017 09:33:07 +0000 (10:33 +0100)]
Verkauf/Rechnungen/Massenerstellung: Zahlungsbedigungen werden nicht übernommen
Falls im Lieferschein keine Zahlungsbedingungen gesetzt sind,
wird die des Kunden für die Rechnung eingesetzt
Moritz Bunkus [Fri, 6 Jan 2017 09:19:09 +0000 (10:19 +0100)]
kivi.js: alle jshint-Warnungen beseitigt & auf strict umgestellt
G. Richardson [Wed, 11 Jan 2017 10:14:17 +0000 (11:14 +0100)]
Part Controller - Artikelnummer von unbenutzten Artikeln ändern
Moritz Bunkus [Wed, 11 Jan 2017 09:23:00 +0000 (10:23 +0100)]
LXDebug: bei SHOW_CALLER ersten Caller außerhalb von LXDebug.pm nehmen
Andernfalls wird beim Aufruf von z.B. »SL::Controller::CustomerVendor →
LXDebug::dump() → LXDebug::message()« fälschlicherweise
»LXDebug::dump()« als Caller ausgegeben. Das interessiert die Nutzer*in
aber im Zweifelsfall nicht, sondern »SL::Controller::CustomerVendor«.
Martin Helmling martin.helmling@octosoft.eu [Wed, 11 Jan 2017 07:55:05 +0000 (08:55 +0100)]
Zum Erfassen neuer Artikel neuen Part-Controller verwenden
Die Knöpfe zum Erstellen neuer Artikel im Artikelreport springen nun in den neuen Part Controller
Martin Helmling martin.helmling@octosoft.eu [Wed, 4 Jan 2017 16:46:35 +0000 (17:46 +0100)]
Prüfen der Bestandteile eines Erzeugnisses beim Hinzufügen
Erst Prüfung innerhalb des Erzeugnisses,
dann recursive Prüfung der das Erzeugnis enthaltenen Erzeugnisse,
Abbruch nach 100 Rekursionen.
Die Abfrage ist so, dass nur vom Erzeugnis abwärts der Baum in die Tiefe geprüft wird.
Dabei darf auf einem Graph kein Erzeugnis doppelt vorkommen.
Erzeugnisse sind nun editierbar, wenn sie von einem anderen Erzeugnis verwendet werden
solange sie in keinem ERP-Dokument verwendet werden.
Implementiert in einem Helper für SL::Controller::Part.
Er wird auch im Test t/part/assembly.t verwendet
Martin Helmling martin.helmling@octosoft.eu [Wed, 11 Jan 2017 07:21:21 +0000 (08:21 +0100)]
Dokumentation neu generiert
Martin Helmling martin.helmling@octosoft.eu [Thu, 22 Dec 2016 11:14:54 +0000 (12:14 +0100)]
Artikel-Klassifizierung: Dokumentation
Martin Helmling martin.helmling@octosoft.eu [Wed, 28 Dec 2016 15:38:42 +0000 (16:38 +0100)]
partpicker mit classification_id als filter erweitert
Martin Helmling martin.helmling@octosoft.eu [Wed, 28 Dec 2016 15:36:54 +0000 (16:36 +0100)]
Vereinfachte Abkürzungsmethode "typeclass_abbreviation" im Part Presenter
Martin Helmling martin.helmling@octosoft.eu [Thu, 22 Dec 2016 08:46:44 +0000 (09:46 +0100)]
Zusammengefasstes Listen von Ware,Erzeugnis,Dienstleistung und Sortimenten
Die Suchmaske für Ware,Erzeugnis,Dienstleistung und Sortiment gilt nun einheitlich für alle Artikeltypen,
deshalb wird nur noch eine Menueauswahl dazu angeboten
Martin Helmling martin.helmling@octosoft.eu [Thu, 22 Dec 2016 08:12:19 +0000 (09:12 +0100)]
Falls ein Artikel nicht gefunden wird, kann gleich in die Erfassung gegangen werden
Dies ist in der Manantenkonfigurierung einstellbar.
Martin Helmling martin.helmling@octosoft.eu [Thu, 22 Dec 2016 08:07:46 +0000 (09:07 +0100)]
Artikel-Klassifizierung: "Preis separat ausweisen"
Dieses neue Attribut an Artikelklassifizierung erlaubt in Aufträgen und Rechnungen
bestimmte Artikel extra auszuweisen.
Dazu werden diese als extra Variable der Dokumentengeneierung zur Verfügung gestellt.
Siehe neue Dokumentation Kapitel 3.7
Hintergrund:
Preise von Artikeln wie "Verpackung" oder "Transport" müssen
oftmals separat ausgewiesen werden, genauso wie der reine Warenwert
Martin Helmling martin.helmling@octosoft.eu [Thu, 22 Dec 2016 07:37:45 +0000 (08:37 +0100)]
Artikel-Klassifizierung
Die Klassifizierung von Artikeln dient einer weiteren Gliederung um zum Beispiel den Einkauf vom Verkauf zu trennen, etc.
Gekennzeichnet durch eine Beschreibung (z.B. "Einkauf") und ein Kürzel (z.B. "E")
Flexibel änderbar und erweiterbar.
- Neue Datenbanktablle und Rose-Objekte, sowie Controller zum Bearbeiten der Tabelle
- Zwei-Zeichen Abkürzung:
Der Typ des Artikel und die Klassifizierung werden durch zwei Buchstaben dargestellt.
Der erste Buchstabe ist eine Lokalisierung des Typs des Artikel ('P','A','S') ,
deutch 'W', 'E', und 'D' für Ware Erzeugnis oder Dienstleistung, ggf. weitere Typen.
Der zweite Buchstabe ist eine Lokalisierung der Klassifizierungsabkürzung (abbreviation).
Die Abkürzungen sind aus dem Part Presenter abholbar:
- SL::Presenter::Part->type_abbreviation($part_type)
- SL::Presenter::Part->classification_abbreviation($classification_id)
Anpassung des CSV Import,
nun wird alternativ zur 'part_type'-Spalte die 'pclass'-Spalte mit zwei Buchstaben geparsed und entsprechend
classification_id, part_type gesetzt.
Martin Helmling martin.helmling@octosoft.eu [Wed, 11 Jan 2017 07:17:49 +0000 (08:17 +0100)]
Banktransaction: Kontoauszug verbuchen überarbeitet(2)
Korektere Initialisierung von Arrays
Bernd Bleßmann [Tue, 10 Jan 2017 16:54:51 +0000 (17:54 +0100)]
CsvImport Aufträge: Variable besser benannt und Kommentar berichtigt.
Bernd Bleßmann [Tue, 10 Jan 2017 16:21:16 +0000 (17:21 +0100)]
CsvImport Aufträge: Positionen nicht fehlerhaft markieren, wenn Auftrag fehlerhaft.
Das zeigt dann im Bericht nicht alle Zeilen als Fehler an, die selber keinen
Fehler enthalten und bei denen nur die Auftragszeile fehlerhaft ist.
Die Markierung ist auch nicht mehr nötig, da nur Aufträge und nicht
Postitionszeilen gespeichert werden.
Bernd Bleßmann [Tue, 10 Jan 2017 16:14:12 +0000 (17:14 +0100)]
CsvImport Aufträge: Keine Aufträge speichern, wenn alle fehlerhaft sind.
Dazu die zu speichernden Einträge mit einem leerem Array initialisieren, denn
sonst nimmt die save_objects-Routine aus der Basis-Klasse alle Einträge.
Das war bisher zwar kein Problem, weil auch alle Positionszeilen vorher bei
fehlerhaften Auftragszeilen als fehlerhaft markiert und somit nicht gespeichert
wurden. Diese Markierung ist jetzt überflüssig (extra commit).
Martin Helmling martin.helmling@octosoft.eu [Tue, 10 Jan 2017 16:16:04 +0000 (17:16 +0100)]
Banktransaction: Kontoauszug verbuchen überarbeitet
kein _as_number für amount verwenden
Fehlermeldung bei Transaktionen bearbeitet
Bei Sammelanweisung Zuweisung korrigiert
Die per SEPA-Export gefundenen Übereinstimmungen werden nun auch bewertet,
damit gleichartige Rechnungen genauer zugeordnet werden
Moritz Bunkus [Tue, 10 Jan 2017 14:52:09 +0000 (15:52 +0100)]
kivi.detect_duplicate_ids_in_dom: Funktion zum Auffinden doppelter IDs im DOM
Moritz Bunkus [Tue, 10 Jan 2017 14:53:51 +0000 (15:53 +0100)]
do/form_header.html: Element »department_id« nicht doppelt ausgeben
Moritz Bunkus [Mon, 9 Jan 2017 15:37:07 +0000 (16:37 +0100)]
kivi.popup_dialog: neuer Callback »load« nach erfolgreichem AJAX-Laden des Inhalts
Bernd Bleßmann [Tue, 10 Jan 2017 11:36:53 +0000 (12:36 +0100)]
CsvImport Aufträge: Auftragsnummer nicht mit SL::TransNumber setzen, …
denn dies wird automatisch über SL::DB:Order beim Speichern gemacht.
Bernd Bleßmann [Tue, 10 Jan 2017 11:20:03 +0000 (12:20 +0100)]
CsvImport: Unbenutzte Variable/Statement entfernt.
Bernd Bleßmann [Tue, 10 Jan 2017 11:16:03 +0000 (12:16 +0100)]
Typo im Kommentar korrigiert.
Jan Büren [Sun, 8 Jan 2017 16:19:24 +0000 (17:19 +0100)]
SelfTest Kosmetik
Ein überflüssiges JOIN entfernt und etwas sinnvoller den
Code formatiert.
Jan Büren [Sun, 8 Jan 2017 16:03:22 +0000 (17:03 +0100)]
SelfTests check_summe_stornobuchungen optimiert
Die Summenprüfung der Stornobuchungen muss
auch über den Jahreswechsel hinaus Buchungen berücksichtigen.
Sven Schöling [Wed, 4 May 2016 11:08:04 +0000 (13:08 +0200)]
Mehr Fokusoptionen in Belegen
Sven Schöling [Tue, 6 Dec 2016 12:47:20 +0000 (13:47 +0100)]
focus: scroll to active element