Moritz Bunkus [Wed, 2 Jul 2014 07:19:55 +0000 (09:19 +0200)]
Wiederkehrende Rechnungen: Variablen für lange Monatsnamen gefixt
Ging im Commit »Wiederkehrende Rechnungen: Formatierung von
Datumsdruckvariablen über freie Formatstrings« kaputt. Danach waren die
Variablen <%current_month_long%> schlicht leer.
Moritz Bunkus [Wed, 2 Jul 2014 07:18:55 +0000 (09:18 +0200)]
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 die
Implementation, wie sie sein sollte.
Moritz Bunkus [Tue, 1 Jul 2014 12:05:44 +0000 (14:05 +0200)]
LXDebug::log_time: Differenz zum letzten Aufruf in ms mit ausgeben
Moritz Bunkus [Tue, 1 Jul 2014 07:59:52 +0000 (09:59 +0200)]
Druckvorbereitung: Lieferschein-Model mit richtigem Primärattribut laden
Das ging im Commit »Einkauf/Verkauf: Lieferadressenfelder nie aus
Stammdaten vorbelegen« kaputt.
Moritz Bunkus [Tue, 1 Jul 2014 07:37:33 +0000 (09:37 +0200)]
SL::DB::(Delivery)Order,(Purchase)Invoice: Aliase »add_items«
Die Relationships für die Positionen heißen in allen Klassen
unterschiedlich. Daher gibt es schon seit Längerem den Alias »items« in
allen Klassen.
Das Hinzufügen von Positionen hingegen erforderte bisher, dass man den
Namen der Relationship kennt, z.B. für Invoice:
$obj->add_invoiceitems. Um das zu Vereinfachen: neuer Alias »add_items«
in allen vier Klassen.
Bernd Bleßmann [Mon, 30 Jun 2014 13:35:41 +0000 (15:35 +0200)]
Aufträge bei Anzeige der Lieferungen in Kundenstammdaten richtig zuordnen.
Und richtigen Beleg (VK/EK) öffnen.
Behebt #2467.
Jan Büren [Mon, 30 Jun 2014 11:51:53 +0000 (13:51 +0200)]
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, ob
es sich um einen oder mehrere Einträge in STOCK_INFO handelt.
Jan Büren [Mon, 30 Jun 2014 11:42:59 +0000 (13:42 +0200)]
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, ob
es sich um einen oder mehrere Einträge in STOCK_INFO handelt
Bernd Bleßmann [Mon, 30 Jun 2014 09:14:45 +0000 (11:14 +0200)]
DB-Trigger, um sicher zu stellen, dass ein Lagerplatz auch zum Lager gehört.
Betrifft #2485.
Jan Büren [Fri, 27 Jun 2014 11:48:32 +0000 (13:48 +0200)]
Merge branch 'master' of github.com:kivitendo/kivitendo-erp
Jan Büren [Fri, 27 Jun 2014 11:45:43 +0000 (13:45 +0200)]
Einkaufslieferschein, Einlagern mit mehreren Lagern verbessert
Mehrfaches Aufrufen vom Fragezeichen Einlagern-Knopf, bzw. Erneuern der Posititonseinlagermaske
hat die Zuordnung zu Lager -> Lagerplatz fehlerhaft gesetzt, falls ein Standardlagerplatz in
den Stammdaten gesetzt war.
Details s.a. Ticket: 2485
Sven Schöling [Thu, 26 Jun 2014 14:29:34 +0000 (16:29 +0200)]
UStVA: Position 47 in Summe 53 mit aufnehmen
Sven Schöling [Thu, 26 Jun 2014 13:10:08 +0000 (15:10 +0200)]
2 Warnungen in den Tests beseitigen
Moritz Bunkus [Thu, 26 Jun 2014 08:19:45 +0000 (10:19 +0200)]
Lieferadresse eingeben: Möglichkeit zum Kopieren aus Stammdaten
Im Dialog für die Eingabe einer individuellen Lieferanschrift gibt es
nun die Möglichkeit, die Felder aus den Stammdaten des
Kunden/Lieferanten vorzubelegen. Dabei werden sowohl die
Rechnungsadresse als auch alle Lieferadressen angeboten.
Ist beim Abschicken in mindestens einem Feld etwas eingetragen, so wird
eine eventuell vorher ausgewählte shipto_id abgewählt, ansonsten
beibehalten.
Was momentan noch nicht angeboten wird, ist die Firmenadresse aus den
Mandantendaten, weil hier das Adressfeld leider nicht nach Straße,
Postleitzahl, Ort aufgeteilt ist. Ansonsten wäre das für Einkaufsbelege
sinnvoll.
Moritz Bunkus [Thu, 26 Jun 2014 07:32:56 +0000 (09:32 +0200)]
Verkauf: leeren Eintrag in Lieferadressendropdown klarer benennen
Angezeigt wird nun »Keine/individuelle Lieferadresse«, um es den
Benutzern klarer zu machen, dass die über den Button »Lieferadresse«
eingetragene Lieferadresse greift.
Moritz Bunkus [Thu, 26 Jun 2014 07:12:38 +0000 (09:12 +0200)]
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.
- Beim Ausdruck werden die shipto*-Felder nicht mehr aus der
Mandantenkonfiguration vorbelegt, wenn keine Lieferadresse gesetzt
ist.
- Beim Ausdruck werden die shipto*-Felder mit den Daten aus den
Kundenstammdaten belegt, wenn die shipto_id (die Drop-Down-Box in den
Belegmasken) gesetzt ist.
Die ursprüngliche Intention war, möglichst viele Fälle abzudecken. Ganz
ursprünglich war es nämlich in den Druckvorlagen gar nicht möglich,
Kontrollstrukturen zu benutzen und damit die Ausgabe konditional zu
steuern. Es konnte also rein in den Druckvorlagen nicht unterschieden
werden zwischen »der Benutzer hat keine Lieferadresse eingegeben« und
»der Benutzer hat eine eingegeben oder ausgewählt«.
Daher wurde die ganze Logik immer im Perl-Code abgehandelt.
Das macht aber erhebliche Probleme für den Benutzer, für den es absolut
intransparent ist, wann welche Lieferadresse wie vorbelegt wird. Hinzu
kommt, dass in den Belegmasken nicht ersichtlich ist, dass eine
individuelle Lieferadresse eingetragen wurde.
Hinzu kommt, dass die Druckvorlagen inzwischen verschiedene Mechanismen
zur Verfügung haben, um Fallunterscheidungen zu treffen (z.B. die
kivitendo-Mechanismen $(if shipto…)$ oder die LaTeX-eigenen
\IfThenElse{\equal{$(shipto…)$}{…}}}…). Leider war es mit dem vorherigen
Code für die Druckvorlagen nicht mehr möglich festzustellen, ob der
Benutzer nun eine Lieferadresse eingegeben hat oder nicht.
Die neue Situation ist recht einfach:
Steht in »shiptoname« oder »shiptostreet« ein nicht leerer Wert, so ist
eine Lieferadresse vorhanden, ansonsten nicht.
Für die »nicht«-Fall kann dann jede Vorlage selber entscheiden, was zu
tun ist. Für Vorlagen im Verkaufsbereich sinnvollerweise gar keine
Lieferadresse ausgeben (oder einfach die Lieferadresse aus den
Kundenrechnungsdaten), für Vorlagen im Einkaufsbereich ebenfalls keine
Lieferadresse oder die Adresse aus der Mandantenkonfiguration.
Behebt #2345, #2400.
Sven Schöling [Wed, 25 Jun 2014 14:20:01 +0000 (16:20 +0200)]
DateTime: (add|subtract)_businessdays Funktionen
Bernd Bleßmann [Wed, 25 Jun 2014 11:59:41 +0000 (13:59 +0200)]
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 der
PriceTaxCalculator und die Beleg-Masken rechnen, von einander ab.
Da müsste nochmal geprüft werden, was die richtige Art ist
(erst Rabatt abziehen und dann runden,
oder gerundeten Rabatt abziehen und wieder runden).
Auch beim Errechnen des Amounts gibt es unterschiede
(netamount * (1+Steuersatz),
oder aufsummieren).
Moritz Bunkus [Wed, 25 Jun 2014 09:50:22 +0000 (11:50 +0200)]
FollowUp(Access)-Rose-Models: sinnvollere Namen für Relationships
Moritz Bunkus [Wed, 25 Jun 2014 09:31:34 +0000 (11:31 +0200)]
rose_auto_create_model.pl: Relationship-Namen anhand der Spaltennamen mappen
Bisher wurde das Umbenennen der generierten Relationships anhand des von
Rose vergebenen Namens der Relationship vorgenommen. Das ist
problematisch, weil diese wiederum von der Reihenfolge abhängen, in der
die Fremdschlüsseldefinitionen von der Datenbank zurückgeliefert werden.
Konkretes Beispiel: Tabelle »follow_up_access« mit den Spalten »who« und
»what«, die beide Fremdschlüssel auf employee sind.
Rose benennt die erzeugten Relationships nach dem Klassennamen
derjenigen Tabelle, auf die die Schlüssel verweisen. Tabelle »employee«
→ Klasse »SL::DB::Employee« → Default-Relationshipname »employee«.
Die erste von der Datenbank gemeldete Fremdschlüsseldefinition bekommt
nun den Namen »employee«. Die zweite sollte diesen ebenfalls bekommen,
aber da der schon vergeben ist, bekommt sie das Suffix »_obj«, ergo
»employee_obj«. Soweit, so gut. Ändert sich nun aber die Reihenfolge, so
werden die Namen genau umgekehrt herum vergeben.
Die Umbenennung anhand des Tripels <Domäne, Tabelle, Spaltennamen>
hingegen ist immer eindeutig.
Moritz Bunkus [Wed, 25 Jun 2014 07:57:43 +0000 (09:57 +0200)]
Kunden-/Lieferantenstammdaten: Maps-Link mit Firmenadresse als Routing-Ausgang
Moritz Bunkus [Wed, 25 Jun 2014 07:32:00 +0000 (09:32 +0200)]
Spaltentyp Text anstelle von varchar() in diversen Tabellen Teil 3
Moritz Bunkus [Wed, 25 Jun 2014 07:02:31 +0000 (09:02 +0200)]
Kunden-/Lieferantenstammdaten: Beschränkungen für Feldlängen entfernt
…da die Datenbankspalten inzwischen alle vom Typ TEXT und nicht mehr
VARCHAR sind.
Moritz Bunkus [Wed, 25 Jun 2014 07:01:13 +0000 (09:01 +0200)]
Spaltentyp Text anstelle von varchar() in diversen Tabellen Teil 2
Tabelle »shipto«
Moritz Bunkus [Wed, 25 Jun 2014 06:46:29 +0000 (08:46 +0200)]
Lieferantenauftrag → Kundenauftrag: Verkaufspreis als Einkaufspreis übernehmen
Der Preis, den ich beim Lieferanten zahlen musste (alte Maske:
sellprice_N) ist dann im weiteren Verkaufsprozess der
Einkaufspreis (neue Maske: lastcost_N).
Moritz Bunkus [Tue, 24 Jun 2014 11:15:43 +0000 (13:15 +0200)]
Generische Unterstützung für CTI: Click-to-dial
Moritz Bunkus [Tue, 24 Jun 2014 13:40:06 +0000 (15:40 +0200)]
ReportGenerator: class für Links angeben können
Moritz Bunkus [Tue, 24 Jun 2014 11:15:22 +0000 (13:15 +0200)]
SL::MoreCommon: benutztes Encode auch usen
Sven Schöling [Tue, 24 Jun 2014 13:19:24 +0000 (15:19 +0200)]
USTVA: Analog zu
b0f569c auch Position 46 umdrehen.
Moritz Bunkus [Tue, 24 Jun 2014 09:04:54 +0000 (11:04 +0200)]
Neuer Bericht »Liquiditätsvorschau«
Moritz Bunkus [Tue, 24 Jun 2014 07:49:19 +0000 (09:49 +0200)]
Verkaufsbelege: optional nur Projekte des Kunden anbieten
Auch dieses Feature kann über die Mandantenkonfiguration eingeschaltet
werden.
Moritz Bunkus [Mon, 23 Jun 2014 15:12:22 +0000 (17:12 +0200)]
Instance-Conf am Anfang jedes Requests laden
Moritz Bunkus [Mon, 23 Jun 2014 14:53:14 +0000 (16:53 +0200)]
Angebote: neue Felder Auftragswahrscheinlichkeit, Voraus. Abrechnungsdatum
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.