From: Moritz Bunkus
Date: Thu, 23 Jan 2014 09:52:30 +0000 (+0100)
Subject: Merge branch 'master' of github.com:kivitendo/kivitendo-erp
X-Git-Tag: release-3.1.0beta1~21^2
X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/commitdiff_plain/846a322f70e71c5d0338f13eeea842d0f87c5ae3?hp=7b672f1f5400d0fa187e593508dd052ee580d006
Merge branch 'master' of github.com:kivitendo/kivitendo-erp
---
diff --git a/SL/AM.pm b/SL/AM.pm
index 8b2d7b292..ed896e1ad 100644
--- a/SL/AM.pm
+++ b/SL/AM.pm
@@ -1120,16 +1120,14 @@ sub closebooks {
my ($query, @values);
- if ($form->{revtrans}) {
- $query = qq|UPDATE defaults SET closedto = NULL, revtrans = '1'|;
+ # is currently NEVER trueish (no more hidden revtrans in $form)
+ # if ($form->{revtrans}) {
+ # $query = qq|UPDATE defaults SET closedto = NULL, revtrans = '1'|;
+ # -> therefore you can only set this to false (which is already the default)
+ # and this flag is currently only checked in gl.pl. TOOD Can probably be removed
- } elsif ($form->{closedto}) {
$query = qq|UPDATE defaults SET closedto = ?, max_future_booking_interval = ?, revtrans = '0'|;
- @values = (conv_date($form->{closedto}), conv_date($form->{max_future_booking_interval}));
-
- } else {
- $query = qq|UPDATE defaults SET closedto = NULL, revtrans = '0'|;
- }
+ @values = (conv_date($form->{closedto}), conv_i($form->{max_future_booking_interval}));
# set close in defaults
do_query($form, $dbh, $query, @values);
diff --git a/SL/DB/AuditTrail.pm b/SL/DB/AuditTrail.pm
deleted file mode 100644
index 891d6f2cb..000000000
--- a/SL/DB/AuditTrail.pm
+++ /dev/null
@@ -1,15 +0,0 @@
-# This file has been auto-generated only because it didn't exist.
-# Feel free to modify it at will; it will not be overwritten automatically.
-
-package SL::DB::AuditTrail;
-
-use strict;
-
-use SL::DB::MetaSetup::AuditTrail;
-
-__PACKAGE__->meta->initialize;
-
-# Creates get_all, get_all_count, get_all_iterator, delete_all and update_all.
-__PACKAGE__->meta->make_manager_class;
-
-1;
diff --git a/SL/DB/Helper/ALL.pm b/SL/DB/Helper/ALL.pm
index 498583f0a..6bdc3689b 100644
--- a/SL/DB/Helper/ALL.pm
+++ b/SL/DB/Helper/ALL.pm
@@ -4,7 +4,6 @@ use strict;
use SL::DB::AccTransaction;
use SL::DB::Assembly;
-use SL::DB::AuditTrail;
use SL::DB::AuthClient;
use SL::DB::AuthClientUser;
use SL::DB::AuthClientGroup;
diff --git a/SL/DB/Helper/Mappings.pm b/SL/DB/Helper/Mappings.pm
index 633a06793..022894c16 100644
--- a/SL/DB/Helper/Mappings.pm
+++ b/SL/DB/Helper/Mappings.pm
@@ -84,7 +84,6 @@ my @kivitendo_blacklist = (@kivitendo_blacklist_permanent, @kivitendo_blacklist_
my %kivitendo_package_names = (
# TABLE # MODEL (given in C style)
acc_trans => 'acc_transaction',
- audittrail => 'audit_trail',
'auth.clients' => 'auth_client',
'auth.clients_users' => 'auth_client_user',
'auth.clients_groups' => 'auth_client_group',
diff --git a/SL/DB/MetaSetup/AuditTrail.pm b/SL/DB/MetaSetup/AuditTrail.pm
deleted file mode 100644
index fd8add028..000000000
--- a/SL/DB/MetaSetup/AuditTrail.pm
+++ /dev/null
@@ -1,25 +0,0 @@
-# This file has been auto-generated. Do not modify it; it will be overwritten
-# by rose_auto_create_model.pl automatically.
-package SL::DB::AuditTrail;
-
-use strict;
-
-use base qw(SL::DB::Object);
-
-__PACKAGE__->meta->table('audittrail');
-
-__PACKAGE__->meta->columns(
- action => { type => 'text' },
- employee_id => { type => 'integer' },
- formname => { type => 'text' },
- id => { type => 'serial', not_null => 1 },
- reference => { type => 'text' },
- tablename => { type => 'text' },
- trans_id => { type => 'integer' },
- transdate => { type => 'timestamp', default => 'now' },
-);
-
-__PACKAGE__->meta->primary_key_columns([ 'id' ]);
-
-1;
-;
diff --git a/SL/DB/MetaSetup/Default.pm b/SL/DB/MetaSetup/Default.pm
index 48551285c..8c0319cc3 100644
--- a/SL/DB/MetaSetup/Default.pm
+++ b/SL/DB/MetaSetup/Default.pm
@@ -18,7 +18,6 @@ __PACKAGE__->meta->columns(
ar_show_mark_as_paid => { type => 'boolean', default => 'true' },
articlenumber => { type => 'text' },
assemblynumber => { type => 'text' },
- audittrail => { type => 'boolean', default => 'false' },
bin_id => { type => 'integer' },
bin_id_ignore_onhand => { type => 'integer' },
businessnumber => { type => 'text' },
diff --git a/SL/DB/MetaSetup/GLTransaction.pm b/SL/DB/MetaSetup/GLTransaction.pm
index 14f386a7a..db03441b6 100644
--- a/SL/DB/MetaSetup/GLTransaction.pm
+++ b/SL/DB/MetaSetup/GLTransaction.pm
@@ -42,6 +42,11 @@ __PACKAGE__->meta->foreign_keys(
key_columns => { employee_id => 'id' },
},
+ employee_obj => {
+ class => 'SL::DB::Employee',
+ key_columns => { employee_id => 'id' },
+ },
+
storno_obj => {
class => 'SL::DB::GLTransaction',
key_columns => { storno_id => 'id' },
diff --git a/SL/Form.pm b/SL/Form.pm
index a11b7adb6..eb3565d44 100644
--- a/SL/Form.pm
+++ b/SL/Form.pm
@@ -1955,8 +1955,8 @@ sub get_duedate {
my $terms = $self->{payment_id} ? SL::DB::PaymentTerm->new(id => $self->{payment_id}) ->load
: $self->{customer_id} ? SL::DB::Customer ->new(id => $self->{customer_id})->load->payment
: $self->{vendor_id} ? SL::DB::Vendor ->new(id => $self->{vendor_id}) ->load->payment
- : croak("Missing field in \$::form: payment_id, customer_id or vendor_id");
-
+ : $self->{invdate} ? undef # no payment terms, therefore invdate == duedate
+ : croak("Missing field in \$::form: payment_id, customer_id, vendor_id or invdate");
my $duedate = $terms ? $terms->calc_date(reference_date => $reference_date)->to_kivitendo : undef;
$main::lxdebug->leave_sub();
diff --git a/SL/Helper/Csv.pm b/SL/Helper/Csv.pm
index 2730502b3..c4a8aefa2 100644
--- a/SL/Helper/Csv.pm
+++ b/SL/Helper/Csv.pm
@@ -7,12 +7,13 @@ use version 0.77;
use Carp;
use IO::File;
use Params::Validate qw(:all);
-use List::MoreUtils qw(all pairwise);
+use List::MoreUtils qw(all pairwise firstidx);
use Text::CSV_XS;
use Rose::Object::MakeMethods::Generic scalar => [ qw(
file encoding sep_char quote_char escape_char header profile
numberformat dateformat ignore_unknown_columns strict_profile is_multiplexed
_row_header _io _csv _objects _parsed _data _errors all_cvar_configs case_insensitive_header
+ _multiplex_datatype_position
) ];
use SL::Helper::Csv::Dispatcher;
@@ -59,6 +60,7 @@ sub parse {
$self->_open_file;
return if ! $self->_check_multiplexed;
return if ! $self->_check_header;
+ return if ! $self->_check_multiplex_datatype_position;
return if ! $self->dispatcher->parse_profile;
return if ! $self->_parse_data;
@@ -216,6 +218,25 @@ sub _check_header {
return $self->header($header);
}
+sub _check_multiplex_datatype_position {
+ my ($self) = @_;
+
+ return 1 if !$self->is_multiplexed; # ok if if not multiplexed
+
+ my @positions = map { firstidx { 'datatype' eq lc($_) } @{ $_ } } @{ $self->header };
+ my $first_pos = $positions[0];
+ if (all { $first_pos == $_ } @positions) {
+ $self->_multiplex_datatype_position($first_pos);
+ return 1;
+ } else {
+ $self->_push_error([0,
+ "datatype field must be at the same position for all datatypes for multiplexed data",
+ 0,
+ 0]);
+ return 0;
+ }
+}
+
sub _parse_data {
my ($self, %params) = @_;
my (@data, @errors);
@@ -261,7 +282,7 @@ sub _header_by_row {
}
if ($self->is_multiplexed) {
- return $self->_row_header->{$row->[0]}
+ return $self->_row_header->{$row->[$self->_multiplex_datatype_position]}
} else {
return $self->header;
}
@@ -380,7 +401,7 @@ nothing more.
This module can handle multiplexed data of different class types. In that case
multiple profiles with classes and row identifiers must be given. Multiple
headers may also be given or read from csv data. Data must contain the row
-identifier in the first column and it's field name must be 'datatype'.
+identifier in the column named 'datatype'.
=back
@@ -446,15 +467,16 @@ in objects.
If not given, headers are taken from the first n lines of data, where n is the
number of different class types.
-In case of multiplexed data the first column must be named 'datatype'. This
-name must be given in the header.
+In case of multiplexed data there must be a column named 'datatype'. This
+column must be given in each header and must be at the same position in each
+header.
Examples:
classic data of one type:
[ 'name', 'street', 'zipcode', 'city' ]
- multiplexed data with two different types
+ multiplexed data with two different types:
[ [ 'datatype', 'ordernumber', 'customer', 'transdate' ],
[ 'datatype', 'partnumber', 'qty', 'sellprice' ] ]
diff --git a/SL/InstallationCheck.pm b/SL/InstallationCheck.pm
index 947be97d1..5ac2bd8f1 100644
--- a/SL/InstallationCheck.pm
+++ b/SL/InstallationCheck.pm
@@ -17,7 +17,7 @@ BEGIN {
# dist_name: name of the package in cpan if it differs from name (ex.: LWP != libwww-perl)
@required_modules = (
{ name => "parent", url => "http://search.cpan.org/~corion/", debian => 'libparent-perl' },
- { name => "Archive::Zip", version => '1.16', url => "http://search.cpan.org/~adamk/", debian => 'libarchive-zip-perl' },
+ { name => "Archive::Zip", version => '1.16', url => "http://search.cpan.org/~phred/", debian => 'libarchive-zip-perl' },
{ name => "Clone", url => "http://search.cpan.org/~rdf/", debian => 'libclone-perl' },
{ name => "Config::Std", url => "http://search.cpan.org/~dconway/", debian => 'libconfig-std-perl' },
{ name => "DateTime", url => "http://search.cpan.org/~drolsky/", debian => 'libdatetime-perl' },
diff --git a/SL/RP.pm b/SL/RP.pm
index c4a95039b..4a7b0afef 100644
--- a/SL/RP.pm
+++ b/SL/RP.pm
@@ -516,7 +516,7 @@ sub get_accounts_g {
if ($form->{method} eq 'cash') {
$query =
qq|
- SELECT SUM( ac.amount * CASE WHEN COALESCE((SELECT amount FROM ar WHERE id = ac.trans_id), 0) != 0 THEN
+ SELECT SUM( ac.amount * CASE WHEN COALESCE((SELECT amount FROM ar a WHERE id = ac.trans_id $dpt_where), 0) != 0 THEN
/* ar amount is not zero, so we can divide by amount */
(SELECT SUM(acc.amount) * -1
FROM acc_trans acc
diff --git a/bin/mozilla/ap.pl b/bin/mozilla/ap.pl
index 0bb1a8bc4..7b16657e5 100644
--- a/bin/mozilla/ap.pl
+++ b/bin/mozilla/ap.pl
@@ -375,6 +375,10 @@ sub form_header {
if ( $form->{'paid_'. $form->{paidaccounts}} ) {
$form->{paidaccounts}++;
}
+
+ # default account for current assets (i.e. 1801 - SKR04)
+ $form->{accno_arap} = IS->get_standard_accno_current_assets(\%myconfig, \%$form);
+
for my $i (1 .. $form->{paidaccounts}) {
$form->{totalpaid} += $form->{"paid_$i"};
diff --git a/bin/mozilla/ar.pl b/bin/mozilla/ar.pl
index cec9db7a6..480507bb3 100644
--- a/bin/mozilla/ar.pl
+++ b/bin/mozilla/ar.pl
@@ -409,12 +409,15 @@ sub form_header {
gldate => $form->{"gldate_$i"},
};
+ # default account for current assets (i.e. 1801 - SKR04)
+ $form->{accno_arap} = IS->get_standard_accno_current_assets(\%myconfig, \%$form);
+
$payment->{selectAR_paid} =
NTI($cgi->popup_menu('-name' => "AR_paid_$i",
'-id' => "AR_paid_$i",
'-values' => \@AR_paid_values,
'-labels' => \%chart_labels,
- '-default' => $payment->{AR_paid}));
+ '-default' => $form->{accno_arap}));
diff --git a/bin/mozilla/io.pl b/bin/mozilla/io.pl
index c584f32c6..e10389171 100644
--- a/bin/mozilla/io.pl
+++ b/bin/mozilla/io.pl
@@ -1206,17 +1206,12 @@ sub print {
}
$form->{print_and_save} = 1;
my $formname = $form->{formname};
- save();
+ &save();
$form->{formname} = $formname;
- edit();
+ &edit();
$::lxdebug->leave_sub();
::end_of_request();
}
- elsif (($form->{type} =~ /_order$/) || ($form->{type} =~ /_quotation$/)) {
- $form->{print_and_save} = 1;
- save();
- }
-
&print_form($old_form);
diff --git a/doc/changelog b/doc/changelog
index 2d714e78d..519365823 100644
--- a/doc/changelog
+++ b/doc/changelog
@@ -3,6 +3,7 @@
###############################
+2014-01-xx - Release 3.1.0beta
GröÃere neue Features:
@@ -49,12 +50,12 @@ Kleinere neue Features und Detailverbesserungen:
kaufsmasken gesetzt werden.
- Rechte für die Anzeige von Debitoren- und Kreditorenbuchungen in Berichten
-__Es kann sinnvoll sein, den Standardeinkäufern und Verkäufern keinen Zugriff
-__auf Debitoren- oder Kreditorenbuchungen zu geben. Debitorenbuchungen werden
-__meist nur für die Mahngebührenrechnungen verwendet, da ist das nicht so
-__interessant, aber bei Kreditorenbuchungen werden oft Sachen gebucht, die
-__nichts mit Wareneinkauf zu tun haben, und nicht jeder sehen soll. Für diesen
-__Fall kann man diese Buchungen also per neuem Recht herausfiltern.
+ Es kann sinnvoll sein, den Standardeinkäufern und Verkäufern keinen Zugriff
+ auf Debitoren- oder Kreditorenbuchungen zu geben. Debitorenbuchungen werden
+ meist nur für die Mahngebührenrechnungen verwendet, da ist das nicht so
+ interessant, aber bei Kreditorenbuchungen werden oft Sachen gebucht, die
+ nichts mit Wareneinkauf zu tun haben, und nicht jeder sehen soll. Für diesen
+ Fall kann man diese Buchungen also per neuem Recht herausfiltern.
- Recht für die Anzeige von Details und Berichte von Waren, Dienstleistungen und Erzeugnissen
Statt nur ein Recht für die Bearbeitung von Artikeln zu haben, das gleichzeitig auch das Recht
@@ -73,18 +74,18 @@ __Fall kann man diese Buchungen also per neuem Recht herausfiltern.
- Stückliste für Lieferschein ausdrucken
Stücklisten-Details (Haken bei Warenliste) für Erzeugnisse wurden seit 2009
- (TEMPLATE_ARRAY Ãnderung) nicht mehr ausgedruckt,
- da hier die Code-Anpassungen vergessen wurde.
+ (TEMPLATE_ARRAY Ãnderung) nicht mehr ausgedruckt, da hier die Code-Anpassungen vergessen wurde.
+
- Offene Forderungen / Verbindlichkeiten
Stichtagsbezogene Auswahl korrekt mit Fälligkeit verrechnet
- Lagerbestand anzeigen, zeigt auch die Filteroptionen an
-- #1897 implementiert. Zukunfts-Buchungen verhindern, durch einen konfigurierbaren
- maximalen Zeitraum in dem in die Zukunft gebucht werden darf (default 360 Tage)
+- Zukunfts-Buchungen verhindern, durch einen konfigurierbaren
+ maximalen Zeitraum in dem in die Zukunft gebucht werden darf (default 360 Tage) (s.a. #1987)
-- #2300 Alle Feature-Konfigurationen sind jetzt in der Mandantenkonfiguration eingestellt
-- #2301 Dokumentenbelege optional in WebDAV-Ordner speichern
+- Alle Feature-Konfigurationen sind jetzt in der Mandantenkonfiguration eingestellt (s.a. #2300)
+- Dokumentenbelege optional in WebDAV-Ordner speichern (s.a. #2301)
Wichtige Ãnderungen:
@@ -109,11 +110,234 @@ Wichtige Ãnderungen:
zwingend vorausgesetzt.
Bugfixes:
- - Punkt in Belegnummer korrekt für WebDAV File Feature escapt (Bug 2394)
- - Stornierte Rechnungen (sowohl die Stornorechnung als auch das Storno nicht
- Buchen oder Löschen, egal was in der Mandantenkonfiguration steht)
- - Wiederkehrende Rechnung mit Steuer inklusive buchen Erlöse falsch (Bug 2314)
- - manuelle Lieferadresse im Auftrag wird nicht in wiederkehrende Rechung übernommen (Bug 2296)
+
+- Bugfix #182: Bug in bin/mozilla/gl.pl - Keine Steuerautomatik möglich!
+- Bugfix #476: Umwandlung Kundenauftrag in Lieferantenauftrag: fehlerhafte Zahlenformatierung
+- Bugfix #593: Flag für Jahresabschlussbuchungen einführen
+- Bugfix #671: OpenOffice Daemon Modus nicht funktionsfähig
+- Bugfix #708: Zahlungsverkehr - Kontenabgleich riesige Differenz
+- Bugfix #806: Kontenbezeichnungen von neuen Konten nicht bei Datev Export
+- Bugfix #1181: Gutschriftenerstellung aus Rechnung: Zahlungsausgaenge werden mit uebertragen
+- Bugfix #1225: Gutschriften - Variable fuer Rechnungsnummer
+- Bugfix #1396: Stammdaten-Lagerplatz -> Lagerplatz default
+- Bugfix #1464: Vorschlag für neues Login-Fenster
+- Bugfix #1510: Lastschriftvereinbarung f. Lieferanten bei SEPA beruecksichtigen
+- Bugfix #1615: Einkaufsrechnungen mit Fremdwährungen lassen sich nicht per "Zahlung buchen" bezahlen
+- Bugfix #1655: Neuanlegen mit östereichischen Kontorahmen, gibt Update-Fehler
+- Bugfix #1695: Adminbereich: Benutzer "als neu speichern" fügt neuen Nutzer direkt in employee der DB ein
+- Bugfix #1772: systemd script(s) are missing for task server
+- Bugfix #1784: Sammelrechnung nimmt nur 1 Auftragsnummer auf
+- Bugfix #1795: Aktualisierung des Einkaufspreises berücksichtigt Einheit und Rabatt nicht richtig
+- Bugfix #1800: Benutzer anlegen bei Neuinstallation mit bestehenden Mandanten und Verbindung zur DB testen schlägt fehl
+- Bugfix #1838: Lieferantennamen mit Bindstrich am Ende des Namens erzeugen Fehlermeldung bei Kreditorenbuchung
+- Bugfix #1859: Nicht gespeichertes Angebot/Auftrag/Rechnung... -> Drucken -> "Keine Aktion definiert"
+- Bugfix #1897: Datumsfehleingaben bei Rechnungen unterbinden
+- Bugfix #1925: Bei SEPA-Lastschrift wird datepaid in ar nicht gesetzt
+- Bugfix #1966: Konten als neu speichern, einige DB-Felder werden "immer" noch nicht übernommen
+- Bugfix #1998: CSV-Importer sollte in die History eintragen ...
+- Bugfix #2001: "Steuer im Preis inbegriffen": Wird bei manueller Eingabe nach Neuaufruf zurueckgesetzt
+- Bugfix #2010: Verkauf-Auftragsnummer mit TransNumberGenerator
+- Bugfix #2011: Zeilenumbrüche als letztes Zeichen bei part.description, part.notes beim Speichern in DB verhindern
+- Bugfix #2015: Zahlungsbedingungen lassen sich nicht mehr ändern
+- Bugfix #2040: direktes speichern beim zufuegen eines Artikels zum Erzeugnis uebernimmt die Daten nicht
+- Bugfix #2042: Unterschiedliche Anzeige Debitorenbuchung/Kreditorenbuchung
+- Bugfix #2052: Kontenübersicht falsche Zahlen bei Konto 1400
+- Bugfix #2058: Geloeschte User werden in VK-Belegen weiterhin angezeigt/zur Auswahl angeboten
+- Bugfix #2068: Lieferplan enthält bereits gelieferte Artikel
+- Bugfix #2072: Eigene Rechte fuer Lieferplan-Ansicht
+- Bugfix #2080: Verzögerte Aktualisierung von Zwischensumme bei Ãnderung von Preisgruppen
+- Bugfix #2081: Rechnung -> "als neu bearbeiten" sollte Eintrag "Bearbeiter" aktualisieren
+- Bugfix #2084: Klick auf eMail-Button beim Erfassen einer Rechnung bucht diese
+- Bugfix #2085: Bankkonto löschen schlägt wegen fehlender Funktion fehl
+- Bugfix #2096: Mit Chrome wird Menue innerhalb der CRM nicht richtig geparst
+- Bugfix #2098: Zahlungsverkehr - Zahlungseingang: Suchfeld Rechnungsnummer bringt alle Rechnungen des Kunden
+- Bugfix #2099: Zahlungsverkehr - Zahlungseingang: Dropdown-Feld fuer Kd ist leer
+- Bugfix #2105: Ansprechpersonensuche wird nicht ausgelöst
+- Bugfix #2109: Spalte oe_id in der Tabelle inventory irreführend
+- Bugfix #2111: OpenDocument zu PDF schlägt mit FCGI 0.74 fehl
+- Bugfix #2112: Auswahllistenbegrenzung wird erreicht
+- Bugfix #2113: Top100-Bericht kaputt
+- Bugfix #2114: Abspeichern Kreditorenbuchung
+- Bugfix #2115: Keine taxkey_id in Konten
+- Bugfix #2116: Wiedervorlage, Pulldown-Menü zeigt gelöschte Benutzer
+- Bugfix #2127: Vorlagensystem wird nicht gespeichert
+- Bugfix #2128: Schlüssel (tax_id)=(0) ist nicht in Tabelle 'tax' vorhanden. => Fehler beim Datenbankupgrade von 3.0.0. auf aktuelle git-Version
+- Bugfix #2129: release-3.0.0-7-g357d134 erzeugt in Tabelle acc_trans Einträge in die neue Spalte tax_id, die nicht in der Tabelle tax existieren.
+- Bugfix #2130: Kontorahmen SKR4 enthält doppelte Steuerschlüssel
+- Bugfix #2131: Preigruppe des Kunden wird in der Rechnung nicht eingestellt
+- Bugfix #2132: Buchen von EK-Rechnungen schlaegt fehl
+- Bugfix #2133: Berichte Konten Reihenfolge der Buchungen am selben Tag stimmt nicht
+- Bugfix #2134: Zahlungsverkehr - Zahlungseingang - Feld fuer Kunde funktioniert nicht
+- Bugfix #2136: Interne Bemerkung aus Auftrag gehen beim Workflow hinter Lieferschein verloren, nicht mehr in Rechnung drin
+- Bugfix #2138: SL::DB::Helper::TransNumberGenerator behandelt Kundentypnummernkreise nicht
+- Bugfix #2139: Rose-Beziehungstypen sind oft falsch
+- Bugfix #2141: Workflow Lieferantenauftrag -> Einkaufsrechnung - Abfrage nach Wechselkurs unangebracht
+- Bugfix #2142: Beim Erstellen eines Lieferantenauftrags wird der Rabatt doppelt verrechnet.
+- Bugfix #2145: Einträge in taxkeys sind NULL
+- Bugfix #2146: Summen und Saldenliste: Export to PDF/CSV in EÃR Modus falsch ( altes Ticket #1584 )
+- Bugfix #2150: Erstellen von EK-Auftraegen aus VK-Auftraegen: Preise falsch
+- Bugfix #2156: Steuern übersetzen
+- Bugfix #2157: Fehler beim Erstellen von Rechnungen
+- Bugfix #2158: Einkaufsrechnung erfassen: Lastschrift-Haken
+- Bugfix #2162: Update on "demo.kivitendo.org/beta/" broken
+- Bugfix #2167: Kundenmaske erscheint nicht mehr
+- Bugfix #2169: Fehlermeldung beim Buchen von SEPA-Ãberweisungen aufgrund neuer Spalte "tax_id" in Tabelle "acc_trans"
+- Bugfix #2170: Zwei Module im Installationscheck ergänzt
+- Bugfix #2173: Fehler beim Storno
+- Bugfix #2175: CSV-Import zeigt im Report nicht alle Zeilen
+- Bugfix #2176: CSV-Import blättert nicht richtig im Report
+- Bugfix #2177: CSV-Import von Lieferadressen fehlerhaft
+- Bugfix #2179: SEPA "Zahlung buchen" - Datumsfelder werden nicht mehr aktualisiert.
+- Bugfix #2181: Steuern festsetzen
+- Bugfix #2182: uri_decode: get parameter 0 wird nicht korrekt übergeben
+- Bugfix #2184: Lieferschein lässt sich nicht abschlieÃen
+- Bugfix #2185: dpt_trans ist überflüssig
+- Bugfix #2186: Tabelle partstax überflüssig
+- Bugfix #2189: add_chart_link_to_acc_trans.sql macht bei Update Probleme
+- Bugfix #2190: Einlagern -> Lieferschein mit Projektnummer: project_id wird nicht in inventory geschrieben
+- Bugfix #2191: Tabelle vendortax scheint überflüssig
+- Bugfix #2195: Kontenabgleich rechnet Falsch
+- Bugfix #2197: Debitorenbuchung Datenbankfehler
+- Bugfix #2201: Kunden können nicht gelöscht werden.
+- Bugfix #2202: kein Icon bei Rechnungen der Menü-Variante "Links (HTML)"
+- Bugfix #2203: CSV-Import zeigt Fehler beim Speichern eines Objektes nicht
+- Bugfix #2204: Neuangelegte Projekte lassen sich nicht wieder aufrufen
+- Bugfix #2205: Projekte: Feste Verknuepfung mit einem Kunden nicht immer gewuenscht/Auswahllistenbegrenzung greift nicht bei Projekten
+- Bugfix #2207: Loeschen von Auftraegen schlaegt fehl
+- Bugfix #2208: Berichte ueber Rechnungen: Default-Vorbelegung Dropdownfeld macht keinen Sinn
+- Bugfix #2209: gifi_accno exisiert nicht bei SL::DB::Manager::Chart->get_all
+- Bugfix #2210: Neue Lieferanten lassen sich nicht anlegen
+- Bugfix #2211: Rechnungen implizit über Preisfaktoren änderbar
+- Bugfix #2213: Benutzer in employee auf ungültig setzen
+- Bugfix #2216: Lieferschein wird bei Minuszeichen am Ende eines Kundennamens nicht gespeichert
+- Bugfix #2217: einmal bebuchte Steuern nicht mehr an der Oberfläche ändern
+- Bugfix #2219: Benutzer- bzw Programmeinstellungen "Steuer im preis inbegriffen" ueberschreiben manuelle Aenderungen
+- Bugfix #2220: Auswahlliste springt auf ersten Eintrag zurück
+- Bugfix #2222: Abteilungen lassen sich nicht ändern
+- Bugfix #2223: Fehler beim Anlegen eines neuen Kontos
+- Bugfix #2224: Steuerzone in Verkauf/Berichte/Rechnungen ist falsch.
+- Bugfix #2226: Zahlungsziel
+- Bugfix #2227: Buchungsjournal Auswahl nach Rechnungsdatum filtert nach höchstem transdate (nicht invnumber)
+- Bugfix #2228: Zahlungsein- ausgänge buchen über Zahlungsverkehr wirft SQL Fehler
+- Bugfix #2230: Layout: Felder und Ueberschriften bei Erzeugnissen verschoben
+- Bugfix #2232: Erzeugnisse: Einheit wird bei Fertigung ignoriert
+- Bugfix #2234: Fehler beim Bearbeiten von Lieferantenaufträgen
+- Bugfix #2235: periodische Rechnungen: kein Bearbeiter und Verkäufer bei automatischem Ausdruck
+- Bugfix #2237: Benutzerdefinierte Variablen von Projekten stehen nicht zum Druck bereit
+- Bugfix #2238: Bei Erzeugnis erfassen kann man identische Erzeugnisnummern speichern
+- Bugfix #2239: Kontonamen werden nicht angezeigt.
+- Bugfix #2240: Periodische Rechnungen nur an bestimmten Tagen ausführen
+- Bugfix #2241: Bestandteil zu einem Erzeugnis hinzufügen fehlerhaft
+- Bugfix #2243: Verkaufsbericht-Design in unstable verhunzt
+- Bugfix #2244: Fehler bei automatischen Auftragsbuchungen (Widerkehrende Rechnungen)
+- Bugfix #2245: Fehler beim Anlegen von Angeboten und Aufträgen (Nummernkreis)
+- Bugfix #2246: wiederkehrende Rechnungen: automatische Druck liefert Fehler
+- Bugfix #2247: wiederkehrende Rechnungen: automatischer Druck enthält nicht alle Variablen
+- Bugfix #2248: Buchungsjournal filtert nicht nach Bearbeiter
+- Bugfix #2249: Vorsteuer-/Umsatzsteuer-Verwechslungen vorbeugen
+- Bugfix #2250: Neue Steuer anlegen nicht möglich
+- Bugfix #2252: Fehler beim DB-Update auf HEAD - steuerfilterung.pl
+- Bugfix #2258: EK-Rechnungen lassen sich nicht buchen oder stornieren /
+- Bugfix #2259: Historie in kreditorenbuchung aufrufen erzeugt Fehler im Hauptfenster
+- Bugfix #2260: Falsche oder keine Summen bei 'Stammdaten -> Berichte -> Waren'
+- Bugfix #2261: Lieferschein -> Rechnung: Gruppenrabatte werden nicht übernommen
+- Bugfix #2272: Bei Dienstleistungsposition sind Preis und Rabatt nicht änderbar
+- Bugfix #2275: Verkäuferinformationen im Druck kommen aus der Authdatenbank
+- Bugfix #2277: Sammelkonten nicht in Aufklappmenü aufnehmen
+- Bugfix #2279: Druckvorlagen werden ohne Nachfrage gelöscht (admin)
+- Bugfix #2280: Druckvorlagenverzeichnis wird nicht vollständig gelöscht (admin)
+- Bugfix #2281: Artikelmenge ist nach hinzufügen Null
+- Bugfix #2282: CSV-Import Kunden geht nicht mehr wg. currency_id NOT NULL
+- Bugfix #2285: im SMTP-Modus wird bcc herausgefiltert
+- Bugfix #2286: Belege kann man nicht mehr löschen
+- Bugfix #2287: CSV-Import Kunden und Lieferanten kann Zahlungsbedingungen nicht aktualisieren ...
+- Bugfix #2288: Zahlungskonto sortieren: Praeferenzsortierung statt alphabetischer/numerischer Sortierung
+- Bugfix #2290: Neue Rechte für Produktivität
+- Bugfix #2292: DB-Error chart_categories Finanzbuchhaltung -> Dialogbuchen
+- Bugfix #2293: Rechnung löschen currency_id nicht beachtet
+- Bugfix #2294: Farben kaputt bei Menü-Variante Oben (mit CSS) im lx-office.erp-Stil
+- Bugfix #2296: manuelle Lieferadresse im Auftrag wird nicht in wiederkehrende Rechung übernommen
+- Bugfix #2301: Dokumentenbelege optional in webdav-Ordner speichern
+- Bugfix #2307: Nachkommastellen gehen bei der Eingabe verloren
+- Bugfix #2308: CSV-Import
+- Bugfix #2310: Gelöschte Aufträge in Aufgabenliste
+- Bugfix #2311: Anlegen von Gruppen schläg fehl
+- Bugfix #2312: Löschen von Mandanten-DBs
+- Bugfix #2313: Fehlermeldung bei Updatescript custom_variable_configs_column_type_text.sql
+- Bugfix #2314: Wiederkehrende Rechnung mit Steuer inklusive buchen Erlöse falsch
+- Bugfix #2315: Konten FA Bad Homburg
+- Bugfix #2319: Konto speichern / Konto als neu speichern leicht fehleranfällig
+- Bugfix #2320: SEPA Export enthält unzureichende/fehlerhafte Daten
+- Bugfix #2321: latex fehlermeldung non-utf8, bessere Nutzerrückmeldung
+- Bugfix #2323: Druckvorlagen funktionieren nicht mehr
+- Bugfix #2324: Spontane Redefinition der Lagerplätze / Nicht reproduzierbarer Lagerschwund
+- Bugfix #2325: Doubletten bei der Anlage von Lagerplätzen
+- Bugfix #2328: CRM ignoriert Umstelung der Benutzersprache auf Englisch
+- Bugfix #2329: CRM: Menu wird von der ERP nicht korrekt ausgeliefert
+- Bugfix #2331: Fehlemeldung beim Buchen von Zahlungen in Fremdwährung
+- Bugfix #2332: Lieferplan: Suchfilter nach Sortieren nicht mehr aktiv
+- Bugfix #2333: Einkaufspreis beim Lieferantenauftrag nicht richtig angezeigt
+- Bugfix #2334: show_no_warehouses_error
+- Bugfix #2335: falsche Lagerbestandsanzeige in Verkaufsdokumenten und Stammdaten
+- Bugfix #2336: Lieferanten anlegen schlägt fehl
+- Bugfix #2337: Updatescript zeigt bei "Neue Filter für Steuerkonten" falschen Steuersatz
+- Bugfix #2339: Perl Pakete in Ubuntu 10.04.4 LTS reichen nicht mehr für Unstable, Doku nicht mehr aktuell
+- Bugfix #2340: Erstellen von neuem Benutzer als Duplikat eines bestehenden enthält unnötige Abfrage
+- Bugfix #2341: Waren erfasse > Kommastellen im Listen- u. Verkaufspreis
+- Bugfix #2344: Ist-Versteuerung - Unterschiedliche Werte bei Bildschirmausgabe und Dateiexport
+- Bugfix #2346: Fehlerhafte Auswahlliste "Steuerschlüssel" in Debitor- und Kreditorbuchungsmaske
+- Bugfix #2347: Chaos in Benutzerdefinierte Variablen
+- Bugfix #2348: Rechnung als neu verwenden liefert Fehlermeldung, ...
+- Bugfix #2349: Hänger beim schnellen Buchen mehrerer Rechnungen
+- Bugfix #2350: Die Liste der Lieferungen (Kundenstamm, Reiter Lieferungen) zeigt falsche Dokumente
+- Bugfix #2351: Druck von HTML-Seiten bringt Fehlermeldung im Browser.
+- Bugfix #2352: Belege in WebDAV-Ablage speichern ergibt Fehlermeldung beim Erstellen von GUV und BWA
+- Bugfix #2359: sub get_warehouse takes ages
+- Bugfix #2361: Kunden anlegen bei neuer Datenbank
+- Bugfix #2365: Ãberlagerte benutzerdefinierte Variablen werden in wiederkehrende Rechnungen nicht übernommen
+- Bugfix #2366: Löschen und Ãndern von Einkaufsrechnungen nicht möglich
+- Bugfix #2367: Lieferplan: längere Antwortzeiten mit steigendem Datenbestand
+- Bugfix #2368: Race Condition: Report-Abfrage blockiert Buchung
+- Bugfix #2369: kleiner Anzeigefehler beim Einlagern bei Menü-Variante Links (HTML)
+- Bugfix #2374: Benutzerdefinierte Variablen vom Typ Ware oder Lieferant lassen sich bei Kunden nicht speichern
+- Bugfix #2376: Fehler bei Einlagern in Lager mit nur einem Lagerplatz in aktueller beta
+- Bugfix #2377: Einlagern in ungültige Lagerplätze ist möglich
+- Bugfix #2378: Einlagern mit negativen Mengen ist möglich
+- Bugfix #2379: VK-Lieferscheine: Vorbelegung laesst sich nicht zuruecknehmen wenn Artikelmenge auf 0 sinkt
+- Bugfix #2381: parse / format amount Problem bei Lagerbewegung > 1.000
+- Bugfix #2382: bei Vorlagendruck fehlt dbname in titlebar
+- Bugfix #2383: Debitorenbuchungen erscheinen doppelt in verknüpften Belegen
+- Bugfix #2384: In Lieferplan wird kein Link für Kunde mehr angezeigt
+- Bugfix #2385: Standardkonto fuer Umlaufvermoegen sollte auch fuer EK-Rechnungen/Debitorenbuchungen gelten
+- Bugfix #2386: Checkbox auf leer setzen bei Kunde bearbeiten wird nicht gespeichert
+- Bugfix #2387: Buchen von Korrekturen an Stornorechnungen
+- Bugfix #2388: Wiedervorlagen / Notizen bei Kunde editieren kaputt
+- Bugfix #2390: Ãbersetzungen von Zahlungsbedingungen werden nicht gelöscht
+- Bugfix #2393: Stammdaten > Kunden > Tab "Lieferungen", falsche Zuordnungen
+- Bugfix #2394: Menu render Fehler bei WebDav und Belegen mit Punkt in Belegnummer
+- Bugfix #2396: Keine Unternummerierung der Zwischensummen in Lieferscheinen
+- Bugfix #2397: Ãberschriebene Summen/Zeilen in PDF-Export
+- Bugfix #2398: Mahnungsnummern sind mal im Ausdruck, mal nicht
+- Bugfix #2399: Lieferungen-Tab bei Kunden erlaubt Einsicht in Rechnungen ohne Rechnungsrechte
+- Bugfix #2400: Lieferadresse wird bei der Auswahl eines neuen Lieferanten überschrieben
+- Bugfix #2401: Rabatt im Pop-Up-Fenster Kundendetails falsch, bei den Kundenstammdaten fehlt das %-Zeichen
+- Bugfix #2403: Lieferbedingungen
+- Bugfix #2404: Verlauf der Hintergrund-Jobs: Filter für einen Tag liefert keine Ergebnisse
+- Bugfix #2407: Stornieren von Rechnungen in geschloÃenen Perioden erlaubt
+- Bugfix #2409: Detailsanzeige klappt bei Eingabe von neuen Artikel auf
+- Bugfix #2410: Lieferscheindruck nicht möglich - Tex-Fehler
+- Bugfix #2411: Fehler bei VK Rechnung "Als bezahlt markieren": action= nicht definiert
+- Bugfix #2413: "scripts/locales.pl" nutzt "modules/fallback" nicht
+- Bugfix #2420: Benutzerdefinierte Variablen ist falsch
+- Bugfix #2421: Benutzerdefinierte Variablen wird nicht gespeichert
+- Bugfix #2422: neue Ansprechpersonen-CVar: kein Std-Wert
+- Bugfix #2424: Input-Fokus falsch in select_part, select_name
+- Bugfix #2426: Bei Kreditorenbuchungen wird nicht mehr auf vorhandene Rechnungsnummer geprüft
+- Bugfix #2428: CSV Import Waren Menge aktualisiert nur parts.onhand
+- Bugfix #2429: Partpicker aktualisiert bei bestimmten Aktionen nicht
+- Bugfix #2430: installaton_check.pl: bitte -D pushen
+- Bugfix #2432: Neuer Mandant - Kunde oder Lieferant speichern schlägt fehl bei Nummernkreis
+- Bugfix #2433: HTML UStVA-Bericht funktioniert nicht wenn WebDAV Belege speichern aktiv ist
2012-12-10 - Release 3.0.0
diff --git a/doc/dokumentation.xml b/doc/dokumentation.xml
index 5bbc1729f..f2b4b0b4c 100644
--- a/doc/dokumentation.xml
+++ b/doc/dokumentation.xml
@@ -14,6 +14,13 @@
im kivitendo-Forum: https://forum.kivitendo.org/
+
+ in der doc/UPGRADE Datei im doc-Verzeichnis der Installation
+
+
+ Im Schulungs- und Dienstleistungsangebot der entsprechenden kivitendo-Partner: http://www.kivitendo.de/partner.html
+
@@ -71,7 +78,7 @@
ohne groÃe Probleme auf den derzeit aktuellen verbreiteten
Distributionen läuft.
- Mitte 2012 sind das folgende Systeme, von denen bekannt ist,
+ Anfang 2014 sind das folgende Systeme, von denen bekannt ist,
dass kivitendo auf ihnen läuft:
@@ -351,15 +358,14 @@ tar xvzf kivitendo-erp-3.0.0.tgz
system
- features (siehe Kapitel "")
-
paths
+ mail_delivery (siehe Abschnitt ")
+
applicationsenvironment
- mail_delivery (siehe Abschnitt ")print_templates
@@ -367,8 +373,14 @@ tar xvzf kivitendo-erp-3.0.0.tgz
periodic_invoices
+ self_tests
+
console
+ testing
+
+ testing/database
+
debug
@@ -1170,8 +1182,8 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/
Authentifizierungsdatenbank gespeichert. Dies ist diejenige Datenbank, deren Verbindungsparameter in der Konfigurationsdatei
config/kivitendo.conf gespeichert werden.
- Das zweite Set besteht aus den eigentlichen Verkehrsdaten eines Mandanten: Stammdaten (Kunden, Lieferanten, Waren), Belege
- (Angebote, Liferscheine, Rechnungen), Einstellungen. Diese werden in einer Mandantendatenbank gespeichert. Die
+ Das zweite Set besteht aus den eigentlichen Verkehrsdaten eines Mandanten, wie beispielsweise die Stammdaten (Kunden, Lieferanten, Waren) und Belege
+ (Angebote, Lieferscheine, Rechnungen). Diese werden in einer Mandantendatenbank gespeichert. Die
Verbindungsinformationen einer solchen Mandantendatenbank werden im Administrationsbereich konfiguriert, indem man einen Mandanten
anlegt und dort die Parameter einträgt. Dabei hat jeder Mandant eine eigene Datenbank.
@@ -1179,16 +1191,7 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/
Mandantendatenbanken in ein und derselben Datenbank zu speichern. Arbeitet man hingegen mit mehr als einem Mandanten, wird
empfohlen, für die Authentifizierungsdatenbank eine eigene Datenbank zu verwenden, die nicht gleichzeitig für einen Mandanten
verwendet wird.
-
- kivitendo verwendet eine Datenbank zum Speichern all seiner
- Informationen wie Kundendaten, Artikel, Angebote, Rechnungen etc. Um
- mit kivitendo arbeiten zu können, muss eine Person einen
- Benutzeraccount haben. Jedem Benutzeraccount wiederum wird genau eine
- Datenbank zugewiesen, mit der dieser Benutzer arbeiten kann. Es ist
- möglich und normal, dass mehreren Benutzern die selbe Datenbank
- zugewiesen wird, sodass sie alle mit den selben Daten arbeiten
- können.
-
+
Mandanten, Benutzer und Gruppen
@@ -1589,6 +1592,9 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/
RBVollständiger Dokumentensatz mit alternativem Design
+ Die konzeptionelle Idee wird hier
+ auf Folie 5 bis 10 vorgestellt, Detaileinstellungen dann im Readme.tex im Vorlagenverzeichnis.
@@ -2257,8 +2263,7 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/
manuell über den Workflow.
-
-
+ Dokumentenvorlagen und verfügbare Variablen
@@ -4803,6 +4808,41 @@ Beschreibung: <%description%>
gewechselt.
+
+ Mandantenkonfiguration Lager
+ Die Lagerverwaltung in kivitendo funktioniert standardmässig wie folgt:
+ Wird ein Lager mit einem Lagerplatz angelegt, so gibt es die Möglichkeit hier über den
+ Menüpunkt Lager entsprechende Warenbewegungen durchzuführen. Ferner kann
+ jede Position eines Lieferscheins ein-, bzw. ausgelagert werden (Einkauf-, bzw. Verkauf).
+ Es können beliebig viele Lager mit beliebig vielen Lagerplätzen abgebildet werden.
+ Die Lagerbewegungen über einen Lieferschein erfolgt durch Anklicken jeder Einzelposition und
+ das Auswählen dieser Position zu einem Lager mit Lagerplatz.
+ Dieses Verfahren lässt sich schrittweise vereinfachen, je nachdem wie die Einstellungen in
+ der Mandatenkonfiguration gesetzt werden.
+
+
+ Hier wird ein zusätzlicher Knopf (Auslagern über Standard-Lagerplatz)
+ in dem Lieferschein-Beleg hinzugefügt, der dann alle Lagerbewegungen über den Standardlagerplatz (konfigurierbar pro Ware) durchführt.
+
+
+
+ Das obige Auslagern schlägt fehl, wenn die entsprechende Menge für
+ die Lagerbewegung nicht vorhanden ist, möchte man dies auch ignorieren und ggf. dann nachpflegen, so kann man eine Negativ-Warenmenge mit dieser Option
+ erlauben. Hierfür muss ein entsprechender Lagerplatz (Fehlbestand, o.ä.) konfiguriert sein.
+
+
+ Zusätzliche Funktionshinweise:
+
+ Ist dieser konfiguriert, wird dies auch als Standard-Voreinstellung bei der Neuerfassung von
+ Stammdaten-> Waren / Dienstleistung / Erzeugnis verwendet.
+
+
+ Wird beim 'Auslagern über Standardlagerplatz'
+ keine Standardlagerplatz zu der Ware gefunden, so wird mit dieser Option einfach der Standardlagerplatz verwendet.
+
+
+
+
diff --git a/doc/html/ch01.html b/doc/html/ch01.html
index 5e93492a9..f3c9e3e15 100644
--- a/doc/html/ch01.html
+++ b/doc/html/ch01.html
@@ -1,4 +1,5 @@
Kapitel 1. Aktuelle Hinweise
\ No newline at end of file
diff --git a/doc/html/ch02s02.html b/doc/html/ch02s02.html
index d5aff31b0..b980f1dae 100644
--- a/doc/html/ch02s02.html
+++ b/doc/html/ch02s02.html
@@ -5,7 +5,7 @@
diese Version im speziellen auf Debian und Ubuntu, grundsätzlich wurde
bei der Auswahl der Pakete aber darauf Rücksicht genommen, dass es
ohne groÃe Probleme auf den derzeit aktuellen verbreiteten
- Distributionen läuft.
Mitte 2012 sind das folgende Systeme, von denen bekannt ist,
+ Distributionen läuft.
Anfang 2014 sind das folgende Systeme, von denen bekannt ist,
dass kivitendo auf ihnen läuft:
Debian
6.0 "Squeeze" (hier muss allerdings das Modul FCGI in der Version >= 0.72 compiled werden, und Rose::DB::Object ist zu alt)
Zum Betrieb von kivitendo werden zwingend ein Webserver (meist
Apache) und ein Datenbankserver (PostgreSQL, mindestens v8.4)
benötigt.
Zusätzlich benötigt kivitendo einige Perl-Pakete, die nicht Bestandteil einer Standard-Perl-Installation sind. Um zu
@@ -70,7 +70,7 @@
sind auch in 2.6.1 weiterhin mit ausgeliefert, wurden in einer
zukünftigen Version aber aus dem Paket entfernt werden. Es wird
empfohlen diese Module zusammen mit den anderen als Bibliotheken zu
- installieren.
2.2.2.1. Debian und Ubuntu
Alle benötigten Perl-Pakete stehen für Debian und Ubuntu als Debian-Pakete zur Verfügung. Sie können mit folgendem Befehl
+ installieren.
2.2.2.1. Debian und Ubuntu
Alle benötigten Perl-Pakete stehen für Debian und Ubuntu als Debian-Pakete zur Verfügung. Sie können mit folgendem Befehl
installiert werden:
Die üblicherweise wichtigsten Parameter, die am Anfang
diff --git a/doc/html/ch02s06.html b/doc/html/ch02s06.html
index f834447aa..8adafac8c 100644
--- a/doc/html/ch02s06.html
+++ b/doc/html/ch02s06.html
@@ -1,6 +1,6 @@
Für einen deutlichen Performanceschub sorgt die Ausführung
mittels FastCGI/FCGI. Die Einrichtung wird ausführlich im Abschnitt
Konfiguration für FastCGI/FCGI beschrieben.
Der Zugriff auf das Programmverzeichnis muss in der Apache
Webserverkonfigurationsdatei httpd.conf eingestellt
diff --git a/doc/html/ch02s07.html b/doc/html/ch02s07.html
index ceff261cd..577f2b5c6 100644
--- a/doc/html/ch02s07.html
+++ b/doc/html/ch02s07.html
@@ -29,7 +29,7 @@
Links aus einem der Runlevel-Verzeichnisse heraus in den Boot-Prozess
einzubinden. Da das bei neueren Linux-Distributionen aber nicht
zwangsläufig funktioniert, werden auch Start-Scripte mitgeliefert, die
- anstelle eines symbolischen Links verwendet werden können.
Kopieren Sie die Datei
scripts/boot/system-v/kivitendo-server
nach /etc/init.d/kivitendo-server. Passen
Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
@@ -37,12 +37,12 @@
Boot-Prozess ein. Dies ist distributionsabhängig:
Debian-basierende Systeme:
update-rc.d kivitendo-task-server defaults
# Nur bei Debian Squeeze und neuer:
insserv kivitendo-task-server
Ãltere OpenSUSE und ältere Fedora Core:
chkconfig --add kivitendo-task-server
Danach kann der Task-Server mit dem folgenden Befehl gestartet
- werden:
/etc/init.d/kivitendo-task-server start
2.7.2.2. Upstart-basierende Systeme (z.B. Ubuntu)
Kopieren Sie die Datei
+ werden:
/etc/init.d/kivitendo-task-server start
2.7.2.2. Upstart-basierende Systeme (z.B. Ubuntu)
Kopieren Sie die Datei
scripts/boot/upstart/kivitendo-task-server.conf
nach /etc/init/kivitendo-task-server.conf.
Passen Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
exec ....).
Danach kann der Task-Server mit dem folgenden Befehl gestartet
- werden:
Verlinken Sie die Datei scripts/boot/systemd/kivitendo-task-server.service nach
/etc/systemd/system/. Passen Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
ExecStart=.... und ExecStop=...). Binden Sie das Script in den Boot-Prozess ein.
Alle hierzu benötigten Befehle sehen so aus:
cd /var/www/kivitendo-erp/scripts/boot/systemd
diff --git a/doc/html/ch02s09.html b/doc/html/ch02s09.html
index 495958ba1..0abdceef4 100644
--- a/doc/html/ch02s09.html
+++ b/doc/html/ch02s09.html
@@ -7,20 +7,13 @@
config/kivitendo.conf eingetragen haben.
2.9.1. Zusammenhänge
kivitendo verwaltet zwei Sets von Daten, die je nach Einrichtung in einer oder zwei Datenbanken gespeichert werden.
Das erste Set besteht aus Anmeldeinformationen: welche Benutzer und Mandanten gibt es, welche Gruppen, welche BenutzerIn hat
Zugriff auf welche Mandanten, und welche Gruppe verfügt über welche Rechte. Diese Informationen werden in der
Authentifizierungsdatenbank gespeichert. Dies ist diejenige Datenbank, deren Verbindungsparameter in der Konfigurationsdatei
- config/kivitendo.conf gespeichert werden.
Das zweite Set besteht aus den eigentlichen Verkehrsdaten eines Mandanten: Stammdaten (Kunden, Lieferanten, Waren), Belege
- (Angebote, Liferscheine, Rechnungen), Einstellungen. Diese werden in einer Mandantendatenbank gespeichert. Die
+ config/kivitendo.conf gespeichert werden.
Das zweite Set besteht aus den eigentlichen Verkehrsdaten eines Mandanten, wie beispielsweise die Stammdaten (Kunden, Lieferanten, Waren) und Belege
+ (Angebote, Lieferscheine, Rechnungen). Diese werden in einer Mandantendatenbank gespeichert. Die
Verbindungsinformationen einer solchen Mandantendatenbank werden im Administrationsbereich konfiguriert, indem man einen Mandanten
anlegt und dort die Parameter einträgt. Dabei hat jeder Mandant eine eigene Datenbank.
Aufgrund des Datenbankdesigns ist es für einfache Fälle möglich, die Authentifizierungsdatenbank und eine der
Mandantendatenbanken in ein und derselben Datenbank zu speichern. Arbeitet man hingegen mit mehr als einem Mandanten, wird
empfohlen, für die Authentifizierungsdatenbank eine eigene Datenbank zu verwenden, die nicht gleichzeitig für einen Mandanten
- verwendet wird.
kivitendo verwendet eine Datenbank zum Speichern all seiner
- Informationen wie Kundendaten, Artikel, Angebote, Rechnungen etc. Um
- mit kivitendo arbeiten zu können, muss eine Person einen
- Benutzeraccount haben. Jedem Benutzeraccount wiederum wird genau eine
- Datenbank zugewiesen, mit der dieser Benutzer arbeiten kann. Es ist
- möglich und normal, dass mehreren Benutzern die selbe Datenbank
- zugewiesen wird, sodass sie alle mit den selben Daten arbeiten
- können.
2.9.2. Mandanten, Benutzer und Gruppen
kivitendos Administration kennt Mandanten, Benutzer und Gruppen, die sich frei zueinander zuordnen lassen.
kivitendo kann mehrere Mandaten aus einer Installation heraus verwalten. Welcher Mandant benutzt wird, kann direkt beim Login
+ verwendet wird.
2.9.2. Mandanten, Benutzer und Gruppen
kivitendos Administration kennt Mandanten, Benutzer und Gruppen, die sich frei zueinander zuordnen lassen.
kivitendo kann mehrere Mandaten aus einer Installation heraus verwalten. Welcher Mandant benutzt wird, kann direkt beim Login
ausgewählt werden. Für jeden Mandanten wird ein eindeutiger Name vergeben, der beim Login angezeigt wird. Weiterhin benötigt der
Mandant Datenbankverbindungsparameter für seine Mandantendatenbank. Diese sollte über die Datenbankverwaltung geschehen.
Ein Benutzer ist eine Person, die Zugriff auf kivitendo erhalten soll. Sie erhält einen Loginnamen sowie ein
Passwort. Weiterhin legt der Administrator fest, an welchen Mandanten sich ein Benutzer anmelden kann, was beim Login verifiziert
diff --git a/doc/html/ch02s11.html b/doc/html/ch02s11.html
index 123ed684a..2ab4e2cb2 100644
--- a/doc/html/ch02s11.html
+++ b/doc/html/ch02s11.html
@@ -5,13 +5,20 @@
die Pakete mit:
kivitendo bringt drei alternative Vorlagensätze mit:
Standard
f-tex
RB
2.11.1. Vorlagenverzeichnis anlegen
Im Administrationsbereich lässt sich bei einem Benutzer/Mandanten einer dieser Vorlagensätze als Basis für die zu
- druckenden Dokumente auswählen. Rufen Sie dazu die Benutzerverwaltung auf.
Wählen Sie dort einen Benutzer aus oder legen Sie einen neuen an. In der Benutzerbearbeiten-Maske müssen Sie zwei Dinge
- angeben:
- Name: Der Verzeichnisname für den neuen Vorlagensatz. Dieser kann im Rahmen der üblichen
- Bedingungen für Verzeichnisnamen frei gewählt werden.
+
TODO: RPM-Pakete.
kivitendo bringt drei alternative Vorlagensätze mit:
Standard
f-tex
RB
2.11.1. Vorlagenverzeichnis anlegen
Es lässt sich ein initialer Vorlagensatz erstellen. Die LaTeX-System-Abhängigkeiten hierfür kann man prüfen mit:
./scripts/installation_check.pl -lv
Der Angemmeldete Benutzer muss in einer Gruppe sein, die über das
+ Recht "Konfiguration -> Mandantenverwaltung" verfügt. Siehe auch Abschnitt 2.9.4, âGruppen anlegenâ.
+
Im Userbereich lässt sich unter:
+ "System ->
+ Mandantenverwaltung -> Verschiedenes" die Option
+ "Neue Druckvorlagen aus Vorlagensatz erstellen" auswählen.
Vorlagen auswählen: Wählen Sie hier den Vorlagensatz aus, der kopiert werden soll
- (Standard, f-tex oder RB.)
Der gleiche Vorlagensatz kann, wenn er mal angelegt ist, bei mehreren Benutzern verwendet werden.
Die Abhängigkeiten kann man prüfen mit:
/scripts/installation_check.pl -l
2.11.2. Standard
Der Standard-Vorlagensatz von Kivitendo. Wie unter http://demo.kivitendo.org zu
+ (Standard, f-tex oder RB.)
+ Neuer Name: Der Verzeichnisname für den neuen Vorlagensatz. Dieser kann im Rahmen der üblichen
+ Bedingungen für Verzeichnisnamen frei gewählt werden.
Nach dem Speichern wird das Vorlagenverzeichnis angelegt und ist für den aktuellen Mandanten ausgewählt.
+ Der gleiche Vorlagensatz kann, wenn er mal angelegt ist, bei mehreren Mandanten verwendet werden.
+ Eventuell muessen Anpassungen (Logo, Erscheinungsbild, etc) noch vorgenommen werden. Den Ordner findet man im Dateisistem unter
+ ./templates/[Neuer Name]
+
Ein Vorlagensatz, der in wenigen Minuten alle Dokumente zur Verfügung stellt.
2.11.3.1. Feature-Ãbersicht
Keine Redundanz. Es wird ein- und dieselbe LaTeX-Vorlage für alle briefartigen Dokumente verwendet. Also
Angebot, Rechnung, Performarechnung, Lieferschein, aber eben nicht für Paketaufkleber etc..
Leichte Anpassung an das Firmen-Layout durch verwendung eines Hintergrund-PDF. Dieses kann leicht mit dem
eigenen Lieblingsprogramm erstellt werden (Openoffice, Inkscape, Gimp, Adobe*)
Hintergrund-PDF umschaltbar auf "nur erste Seite" (Standard) oder "alle Seiten" (Option
@@ -71,7 +78,8 @@
shipto*-Variable leer ist, wird die entsprechende Adressvariable eingesetzt. Wenn also die Lieferadresse in
StraÃe, Hausnummer und Ort abweicht, müssen auch nur diese Felder in der Lieferadresse ausgefüllt werden. Für den Firmenname wird
der Wert der Hauptadresse angezeigt.
-
2.11.4. RB
Vollständiger Dokumentensatz mit alternativem Design
2.11.5. Allgemeine Hinweise zu LaTeX Vorlagen
In den allermeisten Installationen sollte drucken jetzt schon
+
2.11.4. RB
Vollständiger Dokumentensatz mit alternativem Design
Die konzeptionelle Idee wird hier
+ auf Folie 5 bis 10 vorgestellt, Detaileinstellungen dann im Readme.tex im Vorlagenverzeichnis.
2.11.5. Allgemeine Hinweise zu LaTeX Vorlagen
In den allermeisten Installationen sollte drucken jetzt schon
funktionieren. Sollte ein Fehler auftreten wirft TeX sehr lange
Fehlerbeschreibungen, der eigentliche Fehler ist immer die erste Zeite
die mit einem Ausrufezeichen anfängt. Häufig auftretende Fehler sind zum
diff --git a/doc/html/ch03s02.html b/doc/html/ch03s02.html
index e8667b4c3..01554890c 100644
--- a/doc/html/ch03s02.html
+++ b/doc/html/ch03s02.html
@@ -566,7 +566,7 @@
invdate
Rechnungsdatum
invnumber
-
Rechnungsnummer
3.2.10. Variablen in anderen Vorlagen
3.2.10.1. Einführung
Die Variablen in anderen Vorlagen sind ähnlich wie in der
+
Rechnungsnummer
3.2.10. Variablen in anderen Vorlagen
3.2.10.1. Einführung
Die Variablen in anderen Vorlagen sind ähnlich wie in der
Rechnung. Allerdings heiÃen die Variablen, die mit
inv beginnen, jetzt anders. Bei den Angeboten
fangen sie mit quo für "quotation" an:
diff --git a/doc/html/ch03s03.html b/doc/html/ch03s03.html
index 5813bdece..25899f36b 100644
--- a/doc/html/ch03s03.html
+++ b/doc/html/ch03s03.html
@@ -1,6 +1,6 @@
Dieses Dokument beschreibt den Mechanismus, mit dem
Exceltemplates abgearbeitet werden, und die Einschränkungen, die damit
einhergehen.
3.3.2. Bedienung
Der Excel Mechanismus muss in der Konfigurationsdatei aktiviert
werden. Die Konfigurationsoption heiÃt excel_templates =
@@ -33,4 +33,4 @@
<% %> kommt in den Headerinformationen
evtl. vor. Deshalb wurde auf den sichereren Delimiter
<< und >>
- gewechselt.
\ No newline at end of file
+ gewechselt.
\ No newline at end of file
diff --git a/doc/html/ch04.html b/doc/html/ch04.html
index 8c7b14093..7584f82f0 100644
--- a/doc/html/ch04.html
+++ b/doc/html/ch04.html
@@ -1,6 +1,6 @@
- Kapitel 4. Entwicklerdokumentation
Globale Variablen liegen in einem speziellen namespace namens
"main", der von überall erreichbar ist. Darüber hinaus sind bareword
globs global und die meisten speziellen Variablen sind...
speziell.
Daraus ergeben sich folgende Formen:
@@ -25,7 +25,7 @@
$PACKAGE::form.
local $form
Alle Ãnderungen an $form werden am Ende
- des scopes zurückgesetzt
4.1.2. Warum sind globale Variablen ein Problem?
Das erste Problem ist FCGIâ¢.
+ des scopes zurückgesetzt
4.1.2. Warum sind globale Variablen ein Problem?
Das erste Problem ist FCGIâ¢.
SQL-Ledger⢠hat fast alles im globalen
namespace abgelegt, und erwartet, dass es da auch wiederzufinden ist.
Unter FCGI⢠müssen diese Sachen aber wieder
@@ -39,7 +39,7 @@
dies hat, seit der Einführung, u.a. schon so manche langwierige
Bug-Suche verkürzt. Da globale Variablen aber implizit mit Package
angegeben werden, werden die nicht geprüft, und somit kann sich
- schnell ein Tippfehler einschleichen.
4.1.3. Kanonische globale Variablen
Um dieses Problem im Griff zu halten gibt es einige wenige
+ schnell ein Tippfehler einschleichen.
4.1.3. Kanonische globale Variablen
Um dieses Problem im Griff zu halten gibt es einige wenige
globale Variablen, die kanonisch sind, d.h. sie haben bestimmte
vorgegebenen Eigenschaften, und alles andere sollte anderweitig
umhergereicht werden.
Diese Variablen sind im Moment die folgenden neun:
@@ -62,7 +62,7 @@
$::request
Damit diese nicht erneut als Müllhalde missbraucht werden, im
Folgenden eine kurze Erläuterung der bestimmten vorgegebenen
- Eigenschaften (Konventionen):
4.1.3.1. $::form
Ist ein Objekt der Klasse
+ Eigenschaften (Konventionen):
4.1.3.1. $::form
Ist ein Objekt der Klasse
"Form"
Wird nach jedem Request gelöscht
Muss auch in Tests und Konsolenscripts vorhanden
sein.
Enthält am Anfang eines Requests die Requestparameter vom
User
Kann zwar intern über Requestgrenzen ein Datenbankhandle
@@ -110,7 +110,7 @@
push @{ $form->{TEMPLATE_ARRAYS}{number} }, $form->{"partnumber_$i"};
push @{ $form->{TEMPLATE_ARRAYS}{description} }, $form->{"description_$i"};
# ...
-}
4.1.3.2. %::myconfig
Das einzige Hash unter den globalen Variablen
Wird spätestens benötigt wenn auf die Datenbank
+}
4.1.3.2. %::myconfig
Das einzige Hash unter den globalen Variablen
Wird spätestens benötigt wenn auf die Datenbank
zugegriffen wird
Wird bei jedem Request neu erstellt.
Enthält die Userdaten des aktuellen Logins
Sollte nicht ohne Filterung irgendwo gedumpt werden oder
extern serialisiert werden, weil da auch der Datenbankzugriff
für diesen user drinsteht.
Enthält unter anderem Listenbegrenzung vclimit,
@@ -122,10 +122,10 @@
überwiegend die Daten, die sich unter Programm
-> Einstellungen befinden, bzw. die
Informationen über den Benutzer die über die
- Administrator-Schnittstelle eingegeben wurden.
4.1.3.3. $::locale
Objekt der Klasse "Locale"
Wird pro Request erstellt
Muss auch für Tests und Scripte immer verfügbar
+ Administrator-Schnittstelle eingegeben wurden.
4.1.3.3. $::locale
Objekt der Klasse "Locale"
Wird pro Request erstellt
Muss auch für Tests und Scripte immer verfügbar
sein.
Lokalisierung für den aktuellen User. Alle Ãbersetzungen,
- Zahlen- und Datumsformatierungen laufen über dieses Objekt.
4.1.3.4. $::lxdebug
Objekt der Klasse "LXDebug"
Wird global gecached
Muss immer verfügbar sein, in nahezu allen
+ Zahlen- und Datumsformatierungen laufen über dieses Objekt.
4.1.3.4. $::lxdebug
Objekt der Klasse "LXDebug"
Wird global gecached
Muss immer verfügbar sein, in nahezu allen
Funktionen
$::lxdebug stellt Debuggingfunktionen
bereit, wie "enter_sub" und
@@ -135,14 +135,14 @@
"message" und "dump" mit
denen man flott Informationen ins Log (tmp/kivitendo-debug.log)
packen kann.
Beispielsweise so:
$main::lxdebug->message(0, 'Meine Konfig:' . Dumper (%::myconfig));
-$main::lxdebug->message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form->{vc});
4.1.3.5. $::auth
Objekt der Klasse "SL::Auth"
Wird global gecached
Hat eine permanente DB Verbindung zur Authdatenbank
Wird nach jedem Request resettet.
+$main::lxdebug->message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form->{vc});
4.1.3.5. $::auth
Objekt der Klasse "SL::Auth"
Wird global gecached
Hat eine permanente DB Verbindung zur Authdatenbank
Wird nach jedem Request resettet.
$::auth stellt Funktionen bereit um die
Rechte des aktuellen Users abzufragen. Obwohl diese Informationen
vom aktuellen User abhängen wird das Objekt aus
Geschwindigkeitsgründen nur einmal angelegt und dann nach jedem
Request kurz resettet.
Dieses Objekt kapselt auch den gerade aktiven Mandanten. Dessen Einstellungen können über
$::auth->client abgefragt werden; Rückgabewert ist ein Hash mit den Werten aus der Tabelle
- auth.clients.
4.1.3.6. $::lx_office_conf
Objekt der Klasse
+ auth.clients.
4.1.3.6. $::lx_office_conf
Objekt der Klasse
"SL::LxOfficeConf"
Global gecached
Repräsentation der
config/kivitendo.conf[.default]-Dateien
Globale Konfiguration. Configdateien werden zum Start gelesen
und danach nicht mehr angefasst. Es ist derzeit nicht geplant, dass
@@ -152,16 +152,16 @@ $main::lxdebug->message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form->{
file = /tmp/kivitendo-debug.log
ist der Key file im Programm als
$::lx_office_conf->{debug}{file}
erreichbar.
Warnung
Zugriff auf die Konfiguration erfolgt im Moment über
- Hashkeys, sind also nicht gegen Tippfehler abgesichert.
4.1.3.7. $::instance_conf
Objekt der Klasse
+ Hashkeys, sind also nicht gegen Tippfehler abgesichert.
4.1.3.7. $::instance_conf
Objekt der Klasse
"SL::InstanceConfiguration"
wird pro Request neu erstellt
Funktioniert wie $::lx_office_conf,
speichert aber Daten die von der Instanz abhängig sind. Eine Instanz
ist hier eine Mandantendatenbank. Beispielsweise überprüft
- ob die berüchtigte Bestandsmethode zur Anwendung kommt.
4.1.3.8. $::dispatcher
Objekt der Klasse
+ ob die berüchtigte Bestandsmethode zur Anwendung kommt.
4.1.3.8. $::dispatcher
Objekt der Klasse
"SL::Dispatcher"
wird pro Serverprozess erstellt.
enthält Informationen über die technische Verbindung zum
Server
Der dritte Punkt ist auch der einzige Grund warum das Objekt
global gespeichert wird. Wird vermutlich irgendwann in einem anderen
- Objekt untergebracht.
4.1.3.9. $::request
Hashref (evtl später Objekt)
Wird pro Request neu initialisiert.
Keine Unterstruktur garantiert.
+ Objekt untergebracht.
4.1.3.9. $::request
Hashref (evtl später Objekt)
Wird pro Request neu initialisiert.
Keine Unterstruktur garantiert.
$::request ist ein generischer Platz um
Daten "für den aktuellen Request" abzulegen. Sollte nicht für action
at a distance benutzt werden, sondern um lokales memoizing zu
@@ -174,20 +174,20 @@ file = /tmp/kivitendo-debug.log
ist der Key file
$::request
Muss ich von anderen Teilen des Programms lesend drauf
zugreifen? Dann $::request, aber Zugriff über
- Wrappermethode
4.1.4. Ehemalige globale Variablen
Die folgenden Variablen waren einmal im Programm, und wurden
- entfernt.
4.1.4.1. $::cgi
war nötig, weil cookie Methoden nicht als
+ Wrappermethode
4.1.4. Ehemalige globale Variablen
Die folgenden Variablen waren einmal im Programm, und wurden
+ entfernt.
4.1.4.1. $::cgi
war nötig, weil cookie Methoden nicht als
Klassenfunktionen funktionieren
Aufruf als Klasse erzeugt Dummyobjekt was im
Klassennamespace gehalten wird und über Requestgrenzen
leaked
liegt jetzt unter
$::request->{cgi}
-
4.1.4.2. $::all_units
war nötig, weil einige Funktionen in Schleifen zum Teil
+
4.1.4.2. $::all_units
war nötig, weil einige Funktionen in Schleifen zum Teil
ein paar hundert mal pro Request eine Liste der Einheiten
brauchen, und de als Parameter durch einen Riesenstack von
Funktionen geschleift werden müssten.
Liegt jetzt unter
$::request->{cache}{all_units}
Wird nur in
AM->retrieve_all_units() gesetzt oder
- gelesen.
4.1.4.3. %::called_subs
wurde benutzt um callsub deep recursions
+ gelesen.
4.1.4.3. %::called_subs
wurde benutzt um callsub deep recursions
abzufangen.
Wurde entfernt, weil callsub nur einen Bruchteil der
möglichen Rekursioenen darstellt, und da nie welche
- auftreten.