Bernd Bleßmann [Mon, 10 Aug 2015 11:52:17 +0000 (13:52 +0200)]
Auftrags-Controller: Änderung der Übergabe aus der Form und Objekt-Erzeugung
- Form wird bei Ajax-Call serialisiert
- item_id ist order.orderitems.id
- Orderitems durch assign_attributes erzeugen lassen
- linetotal wird direkt über PriceTaxCalculator berechnet
Moritz Bunkus [Tue, 3 Nov 2015 08:39:54 +0000 (09:39 +0100)]
SEPA: Zeilen ohne Bankinfo, die vorausgewählt wären, gesondert markieren
Bei Überweisungen sind diejenigen Zeilen vorausgewählt, bei denen in der
Rechnung der Lastschrifteinzug nicht aktiv ist, die ich also manuell
überweisen muss.
Bei Einzügen sind diejenigen Zeilen vorausgewählt, bei denen in der
Rechnung der Lastschrifteinzug aktiv ist, die ich also einziehen muss.
Sprich es werden die Zeilen mit (2) markiert und mit
Fehler-Hintergrundfarbe dargestellt, bei denen ich aktiv werden muss
aber es momentan aufgrund fehlender Bankinformationen nicht kann.
Sven Schöling [Thu, 22 Oct 2015 11:26:34 +0000 (13:26 +0200)]
Einkaufsrechnungen: Neu buchen SQL Fehler behoben
Fehler trat auf, wenn Aufwandsmethode eingestellt war, und eine
Einkaufsrechnung, für die bereits eine Verkaufsrechnung existierte
geändert wurde. Dann wurde fälschlicherweise beim Umkehren der Rechnung
versucht die Warenbestandsbuchungen zu ändern.
Ohne Verkaufsrechnung existieren die allocated < 0 Positionen nicht.
Moritz Bunkus [Mon, 2 Nov 2015 13:57:56 +0000 (14:57 +0100)]
DATEV: Benutzung undefinierter Werte vermeiden
Wenn der DATEV-Export vom Payment-Helfer mit aktivierten DATEV-Checks
heraus aufgerufen wird, so sind diverse Felder wie die KNE-Kopfdaten
nicht gesetzt (werden auch nicht benötigt).
Moritz Bunkus [Mon, 2 Nov 2015 13:41:08 +0000 (14:41 +0100)]
Hash-Zuweisung mit ungerader Anzahl Elemente vermeiden
In einem Hash wird eine leere Liste im ternären Ausdruck nun mal im
Listenkontext ausgewertet… und dadurch ist bei so einem Konstrukt die
rechte Seite potenziell leer (sie enthält kein Argument):
Jan Büren [Tue, 27 Oct 2015 10:24:39 +0000 (11:24 +0100)]
SelfTest um Testfall ac.amount == ar.netamount ergänzt
In Ergänzung zu #7915128c einen ähnlich sinnvollen Testfall für
Selftest ergänzt.
Im Datenbestand muss zwingend ar.netamount == acc_trans.amount für Typ
AR_amount identisch sein.
Ansonsten kommt / kam es in der Vergangenheit immer zu cent Differenz in
der Rechnungsübersicht und in der Rechnungseinzelansicht.
G. Richardson [Mon, 26 Oct 2015 08:55:59 +0000 (09:55 +0100)]
format_amount - negative 0 vermeiden
Ist eine Zahl z.B. -0.002, und wird auf 2 Stellen gerundet, so wird erst
das Minuszeichen gemerkt, dann gerundet (0.00), und schießlich wird das
Minus wieder hinzugefügt, dadurch bekommt man -0.00. Mit diesem Patch
wird das Minus-Zeichen entfernt wenn die gerundete Zahl genau 0 ergibt.
Bernd Bleßmann [Fri, 23 Oct 2015 16:25:51 +0000 (18:25 +0200)]
PriceSources: Namen der Quellen für Kunden- und Lieferantenrabatt berichtigt.
Die Klassen SL::PriceSource::Customer und Vendor verwenden als name
'customer_discount' bzw. 'vendor_discount' während SL::PriceSource::ALL
'customer' und 'vendor' benutzte.
Dadurch ließen sich z.B. diese Rabattquellen nicht deaktivieren.
Jan Büren [Fri, 23 Oct 2015 12:36:44 +0000 (14:36 +0200)]
Standardlagerplatz in Stammdaten beim Umlagern ändern
Scheinbar hat dies bisweilen immer nur bei gleichbleibenden Lagern funktioniert
(s.a. Ergänzung POD in Object.pm->update_attributes)
Ferner, sinnvollerweise das bestehende Part-Objekt verwenden und kein neues
erzeugen.
Sven Schöling [Tue, 20 Oct 2015 15:44:05 +0000 (17:44 +0200)]
Symlinks entfernt
Die bevorzugte Art das Programm an den Apache anzubinden ist seit Jahren
über ein AliasMatch der direkt dispatcher.<typ> aufruft.
Das letzte mal haben wir das 2010 probiert, da gab es aber noch viele
Installationen deren Update nicht trivial gewesen wäre. Das sollte heute
nicht mehr so sein.
Aufgrund der Code-QS von Bernd folgende Details bei der Massenkonvertierung
von Lieferscheinen nach Rechnungen eingebaut:
a) Das Model filtert jetzt nur nach offenen Verkaufslieferscheinen und
nicht noch zusätzlich nach offenen, aber gelieferten Verkaufslieferscheinen.
b) Felder die mit CKEditor editiert wurden, werden zwar völlig richtig
in das Invoice-Objekt editiert, ABER beim Massenausdruck über den Background-Job
wird nicht automatisch der HTML-Code in LaTeX Code gewandelt. Daher erfolgte
der Ausdruck als HTML-Code (<strong>Dies ist fett</strong>) im PDF.
Entsprechend für die manuelle Auswahl als auch für die Background-Job geändert.
c) Der Filter im Bericht filtert nach transdate (Belegdatum) und nicht nach Lieferdatum.
Entsprechend hier die richtige Beschriftung gesetzt.
Daniel Popiuk [Fri, 28 Aug 2015 11:46:30 +0000 (13:46 +0200)]
Auslagern über Standardlagerplatz: Artikel mit Chargennummern auslagern
Standardmässig funktioniert das Auslagern über Standardlagerplatz nicht, sobald eine Chargenummer
oder eine Mindesthaltbarkeit definiert ist, da dass Programm nicht entscheiden kann, welche Charge oder MHD
gemeint ist.
Ein Sonderfall ist aber, wenn gar keine Chargen/MHDs mehr eingelagert sind, dann kann die Ware
wieder automatisch, da eindeutig über den Standardlagerplatz ausgelagert werden.
Moritz Bunkus [Fri, 9 Oct 2015 12:55:02 +0000 (14:55 +0200)]
Zahlungsbedingungen: falsche Beschreibung der Bank-Variablen gefixt
Die Variablen wie <%bank%> wurden bezeichnet als »Ihre Bank«, sprich die
Bank der kivitendo-Nutzerin. Das ist schlicht falsch, weil es die Bank
des Kunden/Lieferanten ist, der beim gerade ausgedruckten Beleg
verwendet wird.
Außerdem ist es technisch auch gar nicht möglich, weil beliebig viele
Bankkonten in kivitendo angelegt werden können. Beim Ausdruck ist
allerdings kein Bankkonto auszuwählen, in keinem der Belege, also steht
eine Information wie »die Bank der kivitendo-Nutzerin« überhaupt nicht
zur Verfügung.
Bernd Bleßmann [Fri, 9 Oct 2015 11:58:31 +0000 (13:58 +0200)]
Lagerbewegungen/-bestände auch mit Mindesthaltbarkeitsdatum importieren können.
Auch hier kann es Probleme geben, wenn eine Installation zuerst das
Mindeshaltbarkeitsdatum aktiviert hatte und es dann deaktiviert wird (siehe auch
"System->Mandantenkonfiguration", Reiter "Lager" unter "Mindesthaltbarkeit
anzeigen".
Jan Büren [Mon, 5 Oct 2015 16:17:54 +0000 (18:17 +0200)]
Optionale Sortierfunktion in Lieferscheinen
Den Commit aus dem Kundenprojekt entsprechend für den
Standard überarbeitet und als optionale Aufruf für ein HTML-Template
zu Verfügung gestellt.Entsprechend kurz im POD beschrieben.
Jan Büren [Tue, 22 Sep 2015 08:22:36 +0000 (10:22 +0200)]
Implementiert FB0017 Position nach Art.Nummer in Lieferschein sortieren
Ab dem Status Verkaufs-Lieferschein können die Positionen nach Artikelnummern sortiert werden,
sodass diese Sortierreihenfolge in die Rechnung übernommen wird.
Implementierung mit Natural Sort, d.h. Buchstaben und Zahlen können gemischt sein.
Aktion kann entweder über einen Knopf ausgelöst werden oder wird standardmässig bei jedem Speichern ausgeführt.
Aktuell heißt der Knopf: Sortieren und Speichern und erscheint sobald, der Lieferschein persisitente
Positionen in der DB hat.
Jan Büren [Mon, 5 Oct 2015 15:30:07 +0000 (17:30 +0200)]
Massendruck weitere Optionen (zweiter Druckbefehl) implementiert
transdate, copy_printer_id (id des zweiten Druckbefehls) als optionale
Parameter beim Aufruf der Konvertierung inkl. Ausdruck in der API
bereitgestellt.
Jan Büren [Mon, 5 Oct 2015 14:46:21 +0000 (16:46 +0200)]
convert_to_invoice params an Invoice::new_from(%params)
DeliveryOrder.pm übergab etwaige Parameter beim Aufruf von new_from
an Invoice->post(%params). Das macht für den Anwendungsfall chart_id
in 42ea98b4 Sinn (Order.pm), allerdings benötigt die convert_to_invoice in
DeliveryOrder.pm die new_from(attributes => {'custom_attr' => value })
(s.a. 20118160).
Moritz Bunkus [Mon, 5 Oct 2015 10:52:40 +0000 (12:52 +0200)]
OpenDocument-Template: Umwandlung von HTML-Feldern gefixt
OpenDocument hat gewisse Probleme mit Verschachtelung von gewissen
Konstrukten, z.B. kein <text:p> innerhalb von <text:p><text:span>. Die
HTML-Felder aber sind immer in ein <p>…</p> eingeschlossen.
Bisheriger Ansatz war, davon auszugehen, dass der aktuell offene Tag im
XML ein <text:p> ist. Dafür wurde im HTML schlicht das erste <p> und das
letzte </p> entfernt. Das funktioniert, wenn das HTML-Feld der einzige
Inhalt in z.B. einer Tabellenzelle ist, z.B. eine Zelle, in der nur
<%longdescription%> steht.
Es geht aber in die Hose, wenn der innerste offene Tag eben nicht
<text:p> ist, was sehr schnell passiert, z.B. wenn man Konstrukte wie
<%description%><%if longdescription%><%longdescription%><%end%>
nutzt.
Lösung ist, die aktuell offenen Tags in einem Stack zu verfolgen. Das
HTML-Formatieren kann dann alle offenen Tags bis zum letzten <text:p>
schließen und am Ende wieder öffnen.
Der Titel »Kreditlimit« wird nun wie andere Zeilentitel in der linken
Spalte angezeigt, was den Blickfluss stabilisiert.
Weiterhin wurde in der Debitorenbuchungsmaske auch ein negativer
verbleibender Kredit in grün anstelle von rot angezeigt. Grund war ein
Vergleich mit einer falschen Variablen.