L: Eindeutige ids für radio_tag wiederhergestellt.
Die waren in da2fecb453416b3731a896ab6d35e9992be3d9eb kaputtgegangen.
VERSION auf unstable gesetzt
Revert "POD-Dokumentation aktualisiert" die methoden werden jetzt generisch generiert.Doku ist korrekt und aktuell. My bad.This reverts commit b04128a335772d4cb9a30b0fde52413796981de0.
HTML-Tag richtig schliessen und Kosmetik
Standardmässiges Ein- und Auslagern von Dienstleistungen per Mandantenkonfiguration eingestellt
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.
Tests: neue Background Job Klasse auch erwarten
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
Kunden-/Lieferantenstammdaten: CVar-Input-Felder mit richtigem Namen versehen
Ging leider im Commit »CustomVariables: Verwendung mit RDBO als Writerimplementiert« kaputt, weil außerhalb dieses Templates »var_name«bereits gesetzt war und somit alle CVar-Input-Felder denselben Namen...
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.
task_server: pro Job mit Sprache vom konfiguriert initialisieren
…und die Systemsprache nur als Fallback nutzen.
Hat in der Praxis vermutlich keinerlei Auswirkung, ist aber dieImplementation, wie sie sein sollte.
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.
Hinweis von Sven format_amount hat nichts in Template Verzweigung zu suchen.Keine Ahnung warum mein Test am Freitag, dass nicht korrekt evaluiert hat.Wahrscheinlich ist qty undef. Es reicht hier aber auch aus, einfach zu prüfen, obes sich um einen oder mehrere Einträge in STOCK_INFO handelt.
Hinweis von Sven format_amount hat nichts in Template Verzweigung zu suchen.Keine Ahnung warum mein Test am Freitag, dass nicht korrekt evaluiert hat.Wahrscheinlich ist qty undef. Es reicht hier auch aus, einfach zu prüfen, obes sich um einen oder mehrere Einträge in STOCK_INFO handelt
DB-Trigger, um sicher zu stellen, dass ein Lagerplatz auch zum Lager gehört.
Betrifft #2485.
Merge branch 'master' of github.com:kivitendo/kivitendo-erp
Einkaufslieferschein, Einlagern mit mehreren Lagern verbessertMehrfaches Aufrufen vom Fragezeichen Einlagern-Knopf, bzw. Erneuern der Posititonseinlagermaskehat die Zuordnung zu Lager -> Lagerplatz fehlerhaft gesetzt, falls ein Standardlagerplatz inden Stammdaten gesetzt war....
UStVA: Position 47 in Summe 53 mit aufnehmen
2 Warnungen in den Tests beseitigen
Lieferadresse eingeben: Möglichkeit zum Kopieren aus Stammdaten
Im Dialog für die Eingabe einer individuellen Lieferanschrift gibt esnun die Möglichkeit, die Felder aus den Stammdaten desKunden/Lieferanten vorzubelegen. Dabei werden sowohl dieRechnungsadresse als auch alle Lieferadressen angeboten....
Verkauf: leeren Eintrag in Lieferadressendropdown klarer benennen
Angezeigt wird nun »Keine/individuelle Lieferadresse«, um es denBenutzern klarer zu machen, dass die über den Button »Lieferadresse«eingetragene Lieferadresse greift.
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
rose_auto_create_model.pl: Relationship-Namen anhand der Spaltennamen mappen
Bisher wurde das Umbenennen der generierten Relationships anhand des vonRose vergebenen Namens der Relationship vorgenommen. Das istproblematisch, weil diese wiederum von der Reihenfolge abhängen, in der...
Kunden-/Lieferantenstammdaten: Maps-Link mit Firmenadresse als Routing-Ausgang
Spaltentyp Text anstelle von varchar() in diversen Tabellen Teil 3
Kunden-/Lieferantenstammdaten: Beschränkungen für Feldlängen entfernt
…da die Datenbankspalten inzwischen alle vom Typ TEXT und nicht mehrVARCHAR sind.
Spaltentyp Text anstelle von varchar() in diversen Tabellen Teil 2
Tabelle »shipto«
Lieferantenauftrag → Kundenauftrag: Verkaufspreis als Einkaufspreis übernehmen
Der Preis, den ich beim Lieferanten zahlen musste (alte Maske:sellprice_N) ist dann im weiteren Verkaufsprozess derEinkaufspreis (neue Maske: lastcost_N).
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 –...
CSV-Helfer-Test: In-Memory-Streams mit richtigem Encoding initlisieren
Einkauf/Verkauf: Vorgangsbezeichnung in Suche default an…
…sofern in der Mandantenkonfiguration das Erzwingen der Eingabe derVorgangsbezeichnung eingeschaltet ist.
Einkauf/Verkauf: Eingabe der Vorgangsbezeichnung optional erzwingen
Wird über eine Option in der Mandantenkonfiguration eingeschaltet.
Auftragsmaske: JavaScript-Checks für Speichern aktiver per. Rechnungen nach kivi.SalesPurchase verschoben
Lieferscheinmaske: JavaScript-Checks für Lagermenge nach kivi.SalesPurchase verschoben
DB-Schema-Anpassungen für »Spaltentyp Text anstelle von varchar() in diversen Tabellen«
Projektliste: kein Filterkriterium für Status == alle
…und nicht »nie benutzt«
Kundenauswahl bei Summen-/Saldenliste
Vor E-Mail-Versand prüfen, ob Empfänger+Betreff+Body vorhanden
Angebote/Aufträge drucken: auch das Order-Objekt ausliefern
Im Druck auch den Typ von Artikeln mit ausliefern
special_chars: U+00A0 NO-BREAK SPACE in latex erkennen und korrekt rendern.
Das Zeichen passiert oft, wenn Artikelbeschreibungen von Webseiten vonLieferanten copy&pasted wird. Webseiten padden ihre Daten gerne mit dasdann als U+00A0 gerendert wird, und landet so in der Datenbank.
SL::DB::Invoice: Verknüpfung auf die Buchungsobjekte
print_html_template auch mit scalarrefs als file aufrufbar gemacht
Ausserdem die Fehlermeldung bei nicht korrektem aufruf mit header angeben.
print_form optional ohne redirect
Form->error: confess anstelle von STDERR bei Fehlern von der Console aus benutzen
Locales: fehlende Übersetzungen aus CRM-Menü-Datei ergänzt
locales.pl: Task-Server-Fehlschlags-E-Mail-Template ignorieren
Spaltentyp Text anstelle von varchar() in diversen Tabellen
console: shortcuts für die häufigsten Belegtypen, nützlich beim debuggen
Term::ReadLine::Perl::Bind in Console nicht nutzen
Fixt zwar unter RXVT, macht aber unter anderen Emulatoren die Bindingsziemlich kaputt.
Task-Server: vor jedem Job mehr Variablen re-initialisieren
Besonders wichtig: $::request, da sie zum Cachen genutzt wird und dieGarantie vom Cache ist, dass er nach jedem »Request« (beim Task-Server:nach jedem Job) geleert wird.
SL::DB::Part,Helper::PriceTaxCalculator: agressiveres Caching
Damit wird für ziemlich jeden Objekttyp nur noch ein einziges Queryabgesetzt.
SL::DB::Object: generische Methoden zum Cachen von RDBO-Instanzen
SL::DB::Part: Cachen von Objekten gefixt Teil 2
get_active_taxkey hat vorher ganz einfach nicht gecachet.
SL::DB::Part: Cachen von Objekten gefixt
Über Steuerzonen erhaltene Informationen müssen pro Part-ID gecachetwerden, weil diese natürlich Artikel-spezifisch sind.
Locale: Warnungen
CVars: spelling: dependant -> dependent (wir haben uns irgendwann mal auf AE geeinigt)
PeriodicInvoices: korrekter Fallback, wenn kein email Template gesetzt ist.
PeriodicInvoices: Rechnugnen nicht einen Tag zu früh erstellen, das gibt massig Probleme
SL::DB::CustomVariable::{value,value_as_text}: Verwendung von $::request->cache()
Partpicker: Benutzerdefinierte Variablen mitschicken
SL::DB::Unit::base_factor: Verwendung von $::request->cache()
SL::DB::{Chart,Part}: Verwendung von $::request->cache()
SL::Request: Funktion zum Cachen von Objekten für Dauer des Requests
PriceTaxCalculator: chart->taxkey lookup vorberechnen
PartPicker: keine AJAJ-Requests nach Fat-Data ohne item.id schicken
LXDebug: Zeitstempel mit Millisekunden-Auflösung ausgeben
SL::Helper::CreatePDF: gewisse Variablen nicht mit Variablen überschreiben lassen
Tab Persistenz in allen masken ausser customer_vendor
War beim Umschreiben auf jquery-ui kaputtgegangen, weil der div.tabwidget eineid braucht. CustomerVendor hatte das beim neuschreiben schon korrekt mit idversehen.
SL::Controller::Base->send_file: neuer Parameter unlink zum Löschen nach Senden
Dispatcher: Requests auf controller.pl ohne action auf Loginseite redirecten
Ist hilfreich, wenn man aus der Browserhistory einen Link wiehttp://…/kivitendo/controller.pl aufruft. Bisher wurde nur eine böseFehlerseite angezeigt.
RecordLinks: frühzeitig abbrechen, wenn keine links gefunden wurden.
Hintergrundjobhistorie: Status für Fehlschlag richtig benennen
CVars: Einträge beim Löschen dazugehöriger Belege automatisch löschen
CVars: beim Autovivifien gültigen Wert für selects forçieren
Kunden-/Lieferantenbericht: auch im Nicht-Union-Fall nach Typ sortieren können.
Kunden-/Lieferantenbericht: Zahlungsbegingungen anzeigen können.