Jan Büren [Fri, 1 May 2020 09:39:21 +0000 (11:39 +0200)]
Mahnungen: Offene Gutschriften anzeigen und bei Auswahl gegen Offene Posten rechnen
Falls der Haken in der Übersicht gemacht wird, werden alle offenen
Gutschriften für den jeweiligen Kunden angezeigt. Wenn diese aktiviert
werden, werden diese Gutschriften für die jeweilige Mahnstufe ausgegeben.
Entsprechend wird die Summe der offenen Zahlung reduziert.
Offen: Im Mahnungsbericht werden die Mahnungen dann allerdings ohne
die Gutschriften angezeigt
Vorher wurde nur geprüft, ob die Konfiguration schon gesetzt wurde.
Sollte ein Kunde im Nachhinein auf E-Mail-Versand umstelle ist
das Verhalten jetzt komfortabler
Jan Büren [Thu, 16 Apr 2020 07:55:24 +0000 (09:55 +0200)]
MT940 Import aqbanking Version 6 benötigt andere Parameter
Ferner ist die Version 5 buggy, da sie nicht mit den neueren
Längen (seit Mitte 2019 im Einsatz) im Verwendungszweck zurechtkommt.
Entsprechend die minimale Version der aqbanking-tools auf > 6 gesetzt.
Moritz Bunkus [Fri, 20 Mar 2020 13:48:15 +0000 (14:48 +0100)]
Archive::Zip: kein Fix für aktuelle Versionen mehr nötig
Der Fix ist bei 1.40 bereits in offiziellen Releases
enthalten. Deutlich neuere Versionen enthalten sogar Änderungen, bei
denen unser Fix das Modul kaputt macht.
Also… Archive::Zip ≥ 1.40 voraussetzen und unseren eigenen Fix wegwerfen.
Bernd Bleßmann [Mon, 16 Mar 2020 17:37:42 +0000 (18:37 +0100)]
Belegmasken: weitere Werte f. PrintOptions aus form füllen
Das ist für Proforma-Rg aus Aufträgen wichtig, denn diese werden nach einem
erneuten Laden über js gedruckt. Und dazu müssen die vorher eingestellten
Werte wieder richtig vorhanden sein.
Problem war: Auftrag als Proforma drucken ging erst beim zweiten Drucken.
Moritz Bunkus [Mon, 16 Mar 2020 08:52:07 +0000 (09:52 +0100)]
DATEV-Tests: eine gültige UStID-Nr benutzen
Der DATEV-Export nutzt inzwischen Routinen zur Prüfung & sauberen
Formatierung von UStID-Nummern, und die in den Tests verwendete war
nach dem gültigen Algorithmus schlicht nicht gültig.
Moritz Bunkus [Wed, 11 Mar 2020 11:21:56 +0000 (12:21 +0100)]
ZUGFeRD-Import: UStID-Nr auch finden, wenn sie nicht normalisiert sind
Sowohl die UStID-Nummern in der ZUGFeRD.xml als auch die Nummern der
Lieferanten in der Datenbank werden nun zum Vergleichen
normalisiert. Damit wird auch ein Lieferant gefunden, dessen UStID-Nr
in der Datenbank z.B. »DE 123 456 789« ist und in der XML
»DE123456789« steht.
Jan Büren [Tue, 10 Mar 2020 11:24:48 +0000 (12:24 +0100)]
ZUGFeRD: ZUGFeRD-Controller der minimal ZUGFeRD PDF parst
Simples Upload Formular für ein PDF. Falls das PDF gültige
ZUGFeRD Daten hat und ein Lieferant mit UST-ID in kivi gefunden wird,
werden die Formulardaten in der ersten gefunden Kreditorenbelegvorlage
des Lieferanten angezeigt. Details und TODO, s.a. perldoc
Moritz Bunkus [Tue, 5 Nov 2019 12:46:38 +0000 (13:46 +0100)]
PDF-Erzeugung: Support fürs Erzeugen von PDF/A-konformen PDFs
Es gibt einen Rose-DB-Helfer `S:D:H:PDF_A`, der die erforderliche
Struktur für `SL::Template::LaTeX` (via
`$form->{TEMPLATE_DRIVER_OPTIONS}->{pdf_a}`) erzeugt. Der Helfer ist
für die üblichen Belegklassen (`S:D:{Order,DeliveryOrder,Invoice}`)
eingebunden.
Weiterhin können über
`$form->{TEMPLATE_DRIVER_OPTIONS}->{pdf_attachments}` Dateien in PDFs
eingebettet werden.
Das Erzeugen funktioniert nur für LaTeX-Vorlagen, nicht für
OpenDocument-Vorlagen.
Für LaTeX werden nun weitere Pakete benötigt, deren Präsenz vom
Installations-Check geprüft werden: `pdfx`, `embedfile`.
Für `embedfile` muss leider eine von uns modifizierte Version benutzt
werden, da der letzte offizielle Release das PDF-Attribut
`/AFRelationship` nicht unterstützt. Dieses Attribut muss aber für
jede in ein PDF/A eingebettete Datei gesetzt sein. Daher liefern wir
die modifizierte Version im neuen Unterverzeichnis `texmf` mit, das
über die Umgebungsvariable `TEXINPUTS` höhere Präferenz bekommt, als
die Systemverzeichnisse.
Die relevante Modifikation ist der folgende Pull-Request:
In der Maske und daher in $::form stehen die Werte in Prozent, in den
DB-Spalten und damit den Rose-Attributen werden sie aber als Faktor
gespeichert, sprich z.B. 0.05 für 5%.
Moritz Bunkus [Fri, 15 Sep 2017 12:35:16 +0000 (14:35 +0200)]
_make_record(_item): Zahlenattribute nicht mit leeren Strings setzen
Wir übergeben diverse Zahlenfelder als hidden inputs, ohne dass wir
prüfen, ob die überhaupt gesetzt sind:
1. Im Aufruf 1 ist z.B. `$::form->{customer_id} = undef`, oder es gibt
sogar nicht mal ein `$::form->{customer_id}`.
2. Dies wird ohne Prüfung auf den tatsächlichen Wert als Hidden
ausgegeben, und endet damit als `<input type="hidden"
name="customer_id" value="">`.
3. In Aufruf 2 kommt das dann als `$::form->{customer_id} = ''` an,
also als leerer String, egal, ob der Wert vorher `undef`, ein
leerer String war oder gar nicht existiert hat.
Wenn man nun, wie `_make_record_item`, über alle Schlüssel aus
`$::form` iteriert, und die korrespondierenden
Attributs-Setter-Funktionen einer RDBO-Instanz mit ihnen aufruft, so
werden somit Zahlen-Setter-Funktionen mit leeren Strings
aufgerufen. Das sorgt dafür, dass später bei einem Aufruf von
`$invoice->customer` versucht wird, ein Customer-Objekt aus der DB zu
laden (da ja durch den Aufruf von `…->customer_id(…)`, also das Setzen
des Relationship-Attributs, signalisiert wurde, dass die Relationship
aktiv ist).
Allerdings ist der Wert des Primärschlüsselattributes nun der leere
String, also im Perl-Sinne `false`. Das wiederum wertet Rose als
Versuch, ein Objekt ohne Angabe eines Primärschlüsselattributs zu
laden, was wiederum zu einer Fehlermeldung führt.
Kurz: Zahlenattribute aus RDBO-Instanzen dürfen gar nicht erst auf
leere Strings gesetzt werden. Sie dürfen nur gesetzt werden, wenn sie
auch tatsächliche Zahlenwerte enthalten sollen.
Für den zu beobachteten Zeitraum werden jetzt getrennt betrachtet, ob
Rechnungen aus diesem Zeitraum storniert sind und mit Ihren Partnern in
der Summe nicht 0 ergeben,
oder ob
Stornorechnungen in diesem Zeitraum erstellt wurden und mit Ihrem Partner
in der Summer nicht 0 ergeben.
Die Partner müssen jeweils nicht im zu beobachteten Zeitraum liegen.
Bernd Bleßmann [Thu, 27 Feb 2020 11:17:58 +0000 (12:17 +0100)]
SL/BackgroundJob/SelfTest: eine lfd. Modulnummer hinzufügen.
Die Ergebnisse für das E-Mail-Template liegen in einem Hash mit den
Modul-Namen als keys. Im Template wird über die keys iteriert, damit ist
die Reihenfolge aber nicht garantiert. Deshalb wird hier eine Modulnummer
vor dem Namen eingefügt und die Ergbenisse sortiert - so kommen die Ergebisse
in der Reihenfolge der Module in der Konfig-Datei.
Moritz Bunkus [Thu, 20 Feb 2020 11:55:06 +0000 (12:55 +0100)]
Unterstützung für PostgreSQL 12
Das Format von `pg_attrdef` wurde in PostgreSQL 12 deutlich geändert;
die Spalte `adsrc` gibt es nicht mehr. Für den Auth-Code ist
allerdings nur interessant, ob es Spalte X in Tabelle Y bereits
gibt. Also auch nur genau diese Informationen auslesen.
Bernd Bleßmann [Thu, 6 Feb 2020 17:52:06 +0000 (18:52 +0100)]
LaTeX: Tilde vor U+00A0 ersetzen, sonst wird aus U+00A0 eine LaTeX-Tilde
Da die Tilde in LaTeX eben für non-breaking whitespace steht, darf diese
nicht durch die mittig gesetzte Tilde ersetzt werden. Deshalb hier die
Reihenfolge ändern.