From: Jan Büren Date: Fri, 24 May 2013 08:28:00 +0000 (+0200) Subject: Merge branch 'master' of github.com:kivitendo/kivitendo-erp X-Git-Tag: release-3.1.0beta1~405 X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/commitdiff_plain/56e0bea2377449e656a4ab3d5721fa38749cbf6b?hp=cf8a444d01e67f5b06345721632e55cdbedbc905 Merge branch 'master' of github.com:kivitendo/kivitendo-erp --- diff --git a/SL/CT.pm b/SL/CT.pm index bf4aad448..02a5522f6 100644 --- a/SL/CT.pm +++ b/SL/CT.pm @@ -615,24 +615,24 @@ sub search { my @values; my %allowed_sort_columns = ( - "id" => "id", - "customernumber" => "customernumber", - "vendornumber" => "vendornumber", - "name" => "ct.name", - "contact" => "contact", - "phone" => "phone", - "fax" => "fax", - "email" => "email", - "street" => "street", - "taxnumber" => "taxnumber", - "business" => "business", - "invnumber" => "invnumber", - "ordnumber" => "ordnumber", - "quonumber" => "quonumber", - "zipcode" => "zipcode", - "city" => "city", - "country" => "country", - "salesman" => "e.name" + "id" => "ct.id", + "customernumber" => "ct.customernumber", + "vendornumber" => "ct.vendornumber", + "name" => "ct.name", + "contact" => "ct.contact", + "phone" => "ct.phone", + "fax" => "ct.fax", + "email" => "ct.email", + "street" => "ct.street", + "taxnumber" => "ct.taxnumber", + "business" => "ct.business", + "invnumber" => "ct.invnumber", + "ordnumber" => "ct.ordnumber", + "quonumber" => "ct.quonumber", + "zipcode" => "ct.zipcode", + "city" => "ct.city", + "country" => "ct.country", + "salesman" => "e.name" ); $form->{sort} ||= "name"; @@ -674,10 +674,10 @@ sub search { $where .= " AND ((lower(ct.city) LIKE lower(?)) OR (ct.id IN ( - SELECT trans_id - FROM shipto - WHERE (module = 'CT') - AND (lower(shiptocity) LIKE lower(?)) + SELECT sc.trans_id + FROM shipto sc + WHERE (sc.module = 'CT') + AND (lower(sc.shiptocity) LIKE lower(?)) )) )"; push @values, ('%' . $form->{addr_city} . '%') x 2; @@ -687,10 +687,10 @@ sub search { $where .= " AND ((lower(ct.country) LIKE lower(?)) OR (ct.id IN ( - SELECT trans_id - FROM shipto - WHERE (module = 'CT') - AND (lower(shiptocountry) LIKE lower(?)) + SELECT so.trans_id + FROM shipto so + WHERE (so.module = 'CT') + AND (lower(so.shiptocountry) LIKE lower(?)) )) )"; push @values, ('%' . $form->{addr_country} . '%') x 2; @@ -716,20 +716,20 @@ sub search { } if ($form->{obsolete} eq "Y") { - $where .= qq| AND obsolete|; + $where .= qq| AND ct.obsolete|; } elsif ($form->{obsolete} eq "N") { - $where .= qq| AND NOT obsolete|; + $where .= qq| AND NOT ct.obsolete|; } if ($form->{business_id}) { - $where .= qq| AND (business_id = ?)|; + $where .= qq| AND (ct.business_id = ?)|; push(@values, conv_i($form->{business_id})); } # Nur Kunden finden, bei denen ich selber der Verkäufer bin # Gilt nicht für Lieferanten if ($cv eq 'customer' && !$main::auth->assert('customer_vendor_all_edit', 1)) { - $where .= qq| AND ct.salesman_id = (select id from employee where login= ?)|; + $where .= qq| AND ct.salesman_id = (select em.id from employee em where em.login = ?)|; push(@values, $form->{login}); } @@ -743,12 +743,12 @@ sub search { } if ($form->{addr_street}) { - $where .= qq| AND (street ILIKE ?)|; + $where .= qq| AND (ct.street ILIKE ?)|; push @values, '%' . $form->{addr_street} . '%'; } if ($form->{addr_zipcode}) { - $where .= qq| AND (zipcode ILIKE ?)|; + $where .= qq| AND (ct.zipcode ILIKE ?)|; push @values, $form->{addr_zipcode} . '%'; } diff --git a/SL/DBConnect.pm b/SL/DBConnect.pm index 4e084502a..8dc978758 100644 --- a/SL/DBConnect.pm +++ b/SL/DBConnect.pm @@ -20,4 +20,14 @@ sub connect { return DBIx::Log4perl->connect(@_); } +sub get_options { + my $self = shift; + my $options = { + pg_enable_utf8 => $::locale->is_utf8, + @_ + }; + + return $options; +} + 1; diff --git a/SL/Form.pm b/SL/Form.pm index 7b5d257b8..018526ac6 100644 --- a/SL/Form.pm +++ b/SL/Form.pm @@ -1361,21 +1361,13 @@ sub datetonum { # Database routines used throughout -sub _dbconnect_options { - my $self = shift; - my $options = { pg_enable_utf8 => $::locale->is_utf8, - @_ }; - - return $options; -} - sub dbconnect { $main::lxdebug->enter_sub(2); my ($self, $myconfig) = @_; # connect to database - my $dbh = SL::DBConnect->connect($myconfig->{dbconnect}, $myconfig->{dbuser}, $myconfig->{dbpasswd}, $self->_dbconnect_options) + my $dbh = SL::DBConnect->connect($myconfig->{dbconnect}, $myconfig->{dbuser}, $myconfig->{dbpasswd}, SL::DBConnect->get_options) or $self->dberror; # set db options @@ -1394,7 +1386,7 @@ sub dbconnect_noauto { my ($self, $myconfig) = @_; # connect to database - my $dbh = SL::DBConnect->connect($myconfig->{dbconnect}, $myconfig->{dbuser}, $myconfig->{dbpasswd}, $self->_dbconnect_options(AutoCommit => 0)) + my $dbh = SL::DBConnect->connect($myconfig->{dbconnect}, $myconfig->{dbuser}, $myconfig->{dbpasswd}, SL::DBConnect->get_options(AutoCommit => 0)) or $self->dberror; # set db options diff --git a/SL/User.pm b/SL/User.pm index 368a0a278..46c35bf41 100644 --- a/SL/User.pm +++ b/SL/User.pm @@ -105,7 +105,7 @@ sub login { my %myconfig = $main::auth->read_user(login => $self->{login}); # check if database is down - my $dbh = SL::DBConnect->connect($myconfig{dbconnect}, $myconfig{dbuser}, $myconfig{dbpasswd}) + my $dbh = SL::DBConnect->connect($myconfig{dbconnect}, $myconfig{dbuser}, $myconfig{dbpasswd}, SL::DBConnect->get_options) or $self->error($DBI::errstr); # we got a connection, check the version @@ -245,7 +245,7 @@ sub dbsources { $form->{sid} = $form->{dbdefault}; &dbconnect_vars($form, $form->{dbdefault}); - my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) + my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}, SL::DBConnect->get_options) or $form->dberror; if ($form->{dbdriver} eq 'Pg') { @@ -262,7 +262,7 @@ sub dbsources { next if ($db =~ /^template/); &dbconnect_vars($form, $db); - my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) + my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}, SL::DBConnect->get_options) or $form->dberror; $query = @@ -317,7 +317,7 @@ sub dbclusterencoding { dbconnect_vars($form, $form->{dbdefault}); - my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) || $form->dberror(); + my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}, SL::DBConnect->get_options) || $form->dberror(); my $query = qq|SELECT pg_encoding_to_char(encoding) FROM pg_database WHERE datname = 'template0'|; my ($cluster_encoding) = $dbh->selectrow_array($query); $dbh->disconnect(); @@ -335,7 +335,7 @@ sub dbcreate { $form->{sid} = $form->{dbdefault}; &dbconnect_vars($form, $form->{dbdefault}); my $dbh = - SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) + SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}, SL::DBConnect->get_options) or $form->dberror; $form->{db} =~ s/\"//g; my %dbcreate = ( @@ -377,7 +377,7 @@ sub dbcreate { &dbconnect_vars($form, $form->{db}); - $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) + $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}, SL::DBConnect->get_options) or $form->dberror; my $db_charset = $Common::db_encoding_to_charset{$form->{encoding}}; @@ -414,7 +414,7 @@ sub dbdelete { $form->{sid} = $form->{dbdefault}; &dbconnect_vars($form, $form->{dbdefault}); - my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) + my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}, SL::DBConnect->get_options) or $form->dberror; my $query = $dbdelete{$form->{dbdriver}}; do_query($form, $dbh, $query); @@ -460,7 +460,7 @@ sub dbneedsupdate { map { $form->{$_} = $member->{$_} } qw(dbname dbuser dbpasswd dbhost dbport); dbconnect_vars($form, $form->{dbname}); - my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}); + my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}, SL::DBConnect->get_options); next unless $dbh; @@ -590,7 +590,7 @@ sub dbupdate { $db =~ s/^db//; &dbconnect_vars($form, $db); - my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) + my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}, SL::DBConnect->get_options) or $form->dberror; $dbh->do($form->{dboptions}) if ($form->{dboptions}); @@ -654,7 +654,7 @@ sub dbupdate2 { $db =~ s/^db//; &dbconnect_vars($form, $db); - my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) or $form->dberror; + my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}, SL::DBConnect->get_options) or $form->dberror; $dbh->do($form->{dboptions}) if ($form->{dboptions}); @@ -694,7 +694,7 @@ sub save_member { $main::auth->save_user($self->{login}, map { $_, $self->{$_} } config_vars()); - my $dbh = SL::DBConnect->connect($self->{dbconnect}, $self->{dbuser}, $self->{dbpasswd}); + my $dbh = SL::DBConnect->connect($self->{dbconnect}, $self->{dbuser}, $self->{dbpasswd}, SL::DBConnect->get_options); if ($dbh) { $self->create_employee_entry($::form, $dbh, $self, 1); $dbh->disconnect(); diff --git a/locale/de/all b/locale/de/all index ddb7cd4af..dbfe63586 100755 --- a/locale/de/all +++ b/locale/de/all @@ -284,7 +284,7 @@ $self->{texts} = { 'Batch Printing' => 'Druck', 'Bcc' => 'Bcc', 'Bcc E-mail' => 'BCC (E-Mail)', - 'Because the useability gets worse if one partnumber is used for several parts (for example if you are searching a position for an invoice), partnumbers should be unique.' => 'translation', + 'Because the useability gets worse if one partnumber is used for several parts (for example if you are searching a position for an invoice), partnumbers should be unique.' => 'Da die Benutzerfreundlichkeit durch doppelte Artikelnummern erheblich verschlechtert wird (zum Beispiel, wenn man einen Artikel für eine Rechnung sucht), sollten Artikelnummern eindeutig vergeben sein.', 'Belegnummer' => 'Buchungsnummer', 'Beratername' => 'Beratername', 'Beraternummer' => 'Beraternummer', diff --git a/sql/Pg-upgrade2/contacts_convert_cp_birthday_to_date.pl b/sql/Pg-upgrade2/contacts_convert_cp_birthday_to_date.pl index bb45209e2..ab4a0175a 100644 --- a/sql/Pg-upgrade2/contacts_convert_cp_birthday_to_date.pl +++ b/sql/Pg-upgrade2/contacts_convert_cp_birthday_to_date.pl @@ -11,10 +11,10 @@ use parent qw(SL::DBUpgrade2::Base); sub convert_to_date { my ($self, $str) = @_; - return '' if !$str; + return '' if !$str || ($str =~ m/00.*00.*00.*00/); # 0000-00-00 may be present in old databases. my $sth = $self->dbh->prepare('SELECT ?::date AS date') or return undef; - $sth->execute($str) or return undef; + $sth->execute($str) or return undef; return $sth->fetchrow_hashref->{date}; } diff --git a/sql/Pg-upgrade2/erzeugnisnummern.pl b/sql/Pg-upgrade2/erzeugnisnummern.pl index 81c024160..414689461 100644 --- a/sql/Pg-upgrade2/erzeugnisnummern.pl +++ b/sql/Pg-upgrade2/erzeugnisnummern.pl @@ -8,6 +8,8 @@ use utf8; use parent qw(SL::DBUpgrade2::Base); +use SL::DBUtils; + sub run { my ($self) = @_; @@ -21,7 +23,7 @@ sub run { $self->dbh->commit(); } - my $query = qq|SELECT id, partnumber, description, unit, notes, assembly, ean, inventory_accno_id + my $query = qq|SELECT id, partnumber, description, unit, notes, assembly, ean, inventory_accno_id, obsolete FROM parts pa WHERE (SELECT COUNT(*) FROM parts p @@ -29,14 +31,7 @@ sub run { > 1 ORDER BY partnumber;|; - my $sth = $self->dbh->prepare($query); - $sth->execute || $::form->dberror($query); - - $::form->{PARTS} = []; - while (my $ref = $sth->fetchrow_hashref("NAME_lc")) { - map {$ref->{$_} = $::locale->{iconv_utf8}->convert($ref->{$_})} keys %$ref; - push @{ $::form->{PARTS} }, $ref; - } + $::form->{PARTS} = [ selectall_hashref_query($::form, $self->dbh, $query) ]; if ( scalar @{ $::form->{PARTS} } > 0 ) { &print_error_message; diff --git a/sql/Pg-upgrade2/steuerfilterung.pl b/sql/Pg-upgrade2/steuerfilterung.pl index 741c6ad83..5fc8f328d 100644 --- a/sql/Pg-upgrade2/steuerfilterung.pl +++ b/sql/Pg-upgrade2/steuerfilterung.pl @@ -1,6 +1,6 @@ # @tag: steuerfilterung # @description: Steuern in Dialogbuchungen filtern. -# @depends: release_3_0_0 +# @depends: release_3_0_0 tax_constraints package SL::DBUpgrade2::steuerfilterung; use strict; diff --git a/t/helper/csv.t b/t/helper/csv.t index 302383371..088ed68ab 100644 --- a/t/helper/csv.t +++ b/t/helper/csv.t @@ -299,7 +299,7 @@ is_deeply $csv->get_data, [ { description => 'Kaffee' } ], 'case insensitive hea ##### $csv = SL::Helper::Csv->new( - file => \"\x{FEFF}description\nKaffee", + file => \"\x{EF}\x{BB}\x{BF}description\nKaffee", class => 'SL::DB::Part', encoding => 'utf8', ); diff --git a/templates/webpages/dbupgrade/erzeugnisnummern.html b/templates/webpages/dbupgrade/erzeugnisnummern.html index 800370f80..646685493 100644 --- a/templates/webpages/dbupgrade/erzeugnisnummern.html +++ b/templates/webpages/dbupgrade/erzeugnisnummern.html @@ -1,5 +1,5 @@ [%- USE T8 %] -[% USE HTML %]
[% 'Double partnumbers' | $T8 %]
+[% USE HTML %][%- USE LxERP -%]
[% 'Double partnumbers' | $T8 %]
@@ -19,6 +19,7 @@ [% 'Notes' | $T8 %] [% 'EAN' | $T8 %] [% 'Service, assembly or part' | $T8 %] + [% 'Obsolete' | $T8 %] [% SET row_odd = '1' %][% FOREACH row = PARTS %] @@ -30,6 +31,7 @@ [% HTML.escape(row.notes) %] [% HTML.escape(row.ean) %] [% IF row.assembly %] [% 'assembly' | $T8 %] [% ELSE %] [% IF row.inventory_accno_id %] [% 'part' | $T8 %] [% ELSE %] [% 'service' | $T8 %] [% END %] [% END %] + [% IF row.obsolete %][%- LxERP.t8("Obsolete") %][%- ELSE %][%- LxERP.t8("Not obsolete") %][%- END %] [% SET rowcount = loop.count %] [% END %] diff --git a/templates/webpages/gl/form_header_chart_balances_js.html b/templates/webpages/gl/form_header_chart_balances_js.html index 3263ee7cd..705d8f663 100644 --- a/templates/webpages/gl/form_header_chart_balances_js.html +++ b/templates/webpages/gl/form_header_chart_balances_js.html @@ -12,7 +12,7 @@ chart_balances[[% loop.count - 1 %]] = '[% JavaScript.escape(LxERP.format_amount function show_chart_balance(obj) { var row = $(obj).attr('name').replace(/.*_/, ''); - var idx = $('#accno_' + row).attr('selectedIndex'); + var idx = $('#accno_' + row).prop('selectedIndex'); $('#chart_balance_' + row).html(chart_balances[idx]); }