Merge branch 'master' of github.com:kivitendo/kivitendo-erp
Erinnerung für Transport- oder Versandkostenartikel bei Angebot / Auftrag implementiertErweiterung: Mandantenkonfiguration um einen Standardartikel der auf Vorhandenseinüberprüft wird (oe). Falls nicht wird eine entsprechende Warnung ausgegeben.Verbesserungsmöglichkei 1: Artikelnummer per partpicker auswählen...
Form::round_amount: Perls Wissen über Stringifizierung nutzen
Perl weiß am besten, wann eine nicht ganz exakte Fließkommazahleigentlich eine für Menschen sinnvoll lesbare Fließkommazahl ist (alsodass mit 143.19999999999998863132 eigentlich 143.2 gemeint ist, wenn ich...
Whitespace entfernt
Konfigurierbares Angebotsgültigkeits-Intervall hinzugefügtStandardmässig ist ein Verkaufsangebot bis zum nächsten Werktag gültig.Dieses Intervall wird dann noch hinzugerechnet, bspw. nächster Werktag plus 14, 28 etc.Falls das Intervall nicht gesetzt oder wir nicht den Typ sales_quotation haben, passiert nichts....
round_amount: Perls Repräsentationsalgorithmus fürs exakte Runden nutzen
Als Erläuterung paste ich schlicht den relevanten Teil des Kommentars,der nun auch in der Funktion steht:
Trying to round with more precision first only shifts the problem to rarer...
CsvImport/Parts: makemodels fix inidzieren
select_item: Belegmasken finden jetzt auch Warennummern aus makemodels
Außerdem die Präsentation von select_item angepasst, so dass ersichtlichwird woher die gefundenen Waren stammen.
CsvImport: Beim Import von makemodels die Reihenfolge richtig setzen
MakeModel: ActsAsList
ActsAsList: use Parameter zum Konfigurieren benutzen
ParseFilter: with_objects merging bei Klassen mit Filtered Plugin
ParseFilter kennt 3 Quellen für with_objects Klauseln:
1. explizit übergebene2. aus dem Filter inferierte3. aus custom filtern gesetzte
Wenn nun ein Model das Custom Filter Plugin hat, muss bei jedem Filter...
CustomerVendor: Spaltenüberschrift bei Sortierung richtig übersetzen
CustomerVendor: Picker nach Art von PartPicker
- reinit_widgets fähig- Tab und Enter atomar- unterstützt onChange und set_item:CustomerVendorPicker trigger- unterstützt fat_set_item
undefs für find_by berücksichtigen
hotfix für #10 Ansprechpartner auf ungültig setzen löst leeres Adressfeld beim Drucken ausbehebt (teilweise) #9 ggf. wäre es prinzipiell besser die customer_detailsauf rose umzuschreiben
SuSa - Summe per und Saldo auch bei abweichenden Geschäftsjahr berechnenFalls man eine Monats-SuSa zieht werden die Salden korrekt berechnet, allerdingswurde nicht ein abweichendes Geschäftsjahr berücksichtigt. Jetzt wirddas Startdatum wie in der Bilanz genommen, dass ist schon mal besser, allerdings...
netprice auf Anzahl von Nachkommastellen von sellprice runden
Es geht um die Anzeige der Einzelpreise von Positionen derDruckvorlagen.
Bisher wurde netprice hart auf 2 Nachkommastellen gerundet, was zuProblemen bei Subcentpreisen führte. Dies hatte den Effekt, daß z.B....
if-Abfrage eindeutiger geschrieben und Variablenname klarer definiert
rp-patch
CsvImport: Fehler beim Speichern vom richtigem Objekt anzeigen.
Und "use English" (EVAL_ERROR) für bessere Lesbarkeit.
Überprüfung auf makemodel bei mehreren Artikeln verbessertAktuell wird nur auf Werte beim ersten Eintrag bei makemodel überprüft.Falls es mehrere Werte und man den ersten Eintrag löschen will greiftdie Überprüfung nicht mehr. Entsprechend die Prüfung erweitert....
Pflichtenheftaufträge: Pauschalpos. in Ang./Auftr. erstellen können
Pauschalpositionen haben die Menge 1, als Einheit die Einheit desArtikels (und nicht »Stunden«) und als Preis den Gesamtpreis derAufwandsschätzung des dazugehörigen Abschnitts.
Pflichtenheftaufträge: beliebige Artikel auswählen können
Zusätzlich werden dann Spalten angezeigt, die die Einheit und den imAngebot/Auftrag verwendeten Positionstypen (Pauschalposition/Auwandsposition) angeben.
Pflichtenheftaufträge: Aktualisierung zusätzlicher Artikel implementiert
Pflichtenhefte: beim Erstellen von Aufträgen zus. Artikel anlegen
Pflichtenhefte: beim Kopieren, Einfügen zusätzliche Artikel berücksichtigen
Pflichtenhefte: zusätzliche Artikel zuweisen und bearbeiten können
SL::DB::Unit::compatible_units: alle Einheiten gecachet laden
Form->parse_template: notes nicht immer aus invoicenotes kopieren
Wenn ein Beleg über Rose-Model-Code zum Drucken vorbereitet wird, dannsteht in $form->{notes} bereits der richtige Wert, und denbelegspezifische Wert $form->{invoicenotes} gibt es gar nicht. Also auch...
Finanzübersicht: VerkäuferIn auch bei wiederkehrende Rechnungen beachten
Finanzcontrollingbericht: wiedk. Rechnungen vom Enddatum immer bis heute
Das konfigurierte Enddatum ist nur dann relevant, wenn diewiederkehrende Rechnung gekündigt wurde. Ansonsten wird sie automatischverlängert, sprich ein maximales Enddatum gibt es dabei nicht.
Wiederkehrende Rechnungen: Berechnung maximales Enddatum gefixt
Das konfigurierte Enddatum ist nur dann relevant, wenn diewiederkehrende Rechnung gekündigt wurde. Ansonsten wird sie automatischverlängert, sprich ein maximales Enddatum gibt es dabei nicht. Wir...
Einkaufs-/Verkaufsbelege: Spalte taxzone_id bereits beim INSERT befüllen
Ansonsten gibt es wegen der neuen NOT NULL-Restriktion einen Fehler.
Form->prepare_for_printing: output_*-Variablen als Fallback auf %myconfig-Werte setzen
Wenn für eine Sprache kein Ausgabeformat für Datum und/oder Zahlenfestgelegt ist, so muss hier der Wert der angemeldeten Benutzeringenommen werden, weil ansonsten die Werte falsch formatiert...
Wiederkehrende Rechnungen: Variable period_end_date gefixt
Das Periodenenddatum wird am Anfang der sub bereits richtig als »derletzte Tag innerhalb des Abrechnungszeitraumes« berechnet und darfhinterher daher nicht mehr auf den Monat abgeschnitten werden.
Bearb. Buchungsgruppen: Spalte taxzone_id in oe/delivery_orders konvertieren
1. Werte 0 und NULL durch neue ID für »Inland« ersetzen (oe, delivery_orders, ar, ap)
2. Spalte taxzone_id NOT NULL setzen (oe, delivery_orders, ar, ap)
3. Fremdschlüssel auf Tabelle tax_zones setzen (oe, delivery_orders)
Warengruppen-Filter f. CVars bei Waren
cherry-pick aus Kundenprojekt und Anpassungen an unstable (hauptsächlichUmstellung auf Controller)
Conflicts:
SL/CVar.pm SL/DB/CustomVariableConfig.pm bin/mozilla/amcvar.pl bin/mozilla/io.pl...
Nach dem Löschen von einer CVar wieder die Liste des entspr. Moduls anzeigen.
CsvImport: Bei Imports ohne cvars nicht die cvars klobbern.
Spaltenzahl f. benutzerdef. Variablen in Belegen in Benutzereinstellungen ...
.. angeben können. Default ist 3.
Benutzerdef. Variablen f. Waren per Voreinstellung für Belege aktivieren/deaktivieren.
Steuerzone - Sortierreihenfolge bei Customer/Vendor
Sortierreihenfolge im Dropdown bei den Stammdaten einhalten.Dadurch ist die Steuerzone mit der höchsten Sortierpriorität immer alsDefaults bei neuen Kunden/Lieferanten eingestellt (standardmäßigInland).
Steuerzone: in Upgrade-Datei customer/vendor angepasst
Macht man eigentlich nachträglich nicht, aber da das Update noch sofrisch ist...
Beim Umstellen von taxzone wurde vergessen, auch die Einträge derStandardsteuerzone bei den Kunden und Lieferanten anzupassen. Im Zuge...
L.radio_button_tag: id erhalten wenn sie schon vorher gesetzt ist.
Installcheck: Version von Archive::Zip korrigiert.
CsvImport - Part : Anpassung für neue Steuerzonen
statt income/expense_accno_id_0 werden jetzt bei importiertenWaren/Dienstleistungen die Konten-IDs der Standardsteuerzone verwendet.(Wobei die genau ID ja egal ist, wichtig ist, ob etwas gesetzt ist).
Neue Methode orphaned für Buchungsgruppe
Zum Prüfen, ob eine Buchungsgruppe gelöscht oder bearbeitet werden kann.
Fehlende MetaSetup Dateien für Steuerzonenupdate
DB Code für Buchungsgruppe und TaxzoneChart aufgeräumt
In SL::DB::Manager::Buchungsgruppe die Methoden inventory_accno undinventory_accno_description entfernt, da hier einfachinventory_account->accno und inventory_account->description benutztwerden können.
Beim Erfassen von Steuerzonen Standardkonten verwenden
Vorauswahl von Erlös- und Aufwandskonten laut Mandantenkonfiguration.Im Gegensatz zum Anlegen von Buchungsgruppen kann bei der Steuerzonekein Bestandskonto konfiguriert werden, da dies nur von derBuchungsgruppe abhängt.
Buchungsgruppen - löschen und beim Erstellen Standardkonten benutzen
Wenn eine Buchungsgruppe noch nicht einer Waren zugeordnet ist kanndiese noch bearbeitet (Kontenzuordnung) oder gelöscht werden.
Beim neu Erstellen von Buchungsgruppen werden die Standardkonten aus der...
Steuerzone - Default eingeführt (statt id 0)
Als Defaultsteuerzone gilt nun die Steuerzone mit dem höchsten Sortcode, dernicht 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.
Nachtrag zu Steuerzonen: benutzte Klassen mit require einbinden.
Steuerzonen ungültig machen
jede Steuerzone kann man unter "System->Steuerzonen->auf Steuerzone klicken" individuell auf ungültig (obsolete) setzen.
ungültig heißt:
Sortieren von Steuerzonen in Belegen
Die Sortierreihenfolge von Steuerzonen in Belegen wurde bisher nochnicht in den Belegen berücksichtigt.
Steuerzonen und Buchungsgruppen bearbeiten
Nachdem man Steuerzonen und Buchungsgruppen auf Datenbankebenebearbeiten kann, ist jetzt auch eine Bearbeitung an der Ober-fläche möglich.
Alter Code, der für die Anzeige/Bearbeitung/Erstellung vonBuchungsgruppen entwickelt wurde hat nicht mehr funktioniert...
Auf Datenbankebene Steuerzonen konfigurierbar gemacht
Damit können jetzt mehr als die 4 Standardsteuerzonen eingerichtetwerden. Die bisherigen Steuerzonen wurden aus der Tabellebuchungsgruppen in die neue Tabelle taxzone_charts ausgelagert.
Konzeption siehe Ticket #2295...
Installationcheck: --silent switch um es in shell scripte einzubinden
Typo-Fix: Trennzeichen für CVar-Flags ist ':' nicht ';'.
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 hingegenfunktionierte es (beispielsweise 149,175 @ 2 → 149,18).
Grund war, dass durch das Addieren von 0.5 wieder Fließkommaberechnung...
GetModels: Funktion zum Setzen zusätzlicher URL-Parameter
L: Eindeutige ids für radio_tag wiederhergestellt.
Die waren in da2fecb453416b3731a896ab6d35e9992be3d9eb kaputtgegangen.
Revert "POD-Dokumentation aktualisiert" die methoden werden jetzt generisch generiert.Doku ist korrekt und aktuell. My bad.This reverts commit b04128a335772d4cb9a30b0fde52413796981de0.
Mandantenkonfiguration erweitert:Dienstleistungen NICHT automatisch AuslagernStandardmässig werden Dienstleistungen wie Waren und Erzeungnisse behandelt undso auch beim Standard-Auslager-Verfahren. Entsprechend die Mandantenkonfiguration (defaults)angepasst.
POD-Dokumentation aktualisiertget_ Methoden werden nicht mehr einzeln für die Tabelle defaults gesetzt
HTML::Util: Tests, und Bugfixes für ein paar Randbedingungen
HTML::Util: Short circuit ohne $value. Behebt gleichzeitig eine Warnung.
SL::Locale::String: @_ in neue Ref kopieren anstatt \@_
ansonsten verschwinden aus irgend einem Grund alle Elemente außer demersten.
Hintergrundjob zum Löschen abgelaufener Sessions
CreatePDF-Helfer: Anpassung an API-Änderung SL::Template.*new
PreisTaxCalculator: Caching-Abfrage für »keine Positionen« gefixt
Handle zur LXDebug-Logdatei auch UTF-8 encoden
Wenn GREEK CAPITAL LETTER DELTA im Text, dann auch utf8 flaggen.
Wiederkehrende Rechnungen: Variablen für lange Monatsnamen gefixt
Ging im Commit »Wiederkehrende Rechnungen: Formatierung vonDatumsdruckvariablen über freie Formatstrings« kaputt. Danach waren dieVariablen <%current_month_long%> schlicht leer.
LXDebug::log_time: Differenz zum letzten Aufruf in ms mit ausgeben
Druckvorbereitung: Lieferschein-Model mit richtigem Primärattribut laden
Das ging im Commit »Einkauf/Verkauf: Lieferadressenfelder nie ausStammdaten vorbelegen« kaputt.
SL::DB::(Delivery)Order,(Purchase)Invoice: Aliase »add_items«
Die Relationships für die Positionen heißen in allen Klassenunterschiedlich. Daher gibt es schon seit Längerem den Alias »items« inallen Klassen.
Das Hinzufügen von Positionen hingegen erforderte bisher, dass man den...
Aufträge bei Anzeige der Lieferungen in Kundenstammdaten richtig zuordnen.
Und richtigen Beleg (VK/EK) öffnen.
Behebt #2467.
UStVA: Position 47 in Summe 53 mit aufnehmen
2 Warnungen in den Tests beseitigen
Einkauf/Verkauf: Lieferadressenfelder nie aus Stammdaten vorbelegen
Das neue Verhalten ist wie folgt:
- Weder die shipto_id (die Drop-Down-Box in den Belegmasken) noch die individuellen shipto*-Felder werden weder beim Neuanlegen eines Beleges noch bei Wechsel des Kunden aus den Datenbanken belegt....
DateTime: (add|subtract)_businessdays Funktionen
Rundungsfehler bei periodischen Rechnungen mit Einzelpreisen ...
... mit einer Nachkommastelle und Rabatt behoben.
siehe auch commit a22b8118e0bd68acac8a2d7b02a2d4f9fd0eaff1
Zudem einen Test dazu angelegt. Allerdings weicht die Art, wie derPriceTaxCalculator und die Beleg-Masken rechnen, von einander ab....
FollowUp(Access)-Rose-Models: sinnvollere Namen für Relationships
Kunden-/Lieferantenstammdaten: Maps-Link mit Firmenadresse als Routing-Ausgang
Spaltentyp Text anstelle von varchar() in diversen Tabellen Teil 3
Spaltentyp Text anstelle von varchar() in diversen Tabellen Teil 2
Tabelle »shipto«
Generische Unterstützung für CTI: Click-to-dial
ReportGenerator: class für Links angeben können
SL::MoreCommon: benutztes Encode auch usen
USTVA: Analog zu b0f569c auch Position 46 umdrehen.
Neuer Bericht »Liquiditätsvorschau«
Verkaufsbelege: optional nur Projekte des Kunden anbieten
Auch dieses Feature kann über die Mandantenkonfiguration eingeschaltetwerden.
Instance-Conf am Anfang jedes Requests laden
Angebote: neue Felder Auftragswahrscheinlichkeit, Voraus. Abrechnungsdatum
Einkaufs-/Verkaufsprozesse: optionale Einschränkungen für gewisse Aktionen
Über die Mandantenkonfiguration kann verboten werden, dass gewisseAktionen in den Einkaufs- und Verkaufsprozesse durchgeführtwerden. Diese sind:
- Direkte umwandlung von Verkaufsangeboten und -aufträgen in...
Offene Transaktionen vor DB-Upgrades comitten
Hintergrund ist, dass Locks potenziell vorhanden sein können. EinfachesBeispiel: $::instance_conf wird geladen (dadurch implizitesACCESS-SHARE-Lock auf »defaults«), Upgrade will Schema von »defaults«verändern, was dann hängt, weil dafür ACCESS-EXCLUSIVE benötigt wird –...