Fix für Bug 1136. Die Prüfung für not_discountable war zu früh. Zunächst muss form...
[kivitendo-erp.git] / SL / TODO.pm
1 # TODO list helper functions
2
3 package TODO;
4
5 use SL::DBUtils;
6
7 sub get_user_config {
8   $main::lxdebug->enter_sub();
9
10   my $self     = shift;
11   my %params   = @_;
12
13   my $myconfig = \%main::myconfig;
14   my $form     = $main::form;
15
16   my $dbh      = $params{dbh} || $form->get_standard_dbh($myconfig);
17
18   $form->error('Need params: id or login') if (!$params{id} && !$params{login});
19
20   if ($params{login}) {
21     ($params{id}) = selectfirst_array_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $params{login});
22
23     if (!$params{id}) {
24       $main::lxdebug->leave_sub();
25       return ();
26     }
27
28   } else {
29     ($params{login}) = selectfirst_array_query($form, $dbh, qq|SELECT login FROM employee WHERE id = ?|, conv_i($params{id}));
30   }
31
32   my $cfg = selectfirst_hashref_query($form, $dbh, qq|SELECT * FROM todo_user_config WHERE employee_id = ?|, conv_i($params{id}));
33
34   if (!$cfg) {
35     # Standard configuration: enable all
36
37     $cfg = { map { $_ => 1 } qw(show_after_login show_follow_ups show_follow_ups_login show_overdue_sales_quotations show_overdue_sales_quotations_login) };
38   }
39
40   if (! $main::auth->check_right($params{login}, 'sales_quotation_edit')) {
41     map { delete $cfg->{$_} } qw(show_overdue_sales_quotations show_overdue_sales_quotations_login);
42   }
43
44   $main::lxdebug->leave_sub();
45
46   return %{ $cfg };
47 }
48
49 sub save_user_config {
50   $main::lxdebug->enter_sub();
51
52   my $self     = shift;
53   my %params   = @_;
54
55   Common::check_params(\%params, qw(login));
56
57   my $myconfig = \%main::myconfig;
58   my $form     = $main::form;
59
60   my $dbh      = $params{dbh} || $form->get_standard_dbh($myconfig);
61
62   my $query    = qq|SELECT id FROM employee WHERE login = ?|;
63
64   my ($id)     = selectfirst_array_query($form, $dbh, $query, $params{login});
65
66   if (!$id) {
67     $main::lxdebug->leave_sub();
68     return;
69   }
70
71   $query =
72     qq|SELECT show_after_login
73        FROM todo_user_config
74        WHERE employee_id = ?|;
75
76   if (! selectfirst_hashref_query($form, $dbh, $query, $id)) {
77     do_query($form, $dbh, qq|INSERT INTO todo_user_config (employee_id) VALUES (?)|, $id);
78   }
79
80   $query =
81     qq|UPDATE todo_user_config SET
82          show_after_login = ?,
83          show_follow_ups = ?,
84          show_follow_ups_login = ?,
85          show_overdue_sales_quotations = ?,
86          show_overdue_sales_quotations_login = ?
87
88        WHERE employee_id = ?|;
89
90   my @values = map { $params{$_} ? 't' : 'f' } qw(show_after_login show_follow_ups show_follow_ups_login show_overdue_sales_quotations show_overdue_sales_quotations_login);
91   push @values, $id;
92
93   do_query($form, $dbh, $query, @values);
94
95   $dbh->commit();
96
97   $main::lxdebug->leave_sub();
98 }
99
100 1;