X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=SL%2FForm.pm;h=a11b7adb672b2ed45f7ae455fc6a5b30665c2a2c;hb=377b705324a4c43ef21b838d4ea9d474132cf16f;hp=56acec2bfb7c1a06a640ed1c56052e130dfac8f9;hpb=08e4ce1ef5caa3f7007d8c97e9e97ef83378b19a;p=kivitendo-erp.git diff --git a/SL/Form.pm b/SL/Form.pm index 56acec2bf..a11b7adb6 100644 --- a/SL/Form.pm +++ b/SL/Form.pm @@ -1926,17 +1926,24 @@ sub get_employee_data { my $myconfig = \%main::myconfig; my $dbh = $params{dbh} || $self->get_standard_dbh($myconfig); - my ($login) = selectrow_query($self, $dbh, qq|SELECT login FROM employee WHERE id = ?|, conv_i($params{id})); + my ($login, $deleted) = selectrow_query($self, $dbh, qq|SELECT login,deleted FROM employee WHERE id = ?|, conv_i($params{id})); if ($login) { - my $user = User->new(login => $login); - $self->{$params{prefix} . "_${_}"} = $user->{$_} for qw(email fax name signature tel); - $self->{$params{prefix} . "_${_}"} = $defaults->$_ for qw(address businessnumber co_ustid company duns taxnumber); - + # login already fetched and still the same client (mandant) | same for both cases (delete|!delete) $self->{$params{prefix} . '_login'} = $login; - $self->{$params{prefix} . '_name'} ||= $login; - } + $self->{$params{prefix} . "_${_}"} = $defaults->$_ for qw(address businessnumber co_ustid company duns taxnumber); + if (!$deleted) { + # get employee data from auth.user_config + my $user = User->new(login => $login); + $self->{$params{prefix} . "_${_}"} = $user->{$_} for qw(email fax name signature tel); + } else { + # get saved employee data from employee + my $employee = SL::DB::Manager::Employee->find_by(id => conv_i($params{id})); + $self->{$params{prefix} . "_${_}"} = $employee->{"deleted_$_"} for qw(email fax signature tel); + $self->{$params{prefix} . "_name"} = $employee->name; + } + } $main::lxdebug->leave_sub(); } @@ -2101,10 +2108,10 @@ sub _get_taxcharts { if (ref $params eq 'HASH') { $key = $params->{key} if ($params->{key}); if ($params->{module} eq 'AR') { - push @where, 'taxkey NOT IN (8, 9, 18, 19)'; + push @where, 'chart_categories ~ \'[ACILQ]\''; } elsif ($params->{module} eq 'AP') { - push @where, 'taxkey NOT IN (1, 2, 3, 12, 13)'; + push @where, 'chart_categories ~ \'[ACELQ]\''; } } elsif ($params) { @@ -2137,10 +2144,22 @@ sub _get_taxzones { sub _get_employees { $main::lxdebug->enter_sub(); - my ($self, $dbh, $default_key, $key) = @_; + my ($self, $dbh, $params) = @_; + + my $deleted = 0; + + my $key; + if (ref $params eq 'HASH') { + $key = $params->{key}; + $deleted = $params->{deleted}; + + } else { + $key = $params; + } - $key = $default_key unless ($key); - $self->{$key} = selectall_hashref_query($self, $dbh, qq|SELECT * FROM employee ORDER BY lower(name)|); + $key ||= "all_employees"; + my $filter = $deleted ? '' : 'WHERE NOT COALESCE(deleted, FALSE)'; + $self->{$key} = selectall_hashref_query($self, $dbh, qq|SELECT * FROM employee $filter ORDER BY lower(name)|); $main::lxdebug->leave_sub(); } @@ -2380,7 +2399,7 @@ sub get_lists { } if ($params{"employees"}) { - $self->_get_employees($dbh, "all_employees", $params{"employees"}); + $self->_get_employees($dbh, $params{"employees"}); } if ($params{"salesmen"}) { @@ -3161,81 +3180,6 @@ sub get_history { return 0; } -sub update_defaults { - $main::lxdebug->enter_sub(); - - my ($self, $myconfig, $fld, $provided_dbh) = @_; - - my $dbh; - if ($provided_dbh) { - $dbh = $provided_dbh; - } else { - $dbh = $self->dbconnect_noauto($myconfig); - } - my $query = qq|SELECT $fld FROM defaults FOR UPDATE|; - my $sth = $dbh->prepare($query); - - $sth->execute || $self->dberror($query); - my ($var) = $sth->fetchrow_array; - $sth->finish; - - $var = 0 if !defined($var) || ($var eq ''); - $var = SL::PrefixedNumber->new(number => $var)->get_next; - $query = qq|UPDATE defaults SET $fld = ?|; - do_query($self, $dbh, $query, $var); - - if (!$provided_dbh) { - $dbh->commit; - $dbh->disconnect; - } - - $main::lxdebug->leave_sub(); - - return $var; -} - -sub update_business { - $main::lxdebug->enter_sub(); - - my ($self, $myconfig, $business_id, $provided_dbh) = @_; - - my $dbh; - if ($provided_dbh) { - $dbh = $provided_dbh; - } else { - $dbh = $self->dbconnect_noauto($myconfig); - } - my $query = - qq|SELECT customernumberinit FROM business - WHERE id = ? FOR UPDATE|; - my ($var) = selectrow_query($self, $dbh, $query, $business_id); - - return undef unless $var; - - if ($var =~ m/\d+$/) { - my $new_var = (substr $var, $-[0]) * 1 + 1; - my $len_diff = length($var) - $-[0] - length($new_var); - $var = substr($var, 0, $-[0]) . ($len_diff > 0 ? '0' x $len_diff : '') . $new_var; - - } else { - $var = $var . '1'; - } - - $query = qq|UPDATE business - SET customernumberinit = ? - WHERE id = ?|; - do_query($self, $dbh, $query, $var, $business_id); - - if (!$provided_dbh) { - $dbh->commit; - $dbh->disconnect; - } - - $main::lxdebug->leave_sub(); - - return $var; -} - sub get_partsgroup { $main::lxdebug->enter_sub(); @@ -3453,6 +3397,16 @@ sub prepare_for_printing { $self->reformat_numbers($output_numberformat, $precision, @{ $field_list }); } + $self->{template_meta} = { + formname => $self->{formname}, + language => SL::DB::Manager::Language->find_by_or_create(id => $self->{language_id} || undef), + format => $self->{format}, + media => $self->{media}, + extension => $extension, + printer => SL::DB::Manager::Printer->find_by_or_create(id => $self->{printer_id} || undef), + today => DateTime->today, + }; + return $self; } @@ -3572,18 +3526,6 @@ Points of interest for a beginner are: =head1 SPECIAL FUNCTIONS -=head2 C PARAMS - -PARAMS (not named): - \%config, - config hashref - $business_id, - business id - $dbh - optional database handle - -handles business (thats customer/vendor types) sequences. - -special behaviour for empty strings in customerinitnumber field: -will in this case not increase the value, and return undef. - =head2 C $url Generates a HTTP redirection header for the new C<$url>. Constructs an