Moritz Bunkus [Mon, 23 Jun 2014 14:38:16 +0000 (16:38 +0200)]
Einkaufs-/Verkaufsprozesse: optionale Einschränkungen für gewisse Aktionen
Über die Mandantenkonfiguration kann verboten werden, dass gewisse
Aktionen in den Einkaufs- und Verkaufsprozesse durchgeführt
werden. Diese sind:
- Direkte umwandlung von Verkaufsangeboten und -aufträgen in
Verkaufsrechnungen (nur über den Weg der Lieferscheine)
- Direktes Anlegen neuer Einkaufslieferscheine und -rechnungen (nur
durch Umwandlung bestehender Belege)
Moritz Bunkus [Mon, 23 Jun 2014 14:15:11 +0000 (16:15 +0200)]
Offene Transaktionen vor DB-Upgrades comitten
Hintergrund ist, dass Locks potenziell vorhanden sein können. Einfaches
Beispiel: $::instance_conf wird geladen (dadurch implizites
ACCESS-SHARE-Lock auf »defaults«), Upgrade will Schema von »defaults«
verändern, was dann hängt, weil dafür ACCESS-EXCLUSIVE benötigt wird –
das mit ACCESS-SHARE kollidiert.
Moritz Bunkus [Mon, 23 Jun 2014 13:37:48 +0000 (15:37 +0200)]
CSV-Helfer-Test: In-Memory-Streams mit richtigem Encoding initlisieren
Moritz Bunkus [Mon, 23 Jun 2014 13:27:01 +0000 (15:27 +0200)]
Einkauf/Verkauf: Vorgangsbezeichnung in Suche default an…
…sofern in der Mandantenkonfiguration das Erzwingen der Eingabe der
Vorgangsbezeichnung eingeschaltet ist.
Moritz Bunkus [Mon, 23 Jun 2014 13:16:17 +0000 (15:16 +0200)]
Einkauf/Verkauf: Eingabe der Vorgangsbezeichnung optional erzwingen
Wird über eine Option in der Mandantenkonfiguration eingeschaltet.
Moritz Bunkus [Mon, 23 Jun 2014 13:03:19 +0000 (15:03 +0200)]
Auftragsmaske: JavaScript-Checks für Speichern aktiver per. Rechnungen nach kivi.SalesPurchase verschoben
Moritz Bunkus [Mon, 23 Jun 2014 12:49:07 +0000 (14:49 +0200)]
Lieferscheinmaske: JavaScript-Checks für Lagermenge nach kivi.SalesPurchase verschoben
Moritz Bunkus [Mon, 23 Jun 2014 11:55:49 +0000 (13:55 +0200)]
DB-Schema-Anpassungen für »Spaltentyp Text anstelle von varchar() in diversen Tabellen«
Moritz Bunkus [Mon, 20 Jan 2014 13:06:33 +0000 (14:06 +0100)]
Projektliste: kein Filterkriterium für Status == alle
…und nicht »nie benutzt«
Sven Schöling [Fri, 17 May 2013 15:12:45 +0000 (17:12 +0200)]
Kundenauswahl bei Summen-/Saldenliste
Moritz Bunkus [Fri, 24 May 2013 15:23:29 +0000 (17:23 +0200)]
Vor E-Mail-Versand prüfen, ob Empfänger+Betreff+Body vorhanden
Sven Schöling [Mon, 23 Jun 2014 11:27:49 +0000 (13:27 +0200)]
Angebote/Aufträge drucken: auch das Order-Objekt ausliefern
Sven Schöling [Mon, 29 Oct 2012 13:55:08 +0000 (14:55 +0100)]
Im Druck auch den Typ von Artikeln mit ausliefern
Sven Schöling [Thu, 20 Sep 2012 13:35:10 +0000 (15:35 +0200)]
special_chars: U+00A0 NO-BREAK SPACE in latex erkennen und korrekt rendern.
Das Zeichen passiert oft, wenn Artikelbeschreibungen von Webseiten von
Lieferanten copy&pasted wird. Webseiten padden ihre Daten gerne mit das
dann als U+00A0 gerendert wird, und landet so in der Datenbank.
Sven Schöling [Mon, 23 Jun 2014 11:25:36 +0000 (13:25 +0200)]
SL::DB::Invoice: Verknüpfung auf die Buchungsobjekte
Sven Schöling [Mon, 7 May 2012 16:42:41 +0000 (18:42 +0200)]
print_html_template auch mit scalarrefs als file aufrufbar gemacht
Ausserdem die Fehlermeldung bei nicht korrektem aufruf mit header angeben.
Sven Schöling [Mon, 7 May 2012 16:42:16 +0000 (18:42 +0200)]
print_form optional ohne redirect
Moritz Bunkus [Mon, 23 Jun 2014 11:21:15 +0000 (13:21 +0200)]
Form->error: confess anstelle von STDERR bei Fehlern von der Console aus benutzen
Moritz Bunkus [Mon, 23 Jun 2014 11:06:55 +0000 (13:06 +0200)]
Locales: fehlende Übersetzungen aus CRM-Menü-Datei ergänzt
Moritz Bunkus [Mon, 23 Jun 2014 11:06:36 +0000 (13:06 +0200)]
locales.pl: Task-Server-Fehlschlags-E-Mail-Template ignorieren
Moritz Bunkus [Fri, 20 Jun 2014 14:20:00 +0000 (16:20 +0200)]
Spaltentyp Text anstelle von varchar() in diversen Tabellen
Sven Schöling [Fri, 20 Jun 2014 12:36:50 +0000 (14:36 +0200)]
console: shortcuts für die häufigsten Belegtypen, nützlich beim debuggen
Moritz Bunkus [Fri, 20 Jun 2014 10:05:04 +0000 (12:05 +0200)]
Term::ReadLine::Perl::Bind in Console nicht nutzen
Fixt zwar unter RXVT, macht aber unter anderen Emulatoren die Bindings
ziemlich kaputt.
Moritz Bunkus [Thu, 19 Jun 2014 15:12:21 +0000 (17:12 +0200)]
Task-Server: vor jedem Job mehr Variablen re-initialisieren
Besonders wichtig: $::request, da sie zum Cachen genutzt wird und die
Garantie vom Cache ist, dass er nach jedem »Request« (beim Task-Server:
nach jedem Job) geleert wird.
Moritz Bunkus [Thu, 19 Jun 2014 14:53:12 +0000 (16:53 +0200)]
SL::DB::Part,Helper::PriceTaxCalculator: agressiveres Caching
Damit wird für ziemlich jeden Objekttyp nur noch ein einziges Query
abgesetzt.
Moritz Bunkus [Thu, 19 Jun 2014 14:52:31 +0000 (16:52 +0200)]
SL::DB::Object: generische Methoden zum Cachen von RDBO-Instanzen
Moritz Bunkus [Thu, 19 Jun 2014 13:12:49 +0000 (15:12 +0200)]
SL::DB::Part: Cachen von Objekten gefixt Teil 2
get_active_taxkey hat vorher ganz einfach nicht gecachet.
Moritz Bunkus [Thu, 19 Jun 2014 13:11:59 +0000 (15:11 +0200)]
SL::DB::Part: Cachen von Objekten gefixt
Über Steuerzonen erhaltene Informationen müssen pro Part-ID gecachet
werden, weil diese natürlich Artikel-spezifisch sind.
Sven Schöling [Thu, 19 Jun 2014 12:33:52 +0000 (14:33 +0200)]
Locale: Warnungen
Sven Schöling [Thu, 19 Jun 2014 11:53:45 +0000 (13:53 +0200)]
CVars: spelling: dependant -> dependent (wir haben uns irgendwann mal auf AE geeinigt)
Sven Schöling [Thu, 19 Jun 2014 09:36:30 +0000 (11:36 +0200)]
PeriodicInvoices: korrekter Fallback, wenn kein email Template gesetzt ist.
Sven Schöling [Thu, 19 Jun 2014 09:35:32 +0000 (11:35 +0200)]
PeriodicInvoices: Rechnugnen nicht einen Tag zu früh erstellen, das gibt massig Probleme
Moritz Bunkus [Wed, 18 Jun 2014 15:20:25 +0000 (17:20 +0200)]
SL::DB::CustomVariable::{value,value_as_text}: Verwendung von $::request->cache()
Moritz Bunkus [Thu, 27 Feb 2014 14:56:04 +0000 (15:56 +0100)]
Partpicker: Benutzerdefinierte Variablen mitschicken
Moritz Bunkus [Mon, 16 Jun 2014 12:24:32 +0000 (14:24 +0200)]
SL::DB::Unit::base_factor: Verwendung von $::request->cache()
Moritz Bunkus [Mon, 16 Jun 2014 12:10:20 +0000 (14:10 +0200)]
SL::DB::{Chart,Part}: Verwendung von $::request->cache()
Moritz Bunkus [Mon, 16 Jun 2014 11:51:48 +0000 (13:51 +0200)]
SL::Request: Funktion zum Cachen von Objekten für Dauer des Requests
Sven Schöling [Fri, 13 Jun 2014 18:10:46 +0000 (20:10 +0200)]
PriceTaxCalculator: chart->taxkey lookup vorberechnen
Moritz Bunkus [Mon, 16 Jun 2014 11:18:38 +0000 (13:18 +0200)]
PartPicker: keine AJAJ-Requests nach Fat-Data ohne item.id schicken
Moritz Bunkus [Mon, 16 Jun 2014 07:42:11 +0000 (09:42 +0200)]
LXDebug: Zeitstempel mit Millisekunden-Auflösung ausgeben
Moritz Bunkus [Thu, 12 Jun 2014 13:21:34 +0000 (15:21 +0200)]
SL::Helper::CreatePDF: gewisse Variablen nicht mit Variablen überschreiben lassen
Sven Schöling [Thu, 12 Jun 2014 12:29:26 +0000 (14:29 +0200)]
Tab Persistenz in allen masken ausser customer_vendor
War beim Umschreiben auf jquery-ui kaputtgegangen, weil der div.tabwidget eine
id braucht. CustomerVendor hatte das beim neuschreiben schon korrekt mit id
versehen.
Moritz Bunkus [Thu, 12 Jun 2014 09:00:28 +0000 (11:00 +0200)]
SL::Controller::Base->send_file: neuer Parameter unlink zum Löschen nach Senden
Moritz Bunkus [Thu, 12 Jun 2014 07:07:31 +0000 (09:07 +0200)]
Dispatcher: Requests auf controller.pl ohne action auf Loginseite redirecten
Ist hilfreich, wenn man aus der Browserhistory einen Link wie
http://…/kivitendo/controller.pl aufruft. Bisher wurde nur eine böse
Fehlerseite angezeigt.
Sven Schöling [Wed, 11 Jun 2014 15:47:50 +0000 (17:47 +0200)]
RecordLinks: frühzeitig abbrechen, wenn keine links gefunden wurden.
Moritz Bunkus [Wed, 11 Jun 2014 14:05:55 +0000 (16:05 +0200)]
Hintergrundjobhistorie: Status für Fehlschlag richtig benennen
Moritz Bunkus [Wed, 11 Jun 2014 12:50:01 +0000 (14:50 +0200)]
CVars: Einträge beim Löschen dazugehöriger Belege automatisch löschen
Moritz Bunkus [Wed, 11 Jun 2014 11:33:57 +0000 (13:33 +0200)]
CVars: beim Autovivifien gültigen Wert für selects forçieren
Bernd Bleßmann [Wed, 11 Jun 2014 11:18:59 +0000 (13:18 +0200)]
Kunden-/Lieferantenbericht: auch im Nicht-Union-Fall nach Typ sortieren können.
Bernd Bleßmann [Wed, 11 Jun 2014 11:11:21 +0000 (13:11 +0200)]
Kunden-/Lieferantenbericht: Zahlungsbegingungen anzeigen können.
Moritz Bunkus [Wed, 11 Jun 2014 07:51:44 +0000 (09:51 +0200)]
CustomerVendor-Picker: keine ungültigen, wenn $::form->{obsolete} nicht gesetzt ist
Bernd Bleßmann [Tue, 10 Jun 2014 10:30:32 +0000 (12:30 +0200)]
Template-Pfad vor regex quoten.
zu commit
6348bffb3ca90327f8dd042bfd0a89802b269b79
(Template-Pfad aus Pfad-Namen anderer Tex-Dateien richtig entfernen.)
Sven Schöling [Tue, 10 Jun 2014 09:55:02 +0000 (11:55 +0200)]
CustomVariable: typo - from_kivi -> from_kivitendo
Moritz Bunkus [Thu, 5 Jun 2014 14:17:56 +0000 (16:17 +0200)]
Rose-Model-Generator: Foreign-Key-Namens-Mapping auf Datenbank beziehen
Moritz Bunkus [Thu, 5 Jun 2014 14:06:02 +0000 (16:06 +0200)]
Rose-Model-Generator: --db für nur eine Datenbank bei --all
Siehe auch Commit »Rose-Model-Generator: prinzipielle Unterstützung
verschiedener Datenbanken«.
Moritz Bunkus [Thu, 5 Jun 2014 13:36:31 +0000 (15:36 +0200)]
Rose-Model-Generator: auf Duplikate in Blacklist/Paketnamenshash prüfen
Moritz Bunkus [Thu, 5 Jun 2014 08:07:07 +0000 (10:07 +0200)]
RDBO Invoice->new_from: Fälligkeitsdatum und Zahlungsbedingungen gefixt
1. Konvertierung von Order-Objekten: Hier wurde das Fälligkeitsdatum
zwar richtig übernommen, nicht aber die Zahlungsbedingungen.
2. Konvertierung von DeliveryOrder-Objekten: Lieferscheine haben gar
keinen Fremdschlüssel auf die Zahlungsbedingungen. Daher wurden hier
weder das Fälligkeitsdatum noch die Zahlungsbedingungen übernommen.
Was jetzt gemacht wird, ist die Zahlungsbedingungen vom Quellobjekt zu
nehmen, wenn dort welche existieren, und ansonsten vom dazugehörigen
Kunden. Wurden Zahlungsbedingungen gefunden, so wird das
Fälligkeitsdatum daraus berechnet und ansonsten auf »Rechnungsdatum + 1
Tag« gesetzt.
Moritz Bunkus [Thu, 5 Jun 2014 08:04:41 +0000 (10:04 +0200)]
RDBO Customer, Vendor: Alias payment_terms auf payment
…für API-Analogie mit Order, DeliveryOrder, Invoice.
Moritz Bunkus [Thu, 5 Jun 2014 06:33:53 +0000 (08:33 +0200)]
RDBO {Invoice,DeliveryOrder}->new_from Attribute nachträglich zuweisen
Macht man die Vermischung ->new(%args, %attributes), so ist die
Reihenfolge, wann welche aus %args und welche aus %attributes genommen
werden, aufgrund von Perls beliebiger Hash-Reihenfolge nicht
garantiert. Also zuerst nur die berechneten aus %args zuweisen und
danach die vom Caller bereitgestellten in %attributes.
Bernd Bleßmann [Wed, 4 Jun 2014 14:55:27 +0000 (16:55 +0200)]
Template-Pfad aus Pfad-Namen anderer Tex-Dateien richtig entfernen.
Behebt #2483.
Sven Schöling [Wed, 4 Jun 2014 14:28:20 +0000 (16:28 +0200)]
RecordLinks: Anzeige etwas verbessert
Moritz Bunkus [Tue, 3 Jun 2014 15:12:18 +0000 (17:12 +0200)]
Task server: Fehlgeschlagene Jobs optional per E-Mail melden
Moritz Bunkus [Tue, 3 Jun 2014 15:10:44 +0000 (17:10 +0200)]
RDBO BackgroundJob(History): Refactoring von Status-Strings
Moritz Bunkus [Tue, 3 Jun 2014 15:10:25 +0000 (17:10 +0200)]
Test-BackgroundJob: Möglichkeiten, das Ergebnis zu steuern
Moritz Bunkus [Tue, 3 Jun 2014 13:00:54 +0000 (15:00 +0200)]
Rose-Attr-Helfer: _as_timestamp
…mit verschiedenen Präzisionsstufen und Tests!
Moritz Bunkus [Tue, 3 Jun 2014 12:31:04 +0000 (14:31 +0200)]
Locale::parse_date_to_object: Unterstützung für volle Timestamps & explizite Formate
…und dafür Tests.
Moritz Bunkus [Tue, 3 Jun 2014 11:53:22 +0000 (13:53 +0200)]
Locale::format_date_object: explizites Setzen der Formate; Millisekunden als neues Format
…und dazu Tests.
Sven Schöling [Mon, 2 Jun 2014 12:59:38 +0000 (14:59 +0200)]
Verknüpfte Belege: Standardmässig rekursive Belege finden
Sven Schöling [Mon, 2 Jun 2014 12:10:32 +0000 (14:10 +0200)]
SL::DB::Helper::LinkedRecords: rekursive Suche in linked_records
Sven Schöling [Mon, 2 Jun 2014 12:10:21 +0000 (14:10 +0200)]
Merge branch 'master' of github.com:kivitendo/kivitendo-erp
Moritz Bunkus [Mon, 2 Jun 2014 08:02:06 +0000 (10:02 +0200)]
Rose-Model-Generator: prinzipielle Unterstützung verschiedener Datenbanken
Um Models für andere Datenbanken zu erstellen, müssen dann noch SL::DB,
SL::DB::Helper::Mappings und SL::DB::Object entsprechend angepasst
werden, damit die Verbindung richtig aufgebaut werden.
Sven Schöling [Wed, 28 May 2014 10:39:14 +0000 (12:39 +0200)]
LinkedRecords: bidi Verhalten den docs angepasst und direction Parameter optional gemacht
Sven Schöling [Tue, 27 May 2014 15:43:33 +0000 (17:43 +0200)]
warnings: uninitialized in eq
Sven Schöling [Tue, 27 May 2014 15:42:24 +0000 (17:42 +0200)]
Mal wieder ein paar lexicals in post if.
Sven Schöling [Tue, 27 May 2014 15:22:10 +0000 (17:22 +0200)]
t/structure/globals: Lexikalische Variablen sind schwer exportierbar.
Sven Schöling [Tue, 27 May 2014 15:21:21 +0000 (17:21 +0200)]
t/test.pl: Neuere Tests kommen sich bei multicore in die Quere. Vorerst ausschalten
Sven Schöling [Tue, 27 May 2014 14:20:49 +0000 (16:20 +0200)]
t/test.pl: File::Find macht nur dann lstat wenn follow oder follow_fast als option gesetzt ist
Sven Schöling [Tue, 27 May 2014 14:04:52 +0000 (16:04 +0200)]
LinkedRecords: Test und Doku Update
Bernd Bleßmann [Sat, 24 May 2014 23:19:49 +0000 (01:19 +0200)]
CsvImport: Feldlängen aus den Metadaten auslesen, nicht fest codieren.
Moritz Bunkus [Fri, 23 May 2014 13:53:46 +0000 (15:53 +0200)]
Dispatcher: Pro-Request-Initialisierung in eigene Sub verschoben
Weiterhin optionale Initialisierung von Client und User in besagter Sub.
Erleichert die Verwendung die Initialisierung vom Dispatcher in eigenen
Scripten (z.B. der console oder rose_auto_generate_models.pl, auch wenn
die noch nicht umgestellt sind), weil dann nicht in jedem Script der
Initialiserungspfad nachgebaut werden muss.
Beispiel ($client_id_or_name und $login können z.B. vorher aus einer
Konfigurationsdatei gelesen werden):
use SL::Dispatcher;
use SL::DB::Customer;
our $dispatcher = SL::Dispatcher->new('CGI');
$dispatcher->pre_startup;
$dispatcher->pre_request_initialization(
client => $client_id_or_name,
login => $login,
);
print join("\n", map { $_->id . ":" . $_->name } @{ SL::DB::Manager::Customer->get_all(limit => 5) }), "\n";
Moritz Bunkus [Fri, 23 May 2014 12:56:09 +0000 (14:56 +0200)]
Unbekannte config values beim Speichern d. Benutzereinstellungen nicht löschen
Sven Schöling [Thu, 22 May 2014 13:04:12 +0000 (15:04 +0200)]
scripts/dbupgrade2_tool.pl: bei --create --type pl auch package stub anlegen
Moritz Bunkus [Wed, 21 May 2014 12:00:44 +0000 (14:00 +0200)]
Modul List::UtilsBy in Abhängigkeiten und als Fallback aufgenommen
Sven Schöling [Wed, 21 May 2014 08:33:31 +0000 (10:33 +0200)]
$::request auch in dbupgrade2_tool initialisieren
G. Richardson [Tue, 20 May 2014 08:54:12 +0000 (10:54 +0200)]
Lange Datenbankfelder bei bestimmten Lieferantenfeldern
Analog zu Commit
72ad92fd die Feldlänge bei bestimmten Datenbankfelder
erhöht (vorher varchar, jetzt text)
account_number bank_code ustid name contact
Moritz Bunkus [Wed, 14 May 2014 14:43:54 +0000 (16:43 +0200)]
Pflichtenhefte: Speichern der Grundeinstellungen via Kontextmenü gefixt
Moritz Bunkus [Wed, 14 May 2014 14:29:05 +0000 (16:29 +0200)]
ClientJS: Controller-Instanz zum Rendern auch bei ->new setzen können
Moritz Bunkus [Wed, 14 May 2014 13:53:12 +0000 (15:53 +0200)]
CustomVariables: Verwendung mit RDBO als Writer implementiert
Moritz Bunkus [Wed, 14 May 2014 11:33:04 +0000 (13:33 +0200)]
CVars: RDBO-basiertes Render-Template nach webpages/common verschoben
Bernd Bleßmann [Wed, 14 May 2014 14:13:40 +0000 (16:13 +0200)]
CsvImport Waren: Preisupdate auch bei Erzeugnissen u. Dienstleistungen ermöglichen.
Zusätzlich beim Preisupdate prüfen, ob vorhandene Artikel von einem anderen Typ
als angegeben sind, falls in der CSV-Datei angegeben.
Problem war, dass Artikelnummern jetzt über Waren, Dienstleistungen und
Erzeugnisse eindeutig sind. Um aber schon vorhandene Artikel zu finden,
wurde nur nach dem angegenbenen oder eingestellten Typ gesucht. Der
voreingestellte Typ ist Waren, dabei werden Dienstleistungen und Erzeugnisse
nicht gefunden und es wurde versucht, den entspr. Eintrag neu als Ware
anzulegen, allerdings ist die Artikelnummer ja schon vergeben und es kam zu
einem DB-Fehler.
Bernd Bleßmann [Wed, 14 May 2014 10:52:50 +0000 (12:52 +0200)]
CsvImport Waren: Code-Vereinfachung
Bernd Bleßmann [Wed, 14 May 2014 10:44:20 +0000 (12:44 +0200)]
CsvImport Waren: test_run/import in check_existing nicht unterschiedlich behandeln.
Das funktionierte im Standard wg. der falschen Benennung ('test' vs. 'test_run')
ohnehin nicht und bei richtiger Benennung gab es auch noch Probleme.
Bernd Bleßmann [Wed, 14 May 2014 07:40:55 +0000 (09:40 +0200)]
CsvImport Waren: Konsistenz: Fußnote statt 'siehe unten' in der Hilfe.
Bernd Bleßmann [Wed, 14 May 2014 07:27:00 +0000 (09:27 +0200)]
CsvImport: Der Parameter für den Testlauf heißt 'test', nicht 'test_run'.
Moritz Bunkus [Wed, 14 May 2014 07:12:09 +0000 (09:12 +0200)]
CustomVariable-RDBO-Helfer: Dokumentation aktualisiert
Moritz Bunkus [Wed, 14 May 2014 07:10:40 +0000 (09:10 +0200)]
CustomVariable-RDBO-Helfer: Konfigurationen sortiert auslesen
Bisher war es Zufall, dass die Konfigurationen in der richtigen
Reihenfolge von der Datenbank zurück kamen. Dadurch, wie das Umsortieren
implementiert ist, werden die Einträge in der richtigen Reihenfolge in
der Datenbank aktualisiert, und daher kommen sie meist auch in der
gleichen Reihenfolge später wieder heraus – aber das ist keine
Garantie.
Moritz Bunkus [Mon, 12 May 2014 07:17:31 +0000 (09:17 +0200)]
RDBO: Manager-Klasse für Vendor
Thomas Heck [Mon, 12 May 2014 11:41:32 +0000 (13:41 +0200)]
Focusposition nach Erneuern wählbar gemacht
Sven Schöling [Fri, 9 May 2014 14:28:11 +0000 (16:28 +0200)]
POD Syntaxfehler
Moritz Bunkus [Fri, 9 May 2014 14:23:05 +0000 (16:23 +0200)]
L: Parameterextraktion dreier Funktionen gefixt
Template übergibt Hash-Parameter als Hash-Ref, nicht direkt als Hash.