Moritz Bunkus [Wed, 8 Jun 2016 12:29:08 +0000 (14:29 +0200)]
FlattenToForm: Zahlungsbedingungen des Kunden/Lieferanten nicht kopieren
Es haben die ZB des Beleges zu gelten, nicht die des
Kunden/Lieferanten. Die Variable »payment_terms« wird zwar später wieder
anhand von »payment_id« überschrieben (in »OE::order_details« und dann
»Form::set_payment_options«), aber nur dann, wenn im Beleg auch wirklich
Zahlungsbedingungen ausgewählt sind.
Sind keine ausgewählt, so würde das »payment_terms« von den Kunden-/
Lieferantenstammdaten gesetzt bleiben; das wäre schlicht inkorrekt.
Moritz Bunkus [Tue, 7 Jun 2016 11:30:46 +0000 (13:30 +0200)]
Zahlungsbedingungen: Unterscheidung zwischen Angeboten/Aufträgen und Rechnungen
Dies führt ein neues Attribut »payment_terms.description_long_invoice«
und dazugehörige Übersetzungen in »generic_translation« ein.
Die Druckvariable »payment_terms« wird nun in Abhängigkeit vom
auszudruckenden Beleg gesetzt:
1. Für Verkaufsrechnungen wird zuerst eine Übersetzung von
»description_long_invoice« für die ausgewählte Sprache gesucht. Falls
die leer ist oder keine Sprache ausgewählt, so wird die nicht
übersetzte »description_long_invoice« genommen. Ist auch die leer, so
erfolgt ein Fallback auf 2.
2. Für alle anderen Belege oder falls bei 1. nichts heraus gekommen ist,
wird wie vor dieser Änderung eine Übersetzung von »description_long«
für die ausgewählte Sprache gesucht. Falls die leer ist oder keine
Sprache ausgewählt, so wird die nicht übersetzte »description_long«
genommen.
Waldemar Toews [Thu, 28 May 2015 15:28:14 +0000 (17:28 +0200)]
BUG-Fix: Beim Stornieren einer Rechnungen wird der bezahlte Betrag verdoppelt.
Storniert man eine als bezahlt markierte Rechnung,
so wird der bezahlte Betrag ("paid") verdoppelt.
Im SQL wird, fälschlicherweise, amount zu paid dazu addiert. Soll aber nur zugewiesen werden.
Bücherkontrolle in Zahlungseingängen und Zahlungsausgängen fehlerhaft
- Erweiterung der Header und Footer Funktionen um das Buchungsdatum anhand der Bücherkontrolle zu prüfen
- Fällt Buchungsdatum ausserhalb des zulässigen Zeitraum der Bücherkontrolle so werden die betreffenden Einträge bei Zahlungsein-/ausgang deaktiviert
- Einbinden der Prüfung des maximal zukünftigen Buchungsdatums von Zahlungen ausgehend vom heutigen Datum
- Erweiterung der Prüfung bei Neueingabe von Zahlungsein-/ausgängen:
- Es werden nur noch die editierbaren Einträge geprüft
- Einträge ohne Zahlungen werden nicht geprüft und auch nicht gebucht
Bernd Bleßmann [Mon, 30 May 2016 14:53:24 +0000 (16:53 +0200)]
PartPicker: Auch auf Paste-Events reagieren.
Damit wird bei eindeutigem eingefügtem Text der entsprechende Artikel
ausgewählt. Ansonsten wird der Text rot (undefined) dargestellt.
Vorher war es möglich, z.B. eine eindeutige Artikelnummer einzufügen, aber
intern war dennoch kein Artikel ausgewählt. In der Anzeige sah es aber so aus,
als sei alles in Ordnung.
Bernd Bleßmann [Mon, 30 May 2016 14:45:47 +0000 (16:45 +0200)]
ProjectPicker: Die (Un)-Gültigkeits-Spalte/Methode heißt valid, nicht obsolete.
Der Fehler führte dazu, dass bei Eindeutigen Eingaben im Picker dennoch kein
Ergebnis ausgewählt wurde, sondern der ajax-Call einen Fehler meldete, der dann
unterging.
Bernd Bleßmann [Mon, 30 May 2016 14:42:22 +0000 (16:42 +0200)]
ProjectPicker: SL::DB::Manager::Project hat (noch) keinen type_filter.
Es gibt zwar einen project_type, aber der ist als Filter noch nicht
implementiert.
Dieser Fehler führte dazu, dass bei eindeutigen Eingaben im Picker dennoch
kein Projekt ausgewählt wurde. Der ajax-Call lieferte einen Fehler zurück,
der dann unterging.
Forms Input Variable "action" existiert doppelt, die letztere ist auf dispatcher gesetzt,
die erste hat aber die id "action" und wird von Javascript gefunden.
Moritz Bunkus [Mon, 23 May 2016 10:51:03 +0000 (12:51 +0200)]
Projektliste: Kundenname bei PDF-/CSV-Export richtig ausgeben
Der Controller-Helfer für den ReportGenerator muss aus Objekten Werte
machen können. Wie das geschieht, wird über die Spaltendefinition
festgelegt. Für Nicht-HTML-Anzeige wird entweder eine zur Verfügung
gestellte Unterfunktion benutzt, oder aber auf dem Objekt wird der
Spaltenname als Funktion aufgerufen.
Für die Spalte »customer« wird bei einem Projekt also das
SL::DB::Customer-Objekt genutzt, wenn keine manuelle Sub angegeben
wurde.
Moritz Bunkus [Fri, 20 May 2016 11:21:39 +0000 (13:21 +0200)]
CVars: beim Einlesen für Sub-Modules Gültigkeit richtig bestimmen
Werden für CVars für Belege eingelesen (z.B. Aufträge), wo also
»sub_module« gesetzt ist (hier: »orderitems«), so steht in der
CVar-Spalte »trans_id« die Datenbank-ID des referenzierten
Sub-Items (hier: »orderitems.id«) drin und nicht die ID des Items, auf
das sich die Konfiguration selber bezieht.
Die Gültigkeit einer CVar wird hingegen nicht am Beleg selber sondern
eine Ebene darüber, am Warenstammdatum, festgemacht. Das bedeutet, dass
in der Spalte »custom_variables_validity.trans_id« die Artikel-ID
enthalten ist.
Übergeben bekommt die Funktion zum Einlesen der CVars aber die ID des
Orderitems.
Also muss das Datenbankquery unterschiedliche Tabellen und Spalten
abfragen, je nachdem, ob »sub_module« gesetzt ist oder nicht.
Jan Büren [Wed, 18 May 2016 08:39:32 +0000 (10:39 +0200)]
SelfTests verbessert
Eingangsrechnungen können und dürfen diesselbe Rechnungsnummer haben,
entsprechend beim group by berücksichtigt.
Ferner amount auf Zahlungsausgangskonto und nicht Zahlungseingangskonten
berücksichtigt.
Jan Büren [Fri, 13 May 2016 07:25:41 +0000 (09:25 +0200)]
Verkauf->Berichte->Rechnungen: Bestellnummer des Kunden nicht per default anhaken
Hintergrund: Die Bestellnummer des Kunden nimmt eine Menge Platz in der
Breite weg und ist i.d.R. nur für einige Fälle ein sinnvoller voreingestellter
Wert.
i.A. thw
G. Richardson [Thu, 12 May 2016 14:27:02 +0000 (16:27 +0200)]
Neuer Minimaltestfall für Rabattrundung im PTC
Beim PTC wird vor der Multiplizierung mit der Menge der gerundete Rabatt vom
Verkaufspreis abgezogen, statt erst die Zeilensumme zu berechnen und
dann den Rabatt zu ziehen.
Jan Büren [Thu, 12 May 2016 11:10:59 +0000 (13:10 +0200)]
SelfTest: Überbuchte Bank-Transaktion finden
Es ist möglich, mehrere Rechnungen auf einen Schlag einer Bankbewegungen
zuzuordnen. Aktuell wird an der Oberfläche der Anwendung hier keine
Warnmeldung/Rückmeldung ausgegeben. Eine überbuchte Bankbewegung ist
aber auf jeden Fall nicht buchungskonform und muss entsprechend in der
Datenbank korrigiert werden.
Entsprechend einen Test hierfür geschrieben.
Wenn sich das Script beendet, so kann es sein, dass der Webserver
bereits den nächsten Request zum Script geschickt hat. Ist das der Fall,
kommt es zu einem internal server error für den User.
Statt dessen kann sich das Script selber ausführen. Dadurch werden die
Kommunikationskanäle zwischen Webserver und Script (STDIN, STDOUT,
STDERR) aufrechterhalten.
Moritz Bunkus [Mon, 2 May 2016 12:37:47 +0000 (14:37 +0200)]
Dispatcher: Restart bei hohem Memory-Verbrauch via exec anstelle von exit
Wenn sich das Script im Fall von zu hohem Speicherverbrauch beendet, so
kann es sein, dass der Webserver bereits den nächsten Request zum Script
geschickt hat. Ist das der Fall, kommt es zu einem internal server
error für den User.
Statt dessen kann sich das Script selber ausführen. Dadurch werden die
Kommunikationskanäle zwischen Webserver und Script (STDIN, STDOUT,
STDERR) aufrechterhalten.
Sven Schöling [Mon, 2 May 2016 14:25:58 +0000 (16:25 +0200)]
select styling in lx-office-erp.css
Irgendwer bei Firefox 46 scheint was geraucht zu haben. Das Stylesheet
hatte alle anderen windowmanager decorations überschrieben, aber FF
hat seit 32 select appearance ignoriert. Angeblich aus
Sicherheitsgründen. Das haben sie glücklicherweise gerade rechzeitig
gefixt, weil sie nun das unity7 Theme nochmal kaputter gemacht haben.
Ansonsten wäre das unbenutzbar.
Moritz Bunkus [Wed, 27 Apr 2016 12:45:46 +0000 (14:45 +0200)]
Request handling: bei zu hohem Speicherverbrauch erst flushen, dann beenden
Wenn sich das Script sofort beendet, dann werden Daten nicht an den
Webserverprozess geschickt und der wiederum schickt eine unschönen
Internal Server Error an den Client.
Daher zuerst den Request vollständig an den Server schicken und damit
den laufenden Request abschließen, bevor sich der Prozess beendet.
Die Perioden beginnen nicht mehr immer nur am 1. des Monats, sondern an
dem Tag, der über das Vertragsstartdatum angegeben ist. Daher müssen
auch die Variablen <%period_start_date%> und <%period_end_date%> anhand
des Vertragsstartdatums gesetzt und dürfen nicht auf den Monatsbeginn
beschnitten werden.
Sven Schöling [Thu, 21 Apr 2016 11:10:28 +0000 (13:10 +0200)]
Keine Default Exporte mehr in den main:: space
Ich hoffe ich habe alle erwischt. Dieser Commit, macht folgendes:
Exports in den main:: space passieren immer, wenn ein bin/mozilla/
script ein Modul einbindet, das @EXPORT setzt.
Laut meiner ack/grep Magie sind das SL::MoreCommon und SL::Helper::Flash
gewesen.
In beiden Fällen waren das importe, wo die eigentlichen Funktionen
vorher im main:: space gelegen haben und dann nachträglich in ein Modul
verschoben wurden.
Ich habe also:
1. Im script selber die Exportliste exakt auf die Funktionen gesetzt die
das script selber benutzt, gefunden mit dem oneliner:
Das waren in Flash: flash und in MoreCommon: save_form und restore_form.
2. Für den Fall, dass andere scripte im main:: Space diese Funktionen
benutzen alle anderen bin/mozilla Scripte nach diesen Funktionen
durchsucht, und für den Fall dass sie _nicht_ selber ein require
b/m/common.pl machen die entsprechenden imports hinzugefügt.