Wie in SL/IS.pm ( c0ed7d2fa ) werden hier die notes doppelt zurückgegeben.
fixup durch löschen von notes vor kopieren
Auch hier kann es passieren dass die notes von Dokumenten z.B. Rechnung durch die
notes des Lieferanten (Kunden) in den Forms-Variablen überschrieben werden,
dann beim Drucken der falsche Text in der (LateX) Rechnung landet.
Sven Schöling [Mon, 9 May 2016 08:06:23 +0000 (10:06 +0200)]
Partpicker styling
- Lupe jetzt inline
- Lupe in svg, kann also mitskalieren
- Inputfeld ist jetzt Model padding-box, size Angaben propagieren besser
auf die umliegenden Elemente
- getestet in lx-office-erp und kivitendo css
Moritz Bunkus [Wed, 8 Jun 2016 14:05:09 +0000 (16:05 +0200)]
generic_translations: DB-Upgrade in Perl geschrieben wg. Constraint-Namen
In alten PostgreSQL-Versionen hießen Foreign-Key-Constraints oft noch so
was wie »$1«. Da sich das Upgrade-Script also bzgl. des Namens nicht
sicher sein kann, gibt's momentan nur die Möglichkeit, einmal alle
Foreign-Keys zu einer Tabelle wegzuwerfen und diese neu anzulegen.
Dafür wiederum haben wir Support-Funktionen in SL::DBUpgrade2::Base, die
wie nutzen können. Also Umstellung des Scripts auf Perl.
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.