Moritz Bunkus [Wed, 9 Nov 2011 09:35:03 +0000 (10:35 +0100)]
Anlegen der Auth-DB fixen
Auth.pms Session-Management kam nicht damit zurecht, wenn die Auth-DB
bzw. das "auth"-Schema darin noch nicht existiert haben. Das passiert
z.B., wenn die Auth-DB gerade über den Admin-Bereich angelegt werden
soll.
G. Richardson [Mon, 31 Oct 2011 15:24:41 +0000 (16:24 +0100)]
Offene Posten nach Rechnungsnummer suchen
* wenn es mehrere Rechnungen gab, wo Rechnungsnummer übereinstimmt (LIKE),
wurde die erste Rechnung aus den Ergebnissen verwendet
-> jetzt wird erst alle Rechnungen durchgegangen ob es eine genaue
Übereinstimmung gibt und dann die genommen, ansonsten wieder die Erste
* nach Ermittlung der Rechnung wurde anhand des Kundennamens und nicht anhand
der Kunden-ID nach Kunden gesucht, was schlecht ist wenn es viele Kunden mit
identischem Namen gibt
-> sofern die customer_id ermittelt wurde wird jetzt der Kunde anhand der ID
rausgesucht
G. Richardson [Mon, 31 Oct 2011 15:24:41 +0000 (16:24 +0100)]
Offene Posten nach Rechnungsnummer suchen
* wenn es mehrere Rechnungen gab, wo Rechnungsnummer übereinstimmt (LIKE),
wurde die erste Rechnung aus den Ergebnissen verwendet
-> jetzt wird erst alle Rechnungen durchgegangen ob es eine genaue
Übereinstimmung gibt und dann die genommen, ansonsten wieder die Erste
* nach Ermittlung der Rechnung wurde anhand des Kundennamens und nicht anhand
der Kunden-ID nach Kunden gesucht, was schlecht ist wenn es viele Kunden mit
identischem Namen gibt
-> sofern die customer_id ermittelt wurde wird jetzt der Kunde anhand der ID
rausgesucht
Moritz Bunkus [Wed, 2 Nov 2011 15:34:05 +0000 (16:34 +0100)]
Exceptions beim Speicher/Löschen von SL::DB-Objekten hochbubblen lassen
Die R::DB::O::transaction()-Funktion clobbert Exceptions
irgendwie. Deshalb diese erneut werfen, sofern sie beim Speichern
auftreten, und nicht nur einen Fehler zurückliefern.
Jan Büren [Thu, 27 Oct 2011 12:16:43 +0000 (14:16 +0200)]
> sobald ich jetzt eine neue Ware oder Erzeugnis anlege, und dann bei
> Bericht Kunde anhake, bekomme ich folgende Fehlermeldung:
>
> Can't call method "name" on an undefined value at SL/CVar.pm line 574.
Ahjo, hab den Fehler. Tausch mal bitte die Zeile 578 durch diese hier aus:
Jan Büren [Mon, 17 Oct 2011 11:40:03 +0000 (13:40 +0200)]
Stammdaten -> Berichte -> Kunden mit Kundentyp.
Die anschließende Sortierung nach Kundentyp liefert eine Fehlermeldung, da ein 'order by lower(business)' eine SQL-Fehlermeldung wirft (ct.business_id AS business).
Entsprechend die Abfrage erweitert, sodass ein 'order by business' analog wie bei quonumber etc passiert.
Sven Schöling [Mon, 17 Oct 2011 08:32:37 +0000 (10:32 +0200)]
besseres id inferring in multibox
Hintergrund: html id Attribute dürfen nach Standard nicht mit Zahlen anfangen.
Multibox kann übergebe ids nehmen, kann die aber nicht von der globalen
form->{id} unterscheiden. Nun Trick: Nur die id nehmen, wenn sie nicht mit
numish ist.
Sven Schöling [Mon, 17 Oct 2011 08:23:44 +0000 (10:23 +0200)]
button_tag nicht als input_tag implementieren
Hintergrund: button tags brauchen im standard kein id oder name Attribut, input
tags aber schon. Die input_tag Implementierung forciert korrekterweise id und
name, so dass die leer sind, wenn ein button_tag ohne geschrieben wird.
Sven Schöling [Fri, 14 Oct 2011 11:53:35 +0000 (13:53 +0200)]
$::cgi entfernt.
Verfahren:
- Für alle Vorkommen von "my $cgi = $::cgi;":
ersetzt durch my $cgi = $::request->{cgi}->new({}) ersetzt
- Wenn in einer Datei alle my $cgi rausgefallen sind auch use CGI entfernt.
- Initialisierung von $::cgi in scripts und Dispatcher entfernt und in dei
Initialisierung von $::request eingebaut.
- cgi aus der Liste der kanonischen globals genommen.
Zu CGI:
- CGI::func und CGI->func sind beides valide Werte, sind aber intern buggy wie
Hölle. CGI:: erzeugt ein Dummyobjekt mit CGI->new, und klobbert damit
cookies. CGI-> ist noch schlimmer und ruft ${CGI}->{.cookies} auf.
- CGI->new({}) ist schneller als CGI->new(''), deshalb habe ich diese version genommen.
Auf meinem Rechner schafft die erste Version etwa 32k/s, die zweite 28k/s.
- CGI kompiliert benötigte Funktionen beim ersten Aufruf über AUTOLOAD.
- cookie benötigen ein $cgi Objekt.
Jan hatte das ja schon angepasst, daß man die offenen Rechnungen nach einer
Altersstrukturliste filtern kann. Die Ergebnisse stimmten auch, aber wenn man
dann das Ergebnis drucken wollte fehlten die Zahlen.
Die Sammelrechnung soll wohl als Kundenkonto fungieren, damit man dem Kunden
eine Übersicht aller noch offenen Rechnungen schicken kann, mit Übersicht der
Überfälligkeit. Die Druckvorlage ist statement.tex, bzw. statement.html. Bisher
wurden aber nie die Beträge der Rechnungen angezeigt, das funktioniert jetzt
wieder.
* bei der Datenbankabfrage wird für jede Rechnung die Anzahl der Tage über dem
Fälligkeitsdatum (Today - duedate) für jede offene Rechnung berechnet
* der noch offene Betrag wird je nach Anzahl der überfälligen Tage der Rechnung
zur Kategorie c0, c30, c60 oder c90 hinzugefügt
Die angegebenen Zahlen sind die noch offenen Teile der Rechnung, es steht aber
auch die Gesamtsumme der Rechnung unter der Variablen <%amount%> in der
Druckvorlage zur Verfügung (siehe doc/dokumentenvorlagen-und-variablen.html)
Rechnungen, deren Fälligkeit noch nicht erreicht ist, tauchen ebenfalls in der
c0-Gruppe auf.
Nicht mit Währungsumrechnung getestet.
Im Lx-Office Buch steht zu Sammelrechnung, daß beim Drucken nur Rechnungen für
den ersten Kunden angezeigt werden, aber alle Sammelrechnungen an den
konfigurierten Drucker geschickt werden, ich bin mir nicht sicher, ob das
stimmt. Es gibt ja den Knopf "Alle Auswählen", aber bei E-Mail kann auch nur an
den ersten versendet werden.
Jan Büren [Wed, 12 Oct 2011 15:03:07 +0000 (17:03 +0200)]
Nachschlag zu commit: 066fbb38fb409c5801b70fc7d43f4e9190d295ff Entsprechend schon beim ersten Speichern des Artikels die ausgewählte Einheit schreiben und kein leeres Textfeld.