Dieser Commit macht Steuern unveränderbar, wenn mit diesen schon
gebucht wurde, d.h. ein Eintrag in der acc_trans steht. Man kann nur
noch Namen und Automatikkonten verändern. Weiterhin findet eine
Prüfung statt, ob Steuerschlüssel 0 ohne Steuern gespeichert wird.
Die Abfrage isblank war leider fehlerhaft und wurde ebenfalls ersetzt.
Bisher lieferte kivitendo auch Fehler, wenn man Namen von Konten
mit Steuerschlüssel 0 ändert. Das sollte nicht so sein.
Dieser Commit enthält noch einige kleine Verbesserungen zum Update
tax_constraints.pl. Es wurden Einrückungen verändert, trailing white-
spaces entfernt und eine Abhängigkeit hinzugefügt.
Dieser Commit fügt für die Tabellen tax und taxkeys folgende
Constraints hinzu:
Tabelle tax:
1.chart_id hat jetzt einen Fremdschlüssel auf chart.id.
2.rate darf nicht mehr NULL sein und hat DEFAULT-Wert 0.
3.taxkey darf nicht mehr NULL sein.
4.taxdescription darf nicht mehr NULL sein.
Tabelle taxkeys:
1.chart_id darf nicht mehr NULL sein, hat jetzt einen Fremdschlüssel
auf chart.id.
2.tax_id darf nicht mehr NULL sein.
3.taxkey_id darf nicht mehr NULL sein.
4.startdate darf nicht mehr NULL sein.
5.chart_id und startdate müssen eindeutig sein.
Moritz Bunkus [Mon, 11 Feb 2013 09:53:07 +0000 (10:53 +0100)]
SEPA-Überweisung: Rechnungen mit NICHT gesetztem "Lastschrifteinzug" vorauswählen
Die Logik ist im Einkauf genau umgekehrt zum
Verkauf. "Lastschrifteinzug" bedeutet im Verkauf, dass wir einziehen,
also dass wir die Rechnung via SEPA anweisen müssen.
Im Einkauf bedeutet es, dass der Lieferant direkt von uns einzieht und
wir deshalb nichts manuell machen müssen.
Moritz Bunkus [Fri, 8 Feb 2013 12:16:33 +0000 (13:16 +0100)]
ActsAsList: mit remove_from_list() entfernte Items auf position = -1 setzen
position ist in allen Tabellen NOT NULL deklariert. Nur in der einen,
die ich zum Testen genutzt hatte, nicht. Das habe ich nun
nachgeholt. Jetzt wird -1 als magischer "not in list"-Wert benutzt.
Stücklisten-Druck von Erzeugnissen wird entsprechend selten angehakt und wurde deshalb bei
der Erweiterung für TEMPLATE_ARRAYS übersehen.
Ferner hab ich den Ausdruck der Stückliste auch genauso wie bei der Rechnung formatiert, da es sich
hier um "denselben" Code handelt.
Optimalerweise sollte man den Stücklisten-Code auch noch für alle Druckvorlagen in ein- und.
diesselbe Funktion auslagen (DRY), dann wird das beim nächsten Mal nicht vergessen und die.
Formatierung ist in allen Verkaufsvorlagen einheitlich.
Bei Dialogbuchungen war bisher die tax_id für keine Steuern hartcodiert
0. Das muss allerdings nicht so sein und führt zu Problemen, wenn
der Steuerschlüssel 0 unter einer anderen id gespeichert wurde.
Dieser Commit enthält das Update-Script um eine neue Spalte Namens
'tax_id' in die Tabelle 'acc_trans' einzufügen. Diese Spalte hat
Constrait NOT NULL und einen Fremdschlüssel auf die id von tax.
Bisher gab es noch sehr viele Konten, für die kein Eintrag in der
Tabelle taxkeys und damit kein Steuerschlüssel vorhanden war.
Dieses Update erstellt für jedes Konto ohne Steuerschlüssel einen
in der taxkeys, s.d. solche Konten den Steuerschlüssel 0 haben.
Hierfür ist unbedingt erforderlich, dass der Steuerschlüssel 0
existiert (also in tax vorhanden ist) und dieser Eintrag den
Steuersatz 0% hat. Existiert der Steuerschlüssel 0 nicht, so
wird er angelegt. Existiert ein Steuerschlüssel 0 mit mehr als 0%
Steuern, so wird das Update mit Fehlermeldung abgebrochen.
Bisher wurde beim Anlegen eines neuen Kontos nicht unbedingt auch
ein Steuerschlüssel gespeichert. Jetzt kommt eine Fehlermeldung,
wenn man keinen Steuerschlüssel angibt, bzw. versucht alle Steuer-
schlüssel aus einem bestehenden Konto zu löschen.
Moritz Bunkus [Wed, 30 Jan 2013 11:55:41 +0000 (12:55 +0100)]
Stringifizierbare Klassen laden, bevor YAML::Load() aufgerufen wird
Hintergrund. Normalerweise dumpt YAML Klassen sinnvoll, sprich mit
Typus, Paketnamen und Innereien. Für eine Instanz von
SL::Locale::String könnte das z.B. so aussehen:
Lädt mal das wieder, so entsteht daraus auch ein Objekt. Allerdings
ist es zwingend erforderlich, dass Perl die Klassendefinition zum
Zeitpunkt von YAML::Load() bereits gesehen hat. Ansonsten geht die
Stringifizierung verloren, weil sie zum Zeitpunkt des "bless()"ens
nicht bekannt war.
Das passierte mit normalen CGI, weil der Controller selber erst nach
dem Auslesen der Session via "require..." geladen wird, der Controller
lädt Rose-DB-Model, das lädt SL::Locale::String.
Moritz Bunkus [Tue, 22 Jan 2013 15:26:38 +0000 (16:26 +0100)]
Rose: Fremdschlüsselbenennung fixen
Die von Rose erzeugten Fremdschlüsselaccessoren heißen wie die
Spaltennamen, also z.B. in Perl 'trans' zu Spalte 'trans_id'. Das ist
unintuitiv und muss an vielen Stellen (z.B. bei den manager_args,
with_objects etc.) auch als 'trans' angegeben werden.
Also im Generatorscript gewisse Namen auf sinnvollere Namen mappen.