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 ") + applications environment - 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/ 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. @@ -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

Kapitel 1. Aktuelle Hinweise

Aktuelle Installations- und Konfigurationshinweise gibt es:

\ 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)

    • 7.0 "Wheezy"

  • Ubuntu 12.04 LTS "Precise Pangolin", 12.10 "Quantal Quetzal" und 13.04 "Precise Pangolin"

  • openSUSE 12.2 und 12.3

  • SuSE Linux Enterprice Server 11

  • Fedora 16 bis 19

2.2.2. Benötigte Perl-Pakete installieren

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:

apt-get install apache2 libarchive-zip-perl libclone-perl \
   libconfig-std-perl libdatetime-perl libdbd-pg-perl libdbi-perl \
   libemail-address-perl  libemail-mime-perl libfcgi-perl libjson-perl \
@@ -79,14 +79,14 @@
   librose-db-perl librose-object-perl libsort-naturally-perl \
   libstring-shellquote-perl libtemplate-perl libtext-csv-xs-perl \
   libtext-iconv-perl liburi-perl libxml-writer-perl libyaml-perl \
-  libfile-copy-recursive-perl postgresql

2.2.2.2. Fedora Core

Für Fedora Core stehen die meisten der benötigten Perl-Pakete als RPM-Pakete zur Verfügung. Sie können mit folgendem Befehl installeirt werden:

yum install httpd perl-Archive-Zip perl-Clone perl-DBD-Pg \
+  libfile-copy-recursive-perl postgresql

2.2.2.2. Fedora Core

Für Fedora Core stehen die meisten der benötigten Perl-Pakete als RPM-Pakete zur Verfügung. Sie können mit folgendem Befehl installeirt werden:

yum install httpd perl-Archive-Zip perl-Clone perl-DBD-Pg \
   perl-DBI perl-DateTime perl-Email-Address perl-Email-MIME perl-FCGI \
   perl-File-Copy-Recursive perl-JSON perl-List-MoreUtils perl-Net-SMTP-SSL perl-Net-SSLGlue \
   perl-PDF-API2 perl-Params-Validate perl-Rose-DB perl-Rose-DB-Object \
   perl-Rose-Object perl-Sort-Naturally perl-String-ShellQuote \
   perl-Template-Toolkit perl-Text-CSV_XS perl-Text-Iconv perl-URI \
   perl-XML-Writer perl-YAML perl-parent postgresql-server

Zusätzlich müssen einige Pakete aus dem CPAN installiert werden. Dazu können Sie die folgenden Befehle nutzen:

yum install perl-CPAN
-cpan Config::Std

2.2.2.3. openSUSE

Für openSUSE stehen die meisten der benötigten Perl-Pakete als RPM-Pakete zur Verfügung. Sie können mit folgendem Befehl +cpan Config::Std

2.2.2.3. openSUSE

Für openSUSE stehen die meisten der benötigten Perl-Pakete als RPM-Pakete zur Verfügung. Sie können mit folgendem Befehl installiert werden:

zypper install apache2 perl-Archive-Zip perl-Clone \
   perl-Config-Std perl-DBD-Pg perl-DBI perl-DateTime perl-Email-Address \
   perl-Email-MIME perl-FastCGI perl-File-Copy-Recursive perl-JSON perl-List-MoreUtils \
diff --git a/doc/html/ch02s04.html b/doc/html/ch02s04.html
index e9e710d57..c1bdf68ac 100644
--- a/doc/html/ch02s04.html
+++ b/doc/html/ch02s04.html
@@ -26,21 +26,26 @@
                   

  • system

  • - features (siehe Kapitel "Features und Funktionen")

  • paths

  • + mail_delivery (siehe Abschnitt "E-Mail-Versand über einen SMTP-Server)

  • applications

  • environment

  • - mail_delivery (siehe Abschnitt "E-Mail-Versand über einen SMTP-Server)

  • print_templates

  • task_server

  • periodic_invoices +

  • + self_tests

  • console +

  • + testing +

  • + testing/database

  • debug

  • 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 @@ - 2.6. Webserver-Konfiguration

    2.6. Webserver-Konfiguration

    2.6.1. Grundkonfiguration mittels CGI

    [Anmerkung]Anmerkung

    Für einen deutlichen Performanceschub sorgt die Ausführung + 2.6. Webserver-Konfiguration

    2.6. Webserver-Konfiguration

    2.6.1. Grundkonfiguration mittels CGI

    [Anmerkung]Anmerkung

    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.

    2.7.2.1. SystemV-basierende Systeme (z.B. Debian, ältere OpenSUSE, ältere Fedora Core)

    Kopieren Sie die Datei + anstelle eines symbolischen Links verwendet werden können.

    2.7.2.1. SystemV-basierende Systeme (z.B. Debian, ältere OpenSUSE, ältere Fedora Core)

    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:

    service kivitendo-task-server start

    2.7.2.3. systemd-basierende Systeme (z.B. neure OpenSUSE, neuere Fedora Core)

    Verlinken Sie die Datei scripts/boot/systemd/kivitendo-task-server.service nach + werden:

    service kivitendo-task-server start

    2.7.2.3. systemd-basierende Systeme (z.B. neure OpenSUSE, neuere Fedora Core)

    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:

    aptitude install texlive-base-bin texlive-latex-recommended texlive-fonts-recommended \
       texlive-latex-extra texlive-lang-german texlive-generic-extra

    -

    TODO: RPM-Pakete.

    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:

    1. - Name: Der Verzeichnisname für den neuen Vorlagensatz. Dieser kann im Rahmen der üblichen - Bedingungen für Verzeichnisnamen frei gewählt werden.

    2. +

      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.

      1. 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.)

    3. + 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] +

    2.11.2. Standard

    Der Standard-Vorlagensatz von Kivitendo. Wie unter http://demo.kivitendo.org zu sehen.

    2.11.3. f-tex

    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 @@ - 3.3. Excel-Vorlagen

    3.3. Excel-Vorlagen

    3.3.1. Zusammenfassung

    Dieses Dokument beschreibt den Mechanismus, mit dem + 3.3. Excel-Vorlagen

    3.3. Excel-Vorlagen

    3.3.1. Zusammenfassung

    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

    Kapitel 4. Entwicklerdokumentation

    4.1. Globale Variablen

    4.1.1. Wie sehen globale Variablen in Perl aus?

    Globale Variablen liegen in einem speziellen namespace namens + Kapitel 4. Entwicklerdokumentation

    Kapitel 4. Entwicklerdokumentation

    4.1. Globale Variablen

    4.1.1. Wie sehen globale Variablen in Perl aus?

    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.

      • Cached intern über Requestgrenzen hinweg benutzte Locales

      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]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

    $::instance_conf->get_inventory_system eq 'perpetual'

    - 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.

    • komplette recursion protection wurde entfernt.

    \ No newline at end of file + auftreten.

  • komplette recursion protection wurde entfernt.

  • \ No newline at end of file diff --git a/doc/html/index.html b/doc/html/index.html index c97f3d396..8308bbdd7 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -1,9 +1,9 @@ - kivitendo 3.0.0: Installation, Konfiguration, Entwicklung

    kivitendo 3.0.0: Installation, Konfiguration, Entwicklung


    Inhaltsverzeichnis

    1. Aktuelle Hinweise
    2. Installation und Grundkonfiguration
    2.1. Übersicht
    2.2. Benötigte Software und Pakete
    2.2.1. Betriebssystem
    2.2.2. Benötigte Perl-Pakete installieren
    2.3. Manuelle Installation des Programmpaketes
    2.4. kivitendo-Konfigurationsdatei
    2.4.1. Einführung
    2.4.2. Abschnitte und Parameter
    2.4.3. Versionen vor 2.6.3
    2.5. Anpassung der PostgreSQL-Konfiguration
    2.5.1. Zeichensätze/die Verwendung von Unicode/UTF-8
    2.5.2. Änderungen an Konfigurationsdateien
    2.5.3. Erweiterung für servergespeicherte Prozeduren
    2.5.4. Datenbankbenutzer anlegen
    2.6. Webserver-Konfiguration
    2.6.1. Grundkonfiguration mittels CGI
    2.6.2. Konfiguration für FastCGI/FCGI
    2.7. Der Task-Server
    2.7.1. Verfügbare und notwendige Konfigurationsoptionen
    2.7.2. Automatisches Starten des Task-Servers beim Booten
    2.7.3. Wie der Task-Server gestartet und beendet wird
    2.7.4. Task-Server mit mehreren Mandanten
    2.8. Benutzerauthentifizierung und Administratorpasswort
    2.8.1. Grundlagen zur Benutzerauthentifizierung
    2.8.2. Administratorpasswort
    2.8.3. Authentifizierungsdatenbank
    2.8.4. Passwortüberprüfung
    2.8.5. Name des Session-Cookies
    2.8.6. Anlegen der Authentifizierungsdatenbank
    2.9. Mandanten-, Benutzer- und Gruppenverwaltung
    2.9.1. Zusammenhänge
    2.9.2. Mandanten, Benutzer und Gruppen
    2.9.3. Datenbanken anlegen
    2.9.4. Gruppen anlegen
    2.9.5. Benutzer anlegen
    2.9.6. Mandanten anlegen
    2.10. E-Mail-Versand aus kivitendo heraus
    2.10.1. Versand über lokalen E-Mail-Server
    2.10.2. Versand über einen SMTP-Server
    2.11. Drucken mit kivitendo
    2.11.1. Vorlagenverzeichnis anlegen
    2.11.2. Standard
    2.11.3. f-tex
    2.11.4. RB
    2.11.5. Allgemeine Hinweise zu LaTeX Vorlagen
    2.12. OpenDocument-Vorlagen
    2.13. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: + kivitendo 3.0.0: Installation, Konfiguration, Entwicklung

    kivitendo 3.0.0: Installation, Konfiguration, Entwicklung


    Inhaltsverzeichnis

    1. Aktuelle Hinweise
    2. Installation und Grundkonfiguration
    2.1. Übersicht
    2.2. Benötigte Software und Pakete
    2.2.1. Betriebssystem
    2.2.2. Benötigte Perl-Pakete installieren
    2.3. Manuelle Installation des Programmpaketes
    2.4. kivitendo-Konfigurationsdatei
    2.4.1. Einführung
    2.4.2. Abschnitte und Parameter
    2.4.3. Versionen vor 2.6.3
    2.5. Anpassung der PostgreSQL-Konfiguration
    2.5.1. Zeichensätze/die Verwendung von Unicode/UTF-8
    2.5.2. Änderungen an Konfigurationsdateien
    2.5.3. Erweiterung für servergespeicherte Prozeduren
    2.5.4. Datenbankbenutzer anlegen
    2.6. Webserver-Konfiguration
    2.6.1. Grundkonfiguration mittels CGI
    2.6.2. Konfiguration für FastCGI/FCGI
    2.7. Der Task-Server
    2.7.1. Verfügbare und notwendige Konfigurationsoptionen
    2.7.2. Automatisches Starten des Task-Servers beim Booten
    2.7.3. Wie der Task-Server gestartet und beendet wird
    2.7.4. Task-Server mit mehreren Mandanten
    2.8. Benutzerauthentifizierung und Administratorpasswort
    2.8.1. Grundlagen zur Benutzerauthentifizierung
    2.8.2. Administratorpasswort
    2.8.3. Authentifizierungsdatenbank
    2.8.4. Passwortüberprüfung
    2.8.5. Name des Session-Cookies
    2.8.6. Anlegen der Authentifizierungsdatenbank
    2.9. Mandanten-, Benutzer- und Gruppenverwaltung
    2.9.1. Zusammenhänge
    2.9.2. Mandanten, Benutzer und Gruppen
    2.9.3. Datenbanken anlegen
    2.9.4. Gruppen anlegen
    2.9.5. Benutzer anlegen
    2.9.6. Mandanten anlegen
    2.10. E-Mail-Versand aus kivitendo heraus
    2.10.1. Versand über lokalen E-Mail-Server
    2.10.2. Versand über einen SMTP-Server
    2.11. Drucken mit kivitendo
    2.11.1. Vorlagenverzeichnis anlegen
    2.11.2. Standard
    2.11.3. f-tex
    2.11.4. RB
    2.11.5. Allgemeine Hinweise zu LaTeX Vorlagen
    2.12. OpenDocument-Vorlagen
    2.13. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: EUR
    2.13.1. Einführung
    2.13.2. Konfigurationsparameter
    2.13.3. Festlegen der Parameter
    2.13.4. Bemerkungen zu Bestandsmethode
    2.13.5. Bekannte Probleme
    2.14. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb
    2.14.1. Einführung
    2.14.2. Konto 3804 manuell anlegen
    2.15. Einstellungen pro Mandant
    2.16. kivitendo ERP verwenden
    3. Features und Funktionen
    3.1. Wiederkehrende Rechnungen
    3.1.1. Einführung
    3.1.2. Konfiguration
    3.1.3. Spezielle Variablen
    3.1.4. Auflisten
    3.1.5. Erzeugung der eigentlichen Rechnungen
    3.1.6. Erste Rechnung für aktuellen Monat erstellen
    3.2. Dokumentenvorlagen und verfügbare Variablen
    3.2.1. Einführung
    3.2.2. Variablen ausgeben
    3.2.3. Verwendung in Druckbefehlen
    3.2.4. Anfang und Ende der Tags verändern
    3.2.5. Zuordnung von den Dateinamen zu den Funktionen
    3.2.6. Sprache, Drucker und E-Mail
    3.2.7. Allgemeine Variablen, die in allen Vorlagen vorhanden sind
    3.2.8. Variablen in Rechnungen
    3.2.9. Variablen in Mahnungen und Rechnungen über Mahngebühren
    3.2.10. Variablen in anderen Vorlagen
    3.2.11. Blöcke, bedingte Anweisungen und Schleifen
    3.2.12. Markup-Code zur Textformatierung innerhalb von - Formularen
    3.3. Excel-Vorlagen
    3.3.1. Zusammenfassung
    3.3.2. Bedienung
    3.3.3. Variablensyntax
    3.3.4. Einschränkungen
    4. Entwicklerdokumentation
    4.1. Globale Variablen
    4.1.1. Wie sehen globale Variablen in Perl aus?
    4.1.2. Warum sind globale Variablen ein Problem?
    4.1.3. Kanonische globale Variablen
    4.1.4. Ehemalige globale Variablen
    4.2. Entwicklung unter FastCGI
    4.2.1. Allgemeines
    4.2.2. Programmende und Ausnahmen
    4.2.3. Globale Variablen
    4.2.4. Performance und Statistiken
    4.3. SQL-Upgradedateien
    4.3.1. Einführung
    4.3.2. Format der Kontrollinformationen
    4.3.3. Format von in Perl geschriebenen Datenbankupgradescripten
    4.3.4. Hilfsscript dbupgrade2_tool.pl
    4.4. Translations and languages
    4.4.1. Introduction
    4.4.2. Character set
    4.4.3. File structure
    4.5. Die kivitendo-Test-Suite
    4.5.1. Einführung
    4.5.2. Voraussetzungen
    4.5.3. + Formularen
    3.3. Excel-Vorlagen
    3.3.1. Zusammenfassung
    3.3.2. Bedienung
    3.3.3. Variablensyntax
    3.3.4. Einschränkungen
    3.4. Mandantenkonfiguration Lager
    4. Entwicklerdokumentation
    4.1. Globale Variablen
    4.1.1. Wie sehen globale Variablen in Perl aus?
    4.1.2. Warum sind globale Variablen ein Problem?
    4.1.3. Kanonische globale Variablen
    4.1.4. Ehemalige globale Variablen
    4.2. Entwicklung unter FastCGI
    4.2.1. Allgemeines
    4.2.2. Programmende und Ausnahmen
    4.2.3. Globale Variablen
    4.2.4. Performance und Statistiken
    4.3. SQL-Upgradedateien
    4.3.1. Einführung
    4.3.2. Format der Kontrollinformationen
    4.3.3. Format von in Perl geschriebenen Datenbankupgradescripten
    4.3.4. Hilfsscript dbupgrade2_tool.pl
    4.4. Translations and languages
    4.4.1. Introduction
    4.4.2. Character set
    4.4.3. File structure
    4.5. Die kivitendo-Test-Suite
    4.5.1. Einführung
    4.5.2. Voraussetzungen
    4.5.3. Existierende Tests ausführen
    4.5.4. Bedeutung der verschiedenen Test-Scripte diff --git a/doc/kivitendo-Dokumentation.pdf b/doc/kivitendo-Dokumentation.pdf index 6b364908d..ee9597b67 100644 Binary files a/doc/kivitendo-Dokumentation.pdf and b/doc/kivitendo-Dokumentation.pdf differ diff --git a/locale/de/all b/locale/de/all index 4568b0202..7ead6bf95 100755 --- a/locale/de/all +++ b/locale/de/all @@ -666,7 +666,7 @@ $self->{texts} = { 'Default Transfer' => 'Ein- / Auslagern über Standardlagerplätze', 'Default Transfer Out always succeed. The current part onhand is ignored and the inventory can have negative stocks (not recommended).' => 'Auslagern über Standardlagerplatz funktioniert immer (verfügbare Menge wird nicht geprüft). Die Lagerbewegung wird auf den unten konfigurierten Lagerplatz gebucht (nicht empfohlen).', 'Default Transfer Out with negative inventory' => 'Standard-Auslagern ohne Prüfung auf Bestand', - 'Default Transfer with Master Bin' => 'Standardlagerplatz für Lagerbewegungen verwenden, falls keiner für die Ware explizit definiert wurde', + 'Default Transfer with Master Bin' => 'Standardlagerplatz für Lagerbewegungen verwenden, falls keiner in Stammdaten definiert', 'Default Warehouse' => 'Standard-Lager', 'Default Warehouse with ignoring on hand' => 'Standardlager für Auslagern ohne Prüfung auf Bestand', 'Default buchungsgruppe' => 'Standardbuchungsgruppe', @@ -1920,7 +1920,7 @@ $self->{texts} = { 'Show Filter' => 'Filter zeigen', 'Show Salesman' => 'Verkäufer anzeigen', 'Show TODO list' => 'Aufgabenliste anzeigen', - 'Show Transfer via default' => 'Ein- / Auslagern über Standardlagerplatz anzeigen', + 'Show Transfer via default' => 'Ein- / Auslagern über Standardlagerplatz anzeigen (zusätzlicher Knopf in Beleg Lieferschein)', 'Show administration link' => 'Link zur Administration anzeigen', 'Show all parts' => 'Alle Artikel anzeigen', 'Show by default' => 'Standardmäßig anzeigen', @@ -2116,7 +2116,7 @@ $self->{texts} = { 'The client has been created.' => 'Der Mandant wurde angelegt.', 'The client has been deleted.' => 'Der Mandant wurde gelöscht.', 'The client has been saved.' => 'Der Mandant wurde gespeichert.', - 'The column "datatype" must be present and must be the first column. The values must be the row names (see settings) for order and item data respectively.' => 'Die Spalte "datatype" muss vorhanden sein und sie muss die erste Spalte sein. Die Werte in dieser Spalte müssen die Namen der Auftrag-/Positions-Zeilen (siehe Einstellungen) sein.', + 'The column "datatype" must be present and must be at the same position / column in each data set. The values must be the row names (see settings) for order and item data respectively.' => 'Die Spalte "datatype" muss vorhanden sein und sie muss in jedem Datensatz an der gleichen Stelle / Spalte sein. Die Werte in dieser Spalte müssen die Namen der Auftrag-/Positions-Zeilen (siehe Einstellungen) sein.', 'The column "make_X" can contain either a vendor\'s database ID, a vendor number or a vendor\'s name.' => 'Die Spalte "make_X" can entweder die Datenbank-ID des Lieferanten, eine Lieferantennummer oder einen Lieferantennamen enthalten.', 'The column triplets can occur multiple times with different numbers "X" each time (e.g. "make_1", "model_1", "lastcost_1", "make_2", "model_2", "lastcost_2", "make_3", "model_3", "lastcost_3" etc).' => 'Die Spalten-Dreiergruppen können mehrfach auftreten, sofern sie unterschiedliche Nummern "X" verwenden (z.B. "make_1", "model_1", "lastcost_1", "make_2", "model_2", "lastcost_2", "make_3", "model_3", "lastcost_3" etc).', 'The columns "Dunning Duedate", "Total Fees" and "Interest" show data for the previous dunning created for this invoice.' => 'Die Spalten "Zahlbar bis", "Kumulierte Gebühren" und "Zinsen" zeigen Daten der letzten für diese Rechnung erzeugten Mahnung.', diff --git a/locale/en/all b/locale/en/all index b5faacac2..6f86703b7 100644 --- a/locale/en/all +++ b/locale/en/all @@ -2079,7 +2079,7 @@ $self->{texts} = { 'The client has been created.' => '', 'The client has been deleted.' => '', 'The client has been saved.' => '', - 'The column "datatype" must be present and must be the first column. The values must be the row names (see settings) for order and item data respectively.' => '', + 'The column "datatype" must be present and must be at the same position / column in each data set. The values must be the row names (see settings) for order and item data respectively.' => '', 'The column "make_X" can contain either a vendor\'s database ID, a vendor number or a vendor\'s name.' => '', 'The column triplets can occur multiple times with different numbers "X" each time (e.g. "make_1", "model_1", "lastcost_1", "make_2", "model_2", "lastcost_2", "make_3", "model_3", "lastcost_3" etc).' => '', 'The columns "Dunning Duedate", "Total Fees" and "Interest" show data for the previous dunning created for this invoice.' => '', diff --git a/scripts/find-use.pl b/scripts/find-use.pl index 959ecbedb..3df14f459 100755 --- a/scripts/find-use.pl +++ b/scripts/find-use.pl @@ -21,6 +21,8 @@ my (%uselines, %modules, %supplied, %requires); 'Rose::DB::Object::ConventionManager' => 1, 'Rose::DB::Object::Manager' => 1, 'Rose::DB::Object::Metadata' => 1, + 'Rose::DB::Object::Helpers' => 1, + 'Rose::DB::Object::Util' => 1, }, 'Rose::Object' => { 'Rose::Object::MakeMethods::Generic' => 1, @@ -32,6 +34,7 @@ my (%uselines, %modules, %supplied, %requires); 'Template::Plugin' => 1, 'Template::Plugin::Filter' => 1, 'Template::Plugin::HTML' => 1, + 'Template::Stash' => 1, }, 'Devel::REPL' => { 'namespace::clean' => 1, @@ -43,6 +46,9 @@ my (%uselines, %modules, %supplied, %requires); 'TAP::Parser' => 1, 'TAP::Parser::Aggregator' => 1, }, + 'Archive::Zip' => { + 'Archive::Zip::Member' => 1, + } ); GetOptions( diff --git a/sql/Pg-upgrade2/drop_audittrail.sql b/sql/Pg-upgrade2/drop_audittrail.sql new file mode 100644 index 000000000..b998dc690 --- /dev/null +++ b/sql/Pg-upgrade2/drop_audittrail.sql @@ -0,0 +1,6 @@ +-- @tag: drop_audittrail +-- @description: Tabelle audittrail wird nicht mehr benutzt +-- @depends: release_3_0_0 +-- @ignore: 0 +ALTER TABLE defaults DROP COLUMN audittrail; +DROP TABLE audittrail; diff --git a/t/helper/csv.t b/t/helper/csv.t index 809dfb11a..3a8556cfd 100644 --- a/t/helper/csv.t +++ b/t/helper/csv.t @@ -1,4 +1,4 @@ -use Test::More tests => 71; +use Test::More tests => 75; use lib 't'; use utf8; @@ -551,6 +551,55 @@ ok !$csv->_check_multiplexed, 'multiplex check detects empty header'; ##### +$csv = SL::Helper::Csv->new( + file => \< [ + {class => 'SL::DB::Part', row_ident => 'P'}, + {class => 'SL::DB::Customer', row_ident => 'C'}, + ], + ignore_unknown_columns => 1, +); +$csv->parse; +is $csv->_multiplex_datatype_position, 2, 'multiplex check detects datatype field position right'; + +is_deeply $csv->get_data, [ { datatype => 'P', description => 'Kaffee', longdescription => 'lecker Kaffee' }, + { datatype => 'C', name => 'Meier', customernumber => 1}, + { datatype => 'P', description => 'Bier', longdescription => 'kühles Bier' }, + { datatype => 'C', name => 'Mueller', customernumber => 2} + ], + 'multiplex: datatype not at first position works'; + +##### + +$csv = SL::Helper::Csv->new( + file => \< [ + {class => 'SL::DB::Part', row_ident => 'P'}, + {class => 'SL::DB::Customer', row_ident => 'C'}, + ], + ignore_unknown_columns => 1, +); +ok !$csv->parse, 'multiplex check detects incosistent datatype field position'; +is_deeply( ($csv->errors)[0], [ 0, 'datatype field must be at the same position for all datatypes for multiplexed data', 0, 0 ], 'multiplex data with inconsistent datatype field posiotion throws error'); + +##### + $csv = SL::Helper::Csv->new( file => \"Datatype;Description\nDatatype;Name\nP;Kaffee\nC;Meier", # " # make emacs happy case_insensitive_header => 1, diff --git a/templates/print/RB/Readme.tex b/templates/print/RB/Readme.tex index 817eaee1f..ee9577594 100644 --- a/templates/print/RB/Readme.tex +++ b/templates/print/RB/Readme.tex @@ -1,10 +1,10 @@ % % Bemerkungen zum Vorlagensatz RB von -% Richardson & Büren GbR, Bonn +% Richardson & Büren GmbH % % Hier wurden einige Ideen aufgegriffen, die in folgendem Vortrag % erwähnt wurden: -% http://www.lx-office.org/uploads/media/Lx-Office_Anwendertreffen_LaTeX-Druckvorlagen-31.01.2011_01.pdf +% http://www.kivitendo-support.de/vortraege/Lx-Office%20Anwendertreffen%20LaTeX-Druckvorlagen-Teil3-finale.pdf % % Am Ende dieser Datei befindet sich ein Abschnitt "Quickstart", der die % Vorbereitungsschritte beschreibt, die bei diesem Druckvorlagensatz nötig diff --git a/templates/print/RB/firma/briefkopf.png b/templates/print/RB/firma/briefkopf.png index 998899581..a98907cd5 100644 Binary files a/templates/print/RB/firma/briefkopf.png and b/templates/print/RB/firma/briefkopf.png differ diff --git a/templates/print/RB/firma/euro_account.tex b/templates/print/RB/firma/euro_account.tex index fff1ac59a..fd3e6d143 100644 --- a/templates/print/RB/firma/euro_account.tex +++ b/templates/print/RB/firma/euro_account.tex @@ -1,6 +1,6 @@ \newcommand{\currency}{\euro} -\newcommand{\kontonummer}{4004 283 800} +\newcommand{\kontonummer}{4071953800} \newcommand{\bank}{GLS Bank eG} \newcommand{\bankleitzahl}{430 609 67} -\newcommand{\bic}{DE87430609674004283800} -\newcommand{\iban}{GENODEM1GLS} +\newcommand{\iban}{DE50430609674071953800} +\newcommand{\bic}{GENODEM1GLS} diff --git a/templates/print/RB/firma/ident.tex b/templates/print/RB/firma/ident.tex index 3c82c64bb..0ee9060f7 100644 --- a/templates/print/RB/firma/ident.tex +++ b/templates/print/RB/firma/ident.tex @@ -1,9 +1,9 @@ -\newcommand{\telefon} {++49 228 360 14 351} +\newcommand{\telefon} {++49 228 92 98 2012} \newcommand{\fax} {} -\newcommand{\firma} {Richardson \& Büren GbR} -\newcommand{\strasse} {Siemensstr. 8} -\newcommand{\ort} {53121 Bonn} -\newcommand{\ustid} {DE238288407} +\newcommand{\firma} {Richardson \& Büren GmbH} +\newcommand{\strasse} {Römerstr. 45 - 47} +\newcommand{\ort} {53111 Bonn} +\newcommand{\ustid} {DE292363254} \newcommand{\finanzamt} {Finanzamt Bonn-Innenstadt} -\newcommand{\email} {information@lx-office-hosting.de} -\newcommand{\homepage} {http://www.lx-office-hosting.de} +\newcommand{\email} {information@kivitendo-premium.de} +\newcommand{\homepage} {http://www.kivitendo-premium.de} diff --git a/templates/print/RB/insettings.tex b/templates/print/RB/insettings.tex index cccffb9e2..4eaad875a 100644 --- a/templates/print/RB/insettings.tex +++ b/templates/print/RB/insettings.tex @@ -48,7 +48,7 @@ a4paper, % DINA4 %% left=19mm, % Linker Rand %% width=142mm, % Textbreite - top=49mm, % Abstand Textanfang von oben + top=46mm, % Abstand Textanfang von oben head=5mm, % Höhe des Kopfes headsep=12mm, % Abstand Kopf zu Textanfang bottom=25mm, % Abstand von unten @@ -94,7 +94,7 @@ \strasse & \homepage & \textBank & \bank \\ \ort & \textUstid\ \ustid & \textIban & \iban \\ \textTelefon~\telefon & \finanzamt & \textBic & \bic \\ - \ifthenelse{\equal{\fax}{}}{}{\textFax~\fax} &&& \\ + \ifthenelse{\equal{\fax}{}}{}{\textFax~\fax} & &\textBankleitzahl & \bankleitzahl \\ \end{tabular} } } diff --git a/templates/print/RB/invoice.tex b/templates/print/RB/invoice.tex index 9959c452f..78d63b46b 100644 --- a/templates/print/RB/invoice.tex +++ b/templates/print/RB/invoice.tex @@ -24,6 +24,12 @@ <%name%> + <%department_1%> + + <%department_2%> + + <%cp_givenname%> <%cp_name%> + <%street%> ~ @@ -67,8 +73,12 @@ \ifthenelse{\equal{<%cp_name%>}{}}{\anrede}{ \ifthenelse{\equal{<%cp_gender%>}{f}} {\anredefrau}{\anredeherr} <%cp_title%> <%cp_name%>,}\\ +%\rechnungsformel\\ + +<%if notes%> + <%notes%> +<%end if%> -\rechnungsformel\\ \vspace{0.5cm} @@ -135,12 +145,6 @@ \vspace{0.2cm} -<%if notes%> - \vspace{5mm} - <%notes%> - \vspace{5mm} -<%end if%> - \ifthenelse{\equal{<%deliverydate%>}{}}{\leistungsdatumGleichRechnungsdatum}{\lieferungErfolgtAm ~<%deliverydate%>.} \\ <%if payment_terms%> diff --git a/templates/webpages/ap/form_header.html b/templates/webpages/ap/form_header.html index 0bd5466ce..81861fcf6 100644 --- a/templates/webpages/ap/form_header.html +++ b/templates/webpages/ap/form_header.html @@ -285,7 +285,7 @@ [% L.date_tag(temp, $temp) %] [% ELSE %] [% $temp | html %] - |; + [% END %] @@ -338,7 +338,7 @@ [% temp = "AP_paid_"_ i %] [% IF( changeable ) %] - [% L.select_tag(temp, ALL_CHARTS_AP_paid, value_title_sub = \AP_paid_value_title_sub, default = $temp) %] + [% L.select_tag(temp, ALL_CHARTS_AP_paid, value_title_sub = \AP_paid_value_title_sub, default = ($temp || accno_arap)) %] [% ELSE %] [% $temp | html %] diff --git a/templates/webpages/client_config/_warehouse.html b/templates/webpages/client_config/_warehouse.html index 87ff83589..938b2328e 100644 --- a/templates/webpages/client_config/_warehouse.html +++ b/templates/webpages/client_config/_warehouse.html @@ -9,7 +9,22 @@ [% LxERP.t8('Show Transfer via default') %]
    + + [% LxERP.t8('Default Warehouse') %] + + [% L.select_tag('defaults.warehouse_id', SELF.all_warehouses, id='warehouse_id', with_empty=1, default=SELF.defaults.warehouse_id, title_key='description', + onchange="warehouse_selected(this.selectedIndex == 0 ? -1 : warehouses[this.selectedIndex - 1].id, -1)") %] + + + [% LxERP.t8('This is the default bin for parts') %]
    + [% LxERP.t8('If configured this bin will be preselected for all new parts. Also this bin will be used as the master default bin, if default transfer out with master bin is activated.') %]
    + + + + [% LxERP.t8('Default Bin') %] + [% L.select_tag('defaults.bin_id', [], id='bin_id', with_empty=1) %] + [% LxERP.t8('Default Transfer with Master Bin') %] @@ -19,6 +34,7 @@ [% LxERP.t8('Use master default bin for Default Transfer, if no default bin for the part is configured') %]
    +
    [% LxERP.t8('Default Transfer Out with negative inventory') %] @@ -29,23 +45,7 @@ - - - [% LxERP.t8('Default Warehouse') %] - - [% L.select_tag('defaults.warehouse_id', SELF.all_warehouses, id='warehouse_id', with_empty=1, default=SELF.defaults.warehouse_id, title_key='description', - onchange="warehouse_selected(this.selectedIndex == 0 ? -1 : warehouses[this.selectedIndex - 1].id, -1)") %] - - - [% LxERP.t8('This is the default bin for parts') %]
    - [% LxERP.t8('If configured this bin will be preselected for all new parts. Also this bin will be used as the master default bin, if default transfer out with master bin is activated.') %]
    - - - - [% LxERP.t8('Default Bin') %] - [% L.select_tag('defaults.bin_id', [], id='bin_id', with_empty=1) %] - - + [% LxERP.t8('Default Warehouse with ignoring on hand') %] [% L.select_tag('defaults.warehouse_id_ignore_onhand', SELF.all_warehouses, id='warehouse_id_ignore_onhand', with_empty=1, default=SELF.defaults.warehouse_id_ignore_onhand, title_key='description', @@ -60,6 +60,8 @@ [% LxERP.t8('Default Bin with ignoring onhand') %] [% L.select_tag('defaults.bin_id_ignore_onhand', [], id='bin_id_ignore_onhand', with_empty=1) %] +
    + [% LxERP.t8('Show Bestbefore') %] diff --git a/templates/webpages/csv_import/form.html b/templates/webpages/csv_import/form.html index 4a9672b8f..0f8ac959d 100644 --- a/templates/webpages/csv_import/form.html +++ b/templates/webpages/csv_import/form.html @@ -133,7 +133,7 @@ [%- ELSIF SELF.type == 'orders' %]

    [1]: - [% LxERP.t8('The column "datatype" must be present and must be the first column. The values must be the row names (see settings) for order and item data respectively.') %] + [% LxERP.t8('The column "datatype" must be present and must be at the same position / column in each data set. The values must be the row names (see settings) for order and item data respectively.') %]

    [2]: