GetModels: Funktion zum Setzen zusätzlicher URL-Parameter
round_amount: Fix für falsches Runden bestimmter Werte

Gewisse Werte wie z.B. 33,675 wurden bei 2 Stellen falsch gerundet,
nämlich auf 33,67 anstelle von 33,68. Bei anderen Werten hingegen
funktionierte es (beispielsweise 149,175 @ 2 → 149,18).

Grund war, dass durch das Addieren von 0.5 wieder Fließkommaberechnung
und damit die Ungenauigkeit der Präsentation der IEEE-Fließkommazahlen
ins Spiel kommt. Das anschließende int() schneidet dann die
Fließkommazahl falsch ab, ungefähr so:

- Initial: 33,675
- Linksshift um 2 Dezimalstellen, also * 100: 3367,5
- Dann + 0.5 und truncate, hier passierts: +0.5 =
  3367,499999999999999999999958 (auch wenn Perl das in der Ausgabe als
  3368 darstellen würde) oder so, davon int() ergibt nun mal 3367 vor
  anschließendem Rechtsshift um 2 Dezimalstellen

Lösung ist, bis auf das Links-/Rechtsshiften um die Dezimalstellen gar
keine Fließkommaberechnung zu verwenden. Eine Variante ist, eine Stelle
mehr zu shiften als man an Genauigkeit will, dann 5 zu addieren und
anschließend auf das nächst kleinere Vielfache von 10 zu
reduzieren (durch simples Abziehen vom Modulo 10).

Um die Logik leicht einfacher zu halten, wird das Vorzeichen anfangs
ermittelt und ab dann nur noch mit dem Absolutwert der Zahl
gerechnet. Das ursprüngliche Vorzeichen wird erst nach dem erneuten
Rechtsshift, also ganz am Schluss der Berechnung, wieder hergestellt.
Typo-Fix: Trennzeichen für CVar-Flags ist ':' nicht ';'.
Installationcheck: --silent switch um es in shell scripte einzubinden
Auf Datenbankebene Steuerzonen konfigurierbar gemacht

Damit können jetzt mehr als die 4 Standardsteuerzonen eingerichtet
werden. Die bisherigen Steuerzonen wurden aus der Tabelle
buchungsgruppen in die neue Tabelle taxzone_charts ausgelagert.

Konzeption siehe Ticket #2295

Es wurden noch keinerlei Veränderungen an der Kivitendo
Benutzeroberfläche durchgeführt, durch dieses Upgrade können die
Buchungsgruppen also nicht mehr konfiguriert werden, dies muß auf
Datenbankebene passieren.

Rose schon angepasst.

Conflicts:

	SL/DB/MetaSetup/Buchungsgruppe.pm
Steuerzonen und Buchungsgruppen bearbeiten

Nachdem man Steuerzonen und Buchungsgruppen auf Datenbankebene
bearbeiten kann, ist jetzt auch eine Bearbeitung an der Ober-
fläche möglich.

Alter Code, der für die Anzeige/Bearbeitung/Erstellung von
Buchungsgruppen entwickelt wurde hat nicht mehr funktioniert
und wurde vollständig ersetzt.
id ungleich Null setzen in tax_zones

In der Tabelle tax_zones gibt es sehr häufig noch Einträge mit id=0.
Dadurch kommt es bei der Anzeige, und auch beim Bearbeiten dieses
Eintrags zu fehlern. Dieser Commit vergibt verändert den Wert der
id, s.d. die id einen von 0 verschiedenen Wert hat.
Sortieren von Steuerzonen in Belegen

Die Sortierreihenfolge von Steuerzonen in Belegen wurde bisher noch
nicht in den Belegen berücksichtigt.
Änderung von Upgrade-Script change_taxzone_id_0

Die Tabellen ar und ap werden jetzt auch an den ID-Wechsel angepasst.

Weiterhin werden 2 Fremdschlüssel gesetzt, die durch den Wechsel
aufgefallen sind.
Steuerzonen ungültig machen

jede Steuerzone kann man unter "System->Steuerzonen->auf Steuerzone klicken"
individuell auf ungültig (obsolete) setzen.

ungültig heißt:

* Steuerzone erscheint nicht in der großen Buchungsgruppenübersicht
* Steuerzone erscheint nicht im Drop-Down Menü für Steuerzonen bei neuen
  Belegen (Angebot-Rechnung)

Bei alten Belegen, die erneut geöffnet werden, ist leider das Verhalten unterschiedlich:

* bei schon gebuchten EK/VK-Rechnungen (id) ist das Drop-Down ausgegraut und
  disabled und es wird nur die ausgewählte Steuerzone angezeigt -> funktioniert

* bei schon gebuchten Angeboten/Aufträgen müssen immer alle Steuerzonen
  angezeigt werden, da man die Steuerzone auch im Nachhinein ändern kann, aber
  auch alle alten Belege mit mittlerweile ungültigen Steuerzonen korrekt
  angezeigt werden müssen. Man kann also nicht einfach nach id fragen und
  entsprechend nach ungültig filtern.

Bucht man also einen Auftrag mit einer bestimmten Steuerzone, setzt die
Steuerzone auf ungültig, und generiert dann aus dem Auftrag z.B. eine Rechnung,
würde die Steuerzone aus dem Auftrag nicht übernommen werden, sondern die erste
Steuerzone aus der Liste standardmäßig ausgewählt sein.
Changelog Eintrag für konfigurierbare Steuerzonen
Steuerzonenfeature - tags auf Version 3.1.0 anpassen
Nachtrag zu Steuerzonen: benutzte Klassen mit require einbinden.
Steuerzone - Default eingeführt (statt id 0)

Als Defaultsteuerzone gilt nun die Steuerzone mit dem höchsten Sortcode, der
nicht obsolet ist (in der Regel also id 1).

Bernd hatte noch ein paar Stellen gefunden, wo als Default 0 gesetzt wird.
Außerdem Doku angepasst, taxzone_id ist nun nicht mehr im Bereich 0-3.
Buchungsgruppen - löschen und beim Erstellen Standardkonten benutzen

Wenn eine Buchungsgruppe noch nicht einer Waren zugeordnet ist kann
diese noch bearbeitet (Kontenzuordnung) oder gelöscht werden.

Beim neu Erstellen von Buchungsgruppen werden die Standardkonten aus der
Mandantenkonfiguration (Erlös/Aufwand/Bestand) vorausgewählt.
Beim Erfassen von Steuerzonen Standardkonten verwenden

Vorauswahl von Erlös- und Aufwandskonten laut Mandantenkonfiguration.
Im Gegensatz zum Anlegen von Buchungsgruppen kann bei der Steuerzone
kein Bestandskonto konfiguriert werden, da dies nur von der
Buchungsgruppe abhängt.
DB Code für Buchungsgruppe und TaxzoneChart aufgeräumt

In SL::DB::Manager::Buchungsgruppe die Methoden inventory_accno und
inventory_accno_description entfernt, da hier einfach
inventory_account->accno und inventory_account->description benutzt
werden können.
Console Shortcut für chart (analog zu part)
Fehlende MetaSetup Dateien für Steuerzonenupdate
Neue Methode orphaned für Buchungsgruppe

Zum Prüfen, ob eine Buchungsgruppe gelöscht oder bearbeitet werden kann.