Moritz Bunkus [Tue, 26 Jun 2018 11:57:04 +0000 (13:57 +0200)]
LaTeX-Escaping: gewisse Formen von »no line to end here« vermeiden
Passiert, wenn im HTML so ein Konstrukt existert:
…Text</p><p> <br>
Das wird zu einem Paragraphen, einem Leerzeichen und einem forcierten
Zeilenumbruch:
----schipp----
Text
\newline
----schipp----
Durch die Leerzeile fängt für LaTeX dann dort ein neuer Absatz an. Der
ist soweit leer. Das Leerzeichen am Anfang der Zeile ist kein
Inhalt. Also gibt es aus Sicht von LaTeX dann keinen Zeileninhalt,
sobald es das `\newline` trifft.
Moritz Bunkus [Thu, 21 Jun 2018 11:20:35 +0000 (13:20 +0200)]
Finanzübersicht: »einmalige« Periodizität bei wiederkehrenden Rechnung gefixt
Die Finanzübersicht nutzt die Funktion
`SL::DB::PeriodicInvoicesConfig::calculate_invoice_dates`, um jedes
Ausführungsdatum innerhalb eines Zeitraumes zu berechnen. Dort wurde
»einmalig« fälschlicherweise wie »jeden Monat wiederholen«
behandelt. Dadurch tauchten die solche wiederkehrenden Rechnungen in
der Finanzübersicht in jedem Monat auf, sofern die Konfiguration noch
aktiv ist.
Beim eigentlichen Erzeugen der wiederkehrenden Rechnungen hingegen war
das deshalb kein Problem, weil so eine Konfiguration direkt nach dem
ersten Erzeugen der Rechnung auf inaktiv gesetzt wird.
Moritz Bunkus [Tue, 12 Jun 2018 07:07:27 +0000 (09:07 +0200)]
Kreditorenbuchungen: Flag »cleared« beim Zahlungsbuchen beibehalten
Existierende Zahlungen werden aus acc_trans komplett gelöscht und neu
eingefügt. Dabei geht der Status des Flags »cleared« verloren, der
anzeigt, dass eine Zahlung mit dem Konto abgeglichen wurde.
Das Flag einer Zahlung wird nun beibehalten, sofern:
• die Zahlung bereits vorher existiert hat (Präsenz der
`acc_trans_id`)
• Wert und Konto gleich geblieben sind
Moritz Bunkus [Tue, 12 Jun 2018 07:00:00 +0000 (09:00 +0200)]
Debitorenbuchungen: Flag »cleared« beim Zahlungsbuchen beibehalten
Existierende Zahlungen werden aus acc_trans komplett gelöscht und neu
eingefügt. Dabei geht der Status des Flags »cleared« verloren, der
anzeigt, dass eine Zahlung mit dem Konto abgeglichen wurde.
Das Flag einer Zahlung wird nun beibehalten, sofern:
• die Zahlung bereits vorher existiert hat (Präsenz der
`acc_trans_id`)
• Wert und Konto gleich geblieben sind
Moritz Bunkus [Mon, 11 Jun 2018 14:31:11 +0000 (16:31 +0200)]
Einkaufsrechnungen: Flag »cleared« beim Zahlungsbuchen beibehalten
Existierende Zahlungen werden aus acc_trans komplett gelöscht und neu
eingefügt. Dabei geht der Status des Flags »cleared« verloren, der
anzeigt, dass eine Zahlung mit dem Konto abgeglichen wurde.
Das Flag einer Zahlung wird nun beibehalten, sofern:
• die Zahlung bereits vorher existiert hat (Präsenz der
`acc_trans_id`)
• Wert und Konto gleich geblieben sind
Moritz Bunkus [Mon, 11 Jun 2018 13:55:25 +0000 (15:55 +0200)]
Verkaufsrechnungen: Flag »cleared« beim Zahlungsbuchen beibehalten
Existierende Zahlungen werden aus acc_trans komplett gelöscht und neu
eingefügt. Dabei geht der Status des Flags »cleared« verloren, der
anzeigt, dass eine Zahlung mit dem Konto abgeglichen wurde.
Das Flag einer Zahlung wird nun beibehalten, sofern:
• die Zahlung bereits vorher existiert hat (Präsenz der
`acc_trans_id`)
• Wert und Konto gleich geblieben sind
Jan Büren [Mon, 4 Jun 2018 09:04:57 +0000 (11:04 +0200)]
SelfTest false positive vermeiden
$self->all_passed enthält nicht mehr den Zustand, ob alle
Tests erfolgreich waren. Als Workaround auf zwei negativ
Status-Meldungen prüfen, die bei Problemen gesetzt sind.
Jan Büren [Mon, 4 Jun 2018 08:57:03 +0000 (10:57 +0200)]
Payment::pay_invoice with skonto -> Steuersatz ist eindeutig
tax_id in acc_trans definiert sicherer den Steuersatz als der
taxkey (Steuerschlüssel von DATEV), s.a. FK-Constraint:
"acc_trans_tax_id_fkey" FOREIGN KEY (tax_id) REFERENCES tax(id)
Bernd Bleßmann [Wed, 30 May 2018 13:26:18 +0000 (15:26 +0200)]
CSV-Helfer: Leere Zeilen ignorieren.
Als leere Zeilen hier gelten auch Zeilen, die nur das Trennzeichen enthalten.
Mit leeren Zeilen gab es immer wieder Probleme, teils mit schwer zu
interpretierenden Fehlermeldungen, teils mit nicht gewünschtem Verhalten, z.B.
beim Warenimport das Anlegen neuer Artikel für jede leere Zeile.
Bernd Bleßmann [Mon, 28 May 2018 09:29:46 +0000 (11:29 +0200)]
Auftrags-Controller: fake id für Items nach Workflow setzen.
Für items, die hinzugefügt werden, also noch nicht in der DB gespeichert sind,
muss eine fake id gesetzt werden, damit diese bei den actions, die einzelne
items betreffen, auch richtig gefunden/zugeordnet werden können.
Das behebt z.B. einen Fehler mit falschen Preisquellen nach dem Workflow
Angebot -> Auftrag, wo immer die Preisquellen der ersten Postion im Dialog
verwendet wurde.
Jan Büren [Tue, 22 May 2018 06:52:09 +0000 (08:52 +0200)]
Fix: #354 Zahlungsbedingung falsch bei Workflow Lieferschein -> Rechnung
Bisher wurde nur nach dem ersten Treffen der richtigen Auftragsnummer gesucht.
Dabei konnten Zahlungsbedingungen vom Einkaufs-Auftrag nach Verkaufs-Rechnung übernommen werden.
Entsprechend zusätzlichen Filter nach vc_id eingebaut.
Bernd Bleßmann [Wed, 16 May 2018 14:58:36 +0000 (16:58 +0200)]
Auftrags-Controller: Kunde/Lieferant vorbelegen, wenn deren id übergeben wird
Für die Workflow-Links aus den Kunden-/Lieferantenstammdaten heraus werden
die customer_id oder vendor_id berücksichtigt und die Kunden-/Lieferanten-
abhängigen Attribute im Order-Objekt entprechend gesetzt.
G. Richardson [Wed, 11 Apr 2018 09:04:05 +0000 (11:04 +0200)]
Refactoring payment.t
reset_state in init_state umbenannt und params entfernt. Die Daten werden nur
einmal aufbereitet.
Überall title an Anfang der Funktion verschoben, bzw. neu angelegt.
ALWAYS_RESET entfernt. Es werden nun während des Tests nie Rechnungen gelöscht.
Immer alle Daten der Einzeltests zu löschen und alles neu zu initialisieren
würde den Test auch recht langsam, und war eh nicht sauber implementiert.
Moritz Bunkus [Mon, 23 Apr 2018 07:57:58 +0000 (09:57 +0200)]
CVars: in Artikelstammdaten sind alle CVars gültig
Der Code zum Rendern der CVars zeigt nur »Element deaktiviert«, wenn
die CVar als ungültig geflaggt ist. Das kann auch in den Stammdaten
passieren, nämlich dann, wenn man eine CVar in der Konfiguration als
»Deaktiviert als Voreinstellung« ausgewählt hat.
Der Effekt ist, dass man die CVar in den Stammdaten nicht mehr
bearbeiten kann.
Jan Büren [Fri, 13 Apr 2018 12:13:32 +0000 (14:13 +0200)]
doc: Liste der Debian-Pakete ergänzt
Somit gibt es wieder zwei einfach zu pastende Installationslisten.
Einmal Datenbank, Webserver und Perl und des weiteren die Druckvorlagenpakete.
Die Pakete poppler-utils, aqbanking-cli und postgresql-contrib sind somit hinzugefügt.
Jan Büren [Fri, 13 Apr 2018 12:10:53 +0000 (14:10 +0200)]
Auch Verwendungszweck beim Import per CSV zusammenfügen
Beim MT940 Import wird purposeX und remote_name_X in einer
Zeichenkette zusammengefügt. Beim CSV-Import ist dies nicht
möglich, da an der Oberfläche das entsprechende Drop-Down-Element
diese Zuordnung (Spalte -> Import-Objekt) nicht zulässt.
Jan Büren [Mon, 26 Mar 2018 11:02:56 +0000 (13:02 +0200)]
Verknüpfte Belege um die Verknüpfung 'E-Mail Journal' erweitert.
Falls das E-Mail-Journal aktiviert ist wird zusätzlich zu der
archivierten E-Mail auch die Verknüpfung vom Beleg zu der E-Mail mitgespeichert
und ist im Beleg zusätzlich direkt anwählbar.
Etwas mehr Details im POD vom Mailer.pm, die Implementierung orientiert
sich überwiegend an der Erweiterung der Verknüpfung von Letter.pm, bzw. dem ShopConnector.
Jan Büren [Thu, 1 Mar 2018 11:09:00 +0000 (12:09 +0100)]
SelfTests/Transactions.pm erweitert
Da beim Löschen von Zahlungen mittlerweile auch kaskadieren die
reconciliation_links gelöscht werden, können verwaiste abgeglichen
Bankbewegungen entstehen.
Entsprechend Testfall ergänzt.
Sven Schöling [Thu, 15 Feb 2018 10:26:15 +0000 (11:26 +0100)]
Controller::Base::url_for: nur noch fragment erlauben
Mit mosu darüber gesprochen, und folgende Argumente kamen:
* Es ist unschön dass quasi magische Elemente wie controller, action und
jetzt hash und fragment in einer flachen Argumentliste übergeben
werden. Das ist aber historisch gewachsen und wird jetzt nicht
geändert. Ziel sollte es aber sein, dass potentielle Kollisionen
selten passieren.
* fragemnt ist die offizielle Bezeichnung für den #... Anteil einer URI.
Blöderweise nennt Javascript das document.location.hash, und so ist
das im Gedächtnis geblieben. Da aber hash eh schon in Perl und
Programmieren extrem überladen ist mit Bedeutungen ist fragment hier
der etwas weniger miese Begriff.
Sven Schöling [Tue, 13 Feb 2018 13:11:17 +0000 (14:11 +0100)]
Part/Customer/Vendor: Bei click auf ein autocomplete item sofort committen
Betrifft nur die beiden schon auf commit umgestellten Picker. Historisch
benutzen die Picker ein zweistufiges Modell: Nach Texteingabe wird bei
der ersten aktion (sei es tab oder enter) erstmal vervollständigt, aber
nicht committed. Erst wenn dadurch die Maske in einen definierten
zustand gerät wird beim zweiten tab committed.
Es gibt aber diverse Szenarien wo die Absicht des Benutzers eindeutig
ist. Dabei kann dann der zweite Schritt übersprungen werden. Bisher war
das vor allem Texteingabe die eindeutig gematcht hat und dann mit Enter
abgeschlossen wurde. Der Klick auf ein Element im Drop-Down ist aber
definitiv auch ein solcher Fall.
Moritz Bunkus [Wed, 7 Feb 2018 09:48:29 +0000 (10:48 +0100)]
Zahlungsbedingungen bei Kundenwechsel aus Stammdaten holen
`IS::get_customer` kann die Entscheidung, ob die Zahlungsbedingungen
überschrieben werden sollen oder nicht, gar nicht treffen, weil es
nicht genug Informationen hat. Nur der Aufrufer hat die, und daher
muss `IS::get_customer` den Wert immer aus den Kundestammndaten
übernehmen.